[Mesa-dev] [PATCH 1/4] intel/aubinator: Trust the packet size in the header for SUBOPCODE_HEADER

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu Nov 24 10:54:03 UTC 2016


This series is :

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 24/11/16 04:27, Jason Ekstrand wrote:
> 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.
> ---
>   src/intel/tools/aubinator.c | 18 ++++--------------
>   1 file changed, 4 insertions(+), 14 deletions(-)
>
> diff --git a/src/intel/tools/aubinator.c b/src/intel/tools/aubinator.c
> index fbd8721..abade45 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;
>   




More information about the mesa-dev mailing list