r300: Added the vertex program swizzle (aka selection) defines.
authorOliver McFadden <z3ro.geek@gmail.com>
Mon, 25 Feb 2008 13:16:05 +0000 (13:16 +0000)
committerOliver McFadden <z3ro.geek@gmail.com>
Sat, 1 Mar 2008 06:33:06 +0000 (06:33 +0000)
src/mesa/drivers/dri/r300/r300_reg.h
src/mesa/drivers/dri/r300/r300_vertprog.h

index ac04f84b836c4b13ca936e9275852c40e57771ac..70ccab50af8a84dd1e5d68e6e9c11df7c94e2458 100644 (file)
@@ -2495,6 +2495,15 @@ enum {
        PVS_DST_REG_INPUT               = 5,    /* Output Memory & Replicate X to all channels */
 };
 
+enum {
+       PVS_SRC_SELECT_X                = 0,    /* Select X Component */
+       PVS_SRC_SELECT_Y                = 1,    /* Select Y Component */
+       PVS_SRC_SELECT_Z                = 2,    /* Select Z Component */
+       PVS_SRC_SELECT_W                = 3,    /* Select W Component */
+       PVS_SRC_SELECT_FORCE_0          = 4,    /* Force Component to 0.0 */
+       PVS_SRC_SELECT_FORCE_1          = 5,    /* Force Component to 1.0 */
+};
+
 /*\}*/
 
 /*\{*/
@@ -2515,18 +2524,6 @@ enum {
        /* GUESS based on fglrx native limits */
 #define R300_VPI_IN_REG_INDEX_MASK              (255 << 5)
 
-/* The R300 can select components from the input register arbitrarily.
- * Use the following constants, shifted by the component shift you
- * want to select
- */
-#define R300_VPI_IN_SELECT_X    0
-#define R300_VPI_IN_SELECT_Y    1
-#define R300_VPI_IN_SELECT_Z    2
-#define R300_VPI_IN_SELECT_W    3
-#define R300_VPI_IN_SELECT_ZERO 4
-#define R300_VPI_IN_SELECT_ONE  5
-#define R300_VPI_IN_SELECT_MASK 7
-
 #define R300_VPI_IN_X_SHIFT                     13
 #define R300_VPI_IN_Y_SHIFT                     16
 #define R300_VPI_IN_Z_SHIFT                     19
index b0b81b5e748f793cbe8739a9b0b1c46d2391ef83..5eba2d5432ca8eb30c8ff1e8e820064196cba46d 100644 (file)
 #define VP_IN(class,idx) \
        (((idx) << R300_VPI_IN_REG_INDEX_SHIFT) |               \
        (PVS_SRC_REG_##class << 0) |                    \
-       (R300_VPI_IN_SELECT_X << R300_VPI_IN_X_SHIFT) |         \
-       (R300_VPI_IN_SELECT_Y << R300_VPI_IN_Y_SHIFT) |         \
-       (R300_VPI_IN_SELECT_Z << R300_VPI_IN_Z_SHIFT) |         \
-       (R300_VPI_IN_SELECT_W << R300_VPI_IN_W_SHIFT))
+       (PVS_SRC_SELECT_X << R300_VPI_IN_X_SHIFT) |             \
+       (PVS_SRC_SELECT_Y << R300_VPI_IN_Y_SHIFT) |             \
+       (PVS_SRC_SELECT_Z << R300_VPI_IN_Z_SHIFT) |             \
+       (PVS_SRC_SELECT_W << R300_VPI_IN_W_SHIFT))
 #define VP_ZERO() \
-       ((R300_VPI_IN_SELECT_ZERO << R300_VPI_IN_X_SHIFT) |     \
-       (R300_VPI_IN_SELECT_ZERO << R300_VPI_IN_Y_SHIFT) |      \
-       (R300_VPI_IN_SELECT_ZERO << R300_VPI_IN_Z_SHIFT) |      \
-       (R300_VPI_IN_SELECT_ZERO << R300_VPI_IN_W_SHIFT))
+       ((PVS_SRC_SELECT_FORCE_0 << R300_VPI_IN_X_SHIFT) |      \
+       (PVS_SRC_SELECT_FORCE_0 << R300_VPI_IN_Y_SHIFT) |       \
+       (PVS_SRC_SELECT_FORCE_0 << R300_VPI_IN_Z_SHIFT) |       \
+       (PVS_SRC_SELECT_FORCE_0 << R300_VPI_IN_W_SHIFT))
 #define VP_ONE() \
-       ((R300_VPI_IN_SELECT_ONE << R300_VPI_IN_X_SHIFT) |      \
-       (R300_VPI_IN_SELECT_ONE << R300_VPI_IN_Y_SHIFT) |       \
-       (R300_VPI_IN_SELECT_ONE << R300_VPI_IN_Z_SHIFT) |       \
-       (R300_VPI_IN_SELECT_ONE << R300_VPI_IN_W_SHIFT))
+       ((PVS_SRC_SELECT_FORCE_1 << R300_VPI_IN_X_SHIFT) |      \
+       (PVS_SRC_SELECT_FORCE_1 << R300_VPI_IN_Y_SHIFT) |       \
+       (PVS_SRC_SELECT_FORCE_1 << R300_VPI_IN_Z_SHIFT) |       \
+       (PVS_SRC_SELECT_FORCE_1 << R300_VPI_IN_W_SHIFT))
 
 #define VP_NEG(in,comp)                ((in) ^ (R300_VPI_IN_NEG_##comp))
 #define VP_NEGALL(in,comp)     VP_NEG(VP_NEG(VP_NEG(VP_NEG((in),X),Y),Z),W)