summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2010-09-15 13:56:00 -0600
committerBrian Paul <[email protected]>2010-09-15 13:56:02 -0600
commit95254bbd2ddf0c6207a642604cc218ac9d711501 (patch)
tree50bf8389bf129496b508479f871ba7a3cbadb325
parent68cfc8e996fc33ec680c4153e862dcc762e760fc (diff)
tgsi: fix incorrect usage_mask for shadow tex instructions
The shadow versions of the texture targets use an extra component (Z) to express distance from light source to the fragment. Fixes the shadowtex demo with llvmpipe.
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_util.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_util.c b/src/gallium/auxiliary/tgsi/tgsi_util.c
index 3ec54964169..08e7e89bd67 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_util.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_util.c
@@ -262,19 +262,20 @@ tgsi_util_get_inst_usage_mask(const struct tgsi_full_instruction *inst,
case TGSI_OPCODE_TXL:
case TGSI_OPCODE_TXP:
if (src_idx == 0) {
+ /* Note that the SHADOW variants use the Z component too */
switch (inst->Texture.Texture) {
case TGSI_TEXTURE_1D:
- case TGSI_TEXTURE_SHADOW1D:
read_mask = TGSI_WRITEMASK_X;
break;
-
+ case TGSI_TEXTURE_SHADOW1D:
+ read_mask = TGSI_WRITEMASK_XZ;
+ break;
case TGSI_TEXTURE_2D:
case TGSI_TEXTURE_RECT:
- case TGSI_TEXTURE_SHADOW2D:
- case TGSI_TEXTURE_SHADOWRECT:
read_mask = TGSI_WRITEMASK_XY;
break;
-
+ case TGSI_TEXTURE_SHADOW2D:
+ case TGSI_TEXTURE_SHADOWRECT:
case TGSI_TEXTURE_3D:
case TGSI_TEXTURE_CUBE:
read_mask = TGSI_WRITEMASK_XYZ;