summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-11-23 19:26:13 -0800
committerJason Ekstrand <[email protected]>2016-11-28 16:45:09 -0800
commit12f2eae7e7e74c1c3f16fee1f27eec6cfcffe092 (patch)
treeb23e28b162129527e768a49a7087f64e58073751
parent89bb515e915bbdf4f3b7b55f7cc228423131ca25 (diff)
intel/aubinator: Trust the packet size in the header for SUBOPCODE_HEADER
We were reading from the "comment size" dword and incrementing by that amount. This never caused a problem because that field was always zero. However, experimenting with actual aub file comments indicates, the simulator seems to include the comment size in the packet size provided in the header. We should do the same. Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
-rw-r--r--src/intel/tools/aubinator.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/intel/tools/aubinator.c b/src/intel/tools/aubinator.c
index fbd8721d1c0..abade4519ba 100644
--- a/src/intel/tools/aubinator.c
+++ b/src/intel/tools/aubinator.c
@@ -993,7 +993,7 @@ static int
aub_file_decode_batch(struct aub_file *file, struct gen_spec *spec)
{
uint32_t *p, h, device, data_type, *new_cursor;
- int header_length, payload_size, bias;
+ int header_length, bias;
if (file->end - file->cursor < 1)
return AUB_ITEM_DECODE_NEED_MORE_DATA;
@@ -1016,23 +1016,13 @@ aub_file_decode_batch(struct aub_file *file, struct gen_spec *spec)
return AUB_ITEM_DECODE_FAILED;
}
- payload_size = 0;
- switch (h & 0xffff0000) {
- case MAKE_HEADER(TYPE_AUB, OPCODE_AUB, SUBOPCODE_HEADER):
- if (file->end - file->cursor < 12)
- return AUB_ITEM_DECODE_NEED_MORE_DATA;
- payload_size = p[12];
- break;
- case MAKE_HEADER(TYPE_AUB, OPCODE_AUB, SUBOPCODE_BLOCK):
+ new_cursor = p + header_length + bias;
+ if ((h & 0xffff0000) == MAKE_HEADER(TYPE_AUB, OPCODE_AUB, SUBOPCODE_BLOCK)) {
if (file->end - file->cursor < 4)
return AUB_ITEM_DECODE_NEED_MORE_DATA;
- payload_size = p[4];
- break;
- default:
- break;
+ new_cursor += p[4] / 4;
}
- new_cursor = p + header_length + bias + payload_size / 4;
if (new_cursor > file->end)
return AUB_ITEM_DECODE_NEED_MORE_DATA;