aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2011-09-05 08:01:24 +0200
committerMarek Olšák <[email protected]>2011-09-10 08:53:29 +0200
commit6b9a36cc3ff3b0a65f70b8a5503e26339a0e4fbe (patch)
treecdabc83dfb8aff01728e1db94cd3a369de6af6af
parentc8b0b13d40d2686ff34ead1ac98cc98df3530480 (diff)
r600g: fix shadow rect samplers
-rw-r--r--src/gallium/drivers/r600/r600_shader.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index fa8ad61ba3b..7f7f7453732 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -2179,6 +2179,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
opcode = ctx->inst_info->r600_opcode;
if (inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D ||
inst->Texture.Texture == TGSI_TEXTURE_SHADOW2D ||
+ inst->Texture.Texture == TGSI_TEXTURE_SHADOWRECT ||
inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D_ARRAY ||
inst->Texture.Texture == TGSI_TEXTURE_SHADOW2D_ARRAY) {
switch (opcode) {
@@ -2228,12 +2229,13 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
tex.src_sel_w = 1;
}
- if (inst->Texture.Texture != TGSI_TEXTURE_RECT) {
+ if (inst->Texture.Texture != TGSI_TEXTURE_RECT &&
+ inst->Texture.Texture != TGSI_TEXTURE_SHADOWRECT) {
tex.coord_type_x = 1;
tex.coord_type_y = 1;
- tex.coord_type_z = 1;
- tex.coord_type_w = 1;
}
+ tex.coord_type_z = 1;
+ tex.coord_type_w = 1;
tex.offset_x = offset_x;
tex.offset_y = offset_y;
@@ -2244,6 +2246,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
* Some instructions expect the depth in Z. */
if ((inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D ||
inst->Texture.Texture == TGSI_TEXTURE_SHADOW2D ||
+ inst->Texture.Texture == TGSI_TEXTURE_SHADOWRECT ||
inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D_ARRAY) &&
opcode != SQ_TEX_INST_SAMPLE_C_L &&
opcode != SQ_TEX_INST_SAMPLE_C_LB) {