On 18 October 2011 17:33, Eric Anholt <e...@anholt.net> wrote: > A driver trying to set up builtin uniforms is faced with a problem: > How do I walk the ir_variable structure (representing an array of > structs, or array of matrices, or struct, or whatever), and set up > driver structures so that dereference of that uniform gets the > corresponding ParameterValues[] entry. The rule in general is that > each corresponding vector-sized field of an array of structs is one > builtin uniform state slot. i965 relied on another invariant: each > state slot has a number of unique channel swizzles corresponding to > the number of elements in the field's vector, to avoid needing to walk > the glsl_type in parallel to get at vector_elements. >
Since only the i965 driver relies on this invariant, it would be easy for a mesa core developer to mess this up in the future and not notice. Can we add an assertion to ir_variable.cpp's add_uniform() function to verify the invariant? That would also serve as a nice place to document why the invariant is necessary. Either way, the patch is: Reviewed-by: Paul Berry <stereotype...@gmail.com>
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev