Merge branch '7.8'
[mesa.git] / src / gallium / drivers / r300 / r300_reg.h
index 3abff5db6222d039b925c67f3ea514803ccb3fdd..1c2b252887784f3a090419ac2440ee59dac0e62c 100644 (file)
@@ -113,11 +113,14 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
        /* index size - when not set the indices are assumed to be 16 bit */
 #      define  R300_VAP_VF_CNTL__INDEX_SIZE_32bit              (1<<11)
+#       define R500_VAP_VF_CNTL__USE_ALT_NUM_VERTS          (1<<14)
        /* number of vertices */
 #      define  R300_VAP_VF_CNTL__NUM_VERTICES__SHIFT           16
 
 #define R500_VAP_INDEX_OFFSET              0x208c
 
+#define R500_VAP_ALT_NUM_VERTICES                           0x2088
+
 #define R300_VAP_OUTPUT_VTX_FMT_0           0x2090
 #       define R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT     (1<<0)
 #       define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT (1<<1)
@@ -244,6 +247,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_DATA_TYPE_SHORT_4                   7
 #       define R300_DATA_TYPE_VECTOR_3_TTT              8
 #       define R300_DATA_TYPE_VECTOR_3_EET              9
+#       define R300_DATA_TYPE_FLOAT_8                   10
+#       define R300_DATA_TYPE_FLT16_2                   11
+#       define R300_DATA_TYPE_FLT16_4                   12
 #       define R300_SKIP_DWORDS_SHIFT                   4
 #       define R300_DST_VEC_LOC_SHIFT                   8
 #       define R300_LAST_VEC                            (1 << 13)
@@ -348,6 +354,27 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_WRITE_ENA_W                         8
 #       define R300_SWIZZLE1_SHIFT                      16
 
+#       define R300_VAP_SWIZZLE_X001 \
+        ((R300_SWIZZLE_SELECT_X << R300_SWIZZLE_SELECT_X_SHIFT) | \
+         (R300_SWIZZLE_SELECT_FP_ZERO << R300_SWIZZLE_SELECT_Y_SHIFT) | \
+         (R300_SWIZZLE_SELECT_FP_ZERO << R300_SWIZZLE_SELECT_Z_SHIFT) | \
+         (R300_SWIZZLE_SELECT_FP_ONE << R300_SWIZZLE_SELECT_W_SHIFT) | \
+         (0xf << R300_WRITE_ENA_SHIFT))
+
+#       define R300_VAP_SWIZZLE_XY01 \
+        ((R300_SWIZZLE_SELECT_X << R300_SWIZZLE_SELECT_X_SHIFT) | \
+         (R300_SWIZZLE_SELECT_Y << R300_SWIZZLE_SELECT_Y_SHIFT) | \
+         (R300_SWIZZLE_SELECT_FP_ZERO << R300_SWIZZLE_SELECT_Z_SHIFT) | \
+         (R300_SWIZZLE_SELECT_FP_ONE << R300_SWIZZLE_SELECT_W_SHIFT) | \
+         (0xf << R300_WRITE_ENA_SHIFT))
+
+#       define R300_VAP_SWIZZLE_XYZ1 \
+        ((R300_SWIZZLE_SELECT_X << R300_SWIZZLE_SELECT_X_SHIFT) | \
+         (R300_SWIZZLE_SELECT_Y << R300_SWIZZLE_SELECT_Y_SHIFT) | \
+         (R300_SWIZZLE_SELECT_Z << R300_SWIZZLE_SELECT_Z_SHIFT) | \
+         (R300_SWIZZLE_SELECT_FP_ONE << R300_SWIZZLE_SELECT_W_SHIFT) | \
+         (0xf << R300_WRITE_ENA_SHIFT))
+
 #       define R300_VAP_SWIZZLE_XYZW \
         ((R300_SWIZZLE_SELECT_X << R300_SWIZZLE_SELECT_X_SHIFT) | \
          (R300_SWIZZLE_SELECT_Y << R300_SWIZZLE_SELECT_Y_SHIFT) | \
@@ -513,7 +540,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_PVS_FIRST_INST(x)            ((x) << 0)
 #       define R300_PVS_XYZW_VALID_INST(x)       ((x) << 10)
 #       define R300_PVS_LAST_INST(x)             ((x) << 20)
-/* Addresses are relative the the vertex program parameters area. */
+/* Addresses are relative to the vertex program parameters area. */
 #define R300_VAP_PVS_CONST_CNTL             0x22D4
 #       define R300_PVS_CONST_BASE_OFFSET_SHIFT  0
 #       define R300_PVS_MAX_CONST_ADDR_SHIFT     16
@@ -640,20 +667,20 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #      define R300_GB_SUPER_TILE_B             (1 << 15)
 #      define R300_GB_SUBPIXEL_1_12            (0 << 16)
 #      define R300_GB_SUBPIXEL_1_16            (1 << 16)
-#      define GB_TILE_CONFIG_QUADS_PER_RAS_4   (0 << 17)
-#      define GB_TILE_CONFIG_QUADS_PER_RAS_8   (1 << 17)
-#      define GB_TILE_CONFIG_QUADS_PER_RAS_16  (2 << 17)
-#      define GB_TILE_CONFIG_QUADS_PER_RAS_32  (3 << 17)
-#      define GB_TILE_CONFIG_BB_SCAN_INTERCEPT (0 << 19)
-#      define GB_TILE_CONFIG_BB_SCAN_BOUND_BOX (1 << 19)
-#      define GB_TILE_CONFIG_ALT_SCAN_EN_LR    (0 << 20)
-#      define GB_TILE_CONFIG_ALT_SCAN_EN_LRL   (1 << 20)
-#      define GB_TILE_CONFIG_ALT_OFFSET        (0 << 21)
-#      define GB_TILE_CONFIG_SUBPRECISION      (0 << 22)
-#      define GB_TILE_CONFIG_ALT_TILING_DEF    (0 << 23)
-#      define GB_TILE_CONFIG_ALT_TILING_3_2    (1 << 23)
-#      define GB_TILE_CONFIG_Z_EXTENDED_24_1   (0 << 24)
-#      define GB_TILE_CONFIG_Z_EXTENDED_S25_1  (1 << 24)
+#      define R300_GB_TILE_CONFIG_QUADS_PER_RAS_4   (0 << 17)
+#      define R300_GB_TILE_CONFIG_QUADS_PER_RAS_8   (1 << 17)
+#      define R300_GB_TILE_CONFIG_QUADS_PER_RAS_16  (2 << 17)
+#      define R300_GB_TILE_CONFIG_QUADS_PER_RAS_32  (3 << 17)
+#      define R300_GB_TILE_CONFIG_BB_SCAN_INTERCEPT (0 << 19)
+#      define R300_GB_TILE_CONFIG_BB_SCAN_BOUND_BOX (1 << 19)
+#      define R300_GB_TILE_CONFIG_ALT_SCAN_EN_LR    (0 << 20)
+#      define R300_GB_TILE_CONFIG_ALT_SCAN_EN_LRL   (1 << 20)
+#      define R300_GB_TILE_CONFIG_ALT_OFFSET        (0 << 21)
+#      define R300_GB_TILE_CONFIG_SUBPRECISION      (0 << 22)
+#      define R300_GB_TILE_CONFIG_ALT_TILING_DEF    (0 << 23)
+#      define R300_GB_TILE_CONFIG_ALT_TILING_3_2    (1 << 23)
+#      define R300_GB_TILE_CONFIG_Z_EXTENDED_24_1   (0 << 24)
+#      define R300_GB_TILE_CONFIG_Z_EXTENDED_S25_1  (1 << 24)
 
 /* Specifies the sizes of the various FIFO`s in the sc/rs/us. This register must be the first one written */
 #define R300_GB_FIFO_SIZE      0x4024
@@ -679,9 +706,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #      define R300_OFIFO_HIGHWATER_SHIFT       22      /* two bits only */
 #      define R300_CUBE_FIFO_HIGHWATER_COL_SHIFT       24
 
-#define GB_Z_PEQ_CONFIG                          0x4028
-#      define GB_Z_PEQ_CONFIG_Z_PEQ_SIZE_4_4    (0 << 0)
-#      define GB_Z_PEQ_CONFIG_Z_PEQ_SIZE_8_8    (1 << 0)
+#define R300_GB_Z_PEQ_CONFIG                          0x4028
+#      define R300_GB_Z_PEQ_CONFIG_Z_PEQ_SIZE_4_4    (0 << 0)
+#      define R300_GB_Z_PEQ_CONFIG_Z_PEQ_SIZE_8_8    (1 << 0)
 
 /* Specifies various polygon specific selects (fog, depth, perspective). */
 #define R300_GB_SELECT                           0x401c
@@ -704,39 +731,39 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 /* Specifies the graphics pipeline configuration for antialiasing. */
 #define R300_GB_AA_CONFIG                         0x4020
-#      define GB_AA_CONFIG_AA_DISABLE           (0 << 0)
-#      define GB_AA_CONFIG_AA_ENABLE            (1 << 0)
-#      define GB_AA_CONFIG_NUM_AA_SUBSAMPLES_2  (0 << 1)
-#      define GB_AA_CONFIG_NUM_AA_SUBSAMPLES_3  (1 << 1)
-#      define GB_AA_CONFIG_NUM_AA_SUBSAMPLES_4  (2 << 1)
-#      define GB_AA_CONFIG_NUM_AA_SUBSAMPLES_6  (3 << 1)
+#      define R300_GB_AA_CONFIG_AA_DISABLE           (0 << 0)
+#      define R300_GB_AA_CONFIG_AA_ENABLE            (1 << 0)
+#      define R300_GB_AA_CONFIG_NUM_AA_SUBSAMPLES_2  (0 << 1)
+#      define R300_GB_AA_CONFIG_NUM_AA_SUBSAMPLES_3  (1 << 1)
+#      define R300_GB_AA_CONFIG_NUM_AA_SUBSAMPLES_4  (2 << 1)
+#      define R300_GB_AA_CONFIG_NUM_AA_SUBSAMPLES_6  (3 << 1)
 
 /* Selects which of 4 pipes are active. */
-#define GB_PIPE_SELECT                           0x402c
-#      define GB_PIPE_SELECT_PIPE0_ID_SHIFT  0
-#      define GB_PIPE_SELECT_PIPE1_ID_SHIFT  2
-#      define GB_PIPE_SELECT_PIPE2_ID_SHIFT  4
-#      define GB_PIPE_SELECT_PIPE3_ID_SHIFT  6
-#      define GB_PIPE_SELECT_PIPE_MASK_SHIFT 8
-#      define GB_PIPE_SELECT_MAX_PIPE        12
-#      define GB_PIPE_SELECT_BAD_PIPES       14
-#      define GB_PIPE_SELECT_CONFIG_PIPES    18
+#define R300_GB_PIPE_SELECT                           0x402c
+#      define R300_GB_PIPE_SELECT_PIPE0_ID_SHIFT  0
+#      define R300_GB_PIPE_SELECT_PIPE1_ID_SHIFT  2
+#      define R300_GB_PIPE_SELECT_PIPE2_ID_SHIFT  4
+#      define R300_GB_PIPE_SELECT_PIPE3_ID_SHIFT  6
+#      define R300_GB_PIPE_SELECT_PIPE_MASK_SHIFT 8
+#      define R300_GB_PIPE_SELECT_MAX_PIPE        12
+#      define R300_GB_PIPE_SELECT_BAD_PIPES       14
+#      define R300_GB_PIPE_SELECT_CONFIG_PIPES    18
 
 
 /* Specifies the sizes of the various FIFO`s in the sc/rs. */
-#define GB_FIFO_SIZE1                            0x4070
+#define R300_GB_FIFO_SIZE1                            0x4070
 /* High water mark for SC input fifo */
-#      define GB_FIFO_SIZE1_SC_HIGHWATER_IFIFO_SHIFT 0
-#      define GB_FIFO_SIZE1_SC_HIGHWATER_IFIFO_MASK  0x0000003f
+#      define R300_GB_FIFO_SIZE1_SC_HIGHWATER_IFIFO_SHIFT 0
+#      define R300_GB_FIFO_SIZE1_SC_HIGHWATER_IFIFO_MASK  0x0000003f
 /* High water mark for SC input fifo (B) */
-#      define GB_FIFO_SIZE1_SC_HIGHWATER_BFIFO_SHIFT 6
-#      define GB_FIFO_SIZE1_SC_HIGHWATER_BFIFO_MASK  0x00000fc0
+#      define R300_GB_FIFO_SIZE1_SC_HIGHWATER_BFIFO_SHIFT 6
+#      define R300_GB_FIFO_SIZE1_SC_HIGHWATER_BFIFO_MASK  0x00000fc0
 /* High water mark for RS colors' fifo */
-#      define GB_FIFO_SIZE1_SC_HIGHWATER_COL_SHIFT   12
-#      define GB_FIFO_SIZE1_SC_HIGHWATER_COL_MASK    0x0003f000
+#      define R300_GB_FIFO_SIZE1_SC_HIGHWATER_COL_SHIFT   12
+#      define R300_GB_FIFO_SIZE1_SC_HIGHWATER_COL_MASK    0x0003f000
 /* High water mark for RS textures' fifo */
-#      define GB_FIFO_SIZE1_SC_HIGHWATER_TEX_SHIFT   18
-#      define GB_FIFO_SIZE1_SC_HIGHWATER_TEX_MASK    0x00fc0000
+#      define R300_GB_FIFO_SIZE1_SC_HIGHWATER_TEX_SHIFT   18
+#      define R300_GB_FIFO_SIZE1_SC_HIGHWATER_TEX_MASK    0x00fc0000
 
 /* This table specifies the source location and format for up to 16 texture
  * addresses (i[0]:i[15]) and four colors (c[0]:c[3])
@@ -841,10 +868,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_POINTSIZE_X_MASK          0xffff0000
 #       define R300_POINTSIZE_MAX             (R300_POINTSIZE_Y_MASK / 6)
 
-/* Blue fill color */
+/* Red fill color */
 #define R500_GA_FILL_R                                0x4220
 
-/* Blue fill color */
+/* Green fill color */
 #define R500_GA_FILL_G                                0x4224
 
 /* Blue fill color */
@@ -1172,6 +1199,13 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 /* SU Depth Offset value */
 #define R300_SU_DEPTH_OFFSET                0x42c4
 
+#define R300_SU_REG_DEST                   0x42c8
+#      define R300_RASTER_PIPE_SELECT_0        (1 << 0)
+#      define R300_RASTER_PIPE_SELECT_1        (1 << 1)
+#      define R300_RASTER_PIPE_SELECT_2        (1 << 2)
+#      define R300_RASTER_PIPE_SELECT_3        (1 << 3)
+#      define R300_RASTER_PIPE_SELECT_ALL      0xf
+
 
 /* BEGIN: Rasterization / Interpolators - many guesses */
 
@@ -1265,7 +1299,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #        define R500_RS_INST_TEX_ID(x)                  ((x) << 0)
 #define R500_RS_INST_TEX_CN_WRITE                      (1 << 4)
 #define R500_RS_INST_TEX_ADDR_SHIFT                    5
-#        define R500_RS_INST_TEX_ADDR(x)                ((x) << 0)
+#        define R500_RS_INST_TEX_ADDR(x)                ((x) << 5)
 #define R500_RS_INST_COL_ID_SHIFT                      12
 #        define R500_RS_INST_COL_ID(x)                  ((x) << 12)
 #define R500_RS_INST_COL_CN_NO_WRITE                   (0 << 16)
@@ -1435,6 +1469,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #      define R300_TX_MIN_FILTER_MIP_NEAREST    (1 << 13)
 #      define R300_TX_MIN_FILTER_MIP_LINEAR     (2 << 13)
 #      define R300_TX_MIN_FILTER_MIP_MASK       (3 << 13)
+#       define R300_TX_MAX_MIP_LEVEL_SHIFT       17
+#       define R300_TX_MAX_MIP_LEVEL_MASK        (0xf << 17)
 #      define R300_TX_MAX_ANISO_1_TO_1          (0 << 21)
 #      define R300_TX_MAX_ANISO_2_TO_1          (1 << 21)
 #      define R300_TX_MAX_ANISO_4_TO_1          (2 << 21)
@@ -1443,6 +1479,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #      define R300_TX_MAX_ANISO_MASK            (7 << 21)
 #       define R300_TX_WRAP_S(x)                 ((x) << 0)
 #       define R300_TX_WRAP_T(x)                 ((x) << 3)
+#       define R300_TX_MAX_MIP_LEVEL(x)          ((x) << 17)
 
 #define R300_TX_FILTER1_0                      0x4440
 #      define R300_CHROMA_KEY_MODE_DISABLE    0
@@ -1463,6 +1500,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #      define R300_ANISO_THRESHOLD_MASK       (7<<17)
 
 #      define R500_MACRO_SWITCH               (1<<22)
+#       define R500_TX_MAX_ANISO(x)            ((x) << 23)
+#       define R500_TX_MAX_ANISO_MASK          (63 << 23)
+#       define R500_TX_ANISO_HIGH_QUALITY      (1 << 30)
+
 #      define R500_BORDER_FIX                 (1<<31)
 
 #define R300_TX_FORMAT0_0                   0x4480
@@ -1472,8 +1513,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_TX_HEIGHTMASK_MASK           (2047 << 11)
 #      define R300_TX_DEPTHMASK_SHIFT           22
 #      define R300_TX_DEPTHMASK_MASK            (0xf << 22)
-#       define R300_TX_MAX_MIP_LEVEL_SHIFT       26
-#       define R300_TX_MAX_MIP_LEVEL_MASK        (0xf << 26)
 #       define R300_TX_SIZE_PROJECTED            (1 << 30)
 #       define R300_TX_PITCH_EN                  (1 << 31)
 #       define R300_TX_WIDTH(x)                  ((x) << 0)
@@ -1590,18 +1629,20 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define R300_TX_OFFSET_5                    0x4554
 #define R300_TX_OFFSET_6                    0x4558
 #define R300_TX_OFFSET_7                    0x455C
-       /* BEGIN: Guess from R200 */
+
 #       define R300_TXO_ENDIAN_NO_SWAP           (0 << 0)
 #       define R300_TXO_ENDIAN_BYTE_SWAP         (1 << 0)
 #       define R300_TXO_ENDIAN_WORD_SWAP         (2 << 0)
 #       define R300_TXO_ENDIAN_HALFDW_SWAP       (3 << 0)
-#       define R300_TXO_MACRO_TILE               (1 << 2)
+#       define R300_TXO_MACRO_TILE_LINEAR        (0 << 2)
+#       define R300_TXO_MACRO_TILE_TILED         (1 << 2)
+#       define R300_TXO_MACRO_TILE(x)            ((x) << 2)
 #       define R300_TXO_MICRO_TILE_LINEAR        (0 << 3)
-#       define R300_TXO_MICRO_TILE               (1 << 3)
-#       define R300_TXO_MICRO_TILE_SQUARE        (2 << 3)
+#       define R300_TXO_MICRO_TILE_TILED         (1 << 3)
+#       define R300_TXO_MICRO_TILE_TILED_SQUARE  (2 << 3)
+#       define R300_TXO_MICRO_TILE(x)            ((x) << 3)
 #       define R300_TXO_OFFSET_MASK              0xffffffe0
 #       define R300_TXO_OFFSET_SHIFT             5
-       /* END: Guess from R200 */
 
 /* 32 bit chroma key */
 #define R300_TX_CHROMA_KEY_0                      0x4580
@@ -1820,7 +1861,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
  * The destination register index is in FPI1 (color) and FPI3 (alpha)
  * together with enable bits.
  * There are separate enable bits for writing into temporary registers
- * (DSTC_REG_* /DSTA_REG) and and program output registers (DSTC_OUTPUT_*
+ * (DSTC_REG_* /DSTA_REG) and program output registers (DSTC_OUTPUT_*
  * /DSTA_OUTPUT). You can write to both at once, or not write at all (the
  * same index must be used for both).
  *
@@ -1856,6 +1897,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_RGB_ADDR0(x)                ((x) << 0)
 #       define R300_RGB_ADDR1(x)                ((x) << 6)
 #       define R300_RGB_ADDR2(x)                ((x) << 12)
+#       define R300_RGB_TARGET(x)               ((x) << 29)
 
 #define R300_US_ALU_ALPHA_ADDR_0                 0x47C0
 #       define R300_ALU_SRC0A_SHIFT             0
@@ -1873,9 +1915,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_ALU_DSTA_REG                (1 << 23)
 #       define R300_ALU_DSTA_OUTPUT             (1 << 24)
 #              define R300_ALU_DSTA_DEPTH              (1 << 27)
-#       define R300_ALPHA_ADDR0(x)                ((x) << 0)
-#       define R300_ALPHA_ADDR1(x)                ((x) << 6)
-#       define R300_ALPHA_ADDR2(x)                ((x) << 12)
+#       define R300_ALPHA_ADDR0(x)              ((x) << 0)
+#       define R300_ALPHA_ADDR1(x)              ((x) << 6)
+#       define R300_ALPHA_ADDR2(x)              ((x) << 12)
+#       define R300_ALPHA_TARGET(x)             ((x) << 25)
 
 #define R300_US_ALU_RGB_INST_0                   0x48C0
 #       define R300_ALU_ARGC_SRC0C_XYZ          0
@@ -2095,6 +2138,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define R500_FG_ALPHA_VALUE                0x4be0
 #      define R500_FG_ALPHA_VALUE_MASK 0x0000ffff
 
+#define RV530_FG_ZBREG_DEST                 0x4be8
+#      define RV530_FG_ZBREG_DEST_PIPE_SELECT_0             (1 << 0)
+#      define RV530_FG_ZBREG_DEST_PIPE_SELECT_1             (1 << 1)
+#      define RV530_FG_ZBREG_DEST_PIPE_SELECT_ALL           (3 << 0)
 /* gap */
 
 /* Fragment program parameters in 7.16 floating point */
@@ -2110,6 +2157,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 /* Unpipelined. */
 #define R300_RB3D_CCTL                      0x4e00
+#      define R300_RB3D_CCTL_NUM_MULTIWRITES(x)       (MAX2(((x)-1), 0) << 5)
 #      define R300_RB3D_CCTL_NUM_MULTIWRITES_1_BUFFER                (0 << 5)
 #      define R300_RB3D_CCTL_NUM_MULTIWRITES_2_BUFFERS               (1 << 5)
 #      define R300_RB3D_CCTL_NUM_MULTIWRITES_3_BUFFERS               (2 << 5)
@@ -2150,6 +2198,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_DISCARD_SRC_PIXELS_SRC_ALPHA_1     (4 << 3)
 #       define R300_DISCARD_SRC_PIXELS_SRC_COLOR_1     (5 << 3)
 #       define R300_DISCARD_SRC_PIXELS_SRC_ALPHA_COLOR_1     (6 << 3)
+#       define R500_SRC_ALPHA_0_NO_READ                (1 << 30)
+#       define R500_SRC_ALPHA_1_NO_READ                (1 << 31)
 
 /* the following are shared between CBLEND and ABLEND */
 #       define R300_FCN_MASK                         (3  << 12)
@@ -2245,9 +2295,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_COLORPITCH_MASK              0x00003FFE
 #       define R300_COLOR_TILE_DISABLE            (0 << 16)
 #       define R300_COLOR_TILE_ENABLE             (1 << 16)
+#       define R300_COLOR_TILE(x)                 ((x) << 16)
 #       define R300_COLOR_MICROTILE_DISABLE       (0 << 17)
 #       define R300_COLOR_MICROTILE_ENABLE        (1 << 17)
 #       define R300_COLOR_MICROTILE_ENABLE_SQUARE (2 << 17) /* Only available in 16-bit */
+#       define R300_COLOR_MICROTILE(x)            ((x) << 17)
 #       define R300_COLOR_ENDIAN_NO_SWAP          (0 << 19)
 #       define R300_COLOR_ENDIAN_WORD_SWAP        (1 << 19)
 #       define R300_COLOR_ENDIAN_DWORD_SWAP       (2 << 19)
@@ -2384,6 +2436,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #      define R300_Z_WRITE_ENABLE               (1 << 2)
 #      define R300_Z_SIGNED_COMPARE             (1 << 3)
 #      define R300_STENCIL_FRONT_BACK           (1 << 4)
+#   define R500_STENCIL_ZSIGNED_MAGNITUDE (1 << 5)
+#   define R500_STENCIL_REFMASK_FRONT_BACK (1 << 6)
 
 #define R300_ZB_ZSTENCILCNTL                   0x4f04
        /* functions */
@@ -2504,9 +2558,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_DEPTHPITCH_MASK              0x00003FFC
 #       define R300_DEPTHMACROTILE_DISABLE      (0 << 16)
 #       define R300_DEPTHMACROTILE_ENABLE       (1 << 16)
+#       define R300_DEPTHMACROTILE(x)           ((x) << 16)
 #       define R300_DEPTHMICROTILE_LINEAR       (0 << 17)
 #       define R300_DEPTHMICROTILE_TILED        (1 << 17)
 #       define R300_DEPTHMICROTILE_TILED_SQUARE (2 << 17)
+#       define R300_DEPTHMICROTILE(x)           ((x) << 17)
 #       define R300_DEPTHENDIAN_NO_SWAP         (0 << 18)
 #       define R300_DEPTHENDIAN_WORD_SWAP       (1 << 18)
 #       define R300_DEPTHENDIAN_DWORD_SWAP      (2 << 18)
@@ -2600,7 +2656,7 @@ enum {
        VE_COND_MUX_GTE                 = 25,
        VE_SET_GREATER_THAN             = 26,
        VE_SET_EQUAL                    = 27,
-       VE_SET_NOT_EQUAL                = 28,
+       VE_SET_NOT_EQUAL                = 28
 };
 
 enum {
@@ -2634,20 +2690,20 @@ enum {
        ME_PRED_SET_CLR                 = 25,
        ME_PRED_SET_INV                 = 26,
        ME_PRED_SET_POP                 = 27,
-       ME_PRED_SET_RESTORE             = 28,
+       ME_PRED_SET_RESTORE             = 28
 };
 
 enum {
        /* R3XX */
        PVS_MACRO_OP_2CLK_MADD          = 0,
-       PVS_MACRO_OP_2CLK_M2X_ADD       = 1,
+       PVS_MACRO_OP_2CLK_M2X_ADD       = 1
 };
 
 enum {
        PVS_SRC_REG_TEMPORARY           = 0,    /* Intermediate Storage */
        PVS_SRC_REG_INPUT               = 1,    /* Input Vertex Storage */
        PVS_SRC_REG_CONSTANT            = 2,    /* Constant State Storage */
-       PVS_SRC_REG_ALT_TEMPORARY       = 3,    /* Alternate Intermediate Storage */
+       PVS_SRC_REG_ALT_TEMPORARY       = 3     /* Alternate Intermediate Storage */
 };
 
 enum {
@@ -2656,7 +2712,7 @@ enum {
        PVS_DST_REG_OUT                 = 2,    /* Output Memory. Used for all outputs */
        PVS_DST_REG_OUT_REPL_X          = 3,    /* Output Memory & Replicate X to all channels */
        PVS_DST_REG_ALT_TEMPORARY       = 4,    /* Alternate Intermediate Storage */
-       PVS_DST_REG_INPUT               = 5,    /* Output Memory & Replicate X to all channels */
+       PVS_DST_REG_INPUT               = 5     /* Output Memory & Replicate X to all channels */
 };
 
 enum {
@@ -2665,7 +2721,7 @@ enum {
        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 */
+       PVS_SRC_SELECT_FORCE_1          = 5     /* Force Component to 1.0 */
 };
 
 /* PVS Opcode & Destination Operand Description */
@@ -2704,7 +2760,7 @@ enum {
        PVS_DST_ADDR_SEL_MASK           = 0x3,
        PVS_DST_ADDR_SEL_SHIFT          = 29,
        PVS_DST_ADDR_MODE_0_MASK        = 0x1,
-       PVS_DST_ADDR_MODE_0_SHIFT       = 31,
+       PVS_DST_ADDR_MODE_0_SHIFT       = 31
 };
 
 /* PVS Source Operand Description */
@@ -2739,7 +2795,7 @@ enum {
        PVS_SRC_ADDR_SEL_MASK           = 0x3,
        PVS_SRC_ADDR_SEL_SHIFT          = 29,
        PVS_SRC_ADDR_MODE_1_MASK        = 0x0,
-       PVS_SRC_ADDR_MODE_1_SHIFT       = 32,
+       PVS_SRC_ADDR_MODE_1_SHIFT       = 32
 };
 
 /*\}*/
@@ -3256,6 +3312,11 @@ enum {
  */
 #define R300_PACKET3_3D_LOAD_VBPNTR         0x00002F00
 
+#   define R300_VBPNTR_SIZE0(x)    ((x) >> 2)
+#   define R300_VBPNTR_STRIDE0(x)  (((x) >> 2) << 8)
+#   define R300_VBPNTR_SIZE1(x)    (((x) >> 2) << 16)
+#   define R300_VBPNTR_STRIDE1(x)  (((x) >> 2) << 24)
+
 #define R300_PACKET3_INDX_BUFFER            0x00003300
 #    define R300_INDX_BUFFER_DST_SHIFT          0
 #    define R300_INDX_BUFFER_SKIP_SHIFT         16
@@ -3313,10 +3374,6 @@ enum {
 
 #define R200_3D_DRAW_IMMD_2      0xC0003500
 
-/* XXX Oh look, stuff not brought over from docs yet */
-
-#define R300_SU_REG_DEST                    0x42C8
-
 #endif /* _R300_REG_H */
 
 /* *INDENT-ON* */