diff options
author | marha <marha@users.sourceforge.net> | 2012-06-28 08:08:21 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-06-28 08:08:21 +0200 |
commit | 67551627d34fff4a0fbe719bce33a3bacb55ccef (patch) | |
tree | 37b58281a1186148a56dbb3b9eed6eaf759cbe7b /mesalib/src/glsl/linker.cpp | |
parent | 7baa3d795c87c11550f1686488c968320428cbf9 (diff) | |
download | vcxsrv-67551627d34fff4a0fbe719bce33a3bacb55ccef.tar.gz vcxsrv-67551627d34fff4a0fbe719bce33a3bacb55ccef.tar.bz2 vcxsrv-67551627d34fff4a0fbe719bce33a3bacb55ccef.zip |
xkeyboard-config mesa fontconfig randrproto git update 28 Jun 2012
Diffstat (limited to 'mesalib/src/glsl/linker.cpp')
-rw-r--r-- | mesalib/src/glsl/linker.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
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 @@ -1859,6 +1859,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. */ |