From 67551627d34fff4a0fbe719bce33a3bacb55ccef Mon Sep 17 00:00:00 2001 From: marha Date: Thu, 28 Jun 2012 08:08:21 +0200 Subject: xkeyboard-config mesa fontconfig randrproto git update 28 Jun 2012 --- mesalib/src/glsl/linker.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'mesalib/src/glsl/linker.cpp') diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp index bdab499f0..310944752 100644 --- a/mesalib/src/glsl/linker.cpp +++ b/mesalib/src/glsl/linker.cpp @@ -1858,6 +1858,32 @@ assign_varying_location(ir_variable *input_var, ir_variable *output_var, } +/** + * Is the given variable a varying variable to be counted against the + * limit in ctx->Const.MaxVarying? + * This includes variables such as texcoords, colors and generic + * varyings, but excludes variables such as gl_FrontFacing and gl_FragCoord. + */ +static bool +is_varying_var(GLenum shaderType, const ir_variable *var) +{ + /* Only fragment shaders will take a varying variable as an input */ + if (shaderType == GL_FRAGMENT_SHADER && + var->mode == ir_var_in && + var->explicit_location) { + switch (var->location) { + case FRAG_ATTRIB_WPOS: + case FRAG_ATTRIB_FACE: + case FRAG_ATTRIB_PNTC: + return false; + default: + return true; + } + } + return false; +} + + /** * Assign locations for all variables that are produced in one pipeline stage * (the "producer") and consumed in the next stage (the "consumer"). @@ -1966,7 +1992,7 @@ assign_varying_locations(struct gl_context *ctx, * value is written by the previous stage. */ var->mode = ir_var_auto; - } else { + } else if (is_varying_var(consumer->Type, var)) { /* The packing rules are used for vertex shader inputs are also * used for fragment shader inputs. */ -- cgit v1.2.3