mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
r300/compiler: apply the texture swizzle to shadow pass and fail values too
Piglit tests:
- glsl-fs-shadow2d-01
- glsl-fs-shadow2d-02
- glsl-fs-shadow2d-03
- fs-shadow2d-red-01
- fs-shadow2d-red-02
- fs-shadow2d-red-03
NOTE: This is a candidate for the stable branches.
(cherry picked from commit 0d96ae8fc7)
This commit is contained in:
parent
f3a21be95e
commit
cd2cf02139
1 changed files with 20 additions and 8 deletions
|
|
@ -32,8 +32,8 @@
|
||||||
|
|
||||||
/* Series of transformations to be done on textures. */
|
/* Series of transformations to be done on textures. */
|
||||||
|
|
||||||
static struct rc_src_register shadow_ambient(struct r300_fragment_program_compiler *compiler,
|
static struct rc_src_register shadow_fail_value(struct r300_fragment_program_compiler *compiler,
|
||||||
int tmu)
|
int tmu)
|
||||||
{
|
{
|
||||||
struct rc_src_register reg = { 0, };
|
struct rc_src_register reg = { 0, };
|
||||||
|
|
||||||
|
|
@ -46,6 +46,20 @@ static struct rc_src_register shadow_ambient(struct r300_fragment_program_compil
|
||||||
reg.File = RC_FILE_NONE;
|
reg.File = RC_FILE_NONE;
|
||||||
reg.Swizzle = RC_SWIZZLE_0000;
|
reg.Swizzle = RC_SWIZZLE_0000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reg.Swizzle = combine_swizzles(reg.Swizzle,
|
||||||
|
compiler->state.unit[tmu].depth_texture_swizzle);
|
||||||
|
return reg;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct rc_src_register shadow_pass_value(struct r300_fragment_program_compiler *compiler,
|
||||||
|
int tmu)
|
||||||
|
{
|
||||||
|
struct rc_src_register reg = { 0, };
|
||||||
|
|
||||||
|
reg.File = RC_FILE_NONE;
|
||||||
|
reg.Swizzle = combine_swizzles(RC_SWIZZLE_1111,
|
||||||
|
compiler->state.unit[tmu].depth_texture_swizzle);
|
||||||
return reg;
|
return reg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,10 +155,9 @@ int radeonTransformTEX(
|
||||||
inst->U.I.Opcode = RC_OPCODE_MOV;
|
inst->U.I.Opcode = RC_OPCODE_MOV;
|
||||||
|
|
||||||
if (comparefunc == RC_COMPARE_FUNC_ALWAYS) {
|
if (comparefunc == RC_COMPARE_FUNC_ALWAYS) {
|
||||||
inst->U.I.SrcReg[0].File = RC_FILE_NONE;
|
inst->U.I.SrcReg[0] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit);
|
||||||
inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_1111;
|
|
||||||
} else {
|
} else {
|
||||||
inst->U.I.SrcReg[0] = shadow_ambient(compiler, inst->U.I.TexSrcUnit);
|
inst->U.I.SrcReg[0] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -244,9 +257,8 @@ int radeonTransformTEX(
|
||||||
inst_cmp->U.I.SrcReg[0].Swizzle =
|
inst_cmp->U.I.SrcReg[0].Swizzle =
|
||||||
combine_swizzles(RC_SWIZZLE_WWWW,
|
combine_swizzles(RC_SWIZZLE_WWWW,
|
||||||
compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle);
|
compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle);
|
||||||
inst_cmp->U.I.SrcReg[pass].File = RC_FILE_NONE;
|
inst_cmp->U.I.SrcReg[pass] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit);
|
||||||
inst_cmp->U.I.SrcReg[pass].Swizzle = RC_SWIZZLE_1111;
|
inst_cmp->U.I.SrcReg[fail] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit);
|
||||||
inst_cmp->U.I.SrcReg[fail] = shadow_ambient(compiler, inst->U.I.TexSrcUnit);
|
|
||||||
|
|
||||||
assert(tmp_texsample != tmp_sum);
|
assert(tmp_texsample != tmp_sum);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue