nir: Fix setup of constant bool initializers.
authorEric Anholt <eric@anholt.net>
Wed, 21 Jan 2015 23:32:48 +0000 (15:32 -0800)
committerEric Anholt <eric@anholt.net>
Thu, 22 Jan 2015 21:52:19 +0000 (13:52 -0800)
brw_fs_nir has only seen scalar bools so far, thanks to vector splitting,
and the ralloc of in glsl_to_nir.cpp will *usually* get you a 0-filled
chunk of memory, so reading too large of a value will usually get you the
right bool value.  But once we start doing vector bools in a few commits,
we end up getting bad values.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/glsl/nir/nir_lower_vars_to_ssa.c

index 168a02595fce8f32c6edc5a0dd97028851d4ef78..8af75302986f2c54c39ff04a1a30beee44d2605a 100644 (file)
@@ -600,7 +600,7 @@ get_const_initializer_load(const nir_deref_var *deref,
          load->value.u[i] = constant->value.u[matrix_offset + i];
          break;
       case GLSL_TYPE_BOOL:
-         load->value.u[i] = constant->value.u[matrix_offset + i] ?
+         load->value.u[i] = constant->value.b[matrix_offset + i] ?
                              NIR_TRUE : NIR_FALSE;
          break;
       default: