r600g: fix TXD when shadowing is enabled.

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>
This commit is contained in:
Mike Kaplinskiy 2011-06-15 15:54:21 +10:00 committed by Dave Airlie
parent 13c9a8552b
commit de91ea1c06
2 changed files with 17 additions and 6 deletions

View 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;

View File

@ -3465,13 +3465,14 @@
#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