We assume that AddUsageRecord for different objects is called in order of program_id.
| 399 | // We assume that AddUsageRecord for different objects is called in order of |
| 400 | // program_id. |
| 401 | Status AddUsageRecord(CombinedUsageRecords* usage_records, const Object& object, |
| 402 | const size_t program_id) { |
| 403 | auto ref = GetRef(object); |
| 404 | if (ref >= usage_records->usage_refs.size()) { |
| 405 | usage_records->usage_refs.resize(ref + 1, kNotAssigned); |
| 406 | } |
| 407 | auto& usage_ref = usage_records->usage_refs[ref]; |
| 408 | if (object.object_type == ObjectType::BUFFER) { |
| 409 | if (usage_ref == kNotAssigned) { |
| 410 | usage_ref = usage_records->buffers.size(); |
| 411 | usage_records->buffers.emplace_back( |
| 412 | /*tensor_size=*/NumElements(object.size), |
| 413 | /*first_task=*/program_id, |
| 414 | /*last_task=*/program_id); |
| 415 | } else { |
| 416 | UpdateUsageRecord(&usage_records->buffers[usage_ref], program_id); |
| 417 | } |
| 418 | return OkStatus(); |
| 419 | } |
| 420 | if (object.object_type == ObjectType::TEXTURE) { |
| 421 | absl::visit(AddUsageRecordForTextureFunc{usage_records, ref, program_id}, |
| 422 | object.size); |
| 423 | return OkStatus(); |
| 424 | } |
| 425 | return InternalError("Unexpected object type"); |
| 426 | } |
| 427 | |
| 428 | Status ApplyBuffersAssignment( |
| 429 | const ObjectsAssignment<size_t>& assignment, |
no test coverage detected