The LOAD_PAYLOAD opcode can't saturate its sources, so skip saturating MOVs. The register coalescing after lower_load_payload() will clean up the extra MOVs.
Signed-off-by: Kristian Høgsberg <k...@bitplanet.net> --- src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp index e1989cb..87ea9c2 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp @@ -454,8 +454,12 @@ fs_visitor::try_constant_propagate(fs_inst *inst, acp_entry *entry) val.effective_width = inst->src[i].effective_width; switch (inst->opcode) { - case BRW_OPCODE_MOV: case SHADER_OPCODE_LOAD_PAYLOAD: + /* LOAD_PAYLOAD can't sat its sources. */ + if (entry->saturate) + break; + /* Otherwise, fall through */ + case BRW_OPCODE_MOV: inst->src[i] = val; progress = true; break; -- 2.1.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev