freedreno/a4xx: add 16-bit unorm/snorm format texturing/rendering
[mesa.git] / src / gallium / drivers / freedreno / a4xx / a4xx.xml.h
index f9250d0655a0f6d63a4d6288a382cb16b75373e5..cc48cdc4c6112e06f4d788226dff4fb228f68142 100644 (file)
@@ -8,15 +8,16 @@ http://github.com/freedreno/envytools/
 git clone https://github.com/freedreno/envytools.git
 
 The rules-ng-ng source files this header was generated from are:
-- /home/robclark/src/freedreno/envytools/rnndb/adreno.xml               (    364 bytes, from 2013-11-30 14:47:15)
-- /home/robclark/src/freedreno/envytools/rnndb/freedreno_copyright.xml  (   1453 bytes, from 2013-03-31 16:51:27)
-- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml          (  32901 bytes, from 2014-06-02 15:21:30)
-- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml (  10551 bytes, from 2014-11-13 22:44:30)
-- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml    (  15076 bytes, from 2014-12-01 22:40:01)
-- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml          (  64344 bytes, from 2014-12-12 20:22:26)
-- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml          (  50461 bytes, from 2014-12-12 20:23:10)
-
-Copyright (C) 2013-2014 by the following authors:
+- /home/robclark/src/freedreno/envytools/rnndb/adreno.xml               (    398 bytes, from 2015-09-24 17:25:31)
+- /home/robclark/src/freedreno/envytools/rnndb/freedreno_copyright.xml  (   1453 bytes, from 2015-05-20 20:03:07)
+- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml          (  32901 bytes, from 2015-05-20 20:03:14)
+- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml (  10755 bytes, from 2015-09-14 20:46:55)
+- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml    (  14968 bytes, from 2015-05-20 20:12:27)
+- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml          (  68291 bytes, from 2015-11-17 16:39:59)
+- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml          (  64038 bytes, from 2015-11-17 16:37:36)
+- /home/robclark/src/freedreno/envytools/rnndb/adreno/ocmem.xml         (   1773 bytes, from 2015-09-24 17:30:00)
+
+Copyright (C) 2013-2015 by the following authors:
 - Rob Clark <robdclark@gmail.com> (robclark)
 
 Permission is hereby granted, free of charge, to any person obtaining
@@ -43,10 +44,46 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 enum a4xx_color_fmt {
        RB4_A8_UNORM = 1,
+       RB4_R8_UNORM = 2,
+       RB4_R4G4B4A4_UNORM = 8,
+       RB4_R5G5B5A1_UNORM = 10,
        RB4_R5G6R5_UNORM = 14,
-       RB4_Z16_UNORM = 15,
+       RB4_R8G8_UNORM = 15,
+       RB4_R8G8_SNORM = 16,
+       RB4_R8G8_UINT = 17,
+       RB4_R8G8_SINT = 18,
+       RB4_R16_UNORM = 19,
+       RB4_R16_SNORM = 20,
+       RB4_R16_FLOAT = 21,
+       RB4_R16_UINT = 22,
+       RB4_R16_SINT = 23,
        RB4_R8G8B8_UNORM = 25,
        RB4_R8G8B8A8_UNORM = 26,
+       RB4_R8G8B8A8_SNORM = 28,
+       RB4_R8G8B8A8_UINT = 29,
+       RB4_R8G8B8A8_SINT = 30,
+       RB4_R10G10B10A2_UNORM = 31,
+       RB4_R10G10B10A2_UINT = 34,
+       RB4_R11G11B10_FLOAT = 39,
+       RB4_R16G16_UNORM = 40,
+       RB4_R16G16_SNORM = 41,
+       RB4_R16G16_FLOAT = 42,
+       RB4_R16G16_UINT = 43,
+       RB4_R16G16_SINT = 44,
+       RB4_R32_FLOAT = 45,
+       RB4_R32_UINT = 46,
+       RB4_R32_SINT = 47,
+       RB4_R16G16B16A16_UNORM = 52,
+       RB4_R16G16B16A16_SNORM = 53,
+       RB4_R16G16B16A16_FLOAT = 54,
+       RB4_R16G16B16A16_UINT = 55,
+       RB4_R16G16B16A16_SINT = 56,
+       RB4_R32G32_FLOAT = 57,
+       RB4_R32G32_UINT = 58,
+       RB4_R32G32_SINT = 59,
+       RB4_R32G32B32A32_FLOAT = 60,
+       RB4_R32G32B32A32_UINT = 61,
+       RB4_R32G32B32A32_SINT = 62,
 };
 
 enum a4xx_tile_mode {
@@ -91,7 +128,14 @@ enum a4xx_vtx_fmt {
        VFMT4_16_16_UNORM = 29,
        VFMT4_16_16_16_UNORM = 30,
        VFMT4_16_16_16_16_UNORM = 31,
+       VFMT4_32_UINT = 32,
+       VFMT4_32_32_UINT = 33,
+       VFMT4_32_32_32_UINT = 34,
+       VFMT4_32_32_32_32_UINT = 35,
+       VFMT4_32_SINT = 36,
        VFMT4_32_32_SINT = 37,
+       VFMT4_32_32_32_SINT = 38,
+       VFMT4_32_32_32_32_SINT = 39,
        VFMT4_8_UINT = 40,
        VFMT4_8_8_UINT = 41,
        VFMT4_8_8_8_UINT = 42,
@@ -116,7 +160,7 @@ enum a4xx_vtx_fmt {
 
 enum a4xx_tex_fmt {
        TFMT4_5_6_5_UNORM = 11,
-       TFMT4_5_5_5_1_UNORM = 10,
+       TFMT4_5_5_5_1_UNORM = 9,
        TFMT4_4_4_4_4_UNORM = 8,
        TFMT4_X8Z24_UNORM = 71,
        TFMT4_10_10_10_2_UNORM = 33,
@@ -125,12 +169,72 @@ enum a4xx_tex_fmt {
        TFMT4_8_UNORM = 4,
        TFMT4_8_8_UNORM = 14,
        TFMT4_8_8_8_8_UNORM = 28,
+       TFMT4_8_SNORM = 5,
+       TFMT4_8_8_SNORM = 15,
+       TFMT4_8_8_8_8_SNORM = 29,
+       TFMT4_8_UINT = 6,
+       TFMT4_8_8_UINT = 16,
+       TFMT4_8_8_8_8_UINT = 30,
+       TFMT4_8_SINT = 7,
+       TFMT4_8_8_SINT = 17,
+       TFMT4_8_8_8_8_SINT = 31,
+       TFMT4_16_UNORM = 18,
+       TFMT4_16_16_UNORM = 38,
+       TFMT4_16_16_16_16_UNORM = 51,
+       TFMT4_16_SNORM = 19,
+       TFMT4_16_16_SNORM = 39,
+       TFMT4_16_16_16_16_SNORM = 52,
+       TFMT4_16_UINT = 21,
+       TFMT4_16_16_UINT = 41,
+       TFMT4_16_16_16_16_UINT = 54,
+       TFMT4_16_SINT = 22,
+       TFMT4_16_16_SINT = 42,
+       TFMT4_16_16_16_16_SINT = 55,
+       TFMT4_32_UINT = 44,
+       TFMT4_32_32_UINT = 57,
+       TFMT4_32_32_32_32_UINT = 64,
+       TFMT4_32_SINT = 45,
+       TFMT4_32_32_SINT = 58,
+       TFMT4_32_32_32_32_SINT = 65,
        TFMT4_16_FLOAT = 20,
        TFMT4_16_16_FLOAT = 40,
        TFMT4_16_16_16_16_FLOAT = 53,
        TFMT4_32_FLOAT = 43,
        TFMT4_32_32_FLOAT = 56,
        TFMT4_32_32_32_32_FLOAT = 63,
+       TFMT4_9_9_9_E5_FLOAT = 32,
+       TFMT4_11_11_10_FLOAT = 37,
+       TFMT4_DXT1 = 86,
+       TFMT4_DXT3 = 87,
+       TFMT4_DXT5 = 88,
+       TFMT4_BPTC_UFLOAT = 97,
+       TFMT4_BPTC_FLOAT = 98,
+       TFMT4_BPTC = 99,
+       TFMT4_ATC_RGB = 100,
+       TFMT4_ATC_RGBA_EXPLICIT = 101,
+       TFMT4_ATC_RGBA_INTERPOLATED = 102,
+       TFMT4_ETC2_RG11_UNORM = 103,
+       TFMT4_ETC2_RG11_SNORM = 104,
+       TFMT4_ETC2_R11_UNORM = 105,
+       TFMT4_ETC2_R11_SNORM = 106,
+       TFMT4_ETC1 = 107,
+       TFMT4_ETC2_RGB8 = 108,
+       TFMT4_ETC2_RGBA8 = 109,
+       TFMT4_ETC2_RGB8A1 = 110,
+       TFMT4_ASTC_4x4 = 111,
+       TFMT4_ASTC_5x4 = 112,
+       TFMT4_ASTC_5x5 = 113,
+       TFMT4_ASTC_6x5 = 114,
+       TFMT4_ASTC_6x6 = 115,
+       TFMT4_ASTC_8x5 = 116,
+       TFMT4_ASTC_8x6 = 117,
+       TFMT4_ASTC_8x8 = 118,
+       TFMT4_ASTC_10x5 = 119,
+       TFMT4_ASTC_10x6 = 120,
+       TFMT4_ASTC_10x8 = 121,
+       TFMT4_ASTC_10x10 = 122,
+       TFMT4_ASTC_12x10 = 123,
+       TFMT4_ASTC_12x12 = 124,
 };
 
 enum a4xx_tex_fetchsize {
@@ -145,18 +249,35 @@ enum a4xx_depth_format {
        DEPTH4_NONE = 0,
        DEPTH4_16 = 1,
        DEPTH4_24_8 = 2,
+       DEPTH4_32 = 3,
+};
+
+enum a4xx_tess_spacing {
+       EQUAL_SPACING = 0,
+       ODD_SPACING = 2,
+       EVEN_SPACING = 3,
 };
 
 enum a4xx_tex_filter {
        A4XX_TEX_NEAREST = 0,
        A4XX_TEX_LINEAR = 1,
+       A4XX_TEX_ANISO = 2,
 };
 
 enum a4xx_tex_clamp {
        A4XX_TEX_REPEAT = 0,
        A4XX_TEX_CLAMP_TO_EDGE = 1,
        A4XX_TEX_MIRROR_REPEAT = 2,
-       A4XX_TEX_CLAMP_NONE = 3,
+       A4XX_TEX_CLAMP_TO_BORDER = 3,
+       A4XX_TEX_MIRROR_CLAMP = 4,
+};
+
+enum a4xx_tex_aniso {
+       A4XX_TEX_ANISO_1 = 0,
+       A4XX_TEX_ANISO_2 = 1,
+       A4XX_TEX_ANISO_4 = 2,
+       A4XX_TEX_ANISO_8 = 3,
+       A4XX_TEX_ANISO_16 = 4,
 };
 
 enum a4xx_tex_swiz {
@@ -279,13 +400,16 @@ static inline uint32_t A4XX_RB_MSAA_CONTROL_SAMPLES(uint32_t val)
 #define A4XX_RB_RENDER_CONTROL2_YCOORD                         0x00000002
 #define A4XX_RB_RENDER_CONTROL2_ZCOORD                         0x00000004
 #define A4XX_RB_RENDER_CONTROL2_WCOORD                         0x00000008
+#define A4XX_RB_RENDER_CONTROL2_SAMPLEMASK                     0x00000010
 #define A4XX_RB_RENDER_CONTROL2_FACENESS                       0x00000020
+#define A4XX_RB_RENDER_CONTROL2_SAMPLEID                       0x00000040
 #define A4XX_RB_RENDER_CONTROL2_MSAA_SAMPLES__MASK             0x00000380
 #define A4XX_RB_RENDER_CONTROL2_MSAA_SAMPLES__SHIFT            7
 static inline uint32_t A4XX_RB_RENDER_CONTROL2_MSAA_SAMPLES(uint32_t val)
 {
        return ((val) << A4XX_RB_RENDER_CONTROL2_MSAA_SAMPLES__SHIFT) & A4XX_RB_RENDER_CONTROL2_MSAA_SAMPLES__MASK;
 }
+#define A4XX_RB_RENDER_CONTROL2_SAMPLEID_HR                    0x00000800
 #define A4XX_RB_RENDER_CONTROL2_VARYING                                0x00001000
 
 static inline uint32_t REG_A4XX_RB_MRT(uint32_t i0) { return 0x000020a4 + 0x5*i0; }
@@ -310,6 +434,12 @@ static inline uint32_t A4XX_RB_MRT_BUF_INFO_COLOR_FORMAT(enum a4xx_color_fmt val
 {
        return ((val) << A4XX_RB_MRT_BUF_INFO_COLOR_FORMAT__SHIFT) & A4XX_RB_MRT_BUF_INFO_COLOR_FORMAT__MASK;
 }
+#define A4XX_RB_MRT_BUF_INFO_COLOR_TILE_MODE__MASK             0x000000c0
+#define A4XX_RB_MRT_BUF_INFO_COLOR_TILE_MODE__SHIFT            6
+static inline uint32_t A4XX_RB_MRT_BUF_INFO_COLOR_TILE_MODE(enum a4xx_tile_mode val)
+{
+       return ((val) << A4XX_RB_MRT_BUF_INFO_COLOR_TILE_MODE__SHIFT) & A4XX_RB_MRT_BUF_INFO_COLOR_TILE_MODE__MASK;
+}
 #define A4XX_RB_MRT_BUF_INFO_DITHER_MODE__MASK                 0x00000600
 #define A4XX_RB_MRT_BUF_INFO_DITHER_MODE__SHIFT                        9
 static inline uint32_t A4XX_RB_MRT_BUF_INFO_DITHER_MODE(enum adreno_rb_dither_mode val)
@@ -322,7 +452,8 @@ static inline uint32_t A4XX_RB_MRT_BUF_INFO_COLOR_SWAP(enum a3xx_color_swap val)
 {
        return ((val) << A4XX_RB_MRT_BUF_INFO_COLOR_SWAP__SHIFT) & A4XX_RB_MRT_BUF_INFO_COLOR_SWAP__MASK;
 }
-#define A4XX_RB_MRT_BUF_INFO_COLOR_BUF_PITCH__MASK             0x007fc000
+#define A4XX_RB_MRT_BUF_INFO_COLOR_SRGB                                0x00002000
+#define A4XX_RB_MRT_BUF_INFO_COLOR_BUF_PITCH__MASK             0xffffc000
 #define A4XX_RB_MRT_BUF_INFO_COLOR_BUF_PITCH__SHIFT            14
 static inline uint32_t A4XX_RB_MRT_BUF_INFO_COLOR_BUF_PITCH(uint32_t val)
 {
@@ -332,7 +463,7 @@ static inline uint32_t A4XX_RB_MRT_BUF_INFO_COLOR_BUF_PITCH(uint32_t val)
 static inline uint32_t REG_A4XX_RB_MRT_BASE(uint32_t i0) { return 0x000020a6 + 0x5*i0; }
 
 static inline uint32_t REG_A4XX_RB_MRT_CONTROL3(uint32_t i0) { return 0x000020a7 + 0x5*i0; }
-#define A4XX_RB_MRT_CONTROL3_STRIDE__MASK                      0x0001fff8
+#define A4XX_RB_MRT_CONTROL3_STRIDE__MASK                      0x03fffff8
 #define A4XX_RB_MRT_CONTROL3_STRIDE__SHIFT                     3
 static inline uint32_t A4XX_RB_MRT_CONTROL3_STRIDE(uint32_t val)
 {
@@ -377,7 +508,101 @@ static inline uint32_t A4XX_RB_MRT_BLEND_CONTROL_ALPHA_DEST_FACTOR(enum adreno_r
        return ((val) << A4XX_RB_MRT_BLEND_CONTROL_ALPHA_DEST_FACTOR__SHIFT) & A4XX_RB_MRT_BLEND_CONTROL_ALPHA_DEST_FACTOR__MASK;
 }
 
+#define REG_A4XX_RB_BLEND_RED                                  0x000020f0
+#define A4XX_RB_BLEND_RED_UINT__MASK                           0x0000ffff
+#define A4XX_RB_BLEND_RED_UINT__SHIFT                          0
+static inline uint32_t A4XX_RB_BLEND_RED_UINT(uint32_t val)
+{
+       return ((val) << A4XX_RB_BLEND_RED_UINT__SHIFT) & A4XX_RB_BLEND_RED_UINT__MASK;
+}
+#define A4XX_RB_BLEND_RED_FLOAT__MASK                          0xffff0000
+#define A4XX_RB_BLEND_RED_FLOAT__SHIFT                         16
+static inline uint32_t A4XX_RB_BLEND_RED_FLOAT(float val)
+{
+       return ((util_float_to_half(val)) << A4XX_RB_BLEND_RED_FLOAT__SHIFT) & A4XX_RB_BLEND_RED_FLOAT__MASK;
+}
+
+#define REG_A4XX_RB_BLEND_RED_F32                              0x000020f1
+#define A4XX_RB_BLEND_RED_F32__MASK                            0xffffffff
+#define A4XX_RB_BLEND_RED_F32__SHIFT                           0
+static inline uint32_t A4XX_RB_BLEND_RED_F32(float val)
+{
+       return ((fui(val)) << A4XX_RB_BLEND_RED_F32__SHIFT) & A4XX_RB_BLEND_RED_F32__MASK;
+}
+
+#define REG_A4XX_RB_BLEND_GREEN                                        0x000020f2
+#define A4XX_RB_BLEND_GREEN_UINT__MASK                         0x0000ffff
+#define A4XX_RB_BLEND_GREEN_UINT__SHIFT                                0
+static inline uint32_t A4XX_RB_BLEND_GREEN_UINT(uint32_t val)
+{
+       return ((val) << A4XX_RB_BLEND_GREEN_UINT__SHIFT) & A4XX_RB_BLEND_GREEN_UINT__MASK;
+}
+#define A4XX_RB_BLEND_GREEN_FLOAT__MASK                                0xffff0000
+#define A4XX_RB_BLEND_GREEN_FLOAT__SHIFT                       16
+static inline uint32_t A4XX_RB_BLEND_GREEN_FLOAT(float val)
+{
+       return ((util_float_to_half(val)) << A4XX_RB_BLEND_GREEN_FLOAT__SHIFT) & A4XX_RB_BLEND_GREEN_FLOAT__MASK;
+}
+
+#define REG_A4XX_RB_BLEND_GREEN_F32                            0x000020f3
+#define A4XX_RB_BLEND_GREEN_F32__MASK                          0xffffffff
+#define A4XX_RB_BLEND_GREEN_F32__SHIFT                         0
+static inline uint32_t A4XX_RB_BLEND_GREEN_F32(float val)
+{
+       return ((fui(val)) << A4XX_RB_BLEND_GREEN_F32__SHIFT) & A4XX_RB_BLEND_GREEN_F32__MASK;
+}
+
+#define REG_A4XX_RB_BLEND_BLUE                                 0x000020f4
+#define A4XX_RB_BLEND_BLUE_UINT__MASK                          0x0000ffff
+#define A4XX_RB_BLEND_BLUE_UINT__SHIFT                         0
+static inline uint32_t A4XX_RB_BLEND_BLUE_UINT(uint32_t val)
+{
+       return ((val) << A4XX_RB_BLEND_BLUE_UINT__SHIFT) & A4XX_RB_BLEND_BLUE_UINT__MASK;
+}
+#define A4XX_RB_BLEND_BLUE_FLOAT__MASK                         0xffff0000
+#define A4XX_RB_BLEND_BLUE_FLOAT__SHIFT                                16
+static inline uint32_t A4XX_RB_BLEND_BLUE_FLOAT(float val)
+{
+       return ((util_float_to_half(val)) << A4XX_RB_BLEND_BLUE_FLOAT__SHIFT) & A4XX_RB_BLEND_BLUE_FLOAT__MASK;
+}
+
+#define REG_A4XX_RB_BLEND_BLUE_F32                             0x000020f5
+#define A4XX_RB_BLEND_BLUE_F32__MASK                           0xffffffff
+#define A4XX_RB_BLEND_BLUE_F32__SHIFT                          0
+static inline uint32_t A4XX_RB_BLEND_BLUE_F32(float val)
+{
+       return ((fui(val)) << A4XX_RB_BLEND_BLUE_F32__SHIFT) & A4XX_RB_BLEND_BLUE_F32__MASK;
+}
+
+#define REG_A4XX_RB_BLEND_ALPHA                                        0x000020f6
+#define A4XX_RB_BLEND_ALPHA_UINT__MASK                         0x0000ffff
+#define A4XX_RB_BLEND_ALPHA_UINT__SHIFT                                0
+static inline uint32_t A4XX_RB_BLEND_ALPHA_UINT(uint32_t val)
+{
+       return ((val) << A4XX_RB_BLEND_ALPHA_UINT__SHIFT) & A4XX_RB_BLEND_ALPHA_UINT__MASK;
+}
+#define A4XX_RB_BLEND_ALPHA_FLOAT__MASK                                0xffff0000
+#define A4XX_RB_BLEND_ALPHA_FLOAT__SHIFT                       16
+static inline uint32_t A4XX_RB_BLEND_ALPHA_FLOAT(float val)
+{
+       return ((util_float_to_half(val)) << A4XX_RB_BLEND_ALPHA_FLOAT__SHIFT) & A4XX_RB_BLEND_ALPHA_FLOAT__MASK;
+}
+
+#define REG_A4XX_RB_BLEND_ALPHA_F32                            0x000020f7
+#define A4XX_RB_BLEND_ALPHA_F32__MASK                          0xffffffff
+#define A4XX_RB_BLEND_ALPHA_F32__SHIFT                         0
+static inline uint32_t A4XX_RB_BLEND_ALPHA_F32(float val)
+{
+       return ((fui(val)) << A4XX_RB_BLEND_ALPHA_F32__SHIFT) & A4XX_RB_BLEND_ALPHA_F32__MASK;
+}
+
 #define REG_A4XX_RB_ALPHA_CONTROL                              0x000020f8
+#define A4XX_RB_ALPHA_CONTROL_ALPHA_REF__MASK                  0x000000ff
+#define A4XX_RB_ALPHA_CONTROL_ALPHA_REF__SHIFT                 0
+static inline uint32_t A4XX_RB_ALPHA_CONTROL_ALPHA_REF(uint32_t val)
+{
+       return ((val) << A4XX_RB_ALPHA_CONTROL_ALPHA_REF__SHIFT) & A4XX_RB_ALPHA_CONTROL_ALPHA_REF__MASK;
+}
 #define A4XX_RB_ALPHA_CONTROL_ALPHA_TEST                       0x00000100
 #define A4XX_RB_ALPHA_CONTROL_ALPHA_TEST_FUNC__MASK            0x00000e00
 #define A4XX_RB_ALPHA_CONTROL_ALPHA_TEST_FUNC__SHIFT           9
@@ -387,7 +612,12 @@ static inline uint32_t A4XX_RB_ALPHA_CONTROL_ALPHA_TEST_FUNC(enum adreno_compare
 }
 
 #define REG_A4XX_RB_FS_OUTPUT                                  0x000020f9
-#define A4XX_RB_FS_OUTPUT_ENABLE_BLEND                         0x00000001
+#define A4XX_RB_FS_OUTPUT_ENABLE_BLEND__MASK                   0x000000ff
+#define A4XX_RB_FS_OUTPUT_ENABLE_BLEND__SHIFT                  0
+static inline uint32_t A4XX_RB_FS_OUTPUT_ENABLE_BLEND(uint32_t val)
+{
+       return ((val) << A4XX_RB_FS_OUTPUT_ENABLE_BLEND__SHIFT) & A4XX_RB_FS_OUTPUT_ENABLE_BLEND__MASK;
+}
 #define A4XX_RB_FS_OUTPUT_FAST_CLEAR                           0x00000100
 #define A4XX_RB_FS_OUTPUT_SAMPLE_MASK__MASK                    0xffff0000
 #define A4XX_RB_FS_OUTPUT_SAMPLE_MASK__SHIFT                   16
@@ -396,12 +626,63 @@ static inline uint32_t A4XX_RB_FS_OUTPUT_SAMPLE_MASK(uint32_t val)
        return ((val) << A4XX_RB_FS_OUTPUT_SAMPLE_MASK__SHIFT) & A4XX_RB_FS_OUTPUT_SAMPLE_MASK__MASK;
 }
 
-#define REG_A4XX_RB_RENDER_CONTROL3                            0x000020fb
-#define A4XX_RB_RENDER_CONTROL3_COMPONENT_ENABLE__MASK         0x0000001f
-#define A4XX_RB_RENDER_CONTROL3_COMPONENT_ENABLE__SHIFT                0
-static inline uint32_t A4XX_RB_RENDER_CONTROL3_COMPONENT_ENABLE(uint32_t val)
+#define REG_A4XX_RB_SAMPLE_COUNT_CONTROL                       0x000020fa
+#define A4XX_RB_SAMPLE_COUNT_CONTROL_COPY                      0x00000002
+#define A4XX_RB_SAMPLE_COUNT_CONTROL_ADDR__MASK                        0xfffffffc
+#define A4XX_RB_SAMPLE_COUNT_CONTROL_ADDR__SHIFT               2
+static inline uint32_t A4XX_RB_SAMPLE_COUNT_CONTROL_ADDR(uint32_t val)
+{
+       return ((val >> 2) << A4XX_RB_SAMPLE_COUNT_CONTROL_ADDR__SHIFT) & A4XX_RB_SAMPLE_COUNT_CONTROL_ADDR__MASK;
+}
+
+#define REG_A4XX_RB_RENDER_COMPONENTS                          0x000020fb
+#define A4XX_RB_RENDER_COMPONENTS_RT0__MASK                    0x0000000f
+#define A4XX_RB_RENDER_COMPONENTS_RT0__SHIFT                   0
+static inline uint32_t A4XX_RB_RENDER_COMPONENTS_RT0(uint32_t val)
+{
+       return ((val) << A4XX_RB_RENDER_COMPONENTS_RT0__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT0__MASK;
+}
+#define A4XX_RB_RENDER_COMPONENTS_RT1__MASK                    0x000000f0
+#define A4XX_RB_RENDER_COMPONENTS_RT1__SHIFT                   4
+static inline uint32_t A4XX_RB_RENDER_COMPONENTS_RT1(uint32_t val)
+{
+       return ((val) << A4XX_RB_RENDER_COMPONENTS_RT1__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT1__MASK;
+}
+#define A4XX_RB_RENDER_COMPONENTS_RT2__MASK                    0x00000f00
+#define A4XX_RB_RENDER_COMPONENTS_RT2__SHIFT                   8
+static inline uint32_t A4XX_RB_RENDER_COMPONENTS_RT2(uint32_t val)
+{
+       return ((val) << A4XX_RB_RENDER_COMPONENTS_RT2__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT2__MASK;
+}
+#define A4XX_RB_RENDER_COMPONENTS_RT3__MASK                    0x0000f000
+#define A4XX_RB_RENDER_COMPONENTS_RT3__SHIFT                   12
+static inline uint32_t A4XX_RB_RENDER_COMPONENTS_RT3(uint32_t val)
+{
+       return ((val) << A4XX_RB_RENDER_COMPONENTS_RT3__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT3__MASK;
+}
+#define A4XX_RB_RENDER_COMPONENTS_RT4__MASK                    0x000f0000
+#define A4XX_RB_RENDER_COMPONENTS_RT4__SHIFT                   16
+static inline uint32_t A4XX_RB_RENDER_COMPONENTS_RT4(uint32_t val)
+{
+       return ((val) << A4XX_RB_RENDER_COMPONENTS_RT4__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT4__MASK;
+}
+#define A4XX_RB_RENDER_COMPONENTS_RT5__MASK                    0x00f00000
+#define A4XX_RB_RENDER_COMPONENTS_RT5__SHIFT                   20
+static inline uint32_t A4XX_RB_RENDER_COMPONENTS_RT5(uint32_t val)
+{
+       return ((val) << A4XX_RB_RENDER_COMPONENTS_RT5__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT5__MASK;
+}
+#define A4XX_RB_RENDER_COMPONENTS_RT6__MASK                    0x0f000000
+#define A4XX_RB_RENDER_COMPONENTS_RT6__SHIFT                   24
+static inline uint32_t A4XX_RB_RENDER_COMPONENTS_RT6(uint32_t val)
+{
+       return ((val) << A4XX_RB_RENDER_COMPONENTS_RT6__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT6__MASK;
+}
+#define A4XX_RB_RENDER_COMPONENTS_RT7__MASK                    0xf0000000
+#define A4XX_RB_RENDER_COMPONENTS_RT7__SHIFT                   28
+static inline uint32_t A4XX_RB_RENDER_COMPONENTS_RT7(uint32_t val)
 {
-       return ((val) << A4XX_RB_RENDER_CONTROL3_COMPONENT_ENABLE__SHIFT) & A4XX_RB_RENDER_CONTROL3_COMPONENT_ENABLE__MASK;
+       return ((val) << A4XX_RB_RENDER_COMPONENTS_RT7__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT7__MASK;
 }
 
 #define REG_A4XX_RB_COPY_CONTROL                               0x000020fc
@@ -431,11 +712,11 @@ static inline uint32_t A4XX_RB_COPY_CONTROL_GMEM_BASE(uint32_t val)
 }
 
 #define REG_A4XX_RB_COPY_DEST_BASE                             0x000020fd
-#define A4XX_RB_COPY_DEST_BASE_BASE__MASK                      0xfffffff0
-#define A4XX_RB_COPY_DEST_BASE_BASE__SHIFT                     4
+#define A4XX_RB_COPY_DEST_BASE_BASE__MASK                      0xffffffe0
+#define A4XX_RB_COPY_DEST_BASE_BASE__SHIFT                     5
 static inline uint32_t A4XX_RB_COPY_DEST_BASE_BASE(uint32_t val)
 {
-       return ((val >> 4) << A4XX_RB_COPY_DEST_BASE_BASE__SHIFT) & A4XX_RB_COPY_DEST_BASE_BASE__MASK;
+       return ((val >> 5) << A4XX_RB_COPY_DEST_BASE_BASE__SHIFT) & A4XX_RB_COPY_DEST_BASE_BASE__MASK;
 }
 
 #define REG_A4XX_RB_COPY_DEST_PITCH                            0x000020fe
@@ -485,7 +766,12 @@ static inline uint32_t A4XX_RB_COPY_DEST_INFO_TILE(enum a4xx_tile_mode val)
 }
 
 #define REG_A4XX_RB_FS_OUTPUT_REG                              0x00002100
-#define A4XX_RB_FS_OUTPUT_REG_COLOR_PIPE_ENABLE                        0x00000001
+#define A4XX_RB_FS_OUTPUT_REG_MRT__MASK                                0x0000000f
+#define A4XX_RB_FS_OUTPUT_REG_MRT__SHIFT                       0
+static inline uint32_t A4XX_RB_FS_OUTPUT_REG_MRT(uint32_t val)
+{
+       return ((val) << A4XX_RB_FS_OUTPUT_REG_MRT__SHIFT) & A4XX_RB_FS_OUTPUT_REG_MRT__MASK;
+}
 #define A4XX_RB_FS_OUTPUT_REG_FRAG_WRITES_Z                    0x00000020
 
 #define REG_A4XX_RB_DEPTH_CONTROL                              0x00002101
@@ -590,6 +876,23 @@ static inline uint32_t A4XX_RB_STENCIL_CONTROL_ZFAIL_BF(enum adreno_stencil_op v
 #define REG_A4XX_RB_STENCIL_CONTROL2                           0x00002107
 #define A4XX_RB_STENCIL_CONTROL2_STENCIL_BUFFER                        0x00000001
 
+#define REG_A4XX_RB_STENCIL_INFO                               0x00002108
+#define A4XX_RB_STENCIL_INFO_SEPARATE_STENCIL                  0x00000001
+#define A4XX_RB_STENCIL_INFO_STENCIL_BASE__MASK                        0xfffff000
+#define A4XX_RB_STENCIL_INFO_STENCIL_BASE__SHIFT               12
+static inline uint32_t A4XX_RB_STENCIL_INFO_STENCIL_BASE(uint32_t val)
+{
+       return ((val >> 12) << A4XX_RB_STENCIL_INFO_STENCIL_BASE__SHIFT) & A4XX_RB_STENCIL_INFO_STENCIL_BASE__MASK;
+}
+
+#define REG_A4XX_RB_STENCIL_PITCH                              0x00002109
+#define A4XX_RB_STENCIL_PITCH__MASK                            0xffffffff
+#define A4XX_RB_STENCIL_PITCH__SHIFT                           0
+static inline uint32_t A4XX_RB_STENCIL_PITCH(uint32_t val)
+{
+       return ((val >> 5) << A4XX_RB_STENCIL_PITCH__SHIFT) & A4XX_RB_STENCIL_PITCH__MASK;
+}
+
 #define REG_A4XX_RB_STENCILREFMASK                             0x0000210b
 #define A4XX_RB_STENCILREFMASK_STENCILREF__MASK                        0x000000ff
 #define A4XX_RB_STENCILREFMASK_STENCILREF__SHIFT               0
@@ -645,7 +948,11 @@ static inline uint32_t A4XX_RB_BIN_OFFSET_Y(uint32_t val)
        return ((val) << A4XX_RB_BIN_OFFSET_Y__SHIFT) & A4XX_RB_BIN_OFFSET_Y__MASK;
 }
 
-#define REG_A4XX_RB_VPORT_Z_CLAMP_MAX_15                       0x0000213f
+static inline uint32_t REG_A4XX_RB_VPORT_Z_CLAMP(uint32_t i0) { return 0x00002120 + 0x2*i0; }
+
+static inline uint32_t REG_A4XX_RB_VPORT_Z_CLAMP_MIN(uint32_t i0) { return 0x00002120 + 0x2*i0; }
+
+static inline uint32_t REG_A4XX_RB_VPORT_Z_CLAMP_MAX(uint32_t i0) { return 0x00002121 + 0x2*i0; }
 
 #define REG_A4XX_RBBM_HW_VERSION                               0x00000000
 
@@ -864,6 +1171,10 @@ static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_REG(uint32_t i0)
 
 #define REG_A4XX_CP_IB2_BUFSZ                                  0x00000209
 
+#define REG_A4XX_CP_ME_NRT_ADDR                                        0x0000020c
+
+#define REG_A4XX_CP_ME_NRT_DATA                                        0x0000020d
+
 #define REG_A4XX_CP_ME_RB_DONE_DATA                            0x00000217
 
 #define REG_A4XX_CP_QUEUE_THRESH2                              0x00000219
@@ -874,9 +1185,9 @@ static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_REG(uint32_t i0)
 
 #define REG_A4XX_CP_ROQ_DATA                                   0x0000021d
 
-#define REG_A4XX_CP_MEQ_ADDR                                   0x0000021e
+#define REG_A4XX_CP_MEQ_ADDR                                   0x0000021e
 
-#define REG_A4XX_CP_MEQ_DATA                                   0x0000021f
+#define REG_A4XX_CP_MEQ_DATA                                   0x0000021f
 
 #define REG_A4XX_CP_MERCIU_ADDR                                        0x00000220
 
@@ -938,12 +1249,17 @@ static inline uint32_t REG_A4XX_CP_SCRATCH_REG(uint32_t i0) { return 0x00000578
 
 #define REG_A4XX_SP_VS_STATUS                                  0x00000ec0
 
+#define REG_A4XX_SP_MODE_CONTROL                               0x00000ec3
+
 #define REG_A4XX_SP_PERFCTR_SP_SEL_11                          0x00000ecf
 
 #define REG_A4XX_SP_SP_CTRL_REG                                        0x000022c0
 #define A4XX_SP_SP_CTRL_REG_BINNING_PASS                       0x00080000
 
 #define REG_A4XX_SP_INSTR_CACHE_CTRL                           0x000022c1
+#define A4XX_SP_INSTR_CACHE_CTRL_VS_BUFFER                     0x00000080
+#define A4XX_SP_INSTR_CACHE_CTRL_FS_BUFFER                     0x00000100
+#define A4XX_SP_INSTR_CACHE_CTRL_INSTR_BUFFER                  0x00000400
 
 #define REG_A4XX_SP_VS_CTRL_REG0                               0x000022c4
 #define A4XX_SP_VS_CTRL_REG0_THREADMODE__MASK                  0x00000001
@@ -1163,6 +1479,12 @@ static inline uint32_t A4XX_SP_FS_OBJ_OFFSET_REG_SHADEROBJOFFSET(uint32_t val)
 #define REG_A4XX_SP_FS_LENGTH_REG                              0x000022ef
 
 #define REG_A4XX_SP_FS_OUTPUT_REG                              0x000022f0
+#define A4XX_SP_FS_OUTPUT_REG_MRT__MASK                                0x0000000f
+#define A4XX_SP_FS_OUTPUT_REG_MRT__SHIFT                       0
+static inline uint32_t A4XX_SP_FS_OUTPUT_REG_MRT(uint32_t val)
+{
+       return ((val) << A4XX_SP_FS_OUTPUT_REG_MRT__SHIFT) & A4XX_SP_FS_OUTPUT_REG_MRT__MASK;
+}
 #define A4XX_SP_FS_OUTPUT_REG_DEPTH_ENABLE                     0x00000080
 #define A4XX_SP_FS_OUTPUT_REG_DEPTH_REGID__MASK                        0x0000ff00
 #define A4XX_SP_FS_OUTPUT_REG_DEPTH_REGID__SHIFT               8
@@ -1170,6 +1492,12 @@ static inline uint32_t A4XX_SP_FS_OUTPUT_REG_DEPTH_REGID(uint32_t val)
 {
        return ((val) << A4XX_SP_FS_OUTPUT_REG_DEPTH_REGID__SHIFT) & A4XX_SP_FS_OUTPUT_REG_DEPTH_REGID__MASK;
 }
+#define A4XX_SP_FS_OUTPUT_REG_SAMPLEMASK_REGID__MASK           0xff000000
+#define A4XX_SP_FS_OUTPUT_REG_SAMPLEMASK_REGID__SHIFT          24
+static inline uint32_t A4XX_SP_FS_OUTPUT_REG_SAMPLEMASK_REGID(uint32_t val)
+{
+       return ((val) << A4XX_SP_FS_OUTPUT_REG_SAMPLEMASK_REGID__SHIFT) & A4XX_SP_FS_OUTPUT_REG_SAMPLEMASK_REGID__MASK;
+}
 
 static inline uint32_t REG_A4XX_SP_FS_MRT(uint32_t i0) { return 0x000022f1 + 0x1*i0; }
 
@@ -1187,6 +1515,21 @@ static inline uint32_t A4XX_SP_FS_MRT_REG_MRTFORMAT(enum a4xx_color_fmt val)
 {
        return ((val) << A4XX_SP_FS_MRT_REG_MRTFORMAT__SHIFT) & A4XX_SP_FS_MRT_REG_MRTFORMAT__MASK;
 }
+#define A4XX_SP_FS_MRT_REG_COLOR_SRGB                          0x00040000
+
+#define REG_A4XX_SP_CS_CTRL_REG0                               0x00002300
+
+#define REG_A4XX_SP_CS_OBJ_OFFSET_REG                          0x00002301
+
+#define REG_A4XX_SP_CS_OBJ_START                               0x00002302
+
+#define REG_A4XX_SP_CS_PVT_MEM_PARAM                           0x00002303
+
+#define REG_A4XX_SP_CS_PVT_MEM_ADDR                            0x00002304
+
+#define REG_A4XX_SP_CS_PVT_MEM_SIZE                            0x00002305
+
+#define REG_A4XX_SP_CS_LENGTH_REG                              0x00002306
 
 #define REG_A4XX_SP_HS_OBJ_OFFSET_REG                          0x0000230d
 #define A4XX_SP_HS_OBJ_OFFSET_REG_CONSTOBJECTOFFSET__MASK      0x01ff0000
@@ -1202,6 +1545,84 @@ static inline uint32_t A4XX_SP_HS_OBJ_OFFSET_REG_SHADEROBJOFFSET(uint32_t val)
        return ((val) << A4XX_SP_HS_OBJ_OFFSET_REG_SHADEROBJOFFSET__SHIFT) & A4XX_SP_HS_OBJ_OFFSET_REG_SHADEROBJOFFSET__MASK;
 }
 
+#define REG_A4XX_SP_HS_OBJ_START                               0x0000230e
+
+#define REG_A4XX_SP_HS_PVT_MEM_PARAM                           0x0000230f
+
+#define REG_A4XX_SP_HS_PVT_MEM_ADDR                            0x00002310
+
+#define REG_A4XX_SP_HS_LENGTH_REG                              0x00002312
+
+#define REG_A4XX_SP_DS_PARAM_REG                               0x0000231a
+#define A4XX_SP_DS_PARAM_REG_POSREGID__MASK                    0x000000ff
+#define A4XX_SP_DS_PARAM_REG_POSREGID__SHIFT                   0
+static inline uint32_t A4XX_SP_DS_PARAM_REG_POSREGID(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_PARAM_REG_POSREGID__SHIFT) & A4XX_SP_DS_PARAM_REG_POSREGID__MASK;
+}
+#define A4XX_SP_DS_PARAM_REG_TOTALGSOUTVAR__MASK               0xfff00000
+#define A4XX_SP_DS_PARAM_REG_TOTALGSOUTVAR__SHIFT              20
+static inline uint32_t A4XX_SP_DS_PARAM_REG_TOTALGSOUTVAR(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_PARAM_REG_TOTALGSOUTVAR__SHIFT) & A4XX_SP_DS_PARAM_REG_TOTALGSOUTVAR__MASK;
+}
+
+static inline uint32_t REG_A4XX_SP_DS_OUT(uint32_t i0) { return 0x0000231b + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_SP_DS_OUT_REG(uint32_t i0) { return 0x0000231b + 0x1*i0; }
+#define A4XX_SP_DS_OUT_REG_A_REGID__MASK                       0x000001ff
+#define A4XX_SP_DS_OUT_REG_A_REGID__SHIFT                      0
+static inline uint32_t A4XX_SP_DS_OUT_REG_A_REGID(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_OUT_REG_A_REGID__SHIFT) & A4XX_SP_DS_OUT_REG_A_REGID__MASK;
+}
+#define A4XX_SP_DS_OUT_REG_A_COMPMASK__MASK                    0x00001e00
+#define A4XX_SP_DS_OUT_REG_A_COMPMASK__SHIFT                   9
+static inline uint32_t A4XX_SP_DS_OUT_REG_A_COMPMASK(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_OUT_REG_A_COMPMASK__SHIFT) & A4XX_SP_DS_OUT_REG_A_COMPMASK__MASK;
+}
+#define A4XX_SP_DS_OUT_REG_B_REGID__MASK                       0x01ff0000
+#define A4XX_SP_DS_OUT_REG_B_REGID__SHIFT                      16
+static inline uint32_t A4XX_SP_DS_OUT_REG_B_REGID(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_OUT_REG_B_REGID__SHIFT) & A4XX_SP_DS_OUT_REG_B_REGID__MASK;
+}
+#define A4XX_SP_DS_OUT_REG_B_COMPMASK__MASK                    0x1e000000
+#define A4XX_SP_DS_OUT_REG_B_COMPMASK__SHIFT                   25
+static inline uint32_t A4XX_SP_DS_OUT_REG_B_COMPMASK(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_OUT_REG_B_COMPMASK__SHIFT) & A4XX_SP_DS_OUT_REG_B_COMPMASK__MASK;
+}
+
+static inline uint32_t REG_A4XX_SP_DS_VPC_DST(uint32_t i0) { return 0x0000232c + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_SP_DS_VPC_DST_REG(uint32_t i0) { return 0x0000232c + 0x1*i0; }
+#define A4XX_SP_DS_VPC_DST_REG_OUTLOC0__MASK                   0x000000ff
+#define A4XX_SP_DS_VPC_DST_REG_OUTLOC0__SHIFT                  0
+static inline uint32_t A4XX_SP_DS_VPC_DST_REG_OUTLOC0(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_VPC_DST_REG_OUTLOC0__SHIFT) & A4XX_SP_DS_VPC_DST_REG_OUTLOC0__MASK;
+}
+#define A4XX_SP_DS_VPC_DST_REG_OUTLOC1__MASK                   0x0000ff00
+#define A4XX_SP_DS_VPC_DST_REG_OUTLOC1__SHIFT                  8
+static inline uint32_t A4XX_SP_DS_VPC_DST_REG_OUTLOC1(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_VPC_DST_REG_OUTLOC1__SHIFT) & A4XX_SP_DS_VPC_DST_REG_OUTLOC1__MASK;
+}
+#define A4XX_SP_DS_VPC_DST_REG_OUTLOC2__MASK                   0x00ff0000
+#define A4XX_SP_DS_VPC_DST_REG_OUTLOC2__SHIFT                  16
+static inline uint32_t A4XX_SP_DS_VPC_DST_REG_OUTLOC2(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_VPC_DST_REG_OUTLOC2__SHIFT) & A4XX_SP_DS_VPC_DST_REG_OUTLOC2__MASK;
+}
+#define A4XX_SP_DS_VPC_DST_REG_OUTLOC3__MASK                   0xff000000
+#define A4XX_SP_DS_VPC_DST_REG_OUTLOC3__SHIFT                  24
+static inline uint32_t A4XX_SP_DS_VPC_DST_REG_OUTLOC3(uint32_t val)
+{
+       return ((val) << A4XX_SP_DS_VPC_DST_REG_OUTLOC3__SHIFT) & A4XX_SP_DS_VPC_DST_REG_OUTLOC3__MASK;
+}
+
 #define REG_A4XX_SP_DS_OBJ_OFFSET_REG                          0x00002334
 #define A4XX_SP_DS_OBJ_OFFSET_REG_CONSTOBJECTOFFSET__MASK      0x01ff0000
 #define A4XX_SP_DS_OBJ_OFFSET_REG_CONSTOBJECTOFFSET__SHIFT     16
@@ -1216,6 +1637,90 @@ static inline uint32_t A4XX_SP_DS_OBJ_OFFSET_REG_SHADEROBJOFFSET(uint32_t val)
        return ((val) << A4XX_SP_DS_OBJ_OFFSET_REG_SHADEROBJOFFSET__SHIFT) & A4XX_SP_DS_OBJ_OFFSET_REG_SHADEROBJOFFSET__MASK;
 }
 
+#define REG_A4XX_SP_DS_OBJ_START                               0x00002335
+
+#define REG_A4XX_SP_DS_PVT_MEM_PARAM                           0x00002336
+
+#define REG_A4XX_SP_DS_PVT_MEM_ADDR                            0x00002337
+
+#define REG_A4XX_SP_DS_LENGTH_REG                              0x00002339
+
+#define REG_A4XX_SP_GS_PARAM_REG                               0x00002341
+#define A4XX_SP_GS_PARAM_REG_POSREGID__MASK                    0x000000ff
+#define A4XX_SP_GS_PARAM_REG_POSREGID__SHIFT                   0
+static inline uint32_t A4XX_SP_GS_PARAM_REG_POSREGID(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_PARAM_REG_POSREGID__SHIFT) & A4XX_SP_GS_PARAM_REG_POSREGID__MASK;
+}
+#define A4XX_SP_GS_PARAM_REG_PRIMREGID__MASK                   0x0000ff00
+#define A4XX_SP_GS_PARAM_REG_PRIMREGID__SHIFT                  8
+static inline uint32_t A4XX_SP_GS_PARAM_REG_PRIMREGID(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_PARAM_REG_PRIMREGID__SHIFT) & A4XX_SP_GS_PARAM_REG_PRIMREGID__MASK;
+}
+#define A4XX_SP_GS_PARAM_REG_TOTALGSOUTVAR__MASK               0xfff00000
+#define A4XX_SP_GS_PARAM_REG_TOTALGSOUTVAR__SHIFT              20
+static inline uint32_t A4XX_SP_GS_PARAM_REG_TOTALGSOUTVAR(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_PARAM_REG_TOTALGSOUTVAR__SHIFT) & A4XX_SP_GS_PARAM_REG_TOTALGSOUTVAR__MASK;
+}
+
+static inline uint32_t REG_A4XX_SP_GS_OUT(uint32_t i0) { return 0x00002342 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_SP_GS_OUT_REG(uint32_t i0) { return 0x00002342 + 0x1*i0; }
+#define A4XX_SP_GS_OUT_REG_A_REGID__MASK                       0x000001ff
+#define A4XX_SP_GS_OUT_REG_A_REGID__SHIFT                      0
+static inline uint32_t A4XX_SP_GS_OUT_REG_A_REGID(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_OUT_REG_A_REGID__SHIFT) & A4XX_SP_GS_OUT_REG_A_REGID__MASK;
+}
+#define A4XX_SP_GS_OUT_REG_A_COMPMASK__MASK                    0x00001e00
+#define A4XX_SP_GS_OUT_REG_A_COMPMASK__SHIFT                   9
+static inline uint32_t A4XX_SP_GS_OUT_REG_A_COMPMASK(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_OUT_REG_A_COMPMASK__SHIFT) & A4XX_SP_GS_OUT_REG_A_COMPMASK__MASK;
+}
+#define A4XX_SP_GS_OUT_REG_B_REGID__MASK                       0x01ff0000
+#define A4XX_SP_GS_OUT_REG_B_REGID__SHIFT                      16
+static inline uint32_t A4XX_SP_GS_OUT_REG_B_REGID(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_OUT_REG_B_REGID__SHIFT) & A4XX_SP_GS_OUT_REG_B_REGID__MASK;
+}
+#define A4XX_SP_GS_OUT_REG_B_COMPMASK__MASK                    0x1e000000
+#define A4XX_SP_GS_OUT_REG_B_COMPMASK__SHIFT                   25
+static inline uint32_t A4XX_SP_GS_OUT_REG_B_COMPMASK(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_OUT_REG_B_COMPMASK__SHIFT) & A4XX_SP_GS_OUT_REG_B_COMPMASK__MASK;
+}
+
+static inline uint32_t REG_A4XX_SP_GS_VPC_DST(uint32_t i0) { return 0x00002353 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_SP_GS_VPC_DST_REG(uint32_t i0) { return 0x00002353 + 0x1*i0; }
+#define A4XX_SP_GS_VPC_DST_REG_OUTLOC0__MASK                   0x000000ff
+#define A4XX_SP_GS_VPC_DST_REG_OUTLOC0__SHIFT                  0
+static inline uint32_t A4XX_SP_GS_VPC_DST_REG_OUTLOC0(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_VPC_DST_REG_OUTLOC0__SHIFT) & A4XX_SP_GS_VPC_DST_REG_OUTLOC0__MASK;
+}
+#define A4XX_SP_GS_VPC_DST_REG_OUTLOC1__MASK                   0x0000ff00
+#define A4XX_SP_GS_VPC_DST_REG_OUTLOC1__SHIFT                  8
+static inline uint32_t A4XX_SP_GS_VPC_DST_REG_OUTLOC1(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_VPC_DST_REG_OUTLOC1__SHIFT) & A4XX_SP_GS_VPC_DST_REG_OUTLOC1__MASK;
+}
+#define A4XX_SP_GS_VPC_DST_REG_OUTLOC2__MASK                   0x00ff0000
+#define A4XX_SP_GS_VPC_DST_REG_OUTLOC2__SHIFT                  16
+static inline uint32_t A4XX_SP_GS_VPC_DST_REG_OUTLOC2(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_VPC_DST_REG_OUTLOC2__SHIFT) & A4XX_SP_GS_VPC_DST_REG_OUTLOC2__MASK;
+}
+#define A4XX_SP_GS_VPC_DST_REG_OUTLOC3__MASK                   0xff000000
+#define A4XX_SP_GS_VPC_DST_REG_OUTLOC3__SHIFT                  24
+static inline uint32_t A4XX_SP_GS_VPC_DST_REG_OUTLOC3(uint32_t val)
+{
+       return ((val) << A4XX_SP_GS_VPC_DST_REG_OUTLOC3__SHIFT) & A4XX_SP_GS_VPC_DST_REG_OUTLOC3__MASK;
+}
+
 #define REG_A4XX_SP_GS_OBJ_OFFSET_REG                          0x0000235b
 #define A4XX_SP_GS_OBJ_OFFSET_REG_CONSTOBJECTOFFSET__MASK      0x01ff0000
 #define A4XX_SP_GS_OBJ_OFFSET_REG_CONSTOBJECTOFFSET__SHIFT     16
@@ -1230,6 +1735,12 @@ static inline uint32_t A4XX_SP_GS_OBJ_OFFSET_REG_SHADEROBJOFFSET(uint32_t val)
        return ((val) << A4XX_SP_GS_OBJ_OFFSET_REG_SHADEROBJOFFSET__SHIFT) & A4XX_SP_GS_OBJ_OFFSET_REG_SHADEROBJOFFSET__MASK;
 }
 
+#define REG_A4XX_SP_GS_OBJ_START                               0x0000235c
+
+#define REG_A4XX_SP_GS_PVT_MEM_PARAM                           0x0000235d
+
+#define REG_A4XX_SP_GS_PVT_MEM_ADDR                            0x0000235e
+
 #define REG_A4XX_SP_GS_LENGTH_REG                              0x00002360
 
 #define REG_A4XX_VPC_DEBUG_RAM_SEL                             0x00000e60
@@ -1352,6 +1863,10 @@ static inline uint32_t REG_A4XX_VSC_PIPE_DATA_LENGTH_REG(uint32_t i0) { return 0
 
 #define REG_A4XX_VFD_PERFCTR_VFD_SEL_7                         0x00000e4a
 
+#define REG_A4XX_VGT_CL_INITIATOR                              0x000021d0
+
+#define REG_A4XX_VGT_EVENT_INITIATOR                           0x000021d9
+
 #define REG_A4XX_VFD_CONTROL_0                                 0x00002200
 #define A4XX_VFD_CONTROL_0_TOTALATTRTOVS__MASK                 0x000000ff
 #define A4XX_VFD_CONTROL_0_TOTALATTRTOVS__SHIFT                        0
@@ -1401,6 +1916,24 @@ static inline uint32_t A4XX_VFD_CONTROL_1_REGID4INST(uint32_t val)
 #define REG_A4XX_VFD_CONTROL_2                                 0x00002202
 
 #define REG_A4XX_VFD_CONTROL_3                                 0x00002203
+#define A4XX_VFD_CONTROL_3_REGID_VTXCNT__MASK                  0x0000ff00
+#define A4XX_VFD_CONTROL_3_REGID_VTXCNT__SHIFT                 8
+static inline uint32_t A4XX_VFD_CONTROL_3_REGID_VTXCNT(uint32_t val)
+{
+       return ((val) << A4XX_VFD_CONTROL_3_REGID_VTXCNT__SHIFT) & A4XX_VFD_CONTROL_3_REGID_VTXCNT__MASK;
+}
+#define A4XX_VFD_CONTROL_3_REGID_TESSX__MASK                   0x00ff0000
+#define A4XX_VFD_CONTROL_3_REGID_TESSX__SHIFT                  16
+static inline uint32_t A4XX_VFD_CONTROL_3_REGID_TESSX(uint32_t val)
+{
+       return ((val) << A4XX_VFD_CONTROL_3_REGID_TESSX__SHIFT) & A4XX_VFD_CONTROL_3_REGID_TESSX__MASK;
+}
+#define A4XX_VFD_CONTROL_3_REGID_TESSY__MASK                   0xff000000
+#define A4XX_VFD_CONTROL_3_REGID_TESSY__SHIFT                  24
+static inline uint32_t A4XX_VFD_CONTROL_3_REGID_TESSY(uint32_t val)
+{
+       return ((val) << A4XX_VFD_CONTROL_3_REGID_TESSY__SHIFT) & A4XX_VFD_CONTROL_3_REGID_TESSY__MASK;
+}
 
 #define REG_A4XX_VFD_CONTROL_4                                 0x00002204
 
@@ -1422,12 +1955,7 @@ static inline uint32_t A4XX_VFD_FETCH_INSTR_0_BUFSTRIDE(uint32_t val)
        return ((val) << A4XX_VFD_FETCH_INSTR_0_BUFSTRIDE__SHIFT) & A4XX_VFD_FETCH_INSTR_0_BUFSTRIDE__MASK;
 }
 #define A4XX_VFD_FETCH_INSTR_0_SWITCHNEXT                      0x00080000
-#define A4XX_VFD_FETCH_INSTR_0_STEPRATE__MASK                  0xff000000
-#define A4XX_VFD_FETCH_INSTR_0_STEPRATE__SHIFT                 24
-static inline uint32_t A4XX_VFD_FETCH_INSTR_0_STEPRATE(uint32_t val)
-{
-       return ((val) << A4XX_VFD_FETCH_INSTR_0_STEPRATE__SHIFT) & A4XX_VFD_FETCH_INSTR_0_STEPRATE__MASK;
-}
+#define A4XX_VFD_FETCH_INSTR_0_INSTANCED                       0x00100000
 
 static inline uint32_t REG_A4XX_VFD_FETCH_INSTR_1(uint32_t i0) { return 0x0000220b + 0x4*i0; }
 
@@ -1440,6 +1968,12 @@ static inline uint32_t A4XX_VFD_FETCH_INSTR_2_SIZE(uint32_t val)
 }
 
 static inline uint32_t REG_A4XX_VFD_FETCH_INSTR_3(uint32_t i0) { return 0x0000220d + 0x4*i0; }
+#define A4XX_VFD_FETCH_INSTR_3_STEPRATE__MASK                  0x000001ff
+#define A4XX_VFD_FETCH_INSTR_3_STEPRATE__SHIFT                 0
+static inline uint32_t A4XX_VFD_FETCH_INSTR_3_STEPRATE(uint32_t val)
+{
+       return ((val) << A4XX_VFD_FETCH_INSTR_3_STEPRATE__SHIFT) & A4XX_VFD_FETCH_INSTR_3_STEPRATE__MASK;
+}
 
 static inline uint32_t REG_A4XX_VFD_DECODE(uint32_t i0) { return 0x0000228a + 0x1*i0; }
 
@@ -1481,10 +2015,54 @@ static inline uint32_t A4XX_VFD_DECODE_INSTR_SHIFTCNT(uint32_t val)
 
 #define REG_A4XX_TPL1_DEBUG_ECO_CONTROL                                0x00000f00
 
+#define REG_A4XX_TPL1_TP_MODE_CONTROL                          0x00000f03
+
 #define REG_A4XX_TPL1_PERFCTR_TP_SEL_7                         0x00000f0b
 
 #define REG_A4XX_TPL1_TP_TEX_OFFSET                            0x00002380
 
+#define REG_A4XX_TPL1_TP_TEX_COUNT                             0x00002381
+#define A4XX_TPL1_TP_TEX_COUNT_VS__MASK                                0x000000ff
+#define A4XX_TPL1_TP_TEX_COUNT_VS__SHIFT                       0
+static inline uint32_t A4XX_TPL1_TP_TEX_COUNT_VS(uint32_t val)
+{
+       return ((val) << A4XX_TPL1_TP_TEX_COUNT_VS__SHIFT) & A4XX_TPL1_TP_TEX_COUNT_VS__MASK;
+}
+#define A4XX_TPL1_TP_TEX_COUNT_HS__MASK                                0x0000ff00
+#define A4XX_TPL1_TP_TEX_COUNT_HS__SHIFT                       8
+static inline uint32_t A4XX_TPL1_TP_TEX_COUNT_HS(uint32_t val)
+{
+       return ((val) << A4XX_TPL1_TP_TEX_COUNT_HS__SHIFT) & A4XX_TPL1_TP_TEX_COUNT_HS__MASK;
+}
+#define A4XX_TPL1_TP_TEX_COUNT_DS__MASK                                0x00ff0000
+#define A4XX_TPL1_TP_TEX_COUNT_DS__SHIFT                       16
+static inline uint32_t A4XX_TPL1_TP_TEX_COUNT_DS(uint32_t val)
+{
+       return ((val) << A4XX_TPL1_TP_TEX_COUNT_DS__SHIFT) & A4XX_TPL1_TP_TEX_COUNT_DS__MASK;
+}
+#define A4XX_TPL1_TP_TEX_COUNT_GS__MASK                                0xff000000
+#define A4XX_TPL1_TP_TEX_COUNT_GS__SHIFT                       24
+static inline uint32_t A4XX_TPL1_TP_TEX_COUNT_GS(uint32_t val)
+{
+       return ((val) << A4XX_TPL1_TP_TEX_COUNT_GS__SHIFT) & A4XX_TPL1_TP_TEX_COUNT_GS__MASK;
+}
+
+#define REG_A4XX_TPL1_TP_VS_BORDER_COLOR_BASE_ADDR             0x00002384
+
+#define REG_A4XX_TPL1_TP_HS_BORDER_COLOR_BASE_ADDR             0x00002387
+
+#define REG_A4XX_TPL1_TP_DS_BORDER_COLOR_BASE_ADDR             0x0000238a
+
+#define REG_A4XX_TPL1_TP_GS_BORDER_COLOR_BASE_ADDR             0x0000238d
+
+#define REG_A4XX_TPL1_TP_FS_TEX_COUNT                          0x000023a0
+
+#define REG_A4XX_TPL1_TP_FS_BORDER_COLOR_BASE_ADDR             0x000023a1
+
+#define REG_A4XX_TPL1_TP_CS_BORDER_COLOR_BASE_ADDR             0x000023a4
+
+#define REG_A4XX_TPL1_TP_CS_SAMPLER_BASE_ADDR                  0x000023a5
+
 #define REG_A4XX_TPL1_TP_CS_TEXMEMOBJ_BASE_ADDR                        0x000023a6
 
 #define REG_A4XX_GRAS_TSE_STATUS                               0x00000c80
@@ -1496,6 +2074,8 @@ static inline uint32_t A4XX_VFD_DECODE_INSTR_SHIFTCNT(uint32_t val)
 #define REG_A4XX_GRAS_PERFCTR_TSE_SEL_3                                0x00000c8b
 
 #define REG_A4XX_GRAS_CL_CLIP_CNTL                             0x00002000
+#define A4XX_GRAS_CL_CLIP_CNTL_CLIP_DISABLE                    0x00008000
+#define A4XX_GRAS_CL_CLIP_CNTL_ZERO_GB_SCALE_Z                 0x00400000
 
 #define REG_A4XX_GRAS_CLEAR_CNTL                               0x00002003
 #define A4XX_GRAS_CLEAR_CNTL_NOT_FASTCLEAR                     0x00000001
@@ -1603,7 +2183,55 @@ static inline uint32_t A4XX_GRAS_SU_POLY_OFFSET_OFFSET(float val)
        return ((fui(val)) << A4XX_GRAS_SU_POLY_OFFSET_OFFSET__SHIFT) & A4XX_GRAS_SU_POLY_OFFSET_OFFSET__MASK;
 }
 
-#define REG_A4XX_GRAS_SC_EXTENT_WINDOW_TL                      0x0000209f
+#define REG_A4XX_GRAS_SU_POLY_OFFSET_CLAMP                     0x00002076
+#define A4XX_GRAS_SU_POLY_OFFSET_CLAMP__MASK                   0xffffffff
+#define A4XX_GRAS_SU_POLY_OFFSET_CLAMP__SHIFT                  0
+static inline uint32_t A4XX_GRAS_SU_POLY_OFFSET_CLAMP(float val)
+{
+       return ((fui(val)) << A4XX_GRAS_SU_POLY_OFFSET_CLAMP__SHIFT) & A4XX_GRAS_SU_POLY_OFFSET_CLAMP__MASK;
+}
+
+#define REG_A4XX_GRAS_DEPTH_CONTROL                            0x00002077
+#define A4XX_GRAS_DEPTH_CONTROL_FORMAT__MASK                   0x00000003
+#define A4XX_GRAS_DEPTH_CONTROL_FORMAT__SHIFT                  0
+static inline uint32_t A4XX_GRAS_DEPTH_CONTROL_FORMAT(enum a4xx_depth_format val)
+{
+       return ((val) << A4XX_GRAS_DEPTH_CONTROL_FORMAT__SHIFT) & A4XX_GRAS_DEPTH_CONTROL_FORMAT__MASK;
+}
+
+#define REG_A4XX_GRAS_SU_MODE_CONTROL                          0x00002078
+#define A4XX_GRAS_SU_MODE_CONTROL_CULL_FRONT                   0x00000001
+#define A4XX_GRAS_SU_MODE_CONTROL_CULL_BACK                    0x00000002
+#define A4XX_GRAS_SU_MODE_CONTROL_FRONT_CW                     0x00000004
+#define A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH__MASK          0x000007f8
+#define A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH__SHIFT         3
+static inline uint32_t A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH(float val)
+{
+       return ((((int32_t)(val * 4.0))) << A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH__SHIFT) & A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH__MASK;
+}
+#define A4XX_GRAS_SU_MODE_CONTROL_POLY_OFFSET                  0x00000800
+#define A4XX_GRAS_SU_MODE_CONTROL_RENDERING_PASS               0x00100000
+
+#define REG_A4XX_GRAS_SC_CONTROL                               0x0000207b
+#define A4XX_GRAS_SC_CONTROL_RENDER_MODE__MASK                 0x0000000c
+#define A4XX_GRAS_SC_CONTROL_RENDER_MODE__SHIFT                        2
+static inline uint32_t A4XX_GRAS_SC_CONTROL_RENDER_MODE(enum a3xx_render_mode val)
+{
+       return ((val) << A4XX_GRAS_SC_CONTROL_RENDER_MODE__SHIFT) & A4XX_GRAS_SC_CONTROL_RENDER_MODE__MASK;
+}
+#define A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES__MASK                        0x00000380
+#define A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES__SHIFT               7
+static inline uint32_t A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES(uint32_t val)
+{
+       return ((val) << A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES__SHIFT) & A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES__MASK;
+}
+#define A4XX_GRAS_SC_CONTROL_MSAA_DISABLE                      0x00000800
+#define A4XX_GRAS_SC_CONTROL_RASTER_MODE__MASK                 0x0000f000
+#define A4XX_GRAS_SC_CONTROL_RASTER_MODE__SHIFT                        12
+static inline uint32_t A4XX_GRAS_SC_CONTROL_RASTER_MODE(uint32_t val)
+{
+       return ((val) << A4XX_GRAS_SC_CONTROL_RASTER_MODE__SHIFT) & A4XX_GRAS_SC_CONTROL_RASTER_MODE__MASK;
+}
 
 #define REG_A4XX_GRAS_SC_SCREEN_SCISSOR_TL                     0x0000207c
 #define A4XX_GRAS_SC_SCREEN_SCISSOR_TL_WINDOW_OFFSET_DISABLE   0x80000000
@@ -1665,46 +2293,34 @@ static inline uint32_t A4XX_GRAS_SC_WINDOW_SCISSOR_TL_Y(uint32_t val)
        return ((val) << A4XX_GRAS_SC_WINDOW_SCISSOR_TL_Y__SHIFT) & A4XX_GRAS_SC_WINDOW_SCISSOR_TL_Y__MASK;
 }
 
-#define REG_A4XX_GRAS_DEPTH_CONTROL                            0x00002077
-#define A4XX_GRAS_DEPTH_CONTROL_FORMAT__MASK                   0x00000003
-#define A4XX_GRAS_DEPTH_CONTROL_FORMAT__SHIFT                  0
-static inline uint32_t A4XX_GRAS_DEPTH_CONTROL_FORMAT(enum a4xx_depth_format val)
+#define REG_A4XX_GRAS_SC_EXTENT_WINDOW_BR                      0x0000209e
+#define A4XX_GRAS_SC_EXTENT_WINDOW_BR_WINDOW_OFFSET_DISABLE    0x80000000
+#define A4XX_GRAS_SC_EXTENT_WINDOW_BR_X__MASK                  0x00007fff
+#define A4XX_GRAS_SC_EXTENT_WINDOW_BR_X__SHIFT                 0
+static inline uint32_t A4XX_GRAS_SC_EXTENT_WINDOW_BR_X(uint32_t val)
 {
-       return ((val) << A4XX_GRAS_DEPTH_CONTROL_FORMAT__SHIFT) & A4XX_GRAS_DEPTH_CONTROL_FORMAT__MASK;
+       return ((val) << A4XX_GRAS_SC_EXTENT_WINDOW_BR_X__SHIFT) & A4XX_GRAS_SC_EXTENT_WINDOW_BR_X__MASK;
 }
-
-#define REG_A4XX_GRAS_SU_MODE_CONTROL                          0x00002078
-#define A4XX_GRAS_SU_MODE_CONTROL_CULL_FRONT                   0x00000001
-#define A4XX_GRAS_SU_MODE_CONTROL_CULL_BACK                    0x00000002
-#define A4XX_GRAS_SU_MODE_CONTROL_FRONT_CW                     0x00000004
-#define A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH__MASK          0x000007f8
-#define A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH__SHIFT         3
-static inline uint32_t A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH(float val)
+#define A4XX_GRAS_SC_EXTENT_WINDOW_BR_Y__MASK                  0x7fff0000
+#define A4XX_GRAS_SC_EXTENT_WINDOW_BR_Y__SHIFT                 16
+static inline uint32_t A4XX_GRAS_SC_EXTENT_WINDOW_BR_Y(uint32_t val)
 {
-       return ((((int32_t)(val * 4.0))) << A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH__SHIFT) & A4XX_GRAS_SU_MODE_CONTROL_LINEHALFWIDTH__MASK;
+       return ((val) << A4XX_GRAS_SC_EXTENT_WINDOW_BR_Y__SHIFT) & A4XX_GRAS_SC_EXTENT_WINDOW_BR_Y__MASK;
 }
-#define A4XX_GRAS_SU_MODE_CONTROL_POLY_OFFSET                  0x00000800
-#define A4XX_GRAS_SU_MODE_CONTROL_RENDERING_PASS               0x00100000
 
-#define REG_A4XX_GRAS_SC_CONTROL                               0x0000207b
-#define A4XX_GRAS_SC_CONTROL_RENDER_MODE__MASK                 0x0000000c
-#define A4XX_GRAS_SC_CONTROL_RENDER_MODE__SHIFT                        2
-static inline uint32_t A4XX_GRAS_SC_CONTROL_RENDER_MODE(enum a3xx_render_mode val)
-{
-       return ((val) << A4XX_GRAS_SC_CONTROL_RENDER_MODE__SHIFT) & A4XX_GRAS_SC_CONTROL_RENDER_MODE__MASK;
-}
-#define A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES__MASK                        0x00000380
-#define A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES__SHIFT               7
-static inline uint32_t A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES(uint32_t val)
+#define REG_A4XX_GRAS_SC_EXTENT_WINDOW_TL                      0x0000209f
+#define A4XX_GRAS_SC_EXTENT_WINDOW_TL_WINDOW_OFFSET_DISABLE    0x80000000
+#define A4XX_GRAS_SC_EXTENT_WINDOW_TL_X__MASK                  0x00007fff
+#define A4XX_GRAS_SC_EXTENT_WINDOW_TL_X__SHIFT                 0
+static inline uint32_t A4XX_GRAS_SC_EXTENT_WINDOW_TL_X(uint32_t val)
 {
-       return ((val) << A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES__SHIFT) & A4XX_GRAS_SC_CONTROL_MSAA_SAMPLES__MASK;
+       return ((val) << A4XX_GRAS_SC_EXTENT_WINDOW_TL_X__SHIFT) & A4XX_GRAS_SC_EXTENT_WINDOW_TL_X__MASK;
 }
-#define A4XX_GRAS_SC_CONTROL_MSAA_DISABLE                      0x00000800
-#define A4XX_GRAS_SC_CONTROL_RASTER_MODE__MASK                 0x0000f000
-#define A4XX_GRAS_SC_CONTROL_RASTER_MODE__SHIFT                        12
-static inline uint32_t A4XX_GRAS_SC_CONTROL_RASTER_MODE(uint32_t val)
+#define A4XX_GRAS_SC_EXTENT_WINDOW_TL_Y__MASK                  0x7fff0000
+#define A4XX_GRAS_SC_EXTENT_WINDOW_TL_Y__SHIFT                 16
+static inline uint32_t A4XX_GRAS_SC_EXTENT_WINDOW_TL_Y(uint32_t val)
 {
-       return ((val) << A4XX_GRAS_SC_CONTROL_RASTER_MODE__SHIFT) & A4XX_GRAS_SC_CONTROL_RASTER_MODE__MASK;
+       return ((val) << A4XX_GRAS_SC_EXTENT_WINDOW_TL_Y__SHIFT) & A4XX_GRAS_SC_EXTENT_WINDOW_TL_Y__MASK;
 }
 
 #define REG_A4XX_UCHE_CACHE_MODE_CONTROL                       0x00000e80
@@ -1727,6 +2343,8 @@ static inline uint32_t A4XX_GRAS_SC_CONTROL_RASTER_MODE(uint32_t val)
 
 #define REG_A4XX_HLSQ_DEBUG_ECO_CONTROL                                0x00000e04
 
+#define REG_A4XX_HLSQ_MODE_CONTROL                             0x00000e05
+
 #define REG_A4XX_HLSQ_PERF_PIPE_MASK                           0x00000e0e
 
 #define REG_A4XX_HLSQ_CONTROL_0_REG                            0x000023c0
@@ -1766,7 +2384,12 @@ static inline uint32_t A4XX_HLSQ_CONTROL_1_REG_COORDREGID(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_CONTROL_1_REG_COORDREGID__SHIFT) & A4XX_HLSQ_CONTROL_1_REG_COORDREGID__MASK;
 }
-#define A4XX_HLSQ_CONTROL_1_REG_ZWCOORD                                0x02000000
+#define A4XX_HLSQ_CONTROL_1_REG_ZWCOORDREGID__MASK             0xff000000
+#define A4XX_HLSQ_CONTROL_1_REG_ZWCOORDREGID__SHIFT            24
+static inline uint32_t A4XX_HLSQ_CONTROL_1_REG_ZWCOORDREGID(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CONTROL_1_REG_ZWCOORDREGID__SHIFT) & A4XX_HLSQ_CONTROL_1_REG_ZWCOORDREGID__MASK;
+}
 
 #define REG_A4XX_HLSQ_CONTROL_2_REG                            0x000023c2
 #define A4XX_HLSQ_CONTROL_2_REG_PRIMALLOCTHRESHOLD__MASK       0xfc000000
@@ -1781,6 +2404,18 @@ static inline uint32_t A4XX_HLSQ_CONTROL_2_REG_FACEREGID(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_CONTROL_2_REG_FACEREGID__SHIFT) & A4XX_HLSQ_CONTROL_2_REG_FACEREGID__MASK;
 }
+#define A4XX_HLSQ_CONTROL_2_REG_SAMPLEID_REGID__MASK           0x0003fc00
+#define A4XX_HLSQ_CONTROL_2_REG_SAMPLEID_REGID__SHIFT          10
+static inline uint32_t A4XX_HLSQ_CONTROL_2_REG_SAMPLEID_REGID(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CONTROL_2_REG_SAMPLEID_REGID__SHIFT) & A4XX_HLSQ_CONTROL_2_REG_SAMPLEID_REGID__MASK;
+}
+#define A4XX_HLSQ_CONTROL_2_REG_SAMPLEMASK_REGID__MASK         0x03fc0000
+#define A4XX_HLSQ_CONTROL_2_REG_SAMPLEMASK_REGID__SHIFT                18
+static inline uint32_t A4XX_HLSQ_CONTROL_2_REG_SAMPLEMASK_REGID(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CONTROL_2_REG_SAMPLEMASK_REGID__SHIFT) & A4XX_HLSQ_CONTROL_2_REG_SAMPLEMASK_REGID__MASK;
+}
 
 #define REG_A4XX_HLSQ_CONTROL_3_REG                            0x000023c3
 #define A4XX_HLSQ_CONTROL_3_REG_REGID__MASK                    0x000000ff
@@ -1790,6 +2425,8 @@ static inline uint32_t A4XX_HLSQ_CONTROL_3_REG_REGID(uint32_t val)
        return ((val) << A4XX_HLSQ_CONTROL_3_REG_REGID__SHIFT) & A4XX_HLSQ_CONTROL_3_REG_REGID__MASK;
 }
 
+#define REG_A4XX_HLSQ_CONTROL_4_REG                            0x000023c4
+
 #define REG_A4XX_HLSQ_VS_CONTROL_REG                           0x000023c5
 #define A4XX_HLSQ_VS_CONTROL_REG_CONSTLENGTH__MASK             0x000000ff
 #define A4XX_HLSQ_VS_CONTROL_REG_CONSTLENGTH__SHIFT            0
@@ -1803,6 +2440,7 @@ static inline uint32_t A4XX_HLSQ_VS_CONTROL_REG_CONSTOBJECTOFFSET(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_VS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT) & A4XX_HLSQ_VS_CONTROL_REG_CONSTOBJECTOFFSET__MASK;
 }
+#define A4XX_HLSQ_VS_CONTROL_REG_ENABLED                       0x00010000
 #define A4XX_HLSQ_VS_CONTROL_REG_SHADEROBJOFFSET__MASK         0x00fe0000
 #define A4XX_HLSQ_VS_CONTROL_REG_SHADEROBJOFFSET__SHIFT                17
 static inline uint32_t A4XX_HLSQ_VS_CONTROL_REG_SHADEROBJOFFSET(uint32_t val)
@@ -1829,6 +2467,7 @@ static inline uint32_t A4XX_HLSQ_FS_CONTROL_REG_CONSTOBJECTOFFSET(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_FS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT) & A4XX_HLSQ_FS_CONTROL_REG_CONSTOBJECTOFFSET__MASK;
 }
+#define A4XX_HLSQ_FS_CONTROL_REG_ENABLED                       0x00010000
 #define A4XX_HLSQ_FS_CONTROL_REG_SHADEROBJOFFSET__MASK         0x00fe0000
 #define A4XX_HLSQ_FS_CONTROL_REG_SHADEROBJOFFSET__SHIFT                17
 static inline uint32_t A4XX_HLSQ_FS_CONTROL_REG_SHADEROBJOFFSET(uint32_t val)
@@ -1855,6 +2494,7 @@ static inline uint32_t A4XX_HLSQ_HS_CONTROL_REG_CONSTOBJECTOFFSET(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_HS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT) & A4XX_HLSQ_HS_CONTROL_REG_CONSTOBJECTOFFSET__MASK;
 }
+#define A4XX_HLSQ_HS_CONTROL_REG_ENABLED                       0x00010000
 #define A4XX_HLSQ_HS_CONTROL_REG_SHADEROBJOFFSET__MASK         0x00fe0000
 #define A4XX_HLSQ_HS_CONTROL_REG_SHADEROBJOFFSET__SHIFT                17
 static inline uint32_t A4XX_HLSQ_HS_CONTROL_REG_SHADEROBJOFFSET(uint32_t val)
@@ -1881,6 +2521,7 @@ static inline uint32_t A4XX_HLSQ_DS_CONTROL_REG_CONSTOBJECTOFFSET(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_DS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT) & A4XX_HLSQ_DS_CONTROL_REG_CONSTOBJECTOFFSET__MASK;
 }
+#define A4XX_HLSQ_DS_CONTROL_REG_ENABLED                       0x00010000
 #define A4XX_HLSQ_DS_CONTROL_REG_SHADEROBJOFFSET__MASK         0x00fe0000
 #define A4XX_HLSQ_DS_CONTROL_REG_SHADEROBJOFFSET__SHIFT                17
 static inline uint32_t A4XX_HLSQ_DS_CONTROL_REG_SHADEROBJOFFSET(uint32_t val)
@@ -1907,6 +2548,7 @@ static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_CONSTOBJECTOFFSET(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_GS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT) & A4XX_HLSQ_GS_CONTROL_REG_CONSTOBJECTOFFSET__MASK;
 }
+#define A4XX_HLSQ_GS_CONTROL_REG_ENABLED                       0x00010000
 #define A4XX_HLSQ_GS_CONTROL_REG_SHADEROBJOFFSET__MASK         0x00fe0000
 #define A4XX_HLSQ_GS_CONTROL_REG_SHADEROBJOFFSET__SHIFT                17
 static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_SHADEROBJOFFSET(uint32_t val)
@@ -1920,6 +2562,36 @@ static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_INSTRLENGTH(uint32_t val)
        return ((val) << A4XX_HLSQ_GS_CONTROL_REG_INSTRLENGTH__SHIFT) & A4XX_HLSQ_GS_CONTROL_REG_INSTRLENGTH__MASK;
 }
 
+#define REG_A4XX_HLSQ_CS_CONTROL                               0x000023ca
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_0                             0x000023cd
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_1                             0x000023ce
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_2                             0x000023cf
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_3                             0x000023d0
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_4                             0x000023d1
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_5                             0x000023d2
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_6                             0x000023d3
+
+#define REG_A4XX_HLSQ_CL_CONTROL_0                             0x000023d4
+
+#define REG_A4XX_HLSQ_CL_CONTROL_1                             0x000023d5
+
+#define REG_A4XX_HLSQ_CL_KERNEL_CONST                          0x000023d6
+
+#define REG_A4XX_HLSQ_CL_KERNEL_GROUP_X                                0x000023d7
+
+#define REG_A4XX_HLSQ_CL_KERNEL_GROUP_Y                                0x000023d8
+
+#define REG_A4XX_HLSQ_CL_KERNEL_GROUP_Z                                0x000023d9
+
+#define REG_A4XX_HLSQ_CL_WG_OFFSET                             0x000023da
+
 #define REG_A4XX_HLSQ_UPDATE_CONTROL                           0x000023db
 
 #define REG_A4XX_PC_BINNING_COMMAND                            0x00000d00
@@ -1934,7 +2606,13 @@ static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_INSTRLENGTH(uint32_t val)
 #define REG_A4XX_PC_BIN_BASE                                   0x000021c0
 
 #define REG_A4XX_PC_PRIM_VTX_CNTL                              0x000021c4
-#define A4XX_PC_PRIM_VTX_CNTL_VAROUT                           0x00000001
+#define A4XX_PC_PRIM_VTX_CNTL_VAROUT__MASK                     0x0000000f
+#define A4XX_PC_PRIM_VTX_CNTL_VAROUT__SHIFT                    0
+static inline uint32_t A4XX_PC_PRIM_VTX_CNTL_VAROUT(uint32_t val)
+{
+       return ((val) << A4XX_PC_PRIM_VTX_CNTL_VAROUT__SHIFT) & A4XX_PC_PRIM_VTX_CNTL_VAROUT__MASK;
+}
+#define A4XX_PC_PRIM_VTX_CNTL_PRIMITIVE_RESTART                        0x00100000
 #define A4XX_PC_PRIM_VTX_CNTL_PROVOKING_VTX_LAST               0x02000000
 #define A4XX_PC_PRIM_VTX_CNTL_PSIZE                            0x04000000
 
@@ -1943,8 +2621,45 @@ static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_INSTRLENGTH(uint32_t val)
 #define REG_A4XX_PC_RESTART_INDEX                              0x000021c6
 
 #define REG_A4XX_PC_GS_PARAM                                   0x000021e5
+#define A4XX_PC_GS_PARAM_MAX_VERTICES__MASK                    0x000003ff
+#define A4XX_PC_GS_PARAM_MAX_VERTICES__SHIFT                   0
+static inline uint32_t A4XX_PC_GS_PARAM_MAX_VERTICES(uint32_t val)
+{
+       return ((val) << A4XX_PC_GS_PARAM_MAX_VERTICES__SHIFT) & A4XX_PC_GS_PARAM_MAX_VERTICES__MASK;
+}
+#define A4XX_PC_GS_PARAM_INVOCATIONS__MASK                     0x0000f800
+#define A4XX_PC_GS_PARAM_INVOCATIONS__SHIFT                    11
+static inline uint32_t A4XX_PC_GS_PARAM_INVOCATIONS(uint32_t val)
+{
+       return ((val) << A4XX_PC_GS_PARAM_INVOCATIONS__SHIFT) & A4XX_PC_GS_PARAM_INVOCATIONS__MASK;
+}
+#define A4XX_PC_GS_PARAM_PRIMTYPE__MASK                                0x01800000
+#define A4XX_PC_GS_PARAM_PRIMTYPE__SHIFT                       23
+static inline uint32_t A4XX_PC_GS_PARAM_PRIMTYPE(enum adreno_pa_su_sc_draw val)
+{
+       return ((val) << A4XX_PC_GS_PARAM_PRIMTYPE__SHIFT) & A4XX_PC_GS_PARAM_PRIMTYPE__MASK;
+}
+#define A4XX_PC_GS_PARAM_LAYER                                 0x80000000
 
 #define REG_A4XX_PC_HS_PARAM                                   0x000021e7
+#define A4XX_PC_HS_PARAM_VERTICES_OUT__MASK                    0x0000003f
+#define A4XX_PC_HS_PARAM_VERTICES_OUT__SHIFT                   0
+static inline uint32_t A4XX_PC_HS_PARAM_VERTICES_OUT(uint32_t val)
+{
+       return ((val) << A4XX_PC_HS_PARAM_VERTICES_OUT__SHIFT) & A4XX_PC_HS_PARAM_VERTICES_OUT__MASK;
+}
+#define A4XX_PC_HS_PARAM_SPACING__MASK                         0x00600000
+#define A4XX_PC_HS_PARAM_SPACING__SHIFT                                21
+static inline uint32_t A4XX_PC_HS_PARAM_SPACING(enum a4xx_tess_spacing val)
+{
+       return ((val) << A4XX_PC_HS_PARAM_SPACING__SHIFT) & A4XX_PC_HS_PARAM_SPACING__MASK;
+}
+#define A4XX_PC_HS_PARAM_PRIMTYPE__MASK                                0x01800000
+#define A4XX_PC_HS_PARAM_PRIMTYPE__SHIFT                       23
+static inline uint32_t A4XX_PC_HS_PARAM_PRIMTYPE(enum adreno_pa_su_sc_draw val)
+{
+       return ((val) << A4XX_PC_HS_PARAM_PRIMTYPE__SHIFT) & A4XX_PC_HS_PARAM_PRIMTYPE__MASK;
+}
 
 #define REG_A4XX_VBIF_VERSION                                  0x00003000
 
@@ -1973,38 +2688,16 @@ static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_INSTRLENGTH(uint32_t val)
 
 #define REG_A4XX_UNKNOWN_0D01                                  0x00000d01
 
-#define REG_A4XX_UNKNOWN_0E05                                  0x00000e05
-
 #define REG_A4XX_UNKNOWN_0E42                                  0x00000e42
 
 #define REG_A4XX_UNKNOWN_0EC2                                  0x00000ec2
 
-#define REG_A4XX_UNKNOWN_0EC3                                  0x00000ec3
-
-#define REG_A4XX_UNKNOWN_0F03                                  0x00000f03
-
 #define REG_A4XX_UNKNOWN_2001                                  0x00002001
 
 #define REG_A4XX_UNKNOWN_209B                                  0x0000209b
 
 #define REG_A4XX_UNKNOWN_20EF                                  0x000020ef
 
-#define REG_A4XX_UNKNOWN_20F0                                  0x000020f0
-
-#define REG_A4XX_UNKNOWN_20F1                                  0x000020f1
-
-#define REG_A4XX_UNKNOWN_20F2                                  0x000020f2
-
-#define REG_A4XX_UNKNOWN_20F3                                  0x000020f3
-
-#define REG_A4XX_UNKNOWN_20F4                                  0x000020f4
-
-#define REG_A4XX_UNKNOWN_20F5                                  0x000020f5
-
-#define REG_A4XX_UNKNOWN_20F6                                  0x000020f6
-
-#define REG_A4XX_UNKNOWN_20F7                                  0x000020f7
-
 #define REG_A4XX_UNKNOWN_2152                                  0x00002152
 
 #define REG_A4XX_UNKNOWN_2153                                  0x00002153
@@ -2025,9 +2718,7 @@ static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_INSTRLENGTH(uint32_t val)
 
 #define REG_A4XX_UNKNOWN_22D7                                  0x000022d7
 
-#define REG_A4XX_UNKNOWN_2381                                  0x00002381
-
-#define REG_A4XX_UNKNOWN_23A0                                  0x000023a0
+#define REG_A4XX_UNKNOWN_2352                                  0x00002352
 
 #define REG_A4XX_TEX_SAMP_0                                    0x00000000
 #define A4XX_TEX_SAMP_0_MIPFILTER_LINEAR_NEAR                  0x00000001
@@ -2061,6 +2752,18 @@ static inline uint32_t A4XX_TEX_SAMP_0_WRAP_R(enum a4xx_tex_clamp val)
 {
        return ((val) << A4XX_TEX_SAMP_0_WRAP_R__SHIFT) & A4XX_TEX_SAMP_0_WRAP_R__MASK;
 }
+#define A4XX_TEX_SAMP_0_ANISO__MASK                            0x0001c000
+#define A4XX_TEX_SAMP_0_ANISO__SHIFT                           14
+static inline uint32_t A4XX_TEX_SAMP_0_ANISO(enum a4xx_tex_aniso val)
+{
+       return ((val) << A4XX_TEX_SAMP_0_ANISO__SHIFT) & A4XX_TEX_SAMP_0_ANISO__MASK;
+}
+#define A4XX_TEX_SAMP_0_LOD_BIAS__MASK                         0xfff80000
+#define A4XX_TEX_SAMP_0_LOD_BIAS__SHIFT                                19
+static inline uint32_t A4XX_TEX_SAMP_0_LOD_BIAS(float val)
+{
+       return ((((int32_t)(val * 256.0))) << A4XX_TEX_SAMP_0_LOD_BIAS__SHIFT) & A4XX_TEX_SAMP_0_LOD_BIAS__MASK;
+}
 
 #define REG_A4XX_TEX_SAMP_1                                    0x00000001
 #define A4XX_TEX_SAMP_1_COMPARE_FUNC__MASK                     0x0000000e
@@ -2069,6 +2772,7 @@ static inline uint32_t A4XX_TEX_SAMP_1_COMPARE_FUNC(enum adreno_compare_func val
 {
        return ((val) << A4XX_TEX_SAMP_1_COMPARE_FUNC__SHIFT) & A4XX_TEX_SAMP_1_COMPARE_FUNC__MASK;
 }
+#define A4XX_TEX_SAMP_1_CUBEMAPSEAMLESSFILTOFF                 0x00000010
 #define A4XX_TEX_SAMP_1_UNNORM_COORDS                          0x00000020
 #define A4XX_TEX_SAMP_1_MIPFILTER_LINEAR_FAR                   0x00000040
 #define A4XX_TEX_SAMP_1_MAX_LOD__MASK                          0x000fff00
@@ -2086,6 +2790,7 @@ static inline uint32_t A4XX_TEX_SAMP_1_MIN_LOD(float val)
 
 #define REG_A4XX_TEX_CONST_0                                   0x00000000
 #define A4XX_TEX_CONST_0_TILED                                 0x00000001
+#define A4XX_TEX_CONST_0_SRGB                                  0x00000004
 #define A4XX_TEX_CONST_0_SWIZ_X__MASK                          0x00000070
 #define A4XX_TEX_CONST_0_SWIZ_X__SHIFT                         4
 static inline uint32_t A4XX_TEX_CONST_0_SWIZ_X(enum a4xx_tex_swiz val)