mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
i965/vs: Fix textureGrad() with shadow samplers on Haswell.
The shadow comparitor needs to be loaded into the Z component of the last DWord. Fixes es3conform's shadow_execution_vert and oglconform's shadow-grad advanced.textureGrad.1D tests on Haswell. NOTE: This is a candidate for stable branches. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
e2f887b243
commit
b5b6460c40
1 changed files with 8 additions and 2 deletions
|
|
@ -2271,7 +2271,7 @@ vec4_visitor::visit(ir_texture *ir)
|
|||
emit(MOV(dst_reg(MRF, param_base, ir->coordinate->type, zero_mask),
|
||||
src_reg(0)));
|
||||
/* Load the shadow comparitor */
|
||||
if (ir->shadow_comparitor) {
|
||||
if (ir->shadow_comparitor && ir->op != ir_txd) {
|
||||
emit(MOV(dst_reg(MRF, param_base + 1, ir->shadow_comparitor->type,
|
||||
WRITEMASK_X),
|
||||
shadow_comparitor));
|
||||
|
|
@ -2317,12 +2317,18 @@ vec4_visitor::visit(ir_texture *ir)
|
|||
emit(MOV(dst_reg(MRF, param_base + 1, type, WRITEMASK_YW), dPdy));
|
||||
inst->mlen++;
|
||||
|
||||
if (ir->type->vector_elements == 3) {
|
||||
if (ir->type->vector_elements == 3 || ir->shadow_comparitor) {
|
||||
dPdx.swizzle = BRW_SWIZZLE_ZZZZ;
|
||||
dPdy.swizzle = BRW_SWIZZLE_ZZZZ;
|
||||
emit(MOV(dst_reg(MRF, param_base + 2, type, WRITEMASK_X), dPdx));
|
||||
emit(MOV(dst_reg(MRF, param_base + 2, type, WRITEMASK_Y), dPdy));
|
||||
inst->mlen++;
|
||||
|
||||
if (ir->shadow_comparitor) {
|
||||
emit(MOV(dst_reg(MRF, param_base + 2,
|
||||
ir->shadow_comparitor->type, WRITEMASK_Z),
|
||||
shadow_comparitor));
|
||||
}
|
||||
}
|
||||
} else /* intel->gen == 4 */ {
|
||||
emit(MOV(dst_reg(MRF, param_base + 1, type, WRITEMASK_XYZ), dPdx));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue