r300/compiler: Emit 0.5 swizzle when necessary.
authorTom Stellard <tstellar@gmail.com>
Tue, 18 May 2010 06:29:19 +0000 (23:29 -0700)
committerMarek Olšák <maraeo@gmail.com>
Wed, 19 May 2010 01:08:50 +0000 (03:08 +0200)
Signed-off-by: Marek Olšák <maraeo@gmail.com>
src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c

index cfa48a59e3aadbd2d39b000c5f40dfe720b6e72f..5d5de2f1b2ab03186453fa346d3189b126574846 100644 (file)
@@ -56,7 +56,8 @@ static const struct swizzle_data native_swizzles[] = {
        {MAKE_SWZ3(Z, X, Y), R300_ALU_ARGC_SRC0C_ZXY, 1},
        {MAKE_SWZ3(W, Z, Y), R300_ALU_ARGC_SRC0CA_WZY, 1},
        {MAKE_SWZ3(ONE, ONE, ONE), R300_ALU_ARGC_ONE, 0},
-       {MAKE_SWZ3(ZERO, ZERO, ZERO), R300_ALU_ARGC_ZERO, 0}
+       {MAKE_SWZ3(ZERO, ZERO, ZERO), R300_ALU_ARGC_ZERO, 0},
+       {MAKE_SWZ3(HALF, HALF, HALF), R300_ALU_ARGC_HALF, 0}
 };
 
 static const int num_native_swizzles = sizeof(native_swizzles)/sizeof(native_swizzles[0]);
@@ -221,6 +222,7 @@ unsigned int r300FPTranslateAlphaSwizzle(unsigned int src, unsigned int swizzle)
        case RC_SWIZZLE_W: return R300_ALU_ARGA_SRC0A + src;
        case RC_SWIZZLE_ONE: return R300_ALU_ARGA_ONE;
        case RC_SWIZZLE_ZERO: return R300_ALU_ARGA_ZERO;
+       case RC_SWIZZLE_HALF: return R300_ALU_ARGA_HALF;
        default: return R300_ALU_ARGA_ONE;
        }
 }