glsl: Add user-defined default precision qualifiers to the symbol table
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 26 Feb 2015 11:15:18 +0000 (12:15 +0100)
committerTapani Pälli <tapani.palli@intel.com>
Thu, 12 Nov 2015 07:50:13 +0000 (09:50 +0200)
commite6629d814f9a860b3a5390684be06370b270be14
tree9f8e6165a034f9d4b72a5427e8eb30ac3caf68a6
parente3082fb2732c2af836875201b8d7f49e864c8e4e
glsl: Add user-defined default precision qualifiers to the symbol table

Notice that the spec requires that a default precision has been set for every
type used by a shader that can use a precision qualifier and does not have a
predefined precision, however, at the moment, Mesa only checks this for floats
in the fragment shader. This is probably because the GLSL ES 1.0 specs mentions
this case specifically, but GLSL ES 3.0 clarifies that the same applies to
other types:

"The fragment language has no default precision qualifier for floating point
 types. Hence for float, floating point vector and matrix variable
 declarations, either the declaration must include a precision qualifier or
 the default float precision must have been previously declared. Similarly,
 there is no default precision qualifier for the following sampler types in
 either the vertex or fragment language:

 sampler3D;
 samplerCubeShadow;
 sampler2DShadow;
 sampler2DArray;
 sampler2DArrayShadow;
 isampler2D;
 isampler3D;
 isamplerCube;
 isampler2DArray;
 usampler2D;
 usampler3D;
 usamplerCube;
 usampler2DArray;"

we will fix this in a later patch.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
src/glsl/ast_to_hir.cpp