nir/types: Make glsl_get_length smarter
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 10 Apr 2015 23:16:02 +0000 (16:16 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 23 Apr 2015 01:10:40 +0000 (18:10 -0700)
commit8b900e74058dd48368511780a488ccb7a645c64f
tree44bb04335642a61cecf0824cd6e410474fa68a22
parent7e1d21edbff772f6dfc727e0e09788d87e00e0f5
nir/types: Make glsl_get_length smarter

Previously, this function returned the number of elements for structures
and arrays and 0 for everything else.  In NIR, this is almost never what
you want because we also treat matricies as arrays so you have to
special-case constantly.  This commit  glsl_get_length treat matrices
as an array of columns by returning the number of columns instead of 0

This also fixes a bug in locals_to_regs caused by not checking for the
matrix case in one place.

v2: Only special-case for matrices and return a length of 0 for vectors as
    we did before.  This was needed to not break the TGSI-based drivers and
    doesn't really affect NIR at the moment.

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Tested-by: Rob Clark <robclark@freedesktop.org>
src/glsl/nir/nir_lower_locals_to_regs.c
src/glsl/nir/nir_lower_var_copies.c
src/glsl/nir/nir_lower_vars_to_ssa.c
src/glsl/nir/nir_types.cpp