[Mesa-dev] [PATCH] glsl: gl_Max{Vertex, Fragment}UniformComponents exist in all desktop GL versions

Nicolai Hähnle nhaehnle at gmail.com
Mon Jun 19 11:39:48 UTC 2017


Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

On 16.06.2017 12:05, Iago Toral Quiroga wrote:
> 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.
> ---
>   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 405502e..19d427e 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
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list