Mesa (master): r300/compiler: fix swizzle lowering with a presubtract source operand

Marek Olšák mareko at kemper.freedesktop.org
Sat Dec 11 12:49:34 UTC 2010


Module: Mesa
Branch: master
Commit: d0990db6bd7d6e9e1cd780dc6b50ce00408a3cbc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d0990db6bd7d6e9e1cd780dc6b50ce00408a3cbc

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Dec 11 13:22:19 2010 +0100

r300/compiler: fix swizzle lowering with a presubtract source operand

If a source operand has a non-native swizzle (e.g. the KIL instruction
cannot have a swizzle other than .xyzw), the lowering pass uses one or more
MOV instructions to move the operand to an intermediate temporary with
native swizzles.

This commit fixes that the presubtract information was lost during
the lowering.

NOTE: This is a candidate for both the 7.9 and 7.10 branches.

---

 .../dri/r300/compiler/radeon_dataflow_swizzles.c   |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c
index a0f7bd8..133a9f7 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c
@@ -56,6 +56,7 @@ static void rewrite_source(struct radeon_compiler * c,
 		mov->U.I.DstReg.Index = tempreg;
 		mov->U.I.DstReg.WriteMask = split.Phase[phase];
 		mov->U.I.SrcReg[0] = inst->U.I.SrcReg[src];
+		mov->U.I.PreSub = inst->U.I.PreSub;
 
 		phase_refmask = 0;
 		for(unsigned int chan = 0; chan < 4; ++chan) {




More information about the mesa-commit mailing list