r600g: fix TXD when shadowing is enabled.
authorMike Kaplinskiy <mike.kaplinskiy@gmai.com>
Wed, 15 Jun 2011 05:54:21 +0000 (15:54 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 15 Jun 2011 05:54:21 +0000 (15:54 +1000)
Mike had actually done a lot of the TXD support in a patch in bug
37476 which I see now, I'll add the bits of his work that I didn't think
to add to my work.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_shader.c
src/gallium/drivers/r600/r600d.h

index 9a0df2305b9128606d7f624cfceb59c271f42d28..4a08887d301a564207ed2e087d70c6a88e821a95 100644 (file)
@@ -2001,9 +2001,19 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
        }
 
        opcode = ctx->inst_info->r600_opcode;
-       if (opcode == SQ_TEX_INST_SAMPLE &&
-           (inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D || inst->Texture.Texture == TGSI_TEXTURE_SHADOW2D))
-               opcode = SQ_TEX_INST_SAMPLE_C;
+       if (inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D || inst->Texture.Texture == TGSI_TEXTURE_SHADOW2D) {
+               switch (opcode) {
+               case SQ_TEX_INST_SAMPLE:
+                       opcode = SQ_TEX_INST_SAMPLE_C;
+                       break;
+               case SQ_TEX_INST_SAMPLE_L:
+                       opcode = SQ_TEX_INST_SAMPLE_C_L;
+                       break;
+               case SQ_TEX_INST_SAMPLE_G:
+                       opcode = SQ_TEX_INST_SAMPLE_C_G;
+                       break;
+               }
+       }
 
        memset(&tex, 0, sizeof(struct r600_bc_tex));
        tex.inst = opcode;
index 95672b13ba02e33781a48810e155e6f3d5d05128..6373572b65f63517a957938339a0a2cf56bc379c 100644 (file)
 #define SQ_TEX_INST_LD 0x03
 #define SQ_TEX_INST_GET_GRADIENTS_H 0x7
 #define SQ_TEX_INST_GET_GRADIENTS_V 0x8
+#define SQ_TEX_INST_SET_GRADIENTS_H 0xB
+#define SQ_TEX_INST_SET_GRADIENTS_V 0xC
 
 #define SQ_TEX_INST_SAMPLE 0x10
 #define SQ_TEX_INST_SAMPLE_L 0x11
 #define SQ_TEX_INST_SAMPLE_G 0x14
 #define SQ_TEX_INST_SAMPLE_C 0x18
-
-#define SQ_TEX_INST_SET_GRADIENTS_H 0xB
-#define SQ_TEX_INST_SET_GRADIENTS_V 0xC
+#define SQ_TEX_INST_SAMPLE_C_L 0x19
+#define SQ_TEX_INST_SAMPLE_C_G 0x1C
 
 #endif