From: Gert Wollny <gert.wol...@collabora.com>

The added function evaluates the array index according to the function

    idx = floor(ai + 0.5);

Signed-off-by: Gert Wollny <gert.wol...@collabora.com>
---
 src/gallium/drivers/r600/r600_shader.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index 6655b000aa..e2f44afc05 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -7448,6 +7448,40 @@ static int r600_do_buffer_txq(struct r600_shader_ctx 
*ctx, int reg_idx, int offs
        }
 }
 
+/* Evaluate the texture array index according to floor(z+0.5) */
+static int r600_shader_evaluate_array_index(struct r600_bytecode_alu *alu,
+                                                                               
                                  int reg, int chan, int rel,
+                                                                               
                                  struct r600_bytecode *bc)
+{
+       int r;
+
+       /* evaluate array index according to floor(z+0.5) */
+       alu->op = ALU_OP2_ADD;
+       alu->src[1].sel = V_SQ_ALU_SRC_0_5;
+       alu->dst.sel = reg;
+       alu->dst.chan = chan;
+       alu->dst.rel = rel;
+       alu->dst.write = 1;
+       alu->last = 1;
+       r = r600_bytecode_add_alu(bc, alu);
+       if (r)
+               return r;
+
+       memset(alu, 0, sizeof(struct r600_bytecode_alu));
+       alu->op = ALU_OP1_FLOOR;
+       alu->src[0].sel = reg;
+       alu->src[0].chan = chan;
+       alu->src[0].rel = rel;
+       alu->dst.sel = reg;
+       alu->dst.chan = chan;
+       alu->dst.rel = rel;
+       alu->dst.write = 1;
+       alu->last = 1;
+       r = r600_bytecode_add_alu(bc, alu);
+       if (r)
+               return r;
+       return 0;
+}
 
 static int tgsi_tex(struct r600_shader_ctx *ctx)
 {
-- 
2.16.4

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

Reply via email to