summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2010-12-11 13:22:19 +0100
committerMarek Olšák <maraeo@gmail.com>2010-12-11 13:37:57 +0100
commitd0990db6bd7d6e9e1cd780dc6b50ce00408a3cbc (patch)
tree7a84c39b2cd56612ef7712c7e20578898146f7ad /src/mesa/drivers/dri/r300
parent9e1fbd3d6e2a8accd0ebdc5937dd6eb7a8ef9b10 (diff)
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.
Diffstat (limited to 'src/mesa/drivers/dri/r300')
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c1
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 a0f7bd8174..133a9f72ec 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) {