[Mesa-dev] [PATCH] intel: decoder: handle 0 sized structs

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Aug 28 09:40:40 UTC 2018


Thanks Andres,

Please see my response to Re: [Mesa-dev] [PATCH] intel: decoder: unify 
MI_BB_START field naming

On 27/08/2018 22:20, Andres Gomez wrote:
> Lionel, should we also include this in the stable queues ?
>
>
> On Sat, 2018-08-25 at 18:23 +0100, Lionel Landwerlin wrote:
>> Gen7.5 has a BLEND_STATE of size 0 which includes a variable length
>> group. We did not deal with that very well, leading to an endless
>> loop.
>>
>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107544
>> ---
>>   src/intel/common/gen_decoder.c | 12 ++++++++----
>>   1 file changed, 8 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c
>> index 9e46f271633..ec22b545492 100644
>> --- a/src/intel/common/gen_decoder.c
>> +++ b/src/intel/common/gen_decoder.c
>> @@ -997,7 +997,7 @@ gen_field_iterator_init(struct gen_field_iterator *iter,
>>      iter->p_bit = p_bit;
>>   
>>      int length = gen_group_get_length(iter->group, iter->p);
>> -   iter->p_end = length > 0 ? &p[length] : NULL;
>> +   iter->p_end = length >= 0 ? &p[length] : NULL;
>>      iter->print_colors = print_colors;
>>   }
>>   
>> @@ -1012,10 +1012,14 @@ gen_field_iterator_next(struct gen_field_iterator *iter)
>>            iter_start_field(iter, iter->group->next->fields);
>>   
>>         bool result = iter_decode_field(iter);
>> -      if (iter->p_end)
>> -         assert(result);
>> +      if (!result && iter->p_end) {
>> +         /* We're dealing with a non empty struct of length=0 (BLEND_STATE on
>> +          * Gen 7.5)
>> +          */
>> +         assert(iter->group->dw_length == 0);
>> +      }
>>   
>> -      return true;
>> +      return result;
>>      }
>>   
>>      if (!iter_advance_field(iter))




More information about the mesa-dev mailing list