[Mesa-dev] [PATCH] glsl/linker: fix bug when checking precision qualifier

Samuel Iglesias Gonsálvez siglesias at igalia.com
Tue Feb 27 10:51:20 UTC 2018


Still unreviewed.

Sam


On 12/02/18 09:10, Samuel Iglesias Gonsálvez wrote:
> This patch is still unreviewed.
>
> Sam
>
>
> On 30/01/18 08:50, Samuel Iglesias Gonsálvez wrote:
>> According to GLSL ES 3.2 spec, see table in 9.2.1 "Linked Shaders"
>> section, the precision qualifier should match for uniform variables.
>> This also applies to previous GLSL ES 3.x specs.
>>
>> This 'if' checks the condition for uniform variables, while for UBOs
>> it is checked in link_interface_blocks.cpp.
>>
>> Fixes: b50b82b8a553
>> ("glsl/es31: precision qualifier doesn't need to match in shader interface block members")
>>
>> Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
>> ---
>>  src/compiler/glsl/linker.cpp | 12 ++++--------
>>  1 file changed, 4 insertions(+), 8 deletions(-)
>>
>> diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
>> index ce101935b01..050b2906f6b 100644
>> --- a/src/compiler/glsl/linker.cpp
>> +++ b/src/compiler/glsl/linker.cpp
>> @@ -1134,15 +1134,11 @@ cross_validate_globals(struct gl_shader_program *prog,
>>  
>>              return;
>>           }
>> -         /* Only in GLSL ES 3.10, the precision qualifier should not match
>> -          * between block members defined in matched block names within a
>> -          * shader interface.
>> -          *
>> -          * In GLSL ES 3.00 and ES 3.20, precision qualifier for each block
>> -          * member should match.
>> +
>> +         /* Check the precision qualifier matches for uniform variables. For UBOs,
>> +          * it is checked in link_interface_blocks.cpp.
>>            */
>> -         if (prog->IsES && (prog->data->Version != 310 ||
>> -                            !var->get_interface_type()) &&
>> +         if (prog->IsES && !var->get_interface_type() &&
>>               existing->data.precision != var->data.precision) {
>>              if ((existing->data.used && var->data.used) || prog->data->Version >= 300) {
>>                 linker_error(prog, "declarations for %s `%s` have "
>
>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180227/293e63c3/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180227/293e63c3/attachment.sig>


More information about the mesa-dev mailing list