summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_tgsi_to_rc.c
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2009-12-16 06:07:39 +0100
committerCorbin Simpson <MostAwesomeDude@gmail.com>2009-12-19 23:54:53 -0800
commit6ba83cd63f84a4d74dd679d62662d59533fd1bdb (patch)
treea77da0e4b1482551f4274db1a630fdf33c4d3b5f /src/gallium/drivers/r300/r300_tgsi_to_rc.c
parent4b6dee08652706d02939844fe209cddbae8966e4 (diff)
r300g: add texture compare modes
Diffstat (limited to 'src/gallium/drivers/r300/r300_tgsi_to_rc.c')
-rw-r--r--src/gallium/drivers/r300/r300_tgsi_to_rc.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_tgsi_to_rc.c b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
index 9fb2de2403..096cdb20bb 100644
--- a/src/gallium/drivers/r300/r300_tgsi_to_rc.c
+++ b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
@@ -212,7 +212,8 @@ static void transform_srcreg(
dst->Negate = src->Register.Negate ? RC_MASK_XYZW : 0;
}
-static void transform_texture(struct rc_instruction * dst, struct tgsi_instruction_texture src)
+static void transform_texture(struct rc_instruction * dst, struct tgsi_instruction_texture src,
+ uint32_t *shadowSamplers)
{
switch(src.Texture) {
case TGSI_TEXTURE_1D:
@@ -233,14 +234,17 @@ static void transform_texture(struct rc_instruction * dst, struct tgsi_instructi
case TGSI_TEXTURE_SHADOW1D:
dst->U.I.TexSrcTarget = RC_TEXTURE_1D;
dst->U.I.TexShadow = 1;
+ *shadowSamplers |= 1 << dst->U.I.TexSrcUnit;
break;
case TGSI_TEXTURE_SHADOW2D:
dst->U.I.TexSrcTarget = RC_TEXTURE_2D;
dst->U.I.TexShadow = 1;
+ *shadowSamplers |= 1 << dst->U.I.TexSrcUnit;
break;
case TGSI_TEXTURE_SHADOWRECT:
dst->U.I.TexSrcTarget = RC_TEXTURE_RECT;
dst->U.I.TexShadow = 1;
+ *shadowSamplers |= 1 << dst->U.I.TexSrcUnit;
break;
}
}
@@ -269,7 +273,8 @@ static void transform_instruction(struct tgsi_to_rc * ttr, struct tgsi_full_inst
/* Texturing. */
if (src->Instruction.Texture)
- transform_texture(dst, src->Texture);
+ transform_texture(dst, src->Texture,
+ &ttr->compiler->Program.ShadowSamplers);
}
static void handle_immediate(struct tgsi_to_rc * ttr, struct tgsi_full_immediate * imm)