mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 13:38:06 +02:00
r300/compiler: fix the saturate modifier when applied to TEX instructions
This bug can only be triggered if the source texture is either signed or float.
(cherry picked from commit e4707604ab)
This commit is contained in:
parent
6ea13078fb
commit
90292b8001
1 changed files with 5 additions and 1 deletions
|
|
@ -401,17 +401,21 @@ int radeonTransformTEX(
|
|||
}
|
||||
}
|
||||
|
||||
/* Cannot write texture to output registers (all chips) or with masks (non-r500) */
|
||||
/* Cannot write texture to output registers or with saturate (all chips),
|
||||
* or with masks (non-r500). */
|
||||
if (inst->U.I.Opcode != RC_OPCODE_KIL &&
|
||||
(inst->U.I.DstReg.File != RC_FILE_TEMPORARY ||
|
||||
inst->U.I.SaturateMode ||
|
||||
(!c->is_r500 && inst->U.I.DstReg.WriteMask != RC_MASK_XYZW))) {
|
||||
struct rc_instruction * inst_mov = rc_insert_new_instruction(c, inst);
|
||||
|
||||
inst_mov->U.I.Opcode = RC_OPCODE_MOV;
|
||||
inst_mov->U.I.SaturateMode = inst->U.I.SaturateMode;
|
||||
inst_mov->U.I.DstReg = inst->U.I.DstReg;
|
||||
inst_mov->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
|
||||
inst_mov->U.I.SrcReg[0].Index = rc_find_free_temporary(c);
|
||||
|
||||
inst->U.I.SaturateMode = 0;
|
||||
inst->U.I.DstReg.File = RC_FILE_TEMPORARY;
|
||||
inst->U.I.DstReg.Index = inst_mov->U.I.SrcReg[0].Index;
|
||||
inst->U.I.DstReg.WriteMask = RC_MASK_XYZW;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue