If I get this right... Why not use a vertex array with stride == 0 instead?
Marek On Thu, Oct 6, 2011 at 6:36 PM, Eric Anholt <e...@anholt.net> wrote: > These will be used by the FF VS/FS to represent the current attributes > when they don't have an active vertex array. > --- > src/glsl/ir_variable.cpp | 25 ++++++++++++++++++++++++- > 1 files changed, 24 insertions(+), 1 deletions(-) > > diff --git a/src/glsl/ir_variable.cpp b/src/glsl/ir_variable.cpp > index 58be64b..03fa43f 100644 > --- a/src/glsl/ir_variable.cpp > +++ b/src/glsl/ir_variable.cpp > @@ -178,6 +178,14 @@ static struct gl_builtin_uniform_element > gl_MESAFogParamsOptimized_elements[] = > {NULL, {STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED}, SWIZZLE_XYZW}, > }; > > +static struct gl_builtin_uniform_element gl_MESACurrentAttribVert_elements[] > = { > + {NULL, {STATE_INTERNAL, STATE_CURRENT_ATTRIB, 0}, SWIZZLE_XYZW}, > +}; > + > +static struct gl_builtin_uniform_element gl_MESACurrentAttribFrag_elements[] > = { > + {NULL, {STATE_INTERNAL, STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, 0}, > SWIZZLE_XYZW}, > +}; > + > #define MATRIX(name, statevar, modifier) \ > static struct gl_builtin_uniform_element name ## _elements[] = { \ > { NULL, { statevar, 0, 0, 0, modifier}, SWIZZLE_XYZW }, \ > @@ -284,6 +292,8 @@ const struct gl_builtin_uniform_desc > _mesa_builtin_uniform_desc[] = { > STATEVAR(gl_MESABumpRotMatrix0), > STATEVAR(gl_MESABumpRotMatrix1), > STATEVAR(gl_MESAFogParamsOptimized), > + STATEVAR(gl_MESACurrentAttribVert), > + STATEVAR(gl_MESACurrentAttribFrag), > > {NULL, NULL, 0} > }; > @@ -355,7 +365,12 @@ add_uniform(exec_list *instructions, glsl_symbol_table > *symtab, > > memcpy(slots->tokens, element->tokens, sizeof(element->tokens)); > if (type->is_array()) { > - slots->tokens[1] = a; > + if (strcmp(name, "gl_MESACurrentAttribVert") == 0 || > + strcmp(name, "gl_MESACurrentAttribFrag") == 0) { > + slots->tokens[2] = a; > + } else { > + slots->tokens[1] = a; > + } > } > > slots->swizzle = element->swizzle; > @@ -518,6 +533,14 @@ generate_110_uniforms(exec_list *instructions, > > add_uniform(instructions, symtab, "gl_Fog", > symtab->get_type("gl_FogParameters")); > + > + /* Mesa-internal current attrib state */ > + const glsl_type *const vert_attribs = > + glsl_type::get_array_instance(glsl_type::vec4_type, VERT_ATTRIB_MAX); > + add_uniform(instructions, symtab, "gl_MESACurrentAttribVert", > vert_attribs); > + const glsl_type *const frag_attribs = > + glsl_type::get_array_instance(glsl_type::vec4_type, FRAG_ATTRIB_MAX); > + add_uniform(instructions, symtab, "gl_MESACurrentAttribFrag", > frag_attribs); > } > > /* This function should only be called for ES, not desktop GL. */ > -- > 1.7.6.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev