On 10/03/2018 11:52 PM, Iago Toral wrote:
> On Wed, 2018-10-03 at 16:24 +0300, Vadim Shovkoplias wrote:
>> Hi Iago,
>>
>> I also think that compiler is the best place for the fix. But from my
>> understanding compiler fix will be limited to distinct shader objects
>> (not the shader stage).
>> In GLSL spec mentioned: "A program will fail to compile or link if any
>> *shader or stage* contains two or more functions with the same name if
>> the name is 
>> associated with a subroutine type".
>> So if I understand the spec correctly such restriction for the shader
>> stage can be fixed only in linker. E.g. consider the use case when
>> fragment shader is linked from 
>> two fragment shader objects. One object contains function foo() which
>> is associated with subroutine type and second shader object has some
>> regular foo() function 
>> with the same name.  I suppose compiler fix won't be able to detect this.
> 
> Yes, that is correct, good point.
> 
>> IMHO the best way to fix this is to implement 2 patches:
>> 1) One patch for linker to implement restriction for the shader stages
>> (already done in this patch)
>> 2) Another one for compiler to check the restriction for distinct
>> shader objects.
>>
>> What do you think ?
> 
> Since we need to keep the link-time check, any compile-time checks we
> add would be redundant with that, so I think we should just go with the
> link-time check only (your original patch)

The spec quotation is pretty clear: "A program will fail to compile ...
if any shader ... contains two or more functions with the same name if
the name is associated with a subroutine type."  To be strictly correct,
both checks are necessary.  Before doing that extra work, someone should
check that glslang has the compile-time check.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to