vc4: Use proper type sizes for uniforms.
authorEric Anholt <eric@anholt.net>
Wed, 27 Jul 2016 22:03:39 +0000 (15:03 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 22 Aug 2016 18:52:26 +0000 (11:52 -0700)
src/gallium/drivers/vc4/vc4_program.c

index 8b508310e75020468f554ca9a305f79afcc4a259..1e8542fc27fb23b7c5d033617bccc525a0adf109 100644 (file)
@@ -37,6 +37,7 @@
 #include "vc4_context.h"
 #include "vc4_qpu.h"
 #include "vc4_qir.h"
+#include "mesa/state_tracker/st_glsl_types.h"
 #ifdef USE_VC4_SIMULATOR
 #include "simpenrose/simpenrose.h"
 #endif
@@ -1486,11 +1487,11 @@ static void
 ntq_setup_uniforms(struct vc4_compile *c)
 {
         nir_foreach_variable(var, &c->s->uniforms) {
-                unsigned array_len = MAX2(glsl_get_length(var->type), 1);
-                unsigned array_elem_size = 4 * sizeof(float);
+                uint32_t vec4_count = st_glsl_type_size(var->type);
+                unsigned vec4_size = 4 * sizeof(float);
 
-                declare_uniform_range(c, var->data.driver_location * array_elem_size,
-                                      array_len * array_elem_size);
+                declare_uniform_range(c, var->data.driver_location * vec4_size,
+                                      vec4_count * vec4_size);
 
         }
 }