prog_optimize: Add support for saturates to _mesa_merge_mov_into_inst.
This fixes the remaining regression from ff_fragment_shader in Mesa IR instruction count, to now being a 1.9% win overall.
This commit is contained in:
parent
9998df36c2
commit
6bd5f43f21
|
@ -472,8 +472,7 @@ can_downward_mov_be_modifed(const struct prog_instruction *mov)
|
|||
mov->SrcReg[0].HasIndex2 == 0 &&
|
||||
mov->SrcReg[0].RelAddr2 == 0 &&
|
||||
mov->DstReg.RelAddr == 0 &&
|
||||
mov->DstReg.CondMask == COND_TR &&
|
||||
mov->SaturateMode == SATURATE_OFF;
|
||||
mov->DstReg.CondMask == COND_TR;
|
||||
}
|
||||
|
||||
|
||||
|
@ -482,7 +481,8 @@ can_upward_mov_be_modifed(const struct prog_instruction *mov)
|
|||
{
|
||||
return
|
||||
can_downward_mov_be_modifed(mov) &&
|
||||
mov->DstReg.File == PROGRAM_TEMPORARY;
|
||||
mov->DstReg.File == PROGRAM_TEMPORARY &&
|
||||
mov->SaturateMode == SATURATE_OFF;
|
||||
}
|
||||
|
||||
|
||||
|
@ -657,6 +657,8 @@ _mesa_merge_mov_into_inst(struct prog_instruction *inst,
|
|||
if (mask != (inst->DstReg.WriteMask & mask))
|
||||
return GL_FALSE;
|
||||
|
||||
inst->SaturateMode |= mov->SaturateMode;
|
||||
|
||||
/* Depending on the instruction, we may need to recompute the swizzles.
|
||||
* Also, some other instructions (like TEX) are not linear. We will only
|
||||
* consider completely active sources and destinations
|
||||
|
|
Loading…
Reference in New Issue