[Mesa-dev] [PATCH] glsl: Fix gl_NormalMatrix swizzle setup to match i965's invariants.

Paul Berry stereotype441 at gmail.com
Wed Oct 19 11:26:02 PDT 2011

On 18 October 2011 17:33, Eric Anholt <eric at 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 <stereotype441 at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20111019/f30a3106/attachment.html>

More information about the mesa-dev mailing list