mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30
From section 5.9 of the GLSL 1.20 spec: The operator modulus (%) is reserved for future use. From section 5.8 of the GLSL 1.20 spec: The assignments modulus into (%=), left shift by (<<=), right shift by (>>=), inclusive or into ( |=), and exclusive or into ( ^=). These operators are reserved for future use. The GLSL ES 1.00 spec and GLSL 1.10 spec have similiar language. Fixes bug: https://bugs.freedesktop.org//show_bug.cgi?id=33916 Fixes Piglit tests: spec/glsl-1.00/compiler/arithmetic-operators/modulus-00.frag spec/glsl-1.00/compiler/assignment-operators/modulus-assign-00.frag spec/glsl-1.10/compiler/arithmetic-operators/modulus-00.frag spec/glsl-1.10/compiler/assignment-operators/modulus-assign-00.frag spec/glsl-1.20/compiler/arithmetic-operators/modulus-00.frag spec/glsl-1.20/compiler/assignment-operators/modulus-assign-00.frag
This commit is contained in:
parent
69e5516308
commit
82f994f386
1 changed files with 7 additions and 0 deletions
|
|
@ -435,6 +435,13 @@ modulus_result_type(const struct glsl_type *type_a,
|
|||
const struct glsl_type *type_b,
|
||||
struct _mesa_glsl_parse_state *state, YYLTYPE *loc)
|
||||
{
|
||||
if (state->language_version < 130) {
|
||||
_mesa_glsl_error(loc, state,
|
||||
"operator '%%' is reserved in %s",
|
||||
state->version_string);
|
||||
return glsl_type::error_type;
|
||||
}
|
||||
|
||||
/* From GLSL 1.50 spec, page 56:
|
||||
* "The operator modulus (%) operates on signed or unsigned integers or
|
||||
* integer vectors. The operand types must both be signed or both be
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue