[Mesa-dev] [PATCH 09/17] glsl_symbol_table: add interface block namespaces

Kenneth Graunke kenneth at whitecape.org
Mon Apr 22 16:43:23 PDT 2013


On 04/22/2013 08:15 AM, Jordan Justen wrote:
> On Sun, Apr 21, 2013 at 12:30 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
>> On 04/19/2013 12:35 PM, Jordan Justen wrote:
>>>
>>> For interface blocks, there are three separate namespaces for
>>> uniform, input and output blocks.
>>
>>
>> http://knowyourmeme.com/photos/2109
>>
>> There are?
>>
>> Similarly, for your next patch:
>> "Uniform/interface blocks are a separate namespace from types."
>>
>> They are?
>
> I should definitely add some spec references to this commit.
>
> Anyway, this is tested by my proposed piglit test:
> glsl-1.50: allow the same name for uniform and varying interface
> And, I actually properly referenced the spec there. :)
>
> GLSLangSpec.1.50.11, 4.3.7 Interface Blocks:
> "A block name is allowed to have different definitions in different
>   interfaces."
>
> Which kind of confused me until I read:
> GLSLangSpec.4.30.8, 4.3.9 Interface Blocks:
> "A block name is allowed to have different definitions in different
>   interfaces within the same shader, allowing, for example, an input
>   block and output block to have the same name."
>
> Did I misinterpreted this text?
>
> Thanks,
>
> -Jordan

I had only been looking in 1.50.  The 4.30 text does indeed clarify that 
input/output blocks should be able to have the same name.

It does seem to me that block names should conflict with 
variables/functions/structure types, though, due to this text:

"it is a compile-time error to use a block name at global scope for 
anything other than as a block name (e.g. use of a block name for a 
global variable name or function name is currently reserved)." (4.30, 
page 50 aka 56 in the PDF).

As long as es3conform's uniform_buffer_object_block_name_conflict test, 
and piglit block-name-clashes-with-{variable,function,struct}.vert pass, 
I'm OK with it.


More information about the mesa-dev mailing list