From b70d6a2de1c90409c7a2e0d6484f350558f5c2ac Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 16 Jun 2017 12:05:20 +0200 Subject: [PATCH] glsl: gl_Max{Vertex,Fragment}UniformComponents exist in all desktop GL versions MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The current implementation assumed that these were replaced in GLSL >= 4.10 by gl_Max{Vertex,Fragment}UniformVectors, however this is not true: both built-ins should be produced from GLSL 4.10 onwards. This was raised by new CTS tests that are in development. Reviewed-by: Nicolai Hähnle --- src/compiler/glsl/builtin_variables.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/compiler/glsl/builtin_variables.cpp b/src/compiler/glsl/builtin_variables.cpp index 405502eb8a4..19d427e4bc0 100644 --- a/src/compiler/glsl/builtin_variables.cpp +++ b/src/compiler/glsl/builtin_variables.cpp @@ -632,8 +632,16 @@ builtin_variable_generator::generate_constants() add_const("gl_MaxDrawBuffers", state->Const.MaxDrawBuffers); /* Max uniforms/varyings: GLSL ES counts these in units of vectors; desktop - * GL counts them in units of "components" or "floats". + * GL counts them in units of "components" or "floats" and also in units + * of vectors since GL 4.1 */ + if (!state->es_shader) { + add_const("gl_MaxFragmentUniformComponents", + state->Const.MaxFragmentUniformComponents); + add_const("gl_MaxVertexUniformComponents", + state->Const.MaxVertexUniformComponents); + } + if (state->is_version(410, 100)) { add_const("gl_MaxVertexUniformVectors", state->Const.MaxVertexUniformComponents / 4); @@ -661,16 +669,10 @@ builtin_variable_generator::generate_constants() state->Const.MaxDualSourceDrawBuffers); } } else { - add_const("gl_MaxVertexUniformComponents", - state->Const.MaxVertexUniformComponents); - /* Note: gl_MaxVaryingFloats was deprecated in GLSL 1.30+, but not * removed */ add_const("gl_MaxVaryingFloats", state->ctx->Const.MaxVarying * 4); - - add_const("gl_MaxFragmentUniformComponents", - state->Const.MaxFragmentUniformComponents); } /* Texel offsets were introduced in ARB_shading_language_420pack (which -- 2.30.2