i965/vs: Fix variable indexed array access with more than one array.
authorEric Anholt <eric@anholt.net>
Wed, 7 Sep 2011 00:46:25 +0000 (17:46 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 9 Sep 2011 04:34:03 +0000 (21:34 -0700)
The offset to the arrays after the first was mis-scaled, so we'd go
access off the end of the surface and read 0s.  Fixes
glsl-vs-uniform-array-3.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp

index afbd8d9eb58ddfcbc52ce9f10467115b4517a340..c50a722b0f424c859662b41429764b57e70fe8c5 100644 (file)
@@ -2211,7 +2211,7 @@ vec4_visitor::move_uniform_array_access_to_pull_constants()
         if (pull_constant_loc[uniform] == -1) {
            const float **values = &prog_data->param[uniform * 4];
 
-           pull_constant_loc[uniform] = prog_data->nr_pull_params;
+           pull_constant_loc[uniform] = prog_data->nr_pull_params / 4;
 
            for (int j = 0; j < uniform_size[uniform] * 4; j++) {
               prog_data->pull_param[prog_data->nr_pull_params++] = values[j];