diff options
author | Marek Olšák <[email protected]> | 2011-09-05 08:01:24 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2011-09-10 08:53:29 +0200 |
commit | 6b9a36cc3ff3b0a65f70b8a5503e26339a0e4fbe (patch) | |
tree | cdabc83dfb8aff01728e1db94cd3a369de6af6af /src | |
parent | c8b0b13d40d2686ff34ead1ac98cc98df3530480 (diff) |
r600g: fix shadow rect samplers
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 9 |
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) { |