r300: Added the vertex program swizzle (aka selection) defines.

This commit is contained in:
Oliver McFadden 2008-02-25 13:16:05 +00:00
parent b2c02a4a7c
commit 8c4d811295
2 changed files with 21 additions and 24 deletions

View 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

View file

@ -111,20 +111,20 @@
#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)