summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2011-09-06 17:46:25 -0700
committerEric Anholt <[email protected]>2011-09-08 21:34:03 -0700
commit27c03cb86aa9149d001eefb3cf1e67a97f5bc886 (patch)
tree66e8d087fbbd22f9e6f09a176c9bc3487aa96d92
parent6af968b6736c87c05ea579df50e23b6f23b900d4 (diff)
i965/vs: Fix variable indexed array access with more than one array.
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 <[email protected]> Acked-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index afbd8d9eb58..c50a722b0f4 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -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];