glsl: Move the definition of precision_qualifier_allowed

We will need this to build later patches

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:
Iago Toral Quiroga
2015-11-05 08:18:46 +02:00
committed by Tapani Pälli
parent e6629d814f
commit 9a00e1a69d
+35 -36
View File
@@ -2116,6 +2116,41 @@ process_array_type(YYLTYPE *loc, const glsl_type *base,
return array_type;
}
static bool
precision_qualifier_allowed(const glsl_type *type)
{
/* Precision qualifiers apply to floating point, integer and opaque
* types.
*
* Section 4.5.2 (Precision Qualifiers) of the GLSL 1.30 spec says:
* "Any floating point or any integer declaration can have the type
* preceded by one of these precision qualifiers [...] Literal
* constants do not have precision qualifiers. Neither do Boolean
* variables.
*
* Section 4.5 (Precision and Precision Qualifiers) of the GLSL 1.30
* spec also says:
*
* "Precision qualifiers are added for code portability with OpenGL
* ES, not for functionality. They have the same syntax as in OpenGL
* ES."
*
* Section 8 (Built-In Functions) of the GLSL ES 1.00 spec says:
*
* "uniform lowp sampler2D sampler;
* highp vec2 coord;
* ...
* lowp vec4 col = texture2D (sampler, coord);
* // texture2D returns lowp"
*
* From this, we infer that GLSL 1.30 (and later) should allow precision
* qualifiers on sampler types just like float and integer types.
*/
return type->is_float()
|| type->is_integer()
|| type->is_record()
|| type->contains_opaque();
}
const glsl_type *
ast_type_specifier::glsl_type(const char **name,
@@ -3610,42 +3645,6 @@ validate_identifier(const char *identifier, YYLTYPE loc,
}
}
static bool
precision_qualifier_allowed(const glsl_type *type)
{
/* Precision qualifiers apply to floating point, integer and opaque
* types.
*
* Section 4.5.2 (Precision Qualifiers) of the GLSL 1.30 spec says:
* "Any floating point or any integer declaration can have the type
* preceded by one of these precision qualifiers [...] Literal
* constants do not have precision qualifiers. Neither do Boolean
* variables.
*
* Section 4.5 (Precision and Precision Qualifiers) of the GLSL 1.30
* spec also says:
*
* "Precision qualifiers are added for code portability with OpenGL
* ES, not for functionality. They have the same syntax as in OpenGL
* ES."
*
* Section 8 (Built-In Functions) of the GLSL ES 1.00 spec says:
*
* "uniform lowp sampler2D sampler;
* highp vec2 coord;
* ...
* lowp vec4 col = texture2D (sampler, coord);
* // texture2D returns lowp"
*
* From this, we infer that GLSL 1.30 (and later) should allow precision
* qualifiers on sampler types just like float and integer types.
*/
return type->is_float()
|| type->is_integer()
|| type->is_record()
|| type->contains_opaque();
}
ir_rvalue *
ast_declarator_list::hir(exec_list *instructions,
struct _mesa_glsl_parse_state *state)