glsl/es31: precision qualifier doesn't need to match in shader interface block members
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Tue, 18 Oct 2016 07:38:30 +0000 (09:38 +0200)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Mon, 24 Oct 2016 05:04:38 +0000 (07:04 +0200)
commitb50b82b8a553f93b4ee9ace734e4c53d5a388a35
tree49b7f2a76ccd2b335db3c4a35ae0904f7ef578a4
parent849390a61a92698dec541abfed47791e84c73a32
glsl/es31: precision qualifier doesn't need to match in shader interface block members

It is specific only to GLSL ES 3.1. From the spec, section 4.3.9
"Interface Blocks":

"Matched block names within a shader interface (as defined above) must
 match in terms of having the same number of declarations with the same
 sequence of types and the same sequence of member names, as well as
 having the same qualification as specified in section 9.2 (“Matching
 of Qualifiers“)."

But in GLSL ES 3.0 and 3.2, it is the opposite:

"Matched block names within a shader interface (as defined above) must
 match in terms of having the same number of declarations with the same
 sequence of types, precisions and the same sequence of member names,
 as well as having the matching member-wise layout qualification as
 defined in section 9.2 (“Matching of Qualifiers”)."

Fixes:

dEQP-GLES31.functional.shaders.linkage.uniform.block.differing_precision

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98243
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/compiler/glsl/link_interface_blocks.cpp
src/compiler/glsl/linker.cpp