From: Dave Airlie <airl...@redhat.com>

This fixes:
glsl-1.50/execution/geometry/dynamic_input_array_index.shader_test
my profanity.

We need to load the AR register with the value from the index reg

Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 src/gallium/drivers/r600/r600_shader.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index 0ca1f29..2514cbf 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1488,8 +1488,17 @@ static int fetch_gs_input(struct r600_shader_ctx *ctx, 
struct tgsi_full_src_regi
                int treg[3];
                struct r600_bytecode_alu alu;
                int r, i;
-
-               /* you have got to be shitting me -
+               unsigned addr_reg;
+               addr_reg = get_address_file_reg(ctx, src->DimIndirect.Index);
+               if (src->DimIndirect.Index > 0) {
+                       r = single_alu_op2(ctx, ALU_OP1_MOV,
+                                          ctx->bc->ar_reg, 0,
+                                          addr_reg, 0,
+                                          0, 0);
+                       if (r)
+                               return r;
+               }
+               /*
                   we have to put the R0.x/y/w into Rt.x Rt+1.x Rt+2.x then 
index reg from Rt.
                   at least this is what fglrx seems to do. */
                for (i = 0; i < 3; i++) {
-- 
2.5.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to