[Mesa-dev] [PATCH 2/2] glsl: fix 'shared' layout qualifier related regressions

Samuel Iglesias Gonsálvez siglesias at igalia.com
Thu Nov 12 07:37:00 PST 2015



On 12/11/15 15:38, Timothy Arceri wrote:
> 
> 
> On 13 November 2015 12:22:40 am AEDT, "Samuel Iglesias Gonsálvez" <siglesias at igalia.com> wrote:
>> Commit 8b28b35 added 'shared' as a keyword for compute shaders
>> but it broke the existing 'shared' layout qualifier support for
>> uniform and shader storage blocks.
>>
>> This patch fixes 578 dEQP-GLES31.functional.ssbo.* tests.
>>
>> Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
>> ---
>> src/glsl/glsl_parser.yy | 11 +++++++++--
>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
>> index 4ac8e45..592630e 100644
>> --- a/src/glsl/glsl_parser.yy
>> +++ b/src/glsl/glsl_parser.yy
>> @@ -1199,8 +1199,6 @@ layout_qualifier_id:
>>       if (!$$.flags.i && state->has_uniform_buffer_objects()) {
>>          if (match_layout_qualifier($1, "std140", state) == 0) {
>>             $$.flags.q.std140 = 1;
>> -         } else if (match_layout_qualifier($1, "shared", state) == 0)
>> {
>> -            $$.flags.q.shared = 1;
> 
> 
> I think you need to leave this here, as layout identifiers are case insensitive.
> 

Good catch. Also it is needed when CS is not supported.

> 
>>         } else if (match_layout_qualifier($1, "std430", state) == 0) {
>>             $$.flags.q.std430 = 1;
>>   } else if (match_layout_qualifier($1, "column_major", state) == 0) {
>> @@ -1618,6 +1616,15 @@ layout_qualifier_id:
>>                             "layout qualifier `%s' is used", $1);
>>       }
>>    }
>> +   | SHARED
>> +   {
>> +      memset(& $$, 0, sizeof($$));
>> +
>> +      if (!$$.flags.i && state->has_uniform_buffer_objects()) {
>> +	 $$.flags.q.shared = 1;
> 
> The right place for this is probably interface_block_layout_qualifier see the commet above it for the same scenario with row_major.
> 
> http://cgit.freedesktop.org/mesa/mesa/tree/src/glsl/glsl_parser.yy#n1635
> 

Right, I am going to send a v2.

>> +	 $$.flags.q.shared_storage = 0;
> 
> Are you sure this is needed? 
> 

After some testing, I verified it is not needed. I am going to remove it.

Thanks for the review!

Sam

>> +      }
>> +   }
>>    ;
>>
>> /* This is a separate language rule because we parse these as tokens
>> -- 
>> 2.5.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> 


More information about the mesa-dev mailing list