From: Ian Romanick <ian.d.roman...@intel.com> Some language versions have the vertex output components minimum-maximum lower (GLSL 1.50), and some have the fragment input components minimum-maximum lower (GLSL ES 3.0). Use whichever value is lower, and call it done.
Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> Cc: Paul Berry <stereotype...@gmail.com> --- src/glsl/builtin_variables.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp index 6a808c0..79e1db4 100644 --- a/src/glsl/builtin_variables.cpp +++ b/src/glsl/builtin_variables.cpp @@ -475,6 +475,10 @@ builtin_variable_generator::add_const(const char *name, int value) void builtin_variable_generator::generate_constants() { + const max_varying_components = + MIN2(state->ctx->Const.VertexProgram.MaxOutputComponents, + state->ctx->Const.FragmentProgram.MaxInputComponents); + add_const("gl_MaxVertexAttribs", state->Const.MaxVertexAttribs); add_const("gl_MaxVertexTextureImageUnits", state->Const.MaxVertexTextureImageUnits); @@ -497,11 +501,11 @@ builtin_variable_generator::generate_constants() */ if (state->is_version(0, 300)) { add_const("gl_MaxVertexOutputVectors", - state->Const.MaxVaryingFloats / 4); + state->ctx->Const.VertexProgram.MaxOutputComponents / 4); add_const("gl_MaxFragmentInputVectors", - state->Const.MaxVaryingFloats / 4); + state->ctx->Const.FragmentProgram.MaxInputComponents / 4); } else { - add_const("gl_MaxVaryingVectors", state->Const.MaxVaryingFloats / 4); + add_const("gl_MaxVaryingVectors", max_varying_components / 4); } } else { add_const("gl_MaxVertexUniformComponents", @@ -510,7 +514,7 @@ builtin_variable_generator::generate_constants() /* Note: gl_MaxVaryingFloats was deprecated in GLSL 1.30+, but not * removed */ - add_const("gl_MaxVaryingFloats", state->Const.MaxVaryingFloats); + add_const("gl_MaxVaryingFloats", max_varying_components); add_const("gl_MaxFragmentUniformComponents", state->Const.MaxFragmentUniformComponents); @@ -531,7 +535,7 @@ builtin_variable_generator::generate_constants() if (state->is_version(130, 0)) { add_const("gl_MaxClipDistances", state->Const.MaxClipPlanes); - add_const("gl_MaxVaryingComponents", state->Const.MaxVaryingFloats); + add_const("gl_MaxVaryingComponents", max_varying_components); } if (compatibility) { -- 1.8.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev