[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