freedreno/a6xx: Move stencil/depth/alpha state to IB
[mesa.git] / src / gallium / drivers / freedreno / a4xx / a4xx.xml.h
index f934f3de3ad1c30a1402b8a79656270ebdb413b4..b909c1fadc43f0d3a94ff989eeba4a7222653a44 100644 (file)
@@ -8,16 +8,21 @@ 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    (  15053 bytes, from 2014-11-09 15:45:47)
-- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml          (  63601 bytes, from 2014-11-30 15:38:05)
-- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml          (  49147 bytes, from 2014-11-30 15:38:05)
-
-Copyright (C) 2013-2014 by the following authors:
+- /home/robclark/src/envytools/rnndb/adreno.xml               (    501 bytes, from 2018-07-03 19:37:13)
+- /home/robclark/src/envytools/rnndb/freedreno_copyright.xml  (   1572 bytes, from 2018-07-03 19:37:13)
+- /home/robclark/src/envytools/rnndb/adreno/a2xx.xml          (  37936 bytes, from 2018-10-08 11:43:51)
+- /home/robclark/src/envytools/rnndb/adreno/adreno_common.xml (  14201 bytes, from 2018-10-08 11:43:51)
+- /home/robclark/src/envytools/rnndb/adreno/adreno_pm4.xml    (  42864 bytes, from 2018-10-08 21:57:22)
+- /home/robclark/src/envytools/rnndb/adreno/a3xx.xml          (  83840 bytes, from 2018-07-03 19:37:13)
+- /home/robclark/src/envytools/rnndb/adreno/a4xx.xml          ( 112086 bytes, from 2018-07-03 19:37:13)
+- /home/robclark/src/envytools/rnndb/adreno/a5xx.xml          ( 147240 bytes, from 2018-10-08 21:57:22)
+- /home/robclark/src/envytools/rnndb/adreno/a6xx.xml          ( 140514 bytes, from 2018-10-08 21:57:35)
+- /home/robclark/src/envytools/rnndb/adreno/a6xx_gmu.xml      (  10431 bytes, from 2018-09-14 13:03:07)
+- /home/robclark/src/envytools/rnndb/adreno/ocmem.xml         (   1773 bytes, from 2018-07-03 19:37:13)
+
+Copyright (C) 2013-2018 by the following authors:
 - Rob Clark <robdclark@gmail.com> (robclark)
+- Ilia Mirkin <imirkin@alum.mit.edu> (imirkin)
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
@@ -43,111 +48,782 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 enum a4xx_color_fmt {
        RB4_A8_UNORM = 1,
-       RB4_R5G6R5_UNORM = 14,
-       RB4_Z16_UNORM = 15,
+       RB4_R8_UNORM = 2,
+       RB4_R8_SNORM = 3,
+       RB4_R8_UINT = 4,
+       RB4_R8_SINT = 5,
+       RB4_R4G4B4A4_UNORM = 8,
+       RB4_R5G5B5A1_UNORM = 10,
+       RB4_R5G6B5_UNORM = 14,
+       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 {
        TILE4_LINEAR = 0,
+       TILE4_2 = 2,
        TILE4_3 = 3,
 };
 
-enum a4xx_rb_blend_opcode {
-       BLEND_DST_PLUS_SRC = 0,
-       BLEND_SRC_MINUS_DST = 1,
-       BLEND_DST_MINUS_SRC = 2,
-       BLEND_MIN_DST_SRC = 3,
-       BLEND_MAX_DST_SRC = 4,
-};
-
 enum a4xx_vtx_fmt {
-       VFMT4_FLOAT_32 = 1,
-       VFMT4_FLOAT_32_32 = 2,
-       VFMT4_FLOAT_32_32_32 = 3,
-       VFMT4_FLOAT_32_32_32_32 = 4,
-       VFMT4_FLOAT_16 = 5,
-       VFMT4_FLOAT_16_16 = 6,
-       VFMT4_FLOAT_16_16_16 = 7,
-       VFMT4_FLOAT_16_16_16_16 = 8,
-       VFMT4_FIXED_32 = 9,
-       VFMT4_FIXED_32_32 = 10,
-       VFMT4_FIXED_32_32_32 = 11,
-       VFMT4_FIXED_32_32_32_32 = 12,
-       VFMT4_SHORT_16 = 16,
-       VFMT4_SHORT_16_16 = 17,
-       VFMT4_SHORT_16_16_16 = 18,
-       VFMT4_SHORT_16_16_16_16 = 19,
-       VFMT4_USHORT_16 = 20,
-       VFMT4_USHORT_16_16 = 21,
-       VFMT4_USHORT_16_16_16 = 22,
-       VFMT4_USHORT_16_16_16_16 = 23,
-       VFMT4_NORM_SHORT_16 = 24,
-       VFMT4_NORM_SHORT_16_16 = 25,
-       VFMT4_NORM_SHORT_16_16_16 = 26,
-       VFMT4_NORM_SHORT_16_16_16_16 = 27,
-       VFMT4_NORM_USHORT_16 = 28,
-       VFMT4_NORM_USHORT_16_16 = 29,
-       VFMT4_NORM_USHORT_16_16_16 = 30,
-       VFMT4_NORM_USHORT_16_16_16_16 = 31,
-       VFMT4_UBYTE_8 = 40,
-       VFMT4_UBYTE_8_8 = 41,
-       VFMT4_UBYTE_8_8_8 = 42,
-       VFMT4_UBYTE_8_8_8_8 = 43,
-       VFMT4_NORM_UBYTE_8 = 44,
-       VFMT4_NORM_UBYTE_8_8 = 45,
-       VFMT4_NORM_UBYTE_8_8_8 = 46,
-       VFMT4_NORM_UBYTE_8_8_8_8 = 47,
-       VFMT4_BYTE_8 = 48,
-       VFMT4_BYTE_8_8 = 49,
-       VFMT4_BYTE_8_8_8 = 50,
-       VFMT4_BYTE_8_8_8_8 = 51,
-       VFMT4_NORM_BYTE_8 = 52,
-       VFMT4_NORM_BYTE_8_8 = 53,
-       VFMT4_NORM_BYTE_8_8_8 = 54,
-       VFMT4_NORM_BYTE_8_8_8_8 = 55,
-       VFMT4_UINT_10_10_10_2 = 60,
-       VFMT4_NORM_UINT_10_10_10_2 = 61,
-       VFMT4_INT_10_10_10_2 = 62,
-       VFMT4_NORM_INT_10_10_10_2 = 63,
+       VFMT4_32_FLOAT = 1,
+       VFMT4_32_32_FLOAT = 2,
+       VFMT4_32_32_32_FLOAT = 3,
+       VFMT4_32_32_32_32_FLOAT = 4,
+       VFMT4_16_FLOAT = 5,
+       VFMT4_16_16_FLOAT = 6,
+       VFMT4_16_16_16_FLOAT = 7,
+       VFMT4_16_16_16_16_FLOAT = 8,
+       VFMT4_32_FIXED = 9,
+       VFMT4_32_32_FIXED = 10,
+       VFMT4_32_32_32_FIXED = 11,
+       VFMT4_32_32_32_32_FIXED = 12,
+       VFMT4_11_11_10_FLOAT = 13,
+       VFMT4_16_SINT = 16,
+       VFMT4_16_16_SINT = 17,
+       VFMT4_16_16_16_SINT = 18,
+       VFMT4_16_16_16_16_SINT = 19,
+       VFMT4_16_UINT = 20,
+       VFMT4_16_16_UINT = 21,
+       VFMT4_16_16_16_UINT = 22,
+       VFMT4_16_16_16_16_UINT = 23,
+       VFMT4_16_SNORM = 24,
+       VFMT4_16_16_SNORM = 25,
+       VFMT4_16_16_16_SNORM = 26,
+       VFMT4_16_16_16_16_SNORM = 27,
+       VFMT4_16_UNORM = 28,
+       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,
+       VFMT4_8_8_8_8_UINT = 43,
+       VFMT4_8_UNORM = 44,
+       VFMT4_8_8_UNORM = 45,
+       VFMT4_8_8_8_UNORM = 46,
+       VFMT4_8_8_8_8_UNORM = 47,
+       VFMT4_8_SINT = 48,
+       VFMT4_8_8_SINT = 49,
+       VFMT4_8_8_8_SINT = 50,
+       VFMT4_8_8_8_8_SINT = 51,
+       VFMT4_8_SNORM = 52,
+       VFMT4_8_8_SNORM = 53,
+       VFMT4_8_8_8_SNORM = 54,
+       VFMT4_8_8_8_8_SNORM = 55,
+       VFMT4_10_10_10_2_UINT = 56,
+       VFMT4_10_10_10_2_UNORM = 57,
+       VFMT4_10_10_10_2_SINT = 58,
+       VFMT4_10_10_10_2_SNORM = 59,
+       VFMT4_2_10_10_10_UINT = 60,
+       VFMT4_2_10_10_10_UNORM = 61,
+       VFMT4_2_10_10_10_SINT = 62,
+       VFMT4_2_10_10_10_SNORM = 63,
 };
 
 enum a4xx_tex_fmt {
-       TFMT4_NORM_USHORT_565 = 11,
-       TFMT4_NORM_USHORT_5551 = 10,
-       TFMT4_NORM_USHORT_4444 = 8,
-       TFMT4_NORM_UINT_X8Z24 = 71,
-       TFMT4_NORM_UINT_2_10_10_10 = 33,
-       TFMT4_NORM_UINT_A8 = 3,
-       TFMT4_NORM_UINT_L8_A8 = 13,
-       TFMT4_NORM_UINT_8 = 4,
-       TFMT4_NORM_UINT_8_8 = 14,
-       TFMT4_NORM_UINT_8_8_8_8 = 28,
-       TFMT4_FLOAT_16 = 20,
-       TFMT4_FLOAT_16_16 = 40,
-       TFMT4_FLOAT_16_16_16_16 = 53,
-       TFMT4_FLOAT_32 = 43,
-       TFMT4_FLOAT_32_32 = 56,
-       TFMT4_FLOAT_32_32_32_32 = 63,
+       TFMT4_A8_UNORM = 3,
+       TFMT4_8_UNORM = 4,
+       TFMT4_8_SNORM = 5,
+       TFMT4_8_UINT = 6,
+       TFMT4_8_SINT = 7,
+       TFMT4_4_4_4_4_UNORM = 8,
+       TFMT4_5_5_5_1_UNORM = 9,
+       TFMT4_5_6_5_UNORM = 11,
+       TFMT4_L8_A8_UNORM = 13,
+       TFMT4_8_8_UNORM = 14,
+       TFMT4_8_8_SNORM = 15,
+       TFMT4_8_8_UINT = 16,
+       TFMT4_8_8_SINT = 17,
+       TFMT4_16_UNORM = 18,
+       TFMT4_16_SNORM = 19,
+       TFMT4_16_FLOAT = 20,
+       TFMT4_16_UINT = 21,
+       TFMT4_16_SINT = 22,
+       TFMT4_8_8_8_8_UNORM = 28,
+       TFMT4_8_8_8_8_SNORM = 29,
+       TFMT4_8_8_8_8_UINT = 30,
+       TFMT4_8_8_8_8_SINT = 31,
+       TFMT4_9_9_9_E5_FLOAT = 32,
+       TFMT4_10_10_10_2_UNORM = 33,
+       TFMT4_10_10_10_2_UINT = 34,
+       TFMT4_11_11_10_FLOAT = 37,
+       TFMT4_16_16_UNORM = 38,
+       TFMT4_16_16_SNORM = 39,
+       TFMT4_16_16_FLOAT = 40,
+       TFMT4_16_16_UINT = 41,
+       TFMT4_16_16_SINT = 42,
+       TFMT4_32_FLOAT = 43,
+       TFMT4_32_UINT = 44,
+       TFMT4_32_SINT = 45,
+       TFMT4_16_16_16_16_UNORM = 51,
+       TFMT4_16_16_16_16_SNORM = 52,
+       TFMT4_16_16_16_16_FLOAT = 53,
+       TFMT4_16_16_16_16_UINT = 54,
+       TFMT4_16_16_16_16_SINT = 55,
+       TFMT4_32_32_FLOAT = 56,
+       TFMT4_32_32_UINT = 57,
+       TFMT4_32_32_SINT = 58,
+       TFMT4_32_32_32_FLOAT = 59,
+       TFMT4_32_32_32_UINT = 60,
+       TFMT4_32_32_32_SINT = 61,
+       TFMT4_32_32_32_32_FLOAT = 63,
+       TFMT4_32_32_32_32_UINT = 64,
+       TFMT4_32_32_32_32_SINT = 65,
+       TFMT4_X8Z24_UNORM = 71,
+       TFMT4_DXT1 = 86,
+       TFMT4_DXT3 = 87,
+       TFMT4_DXT5 = 88,
+       TFMT4_RGTC1_UNORM = 90,
+       TFMT4_RGTC1_SNORM = 91,
+       TFMT4_RGTC2_UNORM = 94,
+       TFMT4_RGTC2_SNORM = 95,
+       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 {
+       TFETCH4_1_BYTE = 0,
+       TFETCH4_2_BYTE = 1,
+       TFETCH4_4_BYTE = 2,
+       TFETCH4_8_BYTE = 3,
+       TFETCH4_16_BYTE = 4,
 };
 
 enum a4xx_depth_format {
        DEPTH4_NONE = 0,
        DEPTH4_16 = 1,
        DEPTH4_24_8 = 2,
+       DEPTH4_32 = 3,
+};
+
+enum a4xx_ccu_perfcounter_select {
+       CCU_BUSY_CYCLES = 0,
+       CCU_RB_DEPTH_RETURN_STALL = 2,
+       CCU_RB_COLOR_RETURN_STALL = 3,
+       CCU_DEPTH_BLOCKS = 6,
+       CCU_COLOR_BLOCKS = 7,
+       CCU_DEPTH_BLOCK_HIT = 8,
+       CCU_COLOR_BLOCK_HIT = 9,
+       CCU_DEPTH_FLAG1_COUNT = 10,
+       CCU_DEPTH_FLAG2_COUNT = 11,
+       CCU_DEPTH_FLAG3_COUNT = 12,
+       CCU_DEPTH_FLAG4_COUNT = 13,
+       CCU_COLOR_FLAG1_COUNT = 14,
+       CCU_COLOR_FLAG2_COUNT = 15,
+       CCU_COLOR_FLAG3_COUNT = 16,
+       CCU_COLOR_FLAG4_COUNT = 17,
+       CCU_PARTIAL_BLOCK_READ = 18,
+};
+
+enum a4xx_cp_perfcounter_select {
+       CP_ALWAYS_COUNT = 0,
+       CP_BUSY = 1,
+       CP_PFP_IDLE = 2,
+       CP_PFP_BUSY_WORKING = 3,
+       CP_PFP_STALL_CYCLES_ANY = 4,
+       CP_PFP_STARVE_CYCLES_ANY = 5,
+       CP_PFP_STARVED_PER_LOAD_ADDR = 6,
+       CP_PFP_STALLED_PER_STORE_ADDR = 7,
+       CP_PFP_PC_PROFILE = 8,
+       CP_PFP_MATCH_PM4_PKT_PROFILE = 9,
+       CP_PFP_COND_INDIRECT_DISCARDED = 10,
+       CP_LONG_RESUMPTIONS = 11,
+       CP_RESUME_CYCLES = 12,
+       CP_RESUME_TO_BOUNDARY_CYCLES = 13,
+       CP_LONG_PREEMPTIONS = 14,
+       CP_PREEMPT_CYCLES = 15,
+       CP_PREEMPT_TO_BOUNDARY_CYCLES = 16,
+       CP_ME_FIFO_EMPTY_PFP_IDLE = 17,
+       CP_ME_FIFO_EMPTY_PFP_BUSY = 18,
+       CP_ME_FIFO_NOT_EMPTY_NOT_FULL = 19,
+       CP_ME_FIFO_FULL_ME_BUSY = 20,
+       CP_ME_FIFO_FULL_ME_NON_WORKING = 21,
+       CP_ME_WAITING_FOR_PACKETS = 22,
+       CP_ME_BUSY_WORKING = 23,
+       CP_ME_STARVE_CYCLES_ANY = 24,
+       CP_ME_STARVE_CYCLES_PER_PROFILE = 25,
+       CP_ME_STALL_CYCLES_PER_PROFILE = 26,
+       CP_ME_PC_PROFILE = 27,
+       CP_RCIU_FIFO_EMPTY = 28,
+       CP_RCIU_FIFO_NOT_EMPTY_NOT_FULL = 29,
+       CP_RCIU_FIFO_FULL = 30,
+       CP_RCIU_FIFO_FULL_NO_CONTEXT = 31,
+       CP_RCIU_FIFO_FULL_AHB_MASTER = 32,
+       CP_RCIU_FIFO_FULL_OTHER = 33,
+       CP_AHB_IDLE = 34,
+       CP_AHB_STALL_ON_GRANT_NO_SPLIT = 35,
+       CP_AHB_STALL_ON_GRANT_SPLIT = 36,
+       CP_AHB_STALL_ON_GRANT_SPLIT_PROFILE = 37,
+       CP_AHB_BUSY_WORKING = 38,
+       CP_AHB_BUSY_STALL_ON_HRDY = 39,
+       CP_AHB_BUSY_STALL_ON_HRDY_PROFILE = 40,
+};
+
+enum a4xx_gras_ras_perfcounter_select {
+       RAS_SUPER_TILES = 0,
+       RAS_8X8_TILES = 1,
+       RAS_4X4_TILES = 2,
+       RAS_BUSY_CYCLES = 3,
+       RAS_STALL_CYCLES_BY_RB = 4,
+       RAS_STALL_CYCLES_BY_VSC = 5,
+       RAS_STARVE_CYCLES_BY_TSE = 6,
+       RAS_SUPERTILE_CYCLES = 7,
+       RAS_TILE_CYCLES = 8,
+       RAS_FULLY_COVERED_SUPER_TILES = 9,
+       RAS_FULLY_COVERED_8X8_TILES = 10,
+       RAS_4X4_PRIM = 11,
+       RAS_8X4_4X8_PRIM = 12,
+       RAS_8X8_PRIM = 13,
+};
+
+enum a4xx_gras_tse_perfcounter_select {
+       TSE_INPUT_PRIM = 0,
+       TSE_INPUT_NULL_PRIM = 1,
+       TSE_TRIVAL_REJ_PRIM = 2,
+       TSE_CLIPPED_PRIM = 3,
+       TSE_NEW_PRIM = 4,
+       TSE_ZERO_AREA_PRIM = 5,
+       TSE_FACENESS_CULLED_PRIM = 6,
+       TSE_ZERO_PIXEL_PRIM = 7,
+       TSE_OUTPUT_NULL_PRIM = 8,
+       TSE_OUTPUT_VISIBLE_PRIM = 9,
+       TSE_PRE_CLIP_PRIM = 10,
+       TSE_POST_CLIP_PRIM = 11,
+       TSE_BUSY_CYCLES = 12,
+       TSE_PC_STARVE = 13,
+       TSE_RAS_STALL = 14,
+       TSE_STALL_BARYPLANE_FIFO_FULL = 15,
+       TSE_STALL_ZPLANE_FIFO_FULL = 16,
+};
+
+enum a4xx_hlsq_perfcounter_select {
+       HLSQ_SP_VS_STAGE_CONSTANT = 0,
+       HLSQ_SP_VS_STAGE_INSTRUCTIONS = 1,
+       HLSQ_SP_FS_STAGE_CONSTANT = 2,
+       HLSQ_SP_FS_STAGE_INSTRUCTIONS = 3,
+       HLSQ_TP_STATE = 4,
+       HLSQ_QUADS = 5,
+       HLSQ_PIXELS = 6,
+       HLSQ_VERTICES = 7,
+       HLSQ_SP_VS_STAGE_DATA_BYTES = 13,
+       HLSQ_SP_FS_STAGE_DATA_BYTES = 14,
+       HLSQ_BUSY_CYCLES = 15,
+       HLSQ_STALL_CYCLES_SP_STATE = 16,
+       HLSQ_STALL_CYCLES_SP_VS_STAGE = 17,
+       HLSQ_STALL_CYCLES_SP_FS_STAGE = 18,
+       HLSQ_STALL_CYCLES_UCHE = 19,
+       HLSQ_RBBM_LOAD_CYCLES = 20,
+       HLSQ_DI_TO_VS_START_SP = 21,
+       HLSQ_DI_TO_FS_START_SP = 22,
+       HLSQ_VS_STAGE_START_TO_DONE_SP = 23,
+       HLSQ_FS_STAGE_START_TO_DONE_SP = 24,
+       HLSQ_SP_STATE_COPY_CYCLES_VS_STAGE = 25,
+       HLSQ_SP_STATE_COPY_CYCLES_FS_STAGE = 26,
+       HLSQ_UCHE_LATENCY_CYCLES = 27,
+       HLSQ_UCHE_LATENCY_COUNT = 28,
+       HLSQ_STARVE_CYCLES_VFD = 29,
+};
+
+enum a4xx_pc_perfcounter_select {
+       PC_VIS_STREAMS_LOADED = 0,
+       PC_VPC_PRIMITIVES = 2,
+       PC_DEAD_PRIM = 3,
+       PC_LIVE_PRIM = 4,
+       PC_DEAD_DRAWCALLS = 5,
+       PC_LIVE_DRAWCALLS = 6,
+       PC_VERTEX_MISSES = 7,
+       PC_STALL_CYCLES_VFD = 9,
+       PC_STALL_CYCLES_TSE = 10,
+       PC_STALL_CYCLES_UCHE = 11,
+       PC_WORKING_CYCLES = 12,
+       PC_IA_VERTICES = 13,
+       PC_GS_PRIMITIVES = 14,
+       PC_HS_INVOCATIONS = 15,
+       PC_DS_INVOCATIONS = 16,
+       PC_DS_PRIMITIVES = 17,
+       PC_STARVE_CYCLES_FOR_INDEX = 20,
+       PC_STARVE_CYCLES_FOR_TESS_FACTOR = 21,
+       PC_STARVE_CYCLES_FOR_VIZ_STREAM = 22,
+       PC_STALL_CYCLES_TESS = 23,
+       PC_STARVE_CYCLES_FOR_POSITION = 24,
+       PC_MODE0_DRAWCALL = 25,
+       PC_MODE1_DRAWCALL = 26,
+       PC_MODE2_DRAWCALL = 27,
+       PC_MODE3_DRAWCALL = 28,
+       PC_MODE4_DRAWCALL = 29,
+       PC_PREDICATED_DEAD_DRAWCALL = 30,
+       PC_STALL_CYCLES_BY_TSE_ONLY = 31,
+       PC_STALL_CYCLES_BY_VPC_ONLY = 32,
+       PC_VPC_POS_DATA_TRANSACTION = 33,
+       PC_BUSY_CYCLES = 34,
+       PC_STARVE_CYCLES_DI = 35,
+       PC_STALL_CYCLES_VPC = 36,
+       TESS_WORKING_CYCLES = 37,
+       TESS_NUM_CYCLES_SETUP_WORKING = 38,
+       TESS_NUM_CYCLES_PTGEN_WORKING = 39,
+       TESS_NUM_CYCLES_CONNGEN_WORKING = 40,
+       TESS_BUSY_CYCLES = 41,
+       TESS_STARVE_CYCLES_PC = 42,
+       TESS_STALL_CYCLES_PC = 43,
+};
+
+enum a4xx_pwr_perfcounter_select {
+       PWR_CORE_CLOCK_CYCLES = 0,
+       PWR_BUSY_CLOCK_CYCLES = 1,
+};
+
+enum a4xx_rb_perfcounter_select {
+       RB_BUSY_CYCLES = 0,
+       RB_BUSY_CYCLES_BINNING = 1,
+       RB_BUSY_CYCLES_RENDERING = 2,
+       RB_BUSY_CYCLES_RESOLVE = 3,
+       RB_STARVE_CYCLES_BY_SP = 4,
+       RB_STARVE_CYCLES_BY_RAS = 5,
+       RB_STARVE_CYCLES_BY_MARB = 6,
+       RB_STALL_CYCLES_BY_MARB = 7,
+       RB_STALL_CYCLES_BY_HLSQ = 8,
+       RB_RB_RB_MARB_DATA = 9,
+       RB_SP_RB_QUAD = 10,
+       RB_RAS_RB_Z_QUADS = 11,
+       RB_GMEM_CH0_READ = 12,
+       RB_GMEM_CH1_READ = 13,
+       RB_GMEM_CH0_WRITE = 14,
+       RB_GMEM_CH1_WRITE = 15,
+       RB_CP_CONTEXT_DONE = 16,
+       RB_CP_CACHE_FLUSH = 17,
+       RB_CP_ZPASS_DONE = 18,
+       RB_STALL_FIFO0_FULL = 19,
+       RB_STALL_FIFO1_FULL = 20,
+       RB_STALL_FIFO2_FULL = 21,
+       RB_STALL_FIFO3_FULL = 22,
+       RB_RB_HLSQ_TRANSACTIONS = 23,
+       RB_Z_READ = 24,
+       RB_Z_WRITE = 25,
+       RB_C_READ = 26,
+       RB_C_WRITE = 27,
+       RB_C_READ_LATENCY = 28,
+       RB_Z_READ_LATENCY = 29,
+       RB_STALL_BY_UCHE = 30,
+       RB_MARB_UCHE_TRANSACTIONS = 31,
+       RB_CACHE_STALL_MISS = 32,
+       RB_CACHE_STALL_FIFO_FULL = 33,
+       RB_8BIT_BLENDER_UNITS_ACTIVE = 34,
+       RB_16BIT_BLENDER_UNITS_ACTIVE = 35,
+       RB_SAMPLER_UNITS_ACTIVE = 36,
+       RB_TOTAL_PASS = 38,
+       RB_Z_PASS = 39,
+       RB_Z_FAIL = 40,
+       RB_S_FAIL = 41,
+       RB_POWER0 = 42,
+       RB_POWER1 = 43,
+       RB_POWER2 = 44,
+       RB_POWER3 = 45,
+       RB_POWER4 = 46,
+       RB_POWER5 = 47,
+       RB_POWER6 = 48,
+       RB_POWER7 = 49,
+};
+
+enum a4xx_rbbm_perfcounter_select {
+       RBBM_ALWAYS_ON = 0,
+       RBBM_VBIF_BUSY = 1,
+       RBBM_TSE_BUSY = 2,
+       RBBM_RAS_BUSY = 3,
+       RBBM_PC_DCALL_BUSY = 4,
+       RBBM_PC_VSD_BUSY = 5,
+       RBBM_VFD_BUSY = 6,
+       RBBM_VPC_BUSY = 7,
+       RBBM_UCHE_BUSY = 8,
+       RBBM_VSC_BUSY = 9,
+       RBBM_HLSQ_BUSY = 10,
+       RBBM_ANY_RB_BUSY = 11,
+       RBBM_ANY_TPL1_BUSY = 12,
+       RBBM_ANY_SP_BUSY = 13,
+       RBBM_ANY_MARB_BUSY = 14,
+       RBBM_ANY_ARB_BUSY = 15,
+       RBBM_AHB_STATUS_BUSY = 16,
+       RBBM_AHB_STATUS_STALLED = 17,
+       RBBM_AHB_STATUS_TXFR = 18,
+       RBBM_AHB_STATUS_TXFR_SPLIT = 19,
+       RBBM_AHB_STATUS_TXFR_ERROR = 20,
+       RBBM_AHB_STATUS_LONG_STALL = 21,
+       RBBM_STATUS_MASKED = 22,
+       RBBM_CP_BUSY_GFX_CORE_IDLE = 23,
+       RBBM_TESS_BUSY = 24,
+       RBBM_COM_BUSY = 25,
+       RBBM_DCOM_BUSY = 32,
+       RBBM_ANY_CCU_BUSY = 33,
+       RBBM_DPM_BUSY = 34,
+};
+
+enum a4xx_sp_perfcounter_select {
+       SP_LM_LOAD_INSTRUCTIONS = 0,
+       SP_LM_STORE_INSTRUCTIONS = 1,
+       SP_LM_ATOMICS = 2,
+       SP_GM_LOAD_INSTRUCTIONS = 3,
+       SP_GM_STORE_INSTRUCTIONS = 4,
+       SP_GM_ATOMICS = 5,
+       SP_VS_STAGE_TEX_INSTRUCTIONS = 6,
+       SP_VS_STAGE_CFLOW_INSTRUCTIONS = 7,
+       SP_VS_STAGE_EFU_INSTRUCTIONS = 8,
+       SP_VS_STAGE_FULL_ALU_INSTRUCTIONS = 9,
+       SP_VS_STAGE_HALF_ALU_INSTRUCTIONS = 10,
+       SP_FS_STAGE_TEX_INSTRUCTIONS = 11,
+       SP_FS_STAGE_CFLOW_INSTRUCTIONS = 12,
+       SP_FS_STAGE_EFU_INSTRUCTIONS = 13,
+       SP_FS_STAGE_FULL_ALU_INSTRUCTIONS = 14,
+       SP_FS_STAGE_HALF_ALU_INSTRUCTIONS = 15,
+       SP_VS_INSTRUCTIONS = 17,
+       SP_FS_INSTRUCTIONS = 18,
+       SP_ADDR_LOCK_COUNT = 19,
+       SP_UCHE_READ_TRANS = 20,
+       SP_UCHE_WRITE_TRANS = 21,
+       SP_EXPORT_VPC_TRANS = 22,
+       SP_EXPORT_RB_TRANS = 23,
+       SP_PIXELS_KILLED = 24,
+       SP_ICL1_REQUESTS = 25,
+       SP_ICL1_MISSES = 26,
+       SP_ICL0_REQUESTS = 27,
+       SP_ICL0_MISSES = 28,
+       SP_ALU_WORKING_CYCLES = 29,
+       SP_EFU_WORKING_CYCLES = 30,
+       SP_STALL_CYCLES_BY_VPC = 31,
+       SP_STALL_CYCLES_BY_TP = 32,
+       SP_STALL_CYCLES_BY_UCHE = 33,
+       SP_STALL_CYCLES_BY_RB = 34,
+       SP_BUSY_CYCLES = 35,
+       SP_HS_INSTRUCTIONS = 36,
+       SP_DS_INSTRUCTIONS = 37,
+       SP_GS_INSTRUCTIONS = 38,
+       SP_CS_INSTRUCTIONS = 39,
+       SP_SCHEDULER_NON_WORKING = 40,
+       SP_WAVE_CONTEXTS = 41,
+       SP_WAVE_CONTEXT_CYCLES = 42,
+       SP_POWER0 = 43,
+       SP_POWER1 = 44,
+       SP_POWER2 = 45,
+       SP_POWER3 = 46,
+       SP_POWER4 = 47,
+       SP_POWER5 = 48,
+       SP_POWER6 = 49,
+       SP_POWER7 = 50,
+       SP_POWER8 = 51,
+       SP_POWER9 = 52,
+       SP_POWER10 = 53,
+       SP_POWER11 = 54,
+       SP_POWER12 = 55,
+       SP_POWER13 = 56,
+       SP_POWER14 = 57,
+       SP_POWER15 = 58,
+};
+
+enum a4xx_tp_perfcounter_select {
+       TP_L1_REQUESTS = 0,
+       TP_L1_MISSES = 1,
+       TP_QUADS_OFFSET = 8,
+       TP_QUAD_SHADOW = 9,
+       TP_QUADS_ARRAY = 10,
+       TP_QUADS_GRADIENT = 11,
+       TP_QUADS_1D2D = 12,
+       TP_QUADS_3DCUBE = 13,
+       TP_BUSY_CYCLES = 16,
+       TP_STALL_CYCLES_BY_ARB = 17,
+       TP_STATE_CACHE_REQUESTS = 20,
+       TP_STATE_CACHE_MISSES = 21,
+       TP_POWER0 = 22,
+       TP_POWER1 = 23,
+       TP_POWER2 = 24,
+       TP_POWER3 = 25,
+       TP_POWER4 = 26,
+       TP_POWER5 = 27,
+       TP_POWER6 = 28,
+       TP_POWER7 = 29,
+};
+
+enum a4xx_uche_perfcounter_select {
+       UCHE_VBIF_READ_BEATS_TP = 0,
+       UCHE_VBIF_READ_BEATS_VFD = 1,
+       UCHE_VBIF_READ_BEATS_HLSQ = 2,
+       UCHE_VBIF_READ_BEATS_MARB = 3,
+       UCHE_VBIF_READ_BEATS_SP = 4,
+       UCHE_READ_REQUESTS_TP = 5,
+       UCHE_READ_REQUESTS_VFD = 6,
+       UCHE_READ_REQUESTS_HLSQ = 7,
+       UCHE_READ_REQUESTS_MARB = 8,
+       UCHE_READ_REQUESTS_SP = 9,
+       UCHE_WRITE_REQUESTS_MARB = 10,
+       UCHE_WRITE_REQUESTS_SP = 11,
+       UCHE_TAG_CHECK_FAILS = 12,
+       UCHE_EVICTS = 13,
+       UCHE_FLUSHES = 14,
+       UCHE_VBIF_LATENCY_CYCLES = 15,
+       UCHE_VBIF_LATENCY_SAMPLES = 16,
+       UCHE_BUSY_CYCLES = 17,
+       UCHE_VBIF_READ_BEATS_PC = 18,
+       UCHE_READ_REQUESTS_PC = 19,
+       UCHE_WRITE_REQUESTS_VPC = 20,
+       UCHE_STALL_BY_VBIF = 21,
+       UCHE_WRITE_REQUESTS_VSC = 22,
+       UCHE_POWER0 = 23,
+       UCHE_POWER1 = 24,
+       UCHE_POWER2 = 25,
+       UCHE_POWER3 = 26,
+       UCHE_POWER4 = 27,
+       UCHE_POWER5 = 28,
+       UCHE_POWER6 = 29,
+       UCHE_POWER7 = 30,
+};
+
+enum a4xx_vbif_perfcounter_select {
+       AXI_READ_REQUESTS_ID_0 = 0,
+       AXI_READ_REQUESTS_ID_1 = 1,
+       AXI_READ_REQUESTS_ID_2 = 2,
+       AXI_READ_REQUESTS_ID_3 = 3,
+       AXI_READ_REQUESTS_ID_4 = 4,
+       AXI_READ_REQUESTS_ID_5 = 5,
+       AXI_READ_REQUESTS_ID_6 = 6,
+       AXI_READ_REQUESTS_ID_7 = 7,
+       AXI_READ_REQUESTS_ID_8 = 8,
+       AXI_READ_REQUESTS_ID_9 = 9,
+       AXI_READ_REQUESTS_ID_10 = 10,
+       AXI_READ_REQUESTS_ID_11 = 11,
+       AXI_READ_REQUESTS_ID_12 = 12,
+       AXI_READ_REQUESTS_ID_13 = 13,
+       AXI_READ_REQUESTS_ID_14 = 14,
+       AXI_READ_REQUESTS_ID_15 = 15,
+       AXI0_READ_REQUESTS_TOTAL = 16,
+       AXI1_READ_REQUESTS_TOTAL = 17,
+       AXI2_READ_REQUESTS_TOTAL = 18,
+       AXI3_READ_REQUESTS_TOTAL = 19,
+       AXI_READ_REQUESTS_TOTAL = 20,
+       AXI_WRITE_REQUESTS_ID_0 = 21,
+       AXI_WRITE_REQUESTS_ID_1 = 22,
+       AXI_WRITE_REQUESTS_ID_2 = 23,
+       AXI_WRITE_REQUESTS_ID_3 = 24,
+       AXI_WRITE_REQUESTS_ID_4 = 25,
+       AXI_WRITE_REQUESTS_ID_5 = 26,
+       AXI_WRITE_REQUESTS_ID_6 = 27,
+       AXI_WRITE_REQUESTS_ID_7 = 28,
+       AXI_WRITE_REQUESTS_ID_8 = 29,
+       AXI_WRITE_REQUESTS_ID_9 = 30,
+       AXI_WRITE_REQUESTS_ID_10 = 31,
+       AXI_WRITE_REQUESTS_ID_11 = 32,
+       AXI_WRITE_REQUESTS_ID_12 = 33,
+       AXI_WRITE_REQUESTS_ID_13 = 34,
+       AXI_WRITE_REQUESTS_ID_14 = 35,
+       AXI_WRITE_REQUESTS_ID_15 = 36,
+       AXI0_WRITE_REQUESTS_TOTAL = 37,
+       AXI1_WRITE_REQUESTS_TOTAL = 38,
+       AXI2_WRITE_REQUESTS_TOTAL = 39,
+       AXI3_WRITE_REQUESTS_TOTAL = 40,
+       AXI_WRITE_REQUESTS_TOTAL = 41,
+       AXI_TOTAL_REQUESTS = 42,
+       AXI_READ_DATA_BEATS_ID_0 = 43,
+       AXI_READ_DATA_BEATS_ID_1 = 44,
+       AXI_READ_DATA_BEATS_ID_2 = 45,
+       AXI_READ_DATA_BEATS_ID_3 = 46,
+       AXI_READ_DATA_BEATS_ID_4 = 47,
+       AXI_READ_DATA_BEATS_ID_5 = 48,
+       AXI_READ_DATA_BEATS_ID_6 = 49,
+       AXI_READ_DATA_BEATS_ID_7 = 50,
+       AXI_READ_DATA_BEATS_ID_8 = 51,
+       AXI_READ_DATA_BEATS_ID_9 = 52,
+       AXI_READ_DATA_BEATS_ID_10 = 53,
+       AXI_READ_DATA_BEATS_ID_11 = 54,
+       AXI_READ_DATA_BEATS_ID_12 = 55,
+       AXI_READ_DATA_BEATS_ID_13 = 56,
+       AXI_READ_DATA_BEATS_ID_14 = 57,
+       AXI_READ_DATA_BEATS_ID_15 = 58,
+       AXI0_READ_DATA_BEATS_TOTAL = 59,
+       AXI1_READ_DATA_BEATS_TOTAL = 60,
+       AXI2_READ_DATA_BEATS_TOTAL = 61,
+       AXI3_READ_DATA_BEATS_TOTAL = 62,
+       AXI_READ_DATA_BEATS_TOTAL = 63,
+       AXI_WRITE_DATA_BEATS_ID_0 = 64,
+       AXI_WRITE_DATA_BEATS_ID_1 = 65,
+       AXI_WRITE_DATA_BEATS_ID_2 = 66,
+       AXI_WRITE_DATA_BEATS_ID_3 = 67,
+       AXI_WRITE_DATA_BEATS_ID_4 = 68,
+       AXI_WRITE_DATA_BEATS_ID_5 = 69,
+       AXI_WRITE_DATA_BEATS_ID_6 = 70,
+       AXI_WRITE_DATA_BEATS_ID_7 = 71,
+       AXI_WRITE_DATA_BEATS_ID_8 = 72,
+       AXI_WRITE_DATA_BEATS_ID_9 = 73,
+       AXI_WRITE_DATA_BEATS_ID_10 = 74,
+       AXI_WRITE_DATA_BEATS_ID_11 = 75,
+       AXI_WRITE_DATA_BEATS_ID_12 = 76,
+       AXI_WRITE_DATA_BEATS_ID_13 = 77,
+       AXI_WRITE_DATA_BEATS_ID_14 = 78,
+       AXI_WRITE_DATA_BEATS_ID_15 = 79,
+       AXI0_WRITE_DATA_BEATS_TOTAL = 80,
+       AXI1_WRITE_DATA_BEATS_TOTAL = 81,
+       AXI2_WRITE_DATA_BEATS_TOTAL = 82,
+       AXI3_WRITE_DATA_BEATS_TOTAL = 83,
+       AXI_WRITE_DATA_BEATS_TOTAL = 84,
+       AXI_DATA_BEATS_TOTAL = 85,
+       CYCLES_HELD_OFF_ID_0 = 86,
+       CYCLES_HELD_OFF_ID_1 = 87,
+       CYCLES_HELD_OFF_ID_2 = 88,
+       CYCLES_HELD_OFF_ID_3 = 89,
+       CYCLES_HELD_OFF_ID_4 = 90,
+       CYCLES_HELD_OFF_ID_5 = 91,
+       CYCLES_HELD_OFF_ID_6 = 92,
+       CYCLES_HELD_OFF_ID_7 = 93,
+       CYCLES_HELD_OFF_ID_8 = 94,
+       CYCLES_HELD_OFF_ID_9 = 95,
+       CYCLES_HELD_OFF_ID_10 = 96,
+       CYCLES_HELD_OFF_ID_11 = 97,
+       CYCLES_HELD_OFF_ID_12 = 98,
+       CYCLES_HELD_OFF_ID_13 = 99,
+       CYCLES_HELD_OFF_ID_14 = 100,
+       CYCLES_HELD_OFF_ID_15 = 101,
+       AXI_READ_REQUEST_HELD_OFF = 102,
+       AXI_WRITE_REQUEST_HELD_OFF = 103,
+       AXI_REQUEST_HELD_OFF = 104,
+       AXI_WRITE_DATA_HELD_OFF = 105,
+       OCMEM_AXI_READ_REQUEST_HELD_OFF = 106,
+       OCMEM_AXI_WRITE_REQUEST_HELD_OFF = 107,
+       OCMEM_AXI_REQUEST_HELD_OFF = 108,
+       OCMEM_AXI_WRITE_DATA_HELD_OFF = 109,
+       ELAPSED_CYCLES_DDR = 110,
+       ELAPSED_CYCLES_OCMEM = 111,
+};
+
+enum a4xx_vfd_perfcounter_select {
+       VFD_UCHE_BYTE_FETCHED = 0,
+       VFD_UCHE_TRANS = 1,
+       VFD_FETCH_INSTRUCTIONS = 3,
+       VFD_BUSY_CYCLES = 5,
+       VFD_STALL_CYCLES_UCHE = 6,
+       VFD_STALL_CYCLES_HLSQ = 7,
+       VFD_STALL_CYCLES_VPC_BYPASS = 8,
+       VFD_STALL_CYCLES_VPC_ALLOC = 9,
+       VFD_MODE_0_FIBERS = 13,
+       VFD_MODE_1_FIBERS = 14,
+       VFD_MODE_2_FIBERS = 15,
+       VFD_MODE_3_FIBERS = 16,
+       VFD_MODE_4_FIBERS = 17,
+       VFD_BFIFO_STALL = 18,
+       VFD_NUM_VERTICES_TOTAL = 19,
+       VFD_PACKER_FULL = 20,
+       VFD_UCHE_REQUEST_FIFO_FULL = 21,
+       VFD_STARVE_CYCLES_PC = 22,
+       VFD_STARVE_CYCLES_UCHE = 23,
+};
+
+enum a4xx_vpc_perfcounter_select {
+       VPC_SP_LM_COMPONENTS = 2,
+       VPC_SP0_LM_BYTES = 3,
+       VPC_SP1_LM_BYTES = 4,
+       VPC_SP2_LM_BYTES = 5,
+       VPC_SP3_LM_BYTES = 6,
+       VPC_WORKING_CYCLES = 7,
+       VPC_STALL_CYCLES_LM = 8,
+       VPC_STARVE_CYCLES_RAS = 9,
+       VPC_STREAMOUT_CYCLES = 10,
+       VPC_UCHE_TRANSACTIONS = 12,
+       VPC_STALL_CYCLES_UCHE = 13,
+       VPC_BUSY_CYCLES = 14,
+       VPC_STARVE_CYCLES_SP = 15,
+};
+
+enum a4xx_vsc_perfcounter_select {
+       VSC_BUSY_CYCLES = 0,
+       VSC_WORKING_CYCLES = 1,
+       VSC_STALL_CYCLES_UCHE = 2,
+       VSC_STARVE_CYCLES_RAS = 3,
+       VSC_EOT_NUM = 4,
 };
 
 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 {
@@ -214,6 +890,12 @@ static inline uint32_t A4XX_CGC_HLSQ_EARLY_CYC(uint32_t val)
 
 #define REG_A4XX_RB_PERFCTR_RB_SEL_7                           0x00000cce
 
+#define REG_A4XX_RB_PERFCTR_CCU_SEL_0                          0x00000ccf
+
+#define REG_A4XX_RB_PERFCTR_CCU_SEL_1                          0x00000cd0
+
+#define REG_A4XX_RB_PERFCTR_CCU_SEL_2                          0x00000cd1
+
 #define REG_A4XX_RB_PERFCTR_CCU_SEL_3                          0x00000cd2
 
 #define REG_A4XX_RB_FRAME_BUFFER_DIMENSION                     0x00000ce0
@@ -243,14 +925,17 @@ static inline uint32_t A4XX_RB_FRAME_BUFFER_DIMENSION_HEIGHT(uint32_t val)
 #define A4XX_RB_MODE_CONTROL_WIDTH__SHIFT                      0
 static inline uint32_t A4XX_RB_MODE_CONTROL_WIDTH(uint32_t val)
 {
+       assert(!(val & 0x1f));
        return ((val >> 5) << A4XX_RB_MODE_CONTROL_WIDTH__SHIFT) & A4XX_RB_MODE_CONTROL_WIDTH__MASK;
 }
 #define A4XX_RB_MODE_CONTROL_HEIGHT__MASK                      0x00003f00
 #define A4XX_RB_MODE_CONTROL_HEIGHT__SHIFT                     8
 static inline uint32_t A4XX_RB_MODE_CONTROL_HEIGHT(uint32_t val)
 {
+       assert(!(val & 0x1f));
        return ((val >> 5) << A4XX_RB_MODE_CONTROL_HEIGHT__SHIFT) & A4XX_RB_MODE_CONTROL_HEIGHT__MASK;
 }
+#define A4XX_RB_MODE_CONTROL_ENABLE_GMEM                       0x00010000
 
 #define REG_A4XX_RB_RENDER_CONTROL                             0x000020a1
 #define A4XX_RB_RENDER_CONTROL_BINNING_PASS                    0x00000001
@@ -265,14 +950,22 @@ static inline uint32_t A4XX_RB_MSAA_CONTROL_SAMPLES(uint32_t val)
        return ((val) << A4XX_RB_MSAA_CONTROL_SAMPLES__SHIFT) & A4XX_RB_MSAA_CONTROL_SAMPLES__MASK;
 }
 
-#define REG_A4XX_RB_MSAA_CONTROL2                              0x000020a3
-#define A4XX_RB_MSAA_CONTROL2_MSAA_SAMPLES__MASK               0x00000380
-#define A4XX_RB_MSAA_CONTROL2_MSAA_SAMPLES__SHIFT              7
-static inline uint32_t A4XX_RB_MSAA_CONTROL2_MSAA_SAMPLES(uint32_t val)
+#define REG_A4XX_RB_RENDER_CONTROL2                            0x000020a3
+#define A4XX_RB_RENDER_CONTROL2_XCOORD                         0x00000001
+#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_MSAA_CONTROL2_MSAA_SAMPLES__SHIFT) & A4XX_RB_MSAA_CONTROL2_MSAA_SAMPLES__MASK;
+       return ((val) << A4XX_RB_RENDER_CONTROL2_MSAA_SAMPLES__SHIFT) & A4XX_RB_RENDER_CONTROL2_MSAA_SAMPLES__MASK;
 }
-#define A4XX_RB_MSAA_CONTROL2_VARYING                          0x00001000
+#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; }
 
@@ -280,8 +973,13 @@ static inline uint32_t REG_A4XX_RB_MRT_CONTROL(uint32_t i0) { return 0x000020a4
 #define A4XX_RB_MRT_CONTROL_READ_DEST_ENABLE                   0x00000008
 #define A4XX_RB_MRT_CONTROL_BLEND                              0x00000010
 #define A4XX_RB_MRT_CONTROL_BLEND2                             0x00000020
-#define A4XX_RB_MRT_CONTROL_FASTCLEAR                          0x00000400
-#define A4XX_RB_MRT_CONTROL_B11                                        0x00000800
+#define A4XX_RB_MRT_CONTROL_ROP_ENABLE                         0x00000040
+#define A4XX_RB_MRT_CONTROL_ROP_CODE__MASK                     0x00000f00
+#define A4XX_RB_MRT_CONTROL_ROP_CODE__SHIFT                    8
+static inline uint32_t A4XX_RB_MRT_CONTROL_ROP_CODE(enum a3xx_rop_code val)
+{
+       return ((val) << A4XX_RB_MRT_CONTROL_ROP_CODE__SHIFT) & A4XX_RB_MRT_CONTROL_ROP_CODE__MASK;
+}
 #define A4XX_RB_MRT_CONTROL_COMPONENT_ENABLE__MASK             0x0f000000
 #define A4XX_RB_MRT_CONTROL_COMPONENT_ENABLE__SHIFT            24
 static inline uint32_t A4XX_RB_MRT_CONTROL_COMPONENT_ENABLE(uint32_t val)
@@ -296,6 +994,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)
@@ -308,17 +1012,19 @@ 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)
 {
+       assert(!(val & 0xf));
        return ((val >> 4) << A4XX_RB_MRT_BUF_INFO_COLOR_BUF_PITCH__SHIFT) & A4XX_RB_MRT_BUF_INFO_COLOR_BUF_PITCH__MASK;
 }
 
 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)
 {
@@ -334,7 +1040,7 @@ static inline uint32_t A4XX_RB_MRT_BLEND_CONTROL_RGB_SRC_FACTOR(enum adreno_rb_b
 }
 #define A4XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE__MASK       0x000000e0
 #define A4XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE__SHIFT      5
-static inline uint32_t A4XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE(enum a4xx_rb_blend_opcode val)
+static inline uint32_t A4XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE(enum a3xx_rb_blend_opcode val)
 {
        return ((val) << A4XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE__SHIFT) & A4XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE__MASK;
 }
@@ -352,7 +1058,7 @@ static inline uint32_t A4XX_RB_MRT_BLEND_CONTROL_ALPHA_SRC_FACTOR(enum adreno_rb
 }
 #define A4XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE__MASK     0x00e00000
 #define A4XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE__SHIFT    21
-static inline uint32_t A4XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE(enum a4xx_rb_blend_opcode val)
+static inline uint32_t A4XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE(enum a3xx_rb_blend_opcode val)
 {
        return ((val) << A4XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE__SHIFT) & A4XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE__MASK;
 }
@@ -363,7 +1069,125 @@ 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                           0x000000ff
+#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_SINT__MASK                           0x0000ff00
+#define A4XX_RB_BLEND_RED_SINT__SHIFT                          8
+static inline uint32_t A4XX_RB_BLEND_RED_SINT(uint32_t val)
+{
+       return ((val) << A4XX_RB_BLEND_RED_SINT__SHIFT) & A4XX_RB_BLEND_RED_SINT__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                         0x000000ff
+#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_SINT__MASK                         0x0000ff00
+#define A4XX_RB_BLEND_GREEN_SINT__SHIFT                                8
+static inline uint32_t A4XX_RB_BLEND_GREEN_SINT(uint32_t val)
+{
+       return ((val) << A4XX_RB_BLEND_GREEN_SINT__SHIFT) & A4XX_RB_BLEND_GREEN_SINT__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                          0x000000ff
+#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_SINT__MASK                          0x0000ff00
+#define A4XX_RB_BLEND_BLUE_SINT__SHIFT                         8
+static inline uint32_t A4XX_RB_BLEND_BLUE_SINT(uint32_t val)
+{
+       return ((val) << A4XX_RB_BLEND_BLUE_SINT__SHIFT) & A4XX_RB_BLEND_BLUE_SINT__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                         0x000000ff
+#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_SINT__MASK                         0x0000ff00
+#define A4XX_RB_BLEND_ALPHA_SINT__SHIFT                                8
+static inline uint32_t A4XX_RB_BLEND_ALPHA_SINT(uint32_t val)
+{
+       return ((val) << A4XX_RB_BLEND_ALPHA_SINT__SHIFT) & A4XX_RB_BLEND_ALPHA_SINT__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
@@ -373,8 +1197,13 @@ 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_COLOR_PIPE                    0x00000001
-#define A4XX_RB_FS_OUTPUT_FAST_CLEAR                           0x00000100
+#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_INDEPENDENT_BLEND                    0x00000100
 #define A4XX_RB_FS_OUTPUT_SAMPLE_MASK__MASK                    0xffff0000
 #define A4XX_RB_FS_OUTPUT_SAMPLE_MASK__SHIFT                   16
 static inline uint32_t A4XX_RB_FS_OUTPUT_SAMPLE_MASK(uint32_t val)
@@ -382,12 +1211,64 @@ 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)
+{
+       assert(!(val & 0x3));
+       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_CONTROL3_COMPONENT_ENABLE__SHIFT) & A4XX_RB_RENDER_CONTROL3_COMPONENT_ENABLE__MASK;
+       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_COMPONENTS_RT7__SHIFT) & A4XX_RB_RENDER_COMPONENTS_RT7__MASK;
 }
 
 #define REG_A4XX_RB_COPY_CONTROL                               0x000020fc
@@ -413,15 +1294,17 @@ static inline uint32_t A4XX_RB_COPY_CONTROL_FASTCLEAR(uint32_t val)
 #define A4XX_RB_COPY_CONTROL_GMEM_BASE__SHIFT                  14
 static inline uint32_t A4XX_RB_COPY_CONTROL_GMEM_BASE(uint32_t val)
 {
+       assert(!(val & 0x3fff));
        return ((val >> 14) << A4XX_RB_COPY_CONTROL_GMEM_BASE__SHIFT) & A4XX_RB_COPY_CONTROL_GMEM_BASE__MASK;
 }
 
 #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;
+       assert(!(val & 0x1f));
+       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
@@ -429,6 +1312,7 @@ static inline uint32_t A4XX_RB_COPY_DEST_BASE_BASE(uint32_t val)
 #define A4XX_RB_COPY_DEST_PITCH_PITCH__SHIFT                   0
 static inline uint32_t A4XX_RB_COPY_DEST_PITCH_PITCH(uint32_t val)
 {
+       assert(!(val & 0x1f));
        return ((val >> 5) << A4XX_RB_COPY_DEST_PITCH_PITCH__SHIFT) & A4XX_RB_COPY_DEST_PITCH_PITCH__MASK;
 }
 
@@ -471,7 +1355,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
@@ -484,8 +1373,9 @@ static inline uint32_t A4XX_RB_DEPTH_CONTROL_ZFUNC(enum adreno_compare_func val)
 {
        return ((val) << A4XX_RB_DEPTH_CONTROL_ZFUNC__SHIFT) & A4XX_RB_DEPTH_CONTROL_ZFUNC__MASK;
 }
-#define A4XX_RB_DEPTH_CONTROL_BF_ENABLE                                0x00000080
+#define A4XX_RB_DEPTH_CONTROL_Z_CLAMP_ENABLE                   0x00000080
 #define A4XX_RB_DEPTH_CONTROL_EARLY_Z_DISABLE                  0x00010000
+#define A4XX_RB_DEPTH_CONTROL_FORCE_FRAGZ_TO_FS                        0x00020000
 #define A4XX_RB_DEPTH_CONTROL_Z_TEST_ENABLE                    0x80000000
 
 #define REG_A4XX_RB_DEPTH_CLEAR                                        0x00002102
@@ -501,6 +1391,7 @@ static inline uint32_t A4XX_RB_DEPTH_INFO_DEPTH_FORMAT(enum a4xx_depth_format va
 #define A4XX_RB_DEPTH_INFO_DEPTH_BASE__SHIFT                   12
 static inline uint32_t A4XX_RB_DEPTH_INFO_DEPTH_BASE(uint32_t val)
 {
+       assert(!(val & 0xfff));
        return ((val >> 12) << A4XX_RB_DEPTH_INFO_DEPTH_BASE__SHIFT) & A4XX_RB_DEPTH_INFO_DEPTH_BASE__MASK;
 }
 
@@ -509,6 +1400,7 @@ static inline uint32_t A4XX_RB_DEPTH_INFO_DEPTH_BASE(uint32_t val)
 #define A4XX_RB_DEPTH_PITCH__SHIFT                             0
 static inline uint32_t A4XX_RB_DEPTH_PITCH(uint32_t val)
 {
+       assert(!(val & 0x1f));
        return ((val >> 5) << A4XX_RB_DEPTH_PITCH__SHIFT) & A4XX_RB_DEPTH_PITCH__MASK;
 }
 
@@ -517,6 +1409,7 @@ static inline uint32_t A4XX_RB_DEPTH_PITCH(uint32_t val)
 #define A4XX_RB_DEPTH_PITCH2__SHIFT                            0
 static inline uint32_t A4XX_RB_DEPTH_PITCH2(uint32_t val)
 {
+       assert(!(val & 0x1f));
        return ((val >> 5) << A4XX_RB_DEPTH_PITCH2__SHIFT) & A4XX_RB_DEPTH_PITCH2__MASK;
 }
 
@@ -576,6 +1469,25 @@ 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)
+{
+       assert(!(val & 0xfff));
+       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)
+{
+       assert(!(val & 0x1f));
+       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
@@ -631,7 +1543,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
 
@@ -725,242 +1641,694 @@ static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_TP_REG(uint32_t i0) { return 0x
 
 #define REG_A4XX_RBBM_CFG_DEBBUS_SEL_D                         0x0000004d
 
+#define REG_A4XX_RBBM_POWER_CNTL_IP                            0x00000098
+#define A4XX_RBBM_POWER_CNTL_IP_SW_COLLAPSE                    0x00000001
+#define A4XX_RBBM_POWER_CNTL_IP_SP_TP_PWR_ON                   0x00100000
+
 #define REG_A4XX_RBBM_PERFCTR_CP_0_LO                          0x0000009c
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_SP(uint32_t i0) { return 0x00000068 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_0_HI                          0x0000009d
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_SP_REG(uint32_t i0) { return 0x00000068 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_1_LO                          0x0000009e
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL2_SP(uint32_t i0) { return 0x0000006c + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_1_HI                          0x0000009f
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL2_SP_REG(uint32_t i0) { return 0x0000006c + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_2_LO                          0x000000a0
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_HYST_SP(uint32_t i0) { return 0x00000070 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_2_HI                          0x000000a1
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_HYST_SP_REG(uint32_t i0) { return 0x00000070 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_3_LO                          0x000000a2
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_SP(uint32_t i0) { return 0x00000074 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_3_HI                          0x000000a3
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_SP_REG(uint32_t i0) { return 0x00000074 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_4_LO                          0x000000a4
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_RB(uint32_t i0) { return 0x00000078 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_4_HI                          0x000000a5
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_RB_REG(uint32_t i0) { return 0x00000078 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_5_LO                          0x000000a6
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL2_RB(uint32_t i0) { return 0x0000007c + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_5_HI                          0x000000a7
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL2_RB_REG(uint32_t i0) { return 0x0000007c + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_6_LO                          0x000000a8
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_MARB_CCU(uint32_t i0) { return 0x00000082 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_6_HI                          0x000000a9
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_MARB_CCU_REG(uint32_t i0) { return 0x00000082 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_7_LO                          0x000000aa
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU(uint32_t i0) { return 0x00000086 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CP_7_HI                          0x000000ab
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU_REG(uint32_t i0) { return 0x00000086 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_RBBM_0_LO                                0x000000ac
 
-#define REG_A4XX_RBBM_CLOCK_HYST_COM_DCOM                      0x00000080
+#define REG_A4XX_RBBM_PERFCTR_RBBM_0_HI                                0x000000ad
 
-#define REG_A4XX_RBBM_CLOCK_CTL_COM_DCOM                       0x00000081
+#define REG_A4XX_RBBM_PERFCTR_RBBM_1_LO                                0x000000ae
 
-#define REG_A4XX_RBBM_CLOCK_CTL_HLSQ                           0x0000008a
+#define REG_A4XX_RBBM_PERFCTR_RBBM_1_HI                                0x000000af
 
-#define REG_A4XX_RBBM_CLOCK_HYST_HLSQ                          0x0000008b
+#define REG_A4XX_RBBM_PERFCTR_RBBM_2_LO                                0x000000b0
 
-#define REG_A4XX_RBBM_CLOCK_DELAY_HLSQ                         0x0000008c
+#define REG_A4XX_RBBM_PERFCTR_RBBM_2_HI                                0x000000b1
 
-#define REG_A4XX_RBBM_CLOCK_DELAY_COM_DCOM                     0x0000008d
+#define REG_A4XX_RBBM_PERFCTR_RBBM_3_LO                                0x000000b2
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1(uint32_t i0) { return 0x0000008e + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_RBBM_3_HI                                0x000000b3
 
-static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_REG(uint32_t i0) { return 0x0000008e + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_PC_0_LO                          0x000000b4
 
-#define REG_A4XX_RBBM_PERFCTR_PWR_1_LO                         0x00000168
+#define REG_A4XX_RBBM_PERFCTR_PC_0_HI                          0x000000b5
 
-#define REG_A4XX_RBBM_PERFCTR_CTL                              0x00000170
+#define REG_A4XX_RBBM_PERFCTR_PC_1_LO                          0x000000b6
 
-#define REG_A4XX_RBBM_PERFCTR_LOAD_CMD0                                0x00000171
+#define REG_A4XX_RBBM_PERFCTR_PC_1_HI                          0x000000b7
 
-#define REG_A4XX_RBBM_PERFCTR_LOAD_CMD1                                0x00000172
+#define REG_A4XX_RBBM_PERFCTR_PC_2_LO                          0x000000b8
 
-#define REG_A4XX_RBBM_PERFCTR_LOAD_CMD2                                0x00000173
+#define REG_A4XX_RBBM_PERFCTR_PC_2_HI                          0x000000b9
 
-#define REG_A4XX_RBBM_PERFCTR_LOAD_VALUE_LO                    0x00000174
+#define REG_A4XX_RBBM_PERFCTR_PC_3_LO                          0x000000ba
 
-#define REG_A4XX_RBBM_PERFCTR_LOAD_VALUE_HI                    0x00000175
+#define REG_A4XX_RBBM_PERFCTR_PC_3_HI                          0x000000bb
 
-#define REG_A4XX_RBBM_GPU_BUSY_MASKED                          0x0000017a
+#define REG_A4XX_RBBM_PERFCTR_PC_4_LO                          0x000000bc
 
-#define REG_A4XX_RBBM_INT_0_STATUS                             0x0000017d
+#define REG_A4XX_RBBM_PERFCTR_PC_4_HI                          0x000000bd
 
-#define REG_A4XX_RBBM_CLOCK_STATUS                             0x00000182
+#define REG_A4XX_RBBM_PERFCTR_PC_5_LO                          0x000000be
 
-#define REG_A4XX_RBBM_AHB_STATUS                               0x00000189
+#define REG_A4XX_RBBM_PERFCTR_PC_5_HI                          0x000000bf
 
-#define REG_A4XX_RBBM_AHB_ME_SPLIT_STATUS                      0x0000018c
+#define REG_A4XX_RBBM_PERFCTR_PC_6_LO                          0x000000c0
 
-#define REG_A4XX_RBBM_AHB_PFP_SPLIT_STATUS                     0x0000018d
+#define REG_A4XX_RBBM_PERFCTR_PC_6_HI                          0x000000c1
 
-#define REG_A4XX_RBBM_AHB_ERROR_STATUS                         0x0000018f
+#define REG_A4XX_RBBM_PERFCTR_PC_7_LO                          0x000000c2
 
-#define REG_A4XX_RBBM_STATUS                                   0x00000191
-#define A4XX_RBBM_STATUS_HI_BUSY                               0x00000001
-#define A4XX_RBBM_STATUS_CP_ME_BUSY                            0x00000002
-#define A4XX_RBBM_STATUS_CP_PFP_BUSY                           0x00000004
-#define A4XX_RBBM_STATUS_CP_NRT_BUSY                           0x00004000
-#define A4XX_RBBM_STATUS_VBIF_BUSY                             0x00008000
-#define A4XX_RBBM_STATUS_TSE_BUSY                              0x00010000
-#define A4XX_RBBM_STATUS_RAS_BUSY                              0x00020000
-#define A4XX_RBBM_STATUS_RB_BUSY                               0x00040000
-#define A4XX_RBBM_STATUS_PC_DCALL_BUSY                         0x00080000
-#define A4XX_RBBM_STATUS_PC_VSD_BUSY                           0x00100000
-#define A4XX_RBBM_STATUS_VFD_BUSY                              0x00200000
-#define A4XX_RBBM_STATUS_VPC_BUSY                              0x00400000
-#define A4XX_RBBM_STATUS_UCHE_BUSY                             0x00800000
-#define A4XX_RBBM_STATUS_SP_BUSY                               0x01000000
-#define A4XX_RBBM_STATUS_TPL1_BUSY                             0x02000000
-#define A4XX_RBBM_STATUS_MARB_BUSY                             0x04000000
-#define A4XX_RBBM_STATUS_VSC_BUSY                              0x08000000
-#define A4XX_RBBM_STATUS_ARB_BUSY                              0x10000000
-#define A4XX_RBBM_STATUS_HLSQ_BUSY                             0x20000000
-#define A4XX_RBBM_STATUS_GPU_BUSY_NOHC                         0x40000000
-#define A4XX_RBBM_STATUS_GPU_BUSY                              0x80000000
+#define REG_A4XX_RBBM_PERFCTR_PC_7_HI                          0x000000c3
 
-#define REG_A4XX_RBBM_INTERFACE_RRDY_STATUS5                   0x0000019f
+#define REG_A4XX_RBBM_PERFCTR_VFD_0_LO                         0x000000c4
 
-#define REG_A4XX_CP_SCRATCH_UMASK                              0x00000228
+#define REG_A4XX_RBBM_PERFCTR_VFD_0_HI                         0x000000c5
 
-#define REG_A4XX_CP_SCRATCH_ADDR                               0x00000229
+#define REG_A4XX_RBBM_PERFCTR_VFD_1_LO                         0x000000c6
 
-#define REG_A4XX_CP_RB_BASE                                    0x00000200
+#define REG_A4XX_RBBM_PERFCTR_VFD_1_HI                         0x000000c7
 
-#define REG_A4XX_CP_RB_CNTL                                    0x00000201
+#define REG_A4XX_RBBM_PERFCTR_VFD_2_LO                         0x000000c8
 
-#define REG_A4XX_CP_RB_WPTR                                    0x00000205
+#define REG_A4XX_RBBM_PERFCTR_VFD_2_HI                         0x000000c9
 
-#define REG_A4XX_CP_RB_RPTR_ADDR                               0x00000203
+#define REG_A4XX_RBBM_PERFCTR_VFD_3_LO                         0x000000ca
 
-#define REG_A4XX_CP_RB_RPTR                                    0x00000204
+#define REG_A4XX_RBBM_PERFCTR_VFD_3_HI                         0x000000cb
 
-#define REG_A4XX_CP_IB1_BASE                                   0x00000206
+#define REG_A4XX_RBBM_PERFCTR_VFD_4_LO                         0x000000cc
 
-#define REG_A4XX_CP_IB1_BUFSZ                                  0x00000207
+#define REG_A4XX_RBBM_PERFCTR_VFD_4_HI                         0x000000cd
 
-#define REG_A4XX_CP_IB2_BASE                                   0x00000208
+#define REG_A4XX_RBBM_PERFCTR_VFD_5_LO                         0x000000ce
 
-#define REG_A4XX_CP_IB2_BUFSZ                                  0x00000209
+#define REG_A4XX_RBBM_PERFCTR_VFD_5_HI                         0x000000cf
 
-#define REG_A4XX_CP_ME_RB_DONE_DATA                            0x00000217
+#define REG_A4XX_RBBM_PERFCTR_VFD_6_LO                         0x000000d0
 
-#define REG_A4XX_CP_QUEUE_THRESH2                              0x00000219
+#define REG_A4XX_RBBM_PERFCTR_VFD_6_HI                         0x000000d1
 
-#define REG_A4XX_CP_MERCIU_SIZE                                        0x0000021b
+#define REG_A4XX_RBBM_PERFCTR_VFD_7_LO                         0x000000d2
 
-#define REG_A4XX_CP_ROQ_ADDR                                   0x0000021c
+#define REG_A4XX_RBBM_PERFCTR_VFD_7_HI                         0x000000d3
 
-#define REG_A4XX_CP_ROQ_DATA                                   0x0000021d
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_0_LO                                0x000000d4
 
-#define REG_A4XX_CP_MEQ_ADDR                                   0x0000021e
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_0_HI                                0x000000d5
 
-#define REG_A4XX_CP_MEQ_DATA                                   0x0000021f
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_1_LO                                0x000000d6
 
-#define REG_A4XX_CP_MERCIU_ADDR                                        0x00000220
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_1_HI                                0x000000d7
 
-#define REG_A4XX_CP_MERCIU_DATA                                        0x00000221
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_2_LO                                0x000000d8
 
-#define REG_A4XX_CP_MERCIU_DATA2                               0x00000222
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_2_HI                                0x000000d9
 
-#define REG_A4XX_CP_PFP_UCODE_ADDR                             0x00000223
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_3_LO                                0x000000da
 
-#define REG_A4XX_CP_PFP_UCODE_DATA                             0x00000224
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_3_HI                                0x000000db
 
-#define REG_A4XX_CP_ME_RAM_WADDR                               0x00000225
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_4_LO                                0x000000dc
 
-#define REG_A4XX_CP_ME_RAM_RADDR                               0x00000226
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_4_HI                                0x000000dd
 
-#define REG_A4XX_CP_ME_RAM_DATA                                        0x00000227
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_5_LO                                0x000000de
 
-#define REG_A4XX_CP_PREEMPT                                    0x0000022a
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_5_HI                                0x000000df
 
-#define REG_A4XX_CP_CNTL                                       0x0000022c
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_6_LO                                0x000000e0
 
-#define REG_A4XX_CP_ME_CNTL                                    0x0000022d
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_6_HI                                0x000000e1
 
-#define REG_A4XX_CP_DEBUG                                      0x0000022e
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_7_LO                                0x000000e2
 
-#define REG_A4XX_CP_DEBUG_ECO_CONTROL                          0x00000231
+#define REG_A4XX_RBBM_PERFCTR_HLSQ_7_HI                                0x000000e3
 
-#define REG_A4XX_CP_DRAW_STATE_ADDR                            0x00000232
+#define REG_A4XX_RBBM_PERFCTR_VPC_0_LO                         0x000000e4
 
-#define REG_A4XX_CP_PROTECT_REG_0                              0x00000240
+#define REG_A4XX_RBBM_PERFCTR_VPC_0_HI                         0x000000e5
 
-static inline uint32_t REG_A4XX_CP_PROTECT(uint32_t i0) { return 0x00000240 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_VPC_1_LO                         0x000000e6
 
-static inline uint32_t REG_A4XX_CP_PROTECT_REG(uint32_t i0) { return 0x00000240 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_VPC_1_HI                         0x000000e7
 
-#define REG_A4XX_CP_PROTECT_CTRL                               0x00000250
+#define REG_A4XX_RBBM_PERFCTR_VPC_2_LO                         0x000000e8
 
-#define REG_A4XX_CP_ST_BASE                                    0x000004c0
+#define REG_A4XX_RBBM_PERFCTR_VPC_2_HI                         0x000000e9
 
-#define REG_A4XX_CP_STQ_AVAIL                                  0x000004ce
+#define REG_A4XX_RBBM_PERFCTR_VPC_3_LO                         0x000000ea
 
-#define REG_A4XX_CP_MERCIU_STAT                                        0x000004d0
+#define REG_A4XX_RBBM_PERFCTR_VPC_3_HI                         0x000000eb
 
-#define REG_A4XX_CP_WFI_PEND_CTR                               0x000004d2
+#define REG_A4XX_RBBM_PERFCTR_CCU_0_LO                         0x000000ec
 
-#define REG_A4XX_CP_HW_FAULT                                   0x000004d8
+#define REG_A4XX_RBBM_PERFCTR_CCU_0_HI                         0x000000ed
 
-#define REG_A4XX_CP_PROTECT_STATUS                             0x000004da
+#define REG_A4XX_RBBM_PERFCTR_CCU_1_LO                         0x000000ee
 
-#define REG_A4XX_CP_EVENTS_IN_FLIGHT                           0x000004dd
+#define REG_A4XX_RBBM_PERFCTR_CCU_1_HI                         0x000000ef
 
-#define REG_A4XX_CP_PERFCTR_CP_SEL_0                           0x00000500
+#define REG_A4XX_RBBM_PERFCTR_CCU_2_LO                         0x000000f0
 
-#define REG_A4XX_CP_PERFCOMBINER_SELECT                                0x0000050b
+#define REG_A4XX_RBBM_PERFCTR_CCU_2_HI                         0x000000f1
 
-static inline uint32_t REG_A4XX_CP_SCRATCH(uint32_t i0) { return 0x00000578 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CCU_3_LO                         0x000000f2
 
-static inline uint32_t REG_A4XX_CP_SCRATCH_REG(uint32_t i0) { return 0x00000578 + 0x1*i0; }
+#define REG_A4XX_RBBM_PERFCTR_CCU_3_HI                         0x000000f3
 
-#define REG_A4XX_SP_VS_STATUS                                  0x00000ec0
+#define REG_A4XX_RBBM_PERFCTR_TSE_0_LO                         0x000000f4
 
-#define REG_A4XX_SP_PERFCTR_SP_SEL_11                          0x00000ecf
+#define REG_A4XX_RBBM_PERFCTR_TSE_0_HI                         0x000000f5
 
-#define REG_A4XX_SP_SP_CTRL_REG                                        0x000022c0
-#define A4XX_SP_SP_CTRL_REG_BINNING_PASS                       0x00080000
+#define REG_A4XX_RBBM_PERFCTR_TSE_1_LO                         0x000000f6
 
-#define REG_A4XX_SP_INSTR_CACHE_CTRL                           0x000022c1
+#define REG_A4XX_RBBM_PERFCTR_TSE_1_HI                         0x000000f7
 
-#define REG_A4XX_SP_VS_CTRL_REG0                               0x000022c4
-#define A4XX_SP_VS_CTRL_REG0_THREADMODE__MASK                  0x00000001
-#define A4XX_SP_VS_CTRL_REG0_THREADMODE__SHIFT                 0
-static inline uint32_t A4XX_SP_VS_CTRL_REG0_THREADMODE(enum a3xx_threadmode val)
-{
-       return ((val) << A4XX_SP_VS_CTRL_REG0_THREADMODE__SHIFT) & A4XX_SP_VS_CTRL_REG0_THREADMODE__MASK;
-}
-#define A4XX_SP_VS_CTRL_REG0_VARYING                           0x00000002
-#define A4XX_SP_VS_CTRL_REG0_CACHEINVALID                      0x00000004
-#define A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT__MASK            0x000003f0
-#define A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT__SHIFT           4
-static inline uint32_t A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT(uint32_t val)
-{
-       return ((val) << A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT__SHIFT) & A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT__MASK;
-}
-#define A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT__MASK            0x0003fc00
-#define A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT__SHIFT           10
-static inline uint32_t A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT(uint32_t val)
-{
-       return ((val) << A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT__SHIFT) & A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT__MASK;
-}
-#define A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP__MASK             0x000c0000
-#define A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP__SHIFT            18
-static inline uint32_t A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP(uint32_t val)
-{
-       return ((val) << A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP__SHIFT) & A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP__MASK;
-}
-#define A4XX_SP_VS_CTRL_REG0_THREADSIZE__MASK                  0x00100000
-#define A4XX_SP_VS_CTRL_REG0_THREADSIZE__SHIFT                 20
-static inline uint32_t A4XX_SP_VS_CTRL_REG0_THREADSIZE(enum a3xx_threadsize val)
+#define REG_A4XX_RBBM_PERFCTR_TSE_2_LO                         0x000000f8
+
+#define REG_A4XX_RBBM_PERFCTR_TSE_2_HI                         0x000000f9
+
+#define REG_A4XX_RBBM_PERFCTR_TSE_3_LO                         0x000000fa
+
+#define REG_A4XX_RBBM_PERFCTR_TSE_3_HI                         0x000000fb
+
+#define REG_A4XX_RBBM_PERFCTR_RAS_0_LO                         0x000000fc
+
+#define REG_A4XX_RBBM_PERFCTR_RAS_0_HI                         0x000000fd
+
+#define REG_A4XX_RBBM_PERFCTR_RAS_1_LO                         0x000000fe
+
+#define REG_A4XX_RBBM_PERFCTR_RAS_1_HI                         0x000000ff
+
+#define REG_A4XX_RBBM_PERFCTR_RAS_2_LO                         0x00000100
+
+#define REG_A4XX_RBBM_PERFCTR_RAS_2_HI                         0x00000101
+
+#define REG_A4XX_RBBM_PERFCTR_RAS_3_LO                         0x00000102
+
+#define REG_A4XX_RBBM_PERFCTR_RAS_3_HI                         0x00000103
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_0_LO                                0x00000104
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_0_HI                                0x00000105
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_1_LO                                0x00000106
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_1_HI                                0x00000107
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_2_LO                                0x00000108
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_2_HI                                0x00000109
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_3_LO                                0x0000010a
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_3_HI                                0x0000010b
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_4_LO                                0x0000010c
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_4_HI                                0x0000010d
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_5_LO                                0x0000010e
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_5_HI                                0x0000010f
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_6_LO                                0x00000110
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_6_HI                                0x00000111
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_7_LO                                0x00000112
+
+#define REG_A4XX_RBBM_PERFCTR_UCHE_7_HI                                0x00000113
+
+#define REG_A4XX_RBBM_PERFCTR_TP_0_LO                          0x00000114
+
+#define REG_A4XX_RBBM_PERFCTR_TP_0_HI                          0x00000115
+
+#define REG_A4XX_RBBM_PERFCTR_TP_0_LO                          0x00000114
+
+#define REG_A4XX_RBBM_PERFCTR_TP_0_HI                          0x00000115
+
+#define REG_A4XX_RBBM_PERFCTR_TP_1_LO                          0x00000116
+
+#define REG_A4XX_RBBM_PERFCTR_TP_1_HI                          0x00000117
+
+#define REG_A4XX_RBBM_PERFCTR_TP_2_LO                          0x00000118
+
+#define REG_A4XX_RBBM_PERFCTR_TP_2_HI                          0x00000119
+
+#define REG_A4XX_RBBM_PERFCTR_TP_3_LO                          0x0000011a
+
+#define REG_A4XX_RBBM_PERFCTR_TP_3_HI                          0x0000011b
+
+#define REG_A4XX_RBBM_PERFCTR_TP_4_LO                          0x0000011c
+
+#define REG_A4XX_RBBM_PERFCTR_TP_4_HI                          0x0000011d
+
+#define REG_A4XX_RBBM_PERFCTR_TP_5_LO                          0x0000011e
+
+#define REG_A4XX_RBBM_PERFCTR_TP_5_HI                          0x0000011f
+
+#define REG_A4XX_RBBM_PERFCTR_TP_6_LO                          0x00000120
+
+#define REG_A4XX_RBBM_PERFCTR_TP_6_HI                          0x00000121
+
+#define REG_A4XX_RBBM_PERFCTR_TP_7_LO                          0x00000122
+
+#define REG_A4XX_RBBM_PERFCTR_TP_7_HI                          0x00000123
+
+#define REG_A4XX_RBBM_PERFCTR_SP_0_LO                          0x00000124
+
+#define REG_A4XX_RBBM_PERFCTR_SP_0_HI                          0x00000125
+
+#define REG_A4XX_RBBM_PERFCTR_SP_1_LO                          0x00000126
+
+#define REG_A4XX_RBBM_PERFCTR_SP_1_HI                          0x00000127
+
+#define REG_A4XX_RBBM_PERFCTR_SP_2_LO                          0x00000128
+
+#define REG_A4XX_RBBM_PERFCTR_SP_2_HI                          0x00000129
+
+#define REG_A4XX_RBBM_PERFCTR_SP_3_LO                          0x0000012a
+
+#define REG_A4XX_RBBM_PERFCTR_SP_3_HI                          0x0000012b
+
+#define REG_A4XX_RBBM_PERFCTR_SP_4_LO                          0x0000012c
+
+#define REG_A4XX_RBBM_PERFCTR_SP_4_HI                          0x0000012d
+
+#define REG_A4XX_RBBM_PERFCTR_SP_5_LO                          0x0000012e
+
+#define REG_A4XX_RBBM_PERFCTR_SP_5_HI                          0x0000012f
+
+#define REG_A4XX_RBBM_PERFCTR_SP_6_LO                          0x00000130
+
+#define REG_A4XX_RBBM_PERFCTR_SP_6_HI                          0x00000131
+
+#define REG_A4XX_RBBM_PERFCTR_SP_7_LO                          0x00000132
+
+#define REG_A4XX_RBBM_PERFCTR_SP_7_HI                          0x00000133
+
+#define REG_A4XX_RBBM_PERFCTR_SP_8_LO                          0x00000134
+
+#define REG_A4XX_RBBM_PERFCTR_SP_8_HI                          0x00000135
+
+#define REG_A4XX_RBBM_PERFCTR_SP_9_LO                          0x00000136
+
+#define REG_A4XX_RBBM_PERFCTR_SP_9_HI                          0x00000137
+
+#define REG_A4XX_RBBM_PERFCTR_SP_10_LO                         0x00000138
+
+#define REG_A4XX_RBBM_PERFCTR_SP_10_HI                         0x00000139
+
+#define REG_A4XX_RBBM_PERFCTR_SP_11_LO                         0x0000013a
+
+#define REG_A4XX_RBBM_PERFCTR_SP_11_HI                         0x0000013b
+
+#define REG_A4XX_RBBM_PERFCTR_RB_0_LO                          0x0000013c
+
+#define REG_A4XX_RBBM_PERFCTR_RB_0_HI                          0x0000013d
+
+#define REG_A4XX_RBBM_PERFCTR_RB_1_LO                          0x0000013e
+
+#define REG_A4XX_RBBM_PERFCTR_RB_1_HI                          0x0000013f
+
+#define REG_A4XX_RBBM_PERFCTR_RB_2_LO                          0x00000140
+
+#define REG_A4XX_RBBM_PERFCTR_RB_2_HI                          0x00000141
+
+#define REG_A4XX_RBBM_PERFCTR_RB_3_LO                          0x00000142
+
+#define REG_A4XX_RBBM_PERFCTR_RB_3_HI                          0x00000143
+
+#define REG_A4XX_RBBM_PERFCTR_RB_4_LO                          0x00000144
+
+#define REG_A4XX_RBBM_PERFCTR_RB_4_HI                          0x00000145
+
+#define REG_A4XX_RBBM_PERFCTR_RB_5_LO                          0x00000146
+
+#define REG_A4XX_RBBM_PERFCTR_RB_5_HI                          0x00000147
+
+#define REG_A4XX_RBBM_PERFCTR_RB_6_LO                          0x00000148
+
+#define REG_A4XX_RBBM_PERFCTR_RB_6_HI                          0x00000149
+
+#define REG_A4XX_RBBM_PERFCTR_RB_7_LO                          0x0000014a
+
+#define REG_A4XX_RBBM_PERFCTR_RB_7_HI                          0x0000014b
+
+#define REG_A4XX_RBBM_PERFCTR_VSC_0_LO                         0x0000014c
+
+#define REG_A4XX_RBBM_PERFCTR_VSC_0_HI                         0x0000014d
+
+#define REG_A4XX_RBBM_PERFCTR_VSC_1_LO                         0x0000014e
+
+#define REG_A4XX_RBBM_PERFCTR_VSC_1_HI                         0x0000014f
+
+#define REG_A4XX_RBBM_PERFCTR_PWR_0_LO                         0x00000166
+
+#define REG_A4XX_RBBM_PERFCTR_PWR_0_HI                         0x00000167
+
+#define REG_A4XX_RBBM_PERFCTR_PWR_1_LO                         0x00000168
+
+#define REG_A4XX_RBBM_PERFCTR_PWR_1_HI                         0x00000169
+
+#define REG_A4XX_RBBM_ALWAYSON_COUNTER_LO                      0x0000016e
+
+#define REG_A4XX_RBBM_ALWAYSON_COUNTER_HI                      0x0000016f
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_SP(uint32_t i0) { return 0x00000068 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_SP_REG(uint32_t i0) { return 0x00000068 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL2_SP(uint32_t i0) { return 0x0000006c + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL2_SP_REG(uint32_t i0) { return 0x0000006c + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_HYST_SP(uint32_t i0) { return 0x00000070 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_HYST_SP_REG(uint32_t i0) { return 0x00000070 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_SP(uint32_t i0) { return 0x00000074 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_SP_REG(uint32_t i0) { return 0x00000074 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_RB(uint32_t i0) { return 0x00000078 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_RB_REG(uint32_t i0) { return 0x00000078 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL2_RB(uint32_t i0) { return 0x0000007c + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL2_RB_REG(uint32_t i0) { return 0x0000007c + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_MARB_CCU(uint32_t i0) { return 0x00000082 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_CTL_MARB_CCU_REG(uint32_t i0) { return 0x00000082 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU(uint32_t i0) { return 0x00000086 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU_REG(uint32_t i0) { return 0x00000086 + 0x1*i0; }
+
+#define REG_A4XX_RBBM_CLOCK_HYST_COM_DCOM                      0x00000080
+
+#define REG_A4XX_RBBM_CLOCK_CTL_COM_DCOM                       0x00000081
+
+#define REG_A4XX_RBBM_CLOCK_CTL_HLSQ                           0x0000008a
+
+#define REG_A4XX_RBBM_CLOCK_HYST_HLSQ                          0x0000008b
+
+#define REG_A4XX_RBBM_CLOCK_DELAY_HLSQ                         0x0000008c
+
+#define REG_A4XX_RBBM_CLOCK_DELAY_COM_DCOM                     0x0000008d
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1(uint32_t i0) { return 0x0000008e + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_REG(uint32_t i0) { return 0x0000008e + 0x1*i0; }
+
+#define REG_A4XX_RBBM_SP_REGFILE_SLEEP_CNTL_0                  0x00000099
+
+#define REG_A4XX_RBBM_SP_REGFILE_SLEEP_CNTL_1                  0x0000009a
+
+#define REG_A4XX_RBBM_PERFCTR_PWR_1_LO                         0x00000168
+
+#define REG_A4XX_RBBM_PERFCTR_CTL                              0x00000170
+
+#define REG_A4XX_RBBM_PERFCTR_LOAD_CMD0                                0x00000171
+
+#define REG_A4XX_RBBM_PERFCTR_LOAD_CMD1                                0x00000172
+
+#define REG_A4XX_RBBM_PERFCTR_LOAD_CMD2                                0x00000173
+
+#define REG_A4XX_RBBM_PERFCTR_LOAD_VALUE_LO                    0x00000174
+
+#define REG_A4XX_RBBM_PERFCTR_LOAD_VALUE_HI                    0x00000175
+
+#define REG_A4XX_RBBM_PERFCTR_RBBM_SEL_0                       0x00000176
+
+#define REG_A4XX_RBBM_PERFCTR_RBBM_SEL_1                       0x00000177
+
+#define REG_A4XX_RBBM_PERFCTR_RBBM_SEL_2                       0x00000178
+
+#define REG_A4XX_RBBM_PERFCTR_RBBM_SEL_3                       0x00000179
+
+#define REG_A4XX_RBBM_GPU_BUSY_MASKED                          0x0000017a
+
+#define REG_A4XX_RBBM_INT_0_STATUS                             0x0000017d
+
+#define REG_A4XX_RBBM_CLOCK_STATUS                             0x00000182
+
+#define REG_A4XX_RBBM_AHB_STATUS                               0x00000189
+
+#define REG_A4XX_RBBM_AHB_ME_SPLIT_STATUS                      0x0000018c
+
+#define REG_A4XX_RBBM_AHB_PFP_SPLIT_STATUS                     0x0000018d
+
+#define REG_A4XX_RBBM_AHB_ERROR_STATUS                         0x0000018f
+
+#define REG_A4XX_RBBM_STATUS                                   0x00000191
+#define A4XX_RBBM_STATUS_HI_BUSY                               0x00000001
+#define A4XX_RBBM_STATUS_CP_ME_BUSY                            0x00000002
+#define A4XX_RBBM_STATUS_CP_PFP_BUSY                           0x00000004
+#define A4XX_RBBM_STATUS_CP_NRT_BUSY                           0x00004000
+#define A4XX_RBBM_STATUS_VBIF_BUSY                             0x00008000
+#define A4XX_RBBM_STATUS_TSE_BUSY                              0x00010000
+#define A4XX_RBBM_STATUS_RAS_BUSY                              0x00020000
+#define A4XX_RBBM_STATUS_RB_BUSY                               0x00040000
+#define A4XX_RBBM_STATUS_PC_DCALL_BUSY                         0x00080000
+#define A4XX_RBBM_STATUS_PC_VSD_BUSY                           0x00100000
+#define A4XX_RBBM_STATUS_VFD_BUSY                              0x00200000
+#define A4XX_RBBM_STATUS_VPC_BUSY                              0x00400000
+#define A4XX_RBBM_STATUS_UCHE_BUSY                             0x00800000
+#define A4XX_RBBM_STATUS_SP_BUSY                               0x01000000
+#define A4XX_RBBM_STATUS_TPL1_BUSY                             0x02000000
+#define A4XX_RBBM_STATUS_MARB_BUSY                             0x04000000
+#define A4XX_RBBM_STATUS_VSC_BUSY                              0x08000000
+#define A4XX_RBBM_STATUS_ARB_BUSY                              0x10000000
+#define A4XX_RBBM_STATUS_HLSQ_BUSY                             0x20000000
+#define A4XX_RBBM_STATUS_GPU_BUSY_NOHC                         0x40000000
+#define A4XX_RBBM_STATUS_GPU_BUSY                              0x80000000
+
+#define REG_A4XX_RBBM_INTERFACE_RRDY_STATUS5                   0x0000019f
+
+#define REG_A4XX_RBBM_POWER_STATUS                             0x000001b0
+#define A4XX_RBBM_POWER_STATUS_SP_TP_PWR_ON                    0x00100000
+
+#define REG_A4XX_RBBM_WAIT_IDLE_CLOCKS_CTL2                    0x000001b8
+
+#define REG_A4XX_CP_SCRATCH_UMASK                              0x00000228
+
+#define REG_A4XX_CP_SCRATCH_ADDR                               0x00000229
+
+#define REG_A4XX_CP_RB_BASE                                    0x00000200
+
+#define REG_A4XX_CP_RB_CNTL                                    0x00000201
+
+#define REG_A4XX_CP_RB_WPTR                                    0x00000205
+
+#define REG_A4XX_CP_RB_RPTR_ADDR                               0x00000203
+
+#define REG_A4XX_CP_RB_RPTR                                    0x00000204
+
+#define REG_A4XX_CP_IB1_BASE                                   0x00000206
+
+#define REG_A4XX_CP_IB1_BUFSZ                                  0x00000207
+
+#define REG_A4XX_CP_IB2_BASE                                   0x00000208
+
+#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
+
+#define REG_A4XX_CP_MERCIU_SIZE                                        0x0000021b
+
+#define REG_A4XX_CP_ROQ_ADDR                                   0x0000021c
+
+#define REG_A4XX_CP_ROQ_DATA                                   0x0000021d
+
+#define REG_A4XX_CP_MEQ_ADDR                                   0x0000021e
+
+#define REG_A4XX_CP_MEQ_DATA                                   0x0000021f
+
+#define REG_A4XX_CP_MERCIU_ADDR                                        0x00000220
+
+#define REG_A4XX_CP_MERCIU_DATA                                        0x00000221
+
+#define REG_A4XX_CP_MERCIU_DATA2                               0x00000222
+
+#define REG_A4XX_CP_PFP_UCODE_ADDR                             0x00000223
+
+#define REG_A4XX_CP_PFP_UCODE_DATA                             0x00000224
+
+#define REG_A4XX_CP_ME_RAM_WADDR                               0x00000225
+
+#define REG_A4XX_CP_ME_RAM_RADDR                               0x00000226
+
+#define REG_A4XX_CP_ME_RAM_DATA                                        0x00000227
+
+#define REG_A4XX_CP_PREEMPT                                    0x0000022a
+
+#define REG_A4XX_CP_CNTL                                       0x0000022c
+
+#define REG_A4XX_CP_ME_CNTL                                    0x0000022d
+
+#define REG_A4XX_CP_DEBUG                                      0x0000022e
+
+#define REG_A4XX_CP_DEBUG_ECO_CONTROL                          0x00000231
+
+#define REG_A4XX_CP_DRAW_STATE_ADDR                            0x00000232
+
+static inline uint32_t REG_A4XX_CP_PROTECT(uint32_t i0) { return 0x00000240 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_CP_PROTECT_REG(uint32_t i0) { return 0x00000240 + 0x1*i0; }
+#define A4XX_CP_PROTECT_REG_BASE_ADDR__MASK                    0x0001ffff
+#define A4XX_CP_PROTECT_REG_BASE_ADDR__SHIFT                   0
+static inline uint32_t A4XX_CP_PROTECT_REG_BASE_ADDR(uint32_t val)
+{
+       return ((val) << A4XX_CP_PROTECT_REG_BASE_ADDR__SHIFT) & A4XX_CP_PROTECT_REG_BASE_ADDR__MASK;
+}
+#define A4XX_CP_PROTECT_REG_MASK_LEN__MASK                     0x1f000000
+#define A4XX_CP_PROTECT_REG_MASK_LEN__SHIFT                    24
+static inline uint32_t A4XX_CP_PROTECT_REG_MASK_LEN(uint32_t val)
+{
+       return ((val) << A4XX_CP_PROTECT_REG_MASK_LEN__SHIFT) & A4XX_CP_PROTECT_REG_MASK_LEN__MASK;
+}
+#define A4XX_CP_PROTECT_REG_TRAP_WRITE                         0x20000000
+#define A4XX_CP_PROTECT_REG_TRAP_READ                          0x40000000
+
+#define REG_A4XX_CP_PROTECT_CTRL                               0x00000250
+
+#define REG_A4XX_CP_ST_BASE                                    0x000004c0
+
+#define REG_A4XX_CP_STQ_AVAIL                                  0x000004ce
+
+#define REG_A4XX_CP_MERCIU_STAT                                        0x000004d0
+
+#define REG_A4XX_CP_WFI_PEND_CTR                               0x000004d2
+
+#define REG_A4XX_CP_HW_FAULT                                   0x000004d8
+
+#define REG_A4XX_CP_PROTECT_STATUS                             0x000004da
+
+#define REG_A4XX_CP_EVENTS_IN_FLIGHT                           0x000004dd
+
+#define REG_A4XX_CP_PERFCTR_CP_SEL_0                           0x00000500
+
+#define REG_A4XX_CP_PERFCTR_CP_SEL_1                           0x00000501
+
+#define REG_A4XX_CP_PERFCTR_CP_SEL_2                           0x00000502
+
+#define REG_A4XX_CP_PERFCTR_CP_SEL_3                           0x00000503
+
+#define REG_A4XX_CP_PERFCTR_CP_SEL_4                           0x00000504
+
+#define REG_A4XX_CP_PERFCTR_CP_SEL_5                           0x00000505
+
+#define REG_A4XX_CP_PERFCTR_CP_SEL_6                           0x00000506
+
+#define REG_A4XX_CP_PERFCTR_CP_SEL_7                           0x00000507
+
+#define REG_A4XX_CP_PERFCOMBINER_SELECT                                0x0000050b
+
+static inline uint32_t REG_A4XX_CP_SCRATCH(uint32_t i0) { return 0x00000578 + 0x1*i0; }
+
+static inline uint32_t REG_A4XX_CP_SCRATCH_REG(uint32_t i0) { return 0x00000578 + 0x1*i0; }
+
+#define REG_A4XX_SP_VS_STATUS                                  0x00000ec0
+
+#define REG_A4XX_SP_MODE_CONTROL                               0x00000ec3
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_0                           0x00000ec4
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_1                           0x00000ec5
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_2                           0x00000ec6
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_3                           0x00000ec7
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_4                           0x00000ec8
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_5                           0x00000ec9
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_6                           0x00000eca
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_7                           0x00000ecb
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_8                           0x00000ecc
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_9                           0x00000ecd
+
+#define REG_A4XX_SP_PERFCTR_SP_SEL_10                          0x00000ece
+
+#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
+#define A4XX_SP_VS_CTRL_REG0_THREADMODE__SHIFT                 0
+static inline uint32_t A4XX_SP_VS_CTRL_REG0_THREADMODE(enum a3xx_threadmode val)
+{
+       return ((val) << A4XX_SP_VS_CTRL_REG0_THREADMODE__SHIFT) & A4XX_SP_VS_CTRL_REG0_THREADMODE__MASK;
+}
+#define A4XX_SP_VS_CTRL_REG0_VARYING                           0x00000002
+#define A4XX_SP_VS_CTRL_REG0_CACHEINVALID                      0x00000004
+#define A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT__MASK            0x000003f0
+#define A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT__SHIFT           4
+static inline uint32_t A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT(uint32_t val)
+{
+       return ((val) << A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT__SHIFT) & A4XX_SP_VS_CTRL_REG0_HALFREGFOOTPRINT__MASK;
+}
+#define A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT__MASK            0x0000fc00
+#define A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT__SHIFT           10
+static inline uint32_t A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT(uint32_t val)
+{
+       return ((val) << A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT__SHIFT) & A4XX_SP_VS_CTRL_REG0_FULLREGFOOTPRINT__MASK;
+}
+#define A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP__MASK             0x000c0000
+#define A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP__SHIFT            18
+static inline uint32_t A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP(uint32_t val)
+{
+       return ((val) << A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP__SHIFT) & A4XX_SP_VS_CTRL_REG0_INOUTREGOVERLAP__MASK;
+}
+#define A4XX_SP_VS_CTRL_REG0_THREADSIZE__MASK                  0x00100000
+#define A4XX_SP_VS_CTRL_REG0_THREADSIZE__SHIFT                 20
+static inline uint32_t A4XX_SP_VS_CTRL_REG0_THREADSIZE(enum a3xx_threadsize val)
 {
        return ((val) << A4XX_SP_VS_CTRL_REG0_THREADSIZE__SHIFT) & A4XX_SP_VS_CTRL_REG0_THREADSIZE__MASK;
 }
@@ -1094,7 +2462,7 @@ static inline uint32_t A4XX_SP_FS_CTRL_REG0_HALFREGFOOTPRINT(uint32_t val)
 {
        return ((val) << A4XX_SP_FS_CTRL_REG0_HALFREGFOOTPRINT__SHIFT) & A4XX_SP_FS_CTRL_REG0_HALFREGFOOTPRINT__MASK;
 }
-#define A4XX_SP_FS_CTRL_REG0_FULLREGFOOTPRINT__MASK            0x0003fc00
+#define A4XX_SP_FS_CTRL_REG0_FULLREGFOOTPRINT__MASK            0x0000fc00
 #define A4XX_SP_FS_CTRL_REG0_FULLREGFOOTPRINT__SHIFT           10
 static inline uint32_t A4XX_SP_FS_CTRL_REG0_FULLREGFOOTPRINT(uint32_t val)
 {
@@ -1122,7 +2490,9 @@ static inline uint32_t A4XX_SP_FS_CTRL_REG1_CONSTLENGTH(uint32_t val)
 {
        return ((val) << A4XX_SP_FS_CTRL_REG1_CONSTLENGTH__SHIFT) & A4XX_SP_FS_CTRL_REG1_CONSTLENGTH__MASK;
 }
+#define A4XX_SP_FS_CTRL_REG1_FACENESS                          0x00080000
 #define A4XX_SP_FS_CTRL_REG1_VARYING                           0x00100000
+#define A4XX_SP_FS_CTRL_REG1_FRAGCOORD                         0x00200000
 
 #define REG_A4XX_SP_FS_OBJ_OFFSET_REG                          0x000022ea
 #define A4XX_SP_FS_OBJ_OFFSET_REG_CONSTOBJECTOFFSET__MASK      0x01ff0000
@@ -1147,6 +2517,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
@@ -1154,6 +2530,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; }
 
@@ -1171,6 +2553,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
@@ -1186,6 +2583,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
@@ -1200,6 +2675,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
@@ -1214,6 +2773,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
@@ -1222,6 +2787,12 @@ static inline uint32_t A4XX_SP_GS_OBJ_OFFSET_REG_SHADEROBJOFFSET(uint32_t val)
 
 #define REG_A4XX_VPC_DEBUG_ECO_CONTROL                         0x00000e64
 
+#define REG_A4XX_VPC_PERFCTR_VPC_SEL_0                         0x00000e65
+
+#define REG_A4XX_VPC_PERFCTR_VPC_SEL_1                         0x00000e66
+
+#define REG_A4XX_VPC_PERFCTR_VPC_SEL_2                         0x00000e67
+
 #define REG_A4XX_VPC_PERFCTR_VPC_SEL_3                         0x00000e68
 
 #define REG_A4XX_VPC_ATTR                                      0x00002140
@@ -1275,12 +2846,14 @@ static inline uint32_t REG_A4XX_VPC_VARYING_PS_REPL_MODE(uint32_t i0) { return 0
 #define A4XX_VSC_BIN_SIZE_WIDTH__SHIFT                         0
 static inline uint32_t A4XX_VSC_BIN_SIZE_WIDTH(uint32_t val)
 {
+       assert(!(val & 0x1f));
        return ((val >> 5) << A4XX_VSC_BIN_SIZE_WIDTH__SHIFT) & A4XX_VSC_BIN_SIZE_WIDTH__MASK;
 }
 #define A4XX_VSC_BIN_SIZE_HEIGHT__MASK                         0x000003e0
 #define A4XX_VSC_BIN_SIZE_HEIGHT__SHIFT                                5
 static inline uint32_t A4XX_VSC_BIN_SIZE_HEIGHT(uint32_t val)
 {
+       assert(!(val & 0x1f));
        return ((val >> 5) << A4XX_VSC_BIN_SIZE_HEIGHT__SHIFT) & A4XX_VSC_BIN_SIZE_HEIGHT__MASK;
 }
 
@@ -1334,8 +2907,26 @@ static inline uint32_t REG_A4XX_VSC_PIPE_DATA_LENGTH_REG(uint32_t i0) { return 0
 
 #define REG_A4XX_VFD_DEBUG_CONTROL                             0x00000e40
 
+#define REG_A4XX_VFD_PERFCTR_VFD_SEL_0                         0x00000e43
+
+#define REG_A4XX_VFD_PERFCTR_VFD_SEL_1                         0x00000e44
+
+#define REG_A4XX_VFD_PERFCTR_VFD_SEL_2                         0x00000e45
+
+#define REG_A4XX_VFD_PERFCTR_VFD_SEL_3                         0x00000e46
+
+#define REG_A4XX_VFD_PERFCTR_VFD_SEL_4                         0x00000e47
+
+#define REG_A4XX_VFD_PERFCTR_VFD_SEL_5                         0x00000e48
+
+#define REG_A4XX_VFD_PERFCTR_VFD_SEL_6                         0x00000e49
+
 #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
@@ -1385,6 +2976,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
 
@@ -1406,24 +3015,25 @@ 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; }
 
 static inline uint32_t REG_A4XX_VFD_FETCH_INSTR_2(uint32_t i0) { return 0x0000220c + 0x4*i0; }
-#define A4XX_VFD_FETCH_INSTR_2_SIZE__MASK                      0xfffffff0
-#define A4XX_VFD_FETCH_INSTR_2_SIZE__SHIFT                     4
+#define A4XX_VFD_FETCH_INSTR_2_SIZE__MASK                      0xffffffff
+#define A4XX_VFD_FETCH_INSTR_2_SIZE__SHIFT                     0
 static inline uint32_t A4XX_VFD_FETCH_INSTR_2_SIZE(uint32_t val)
 {
-       return ((val >> 4) << A4XX_VFD_FETCH_INSTR_2_SIZE__SHIFT) & A4XX_VFD_FETCH_INSTR_2_SIZE__MASK;
+       return ((val) << A4XX_VFD_FETCH_INSTR_2_SIZE__SHIFT) & A4XX_VFD_FETCH_INSTR_2_SIZE__MASK;
 }
 
 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; }
 
@@ -1447,26 +3057,85 @@ static inline uint32_t A4XX_VFD_DECODE_INSTR_REGID(uint32_t val)
 {
        return ((val) << A4XX_VFD_DECODE_INSTR_REGID__SHIFT) & A4XX_VFD_DECODE_INSTR_REGID__MASK;
 }
+#define A4XX_VFD_DECODE_INSTR_INT                              0x00100000
 #define A4XX_VFD_DECODE_INSTR_SWAP__MASK                       0x00c00000
 #define A4XX_VFD_DECODE_INSTR_SWAP__SHIFT                      22
 static inline uint32_t A4XX_VFD_DECODE_INSTR_SWAP(enum a3xx_color_swap val)
 {
-       return ((val) << A4XX_VFD_DECODE_INSTR_SWAP__SHIFT) & A4XX_VFD_DECODE_INSTR_SWAP__MASK;
+       return ((val) << A4XX_VFD_DECODE_INSTR_SWAP__SHIFT) & A4XX_VFD_DECODE_INSTR_SWAP__MASK;
+}
+#define A4XX_VFD_DECODE_INSTR_SHIFTCNT__MASK                   0x1f000000
+#define A4XX_VFD_DECODE_INSTR_SHIFTCNT__SHIFT                  24
+static inline uint32_t A4XX_VFD_DECODE_INSTR_SHIFTCNT(uint32_t val)
+{
+       return ((val) << A4XX_VFD_DECODE_INSTR_SHIFTCNT__SHIFT) & A4XX_VFD_DECODE_INSTR_SHIFTCNT__MASK;
+}
+#define A4XX_VFD_DECODE_INSTR_LASTCOMPVALID                    0x20000000
+#define A4XX_VFD_DECODE_INSTR_SWITCHNEXT                       0x40000000
+
+#define REG_A4XX_TPL1_DEBUG_ECO_CONTROL                                0x00000f00
+
+#define REG_A4XX_TPL1_TP_MODE_CONTROL                          0x00000f03
+
+#define REG_A4XX_TPL1_PERFCTR_TP_SEL_0                         0x00000f04
+
+#define REG_A4XX_TPL1_PERFCTR_TP_SEL_1                         0x00000f05
+
+#define REG_A4XX_TPL1_PERFCTR_TP_SEL_2                         0x00000f06
+
+#define REG_A4XX_TPL1_PERFCTR_TP_SEL_3                         0x00000f07
+
+#define REG_A4XX_TPL1_PERFCTR_TP_SEL_4                         0x00000f08
+
+#define REG_A4XX_TPL1_PERFCTR_TP_SEL_5                         0x00000f09
+
+#define REG_A4XX_TPL1_PERFCTR_TP_SEL_6                         0x00000f0a
+
+#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_VFD_DECODE_INSTR_SHIFTCNT__MASK                   0x1f000000
-#define A4XX_VFD_DECODE_INSTR_SHIFTCNT__SHIFT                  24
-static inline uint32_t A4XX_VFD_DECODE_INSTR_SHIFTCNT(uint32_t val)
+#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_VFD_DECODE_INSTR_SHIFTCNT__SHIFT) & A4XX_VFD_DECODE_INSTR_SHIFTCNT__MASK;
+       return ((val) << A4XX_TPL1_TP_TEX_COUNT_GS__SHIFT) & A4XX_TPL1_TP_TEX_COUNT_GS__MASK;
 }
-#define A4XX_VFD_DECODE_INSTR_LASTCOMPVALID                    0x20000000
-#define A4XX_VFD_DECODE_INSTR_SWITCHNEXT                       0x40000000
 
-#define REG_A4XX_TPL1_DEBUG_ECO_CONTROL                                0x00000f00
+#define REG_A4XX_TPL1_TP_VS_BORDER_COLOR_BASE_ADDR             0x00002384
 
-#define REG_A4XX_TPL1_PERFCTR_TP_SEL_7                         0x00000f0b
+#define REG_A4XX_TPL1_TP_HS_BORDER_COLOR_BASE_ADDR             0x00002387
 
-#define REG_A4XX_TPL1_TP_TEX_OFFSET                            0x00002380
+#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
 
@@ -1476,9 +3145,25 @@ static inline uint32_t A4XX_VFD_DECODE_INSTR_SHIFTCNT(uint32_t val)
 
 #define REG_A4XX_GRAS_PERFCTR_TSE_SEL_0                                0x00000c88
 
+#define REG_A4XX_GRAS_PERFCTR_TSE_SEL_1                                0x00000c89
+
+#define REG_A4XX_GRAS_PERFCTR_TSE_SEL_2                                0x00000c8a
+
 #define REG_A4XX_GRAS_PERFCTR_TSE_SEL_3                                0x00000c8b
 
+#define REG_A4XX_GRAS_PERFCTR_RAS_SEL_0                                0x00000c8c
+
+#define REG_A4XX_GRAS_PERFCTR_RAS_SEL_1                                0x00000c8d
+
+#define REG_A4XX_GRAS_PERFCTR_RAS_SEL_2                                0x00000c8e
+
+#define REG_A4XX_GRAS_PERFCTR_RAS_SEL_3                                0x00000c8f
+
 #define REG_A4XX_GRAS_CL_CLIP_CNTL                             0x00002000
+#define A4XX_GRAS_CL_CLIP_CNTL_CLIP_DISABLE                    0x00008000
+#define A4XX_GRAS_CL_CLIP_CNTL_ZNEAR_CLIP_DISABLE              0x00010000
+#define A4XX_GRAS_CL_CLIP_CNTL_ZFAR_CLIP_DISABLE               0x00020000
+#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
@@ -1569,6 +3254,7 @@ static inline uint32_t A4XX_GRAS_SU_POINT_SIZE(float val)
 
 #define REG_A4XX_GRAS_ALPHA_CONTROL                            0x00002073
 #define A4XX_GRAS_ALPHA_CONTROL_ALPHA_TEST_ENABLE              0x00000004
+#define A4XX_GRAS_ALPHA_CONTROL_FORCE_FRAGZ_TO_FS              0x00000008
 
 #define REG_A4XX_GRAS_SU_POLY_OFFSET_SCALE                     0x00002074
 #define A4XX_GRAS_SU_POLY_OFFSET_SCALE__MASK                   0xffffffff
@@ -1586,7 +3272,56 @@ 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_MSAA_ENABLE                  0x00002000
+#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
@@ -1648,46 +3383,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
@@ -1704,14 +3427,46 @@ static inline uint32_t A4XX_GRAS_SC_CONTROL_RASTER_MODE(uint32_t val)
 
 #define REG_A4XX_UCHE_CACHE_WAYS_VFD                           0x00000e8c
 
+#define REG_A4XX_UCHE_PERFCTR_UCHE_SEL_0                       0x00000e8e
+
+#define REG_A4XX_UCHE_PERFCTR_UCHE_SEL_1                       0x00000e8f
+
+#define REG_A4XX_UCHE_PERFCTR_UCHE_SEL_2                       0x00000e90
+
+#define REG_A4XX_UCHE_PERFCTR_UCHE_SEL_3                       0x00000e91
+
+#define REG_A4XX_UCHE_PERFCTR_UCHE_SEL_4                       0x00000e92
+
+#define REG_A4XX_UCHE_PERFCTR_UCHE_SEL_5                       0x00000e93
+
+#define REG_A4XX_UCHE_PERFCTR_UCHE_SEL_6                       0x00000e94
+
 #define REG_A4XX_UCHE_PERFCTR_UCHE_SEL_7                       0x00000e95
 
 #define REG_A4XX_HLSQ_TIMEOUT_THRESHOLD                                0x00000e00
 
 #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_PERFCTR_HLSQ_SEL_0                       0x00000e06
+
+#define REG_A4XX_HLSQ_PERFCTR_HLSQ_SEL_1                       0x00000e07
+
+#define REG_A4XX_HLSQ_PERFCTR_HLSQ_SEL_2                       0x00000e08
+
+#define REG_A4XX_HLSQ_PERFCTR_HLSQ_SEL_3                       0x00000e09
+
+#define REG_A4XX_HLSQ_PERFCTR_HLSQ_SEL_4                       0x00000e0a
+
+#define REG_A4XX_HLSQ_PERFCTR_HLSQ_SEL_5                       0x00000e0b
+
+#define REG_A4XX_HLSQ_PERFCTR_HLSQ_SEL_6                       0x00000e0c
+
+#define REG_A4XX_HLSQ_PERFCTR_HLSQ_SEL_7                       0x00000e0d
+
 #define REG_A4XX_HLSQ_CONTROL_0_REG                            0x000023c0
 #define A4XX_HLSQ_CONTROL_0_REG_FSTHREADSIZE__MASK             0x00000010
 #define A4XX_HLSQ_CONTROL_0_REG_FSTHREADSIZE__SHIFT            4
@@ -1743,7 +3498,18 @@ static inline uint32_t A4XX_HLSQ_CONTROL_1_REG_VSTHREADSIZE(enum a3xx_threadsize
 }
 #define A4XX_HLSQ_CONTROL_1_REG_VSSUPERTHREADENABLE            0x00000100
 #define A4XX_HLSQ_CONTROL_1_REG_RESERVED1                      0x00000200
-#define A4XX_HLSQ_CONTROL_1_REG_ZWCOORD                                0x02000000
+#define A4XX_HLSQ_CONTROL_1_REG_COORDREGID__MASK               0x00ff0000
+#define A4XX_HLSQ_CONTROL_1_REG_COORDREGID__SHIFT              16
+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_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
@@ -1752,6 +3518,24 @@ static inline uint32_t A4XX_HLSQ_CONTROL_2_REG_PRIMALLOCTHRESHOLD(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_CONTROL_2_REG_PRIMALLOCTHRESHOLD__SHIFT) & A4XX_HLSQ_CONTROL_2_REG_PRIMALLOCTHRESHOLD__MASK;
 }
+#define A4XX_HLSQ_CONTROL_2_REG_FACEREGID__MASK                        0x000003fc
+#define A4XX_HLSQ_CONTROL_2_REG_FACEREGID__SHIFT               2
+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
@@ -1761,6 +3545,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
@@ -1768,12 +3554,14 @@ static inline uint32_t A4XX_HLSQ_VS_CONTROL_REG_CONSTLENGTH(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_VS_CONTROL_REG_CONSTLENGTH__SHIFT) & A4XX_HLSQ_VS_CONTROL_REG_CONSTLENGTH__MASK;
 }
-#define A4XX_HLSQ_VS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x0000ff00
+#define A4XX_HLSQ_VS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x00007f00
 #define A4XX_HLSQ_VS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT      8
 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_SSBO_ENABLE                   0x00008000
+#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)
@@ -1794,12 +3582,14 @@ static inline uint32_t A4XX_HLSQ_FS_CONTROL_REG_CONSTLENGTH(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_FS_CONTROL_REG_CONSTLENGTH__SHIFT) & A4XX_HLSQ_FS_CONTROL_REG_CONSTLENGTH__MASK;
 }
-#define A4XX_HLSQ_FS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x0000ff00
+#define A4XX_HLSQ_FS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x00007f00
 #define A4XX_HLSQ_FS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT      8
 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_SSBO_ENABLE                   0x00008000
+#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)
@@ -1820,12 +3610,14 @@ static inline uint32_t A4XX_HLSQ_HS_CONTROL_REG_CONSTLENGTH(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_HS_CONTROL_REG_CONSTLENGTH__SHIFT) & A4XX_HLSQ_HS_CONTROL_REG_CONSTLENGTH__MASK;
 }
-#define A4XX_HLSQ_HS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x0000ff00
+#define A4XX_HLSQ_HS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x00007f00
 #define A4XX_HLSQ_HS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT      8
 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_SSBO_ENABLE                   0x00008000
+#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)
@@ -1846,12 +3638,14 @@ static inline uint32_t A4XX_HLSQ_DS_CONTROL_REG_CONSTLENGTH(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_DS_CONTROL_REG_CONSTLENGTH__SHIFT) & A4XX_HLSQ_DS_CONTROL_REG_CONSTLENGTH__MASK;
 }
-#define A4XX_HLSQ_DS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x0000ff00
+#define A4XX_HLSQ_DS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x00007f00
 #define A4XX_HLSQ_DS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT      8
 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_SSBO_ENABLE                   0x00008000
+#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)
@@ -1872,12 +3666,14 @@ static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_CONSTLENGTH(uint32_t val)
 {
        return ((val) << A4XX_HLSQ_GS_CONTROL_REG_CONSTLENGTH__SHIFT) & A4XX_HLSQ_GS_CONTROL_REG_CONSTLENGTH__MASK;
 }
-#define A4XX_HLSQ_GS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x0000ff00
+#define A4XX_HLSQ_GS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x00007f00
 #define A4XX_HLSQ_GS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT      8
 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_SSBO_ENABLE                   0x00008000
+#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)
@@ -1891,31 +3687,221 @@ 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_REG                           0x000023ca
+#define A4XX_HLSQ_CS_CONTROL_REG_CONSTLENGTH__MASK             0x000000ff
+#define A4XX_HLSQ_CS_CONTROL_REG_CONSTLENGTH__SHIFT            0
+static inline uint32_t A4XX_HLSQ_CS_CONTROL_REG_CONSTLENGTH(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CS_CONTROL_REG_CONSTLENGTH__SHIFT) & A4XX_HLSQ_CS_CONTROL_REG_CONSTLENGTH__MASK;
+}
+#define A4XX_HLSQ_CS_CONTROL_REG_CONSTOBJECTOFFSET__MASK       0x00007f00
+#define A4XX_HLSQ_CS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT      8
+static inline uint32_t A4XX_HLSQ_CS_CONTROL_REG_CONSTOBJECTOFFSET(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CS_CONTROL_REG_CONSTOBJECTOFFSET__SHIFT) & A4XX_HLSQ_CS_CONTROL_REG_CONSTOBJECTOFFSET__MASK;
+}
+#define A4XX_HLSQ_CS_CONTROL_REG_SSBO_ENABLE                   0x00008000
+#define A4XX_HLSQ_CS_CONTROL_REG_ENABLED                       0x00010000
+#define A4XX_HLSQ_CS_CONTROL_REG_SHADEROBJOFFSET__MASK         0x00fe0000
+#define A4XX_HLSQ_CS_CONTROL_REG_SHADEROBJOFFSET__SHIFT                17
+static inline uint32_t A4XX_HLSQ_CS_CONTROL_REG_SHADEROBJOFFSET(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CS_CONTROL_REG_SHADEROBJOFFSET__SHIFT) & A4XX_HLSQ_CS_CONTROL_REG_SHADEROBJOFFSET__MASK;
+}
+#define A4XX_HLSQ_CS_CONTROL_REG_INSTRLENGTH__MASK             0xff000000
+#define A4XX_HLSQ_CS_CONTROL_REG_INSTRLENGTH__SHIFT            24
+static inline uint32_t A4XX_HLSQ_CS_CONTROL_REG_INSTRLENGTH(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CS_CONTROL_REG_INSTRLENGTH__SHIFT) & A4XX_HLSQ_CS_CONTROL_REG_INSTRLENGTH__MASK;
+}
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_0                             0x000023cd
+#define A4XX_HLSQ_CL_NDRANGE_0_KERNELDIM__MASK                 0x00000003
+#define A4XX_HLSQ_CL_NDRANGE_0_KERNELDIM__SHIFT                        0
+static inline uint32_t A4XX_HLSQ_CL_NDRANGE_0_KERNELDIM(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_NDRANGE_0_KERNELDIM__SHIFT) & A4XX_HLSQ_CL_NDRANGE_0_KERNELDIM__MASK;
+}
+#define A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEX__MASK                        0x00000ffc
+#define A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEX__SHIFT               2
+static inline uint32_t A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEX(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEX__SHIFT) & A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEX__MASK;
+}
+#define A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEY__MASK                        0x003ff000
+#define A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEY__SHIFT               12
+static inline uint32_t A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEY(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEY__SHIFT) & A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEY__MASK;
+}
+#define A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEZ__MASK                        0xffc00000
+#define A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEZ__SHIFT               22
+static inline uint32_t A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEZ(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEZ__SHIFT) & A4XX_HLSQ_CL_NDRANGE_0_LOCALSIZEZ__MASK;
+}
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_1                             0x000023ce
+#define A4XX_HLSQ_CL_NDRANGE_1_SIZE_X__MASK                    0xffffffff
+#define A4XX_HLSQ_CL_NDRANGE_1_SIZE_X__SHIFT                   0
+static inline uint32_t A4XX_HLSQ_CL_NDRANGE_1_SIZE_X(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_NDRANGE_1_SIZE_X__SHIFT) & A4XX_HLSQ_CL_NDRANGE_1_SIZE_X__MASK;
+}
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_2                             0x000023cf
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_3                             0x000023d0
+#define A4XX_HLSQ_CL_NDRANGE_3_SIZE_Y__MASK                    0xffffffff
+#define A4XX_HLSQ_CL_NDRANGE_3_SIZE_Y__SHIFT                   0
+static inline uint32_t A4XX_HLSQ_CL_NDRANGE_3_SIZE_Y(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_NDRANGE_3_SIZE_Y__SHIFT) & A4XX_HLSQ_CL_NDRANGE_3_SIZE_Y__MASK;
+}
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_4                             0x000023d1
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_5                             0x000023d2
+#define A4XX_HLSQ_CL_NDRANGE_5_SIZE_Z__MASK                    0xffffffff
+#define A4XX_HLSQ_CL_NDRANGE_5_SIZE_Z__SHIFT                   0
+static inline uint32_t A4XX_HLSQ_CL_NDRANGE_5_SIZE_Z(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_NDRANGE_5_SIZE_Z__SHIFT) & A4XX_HLSQ_CL_NDRANGE_5_SIZE_Z__MASK;
+}
+
+#define REG_A4XX_HLSQ_CL_NDRANGE_6                             0x000023d3
+
+#define REG_A4XX_HLSQ_CL_CONTROL_0                             0x000023d4
+#define A4XX_HLSQ_CL_CONTROL_0_WGIDCONSTID__MASK               0x000000ff
+#define A4XX_HLSQ_CL_CONTROL_0_WGIDCONSTID__SHIFT              0
+static inline uint32_t A4XX_HLSQ_CL_CONTROL_0_WGIDCONSTID(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_CONTROL_0_WGIDCONSTID__SHIFT) & A4XX_HLSQ_CL_CONTROL_0_WGIDCONSTID__MASK;
+}
+#define A4XX_HLSQ_CL_CONTROL_0_LOCALIDREGID__MASK              0xff000000
+#define A4XX_HLSQ_CL_CONTROL_0_LOCALIDREGID__SHIFT             24
+static inline uint32_t A4XX_HLSQ_CL_CONTROL_0_LOCALIDREGID(uint32_t val)
+{
+       return ((val) << A4XX_HLSQ_CL_CONTROL_0_LOCALIDREGID__SHIFT) & A4XX_HLSQ_CL_CONTROL_0_LOCALIDREGID__MASK;
+}
+
+#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
 #define A4XX_PC_BINNING_COMMAND_BINNING_ENABLE                 0x00000001
 
+#define REG_A4XX_PC_TESSFACTOR_ADDR                            0x00000d08
+
 #define REG_A4XX_PC_DRAWCALL_SETUP_OVERRIDE                    0x00000d0c
 
 #define REG_A4XX_PC_PERFCTR_PC_SEL_0                           0x00000d10
 
+#define REG_A4XX_PC_PERFCTR_PC_SEL_1                           0x00000d11
+
+#define REG_A4XX_PC_PERFCTR_PC_SEL_2                           0x00000d12
+
+#define REG_A4XX_PC_PERFCTR_PC_SEL_3                           0x00000d13
+
+#define REG_A4XX_PC_PERFCTR_PC_SEL_4                           0x00000d14
+
+#define REG_A4XX_PC_PERFCTR_PC_SEL_5                           0x00000d15
+
+#define REG_A4XX_PC_PERFCTR_PC_SEL_6                           0x00000d16
+
 #define REG_A4XX_PC_PERFCTR_PC_SEL_7                           0x00000d17
 
 #define REG_A4XX_PC_BIN_BASE                                   0x000021c0
 
+#define REG_A4XX_PC_VSTREAM_CONTROL                            0x000021c2
+#define A4XX_PC_VSTREAM_CONTROL_SIZE__MASK                     0x003f0000
+#define A4XX_PC_VSTREAM_CONTROL_SIZE__SHIFT                    16
+static inline uint32_t A4XX_PC_VSTREAM_CONTROL_SIZE(uint32_t val)
+{
+       return ((val) << A4XX_PC_VSTREAM_CONTROL_SIZE__SHIFT) & A4XX_PC_VSTREAM_CONTROL_SIZE__MASK;
+}
+#define A4XX_PC_VSTREAM_CONTROL_N__MASK                                0x07c00000
+#define A4XX_PC_VSTREAM_CONTROL_N__SHIFT                       22
+static inline uint32_t A4XX_PC_VSTREAM_CONTROL_N(uint32_t val)
+{
+       return ((val) << A4XX_PC_VSTREAM_CONTROL_N__SHIFT) & A4XX_PC_VSTREAM_CONTROL_N__MASK;
+}
+
 #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
 
-#define REG_A4XX_UNKNOWN_21C5                                  0x000021c5
+#define REG_A4XX_PC_PRIM_VTX_CNTL2                             0x000021c5
+#define A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_FRONT_PTYPE__MASK      0x00000007
+#define A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_FRONT_PTYPE__SHIFT     0
+static inline uint32_t A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_FRONT_PTYPE(enum adreno_pa_su_sc_draw val)
+{
+       return ((val) << A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_FRONT_PTYPE__SHIFT) & A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_FRONT_PTYPE__MASK;
+}
+#define A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_BACK_PTYPE__MASK       0x00000038
+#define A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_BACK_PTYPE__SHIFT      3
+static inline uint32_t A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_BACK_PTYPE(enum adreno_pa_su_sc_draw val)
+{
+       return ((val) << A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_BACK_PTYPE__SHIFT) & A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_BACK_PTYPE__MASK;
+}
+#define A4XX_PC_PRIM_VTX_CNTL2_POLYMODE_ENABLE                 0x00000040
 
 #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_CW                                    0x00800000
+#define A4XX_PC_HS_PARAM_CONNECTED                             0x01000000
 
 #define REG_A4XX_VBIF_VERSION                                  0x00003000
 
@@ -1938,43 +3924,59 @@ static inline uint32_t A4XX_HLSQ_GS_CONTROL_REG_INSTRLENGTH(uint32_t val)
 
 #define REG_A4XX_VBIF_ROUND_ROBIN_QOS_ARB                      0x00003049
 
-#define REG_A4XX_UNKNOWN_0CC5                                  0x00000cc5
+#define REG_A4XX_VBIF_PERF_CNT_EN0                             0x000030c0
 
-#define REG_A4XX_UNKNOWN_0CC6                                  0x00000cc6
+#define REG_A4XX_VBIF_PERF_CNT_EN1                             0x000030c1
 
-#define REG_A4XX_UNKNOWN_0D01                                  0x00000d01
+#define REG_A4XX_VBIF_PERF_CNT_EN2                             0x000030c2
 
-#define REG_A4XX_UNKNOWN_0E05                                  0x00000e05
+#define REG_A4XX_VBIF_PERF_CNT_EN3                             0x000030c3
 
-#define REG_A4XX_UNKNOWN_0E42                                  0x00000e42
+#define REG_A4XX_VBIF_PERF_CNT_SEL0                            0x000030d0
 
-#define REG_A4XX_UNKNOWN_0EC2                                  0x00000ec2
+#define REG_A4XX_VBIF_PERF_CNT_SEL1                            0x000030d1
 
-#define REG_A4XX_UNKNOWN_0EC3                                  0x00000ec3
+#define REG_A4XX_VBIF_PERF_CNT_SEL2                            0x000030d2
 
-#define REG_A4XX_UNKNOWN_0F03                                  0x00000f03
+#define REG_A4XX_VBIF_PERF_CNT_SEL3                            0x000030d3
 
-#define REG_A4XX_UNKNOWN_2001                                  0x00002001
+#define REG_A4XX_VBIF_PERF_CNT_LOW0                            0x000030d8
 
-#define REG_A4XX_UNKNOWN_209B                                  0x0000209b
+#define REG_A4XX_VBIF_PERF_CNT_LOW1                            0x000030d9
 
-#define REG_A4XX_UNKNOWN_20EF                                  0x000020ef
+#define REG_A4XX_VBIF_PERF_CNT_LOW2                            0x000030da
+
+#define REG_A4XX_VBIF_PERF_CNT_LOW3                            0x000030db
+
+#define REG_A4XX_VBIF_PERF_CNT_HIGH0                           0x000030e0
+
+#define REG_A4XX_VBIF_PERF_CNT_HIGH1                           0x000030e1
+
+#define REG_A4XX_VBIF_PERF_CNT_HIGH2                           0x000030e2
+
+#define REG_A4XX_VBIF_PERF_CNT_HIGH3                           0x000030e3
 
-#define REG_A4XX_UNKNOWN_20F0                                  0x000020f0
+#define REG_A4XX_VBIF_PERF_PWR_CNT_EN0                         0x00003100
 
-#define REG_A4XX_UNKNOWN_20F1                                  0x000020f1
+#define REG_A4XX_VBIF_PERF_PWR_CNT_EN1                         0x00003101
 
-#define REG_A4XX_UNKNOWN_20F2                                  0x000020f2
+#define REG_A4XX_VBIF_PERF_PWR_CNT_EN2                         0x00003102
 
-#define REG_A4XX_UNKNOWN_20F3                                  0x000020f3
+#define REG_A4XX_UNKNOWN_0CC5                                  0x00000cc5
+
+#define REG_A4XX_UNKNOWN_0CC6                                  0x00000cc6
+
+#define REG_A4XX_UNKNOWN_0D01                                  0x00000d01
+
+#define REG_A4XX_UNKNOWN_0E42                                  0x00000e42
 
-#define REG_A4XX_UNKNOWN_20F4                                  0x000020f4
+#define REG_A4XX_UNKNOWN_0EC2                                  0x00000ec2
 
-#define REG_A4XX_UNKNOWN_20F5                                  0x000020f5
+#define REG_A4XX_UNKNOWN_2001                                  0x00002001
 
-#define REG_A4XX_UNKNOWN_20F6                                  0x000020f6
+#define REG_A4XX_UNKNOWN_209B                                  0x0000209b
 
-#define REG_A4XX_UNKNOWN_20F7                                  0x000020f7
+#define REG_A4XX_UNKNOWN_20EF                                  0x000020ef
 
 #define REG_A4XX_UNKNOWN_2152                                  0x00002152
 
@@ -1996,11 +3998,10 @@ 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
 #define A4XX_TEX_SAMP_0_XY_MAG__MASK                           0x00000006
 #define A4XX_TEX_SAMP_0_XY_MAG__SHIFT                          1
 static inline uint32_t A4XX_TEX_SAMP_0_XY_MAG(enum a4xx_tex_filter val)
@@ -2031,6 +4032,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
@@ -2039,21 +4052,25 @@ 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
 #define A4XX_TEX_SAMP_1_MAX_LOD__SHIFT                         8
 static inline uint32_t A4XX_TEX_SAMP_1_MAX_LOD(float val)
 {
-       return ((((uint32_t)(val * 64.0))) << A4XX_TEX_SAMP_1_MAX_LOD__SHIFT) & A4XX_TEX_SAMP_1_MAX_LOD__MASK;
+       return ((((uint32_t)(val * 256.0))) << A4XX_TEX_SAMP_1_MAX_LOD__SHIFT) & A4XX_TEX_SAMP_1_MAX_LOD__MASK;
 }
 #define A4XX_TEX_SAMP_1_MIN_LOD__MASK                          0xfff00000
 #define A4XX_TEX_SAMP_1_MIN_LOD__SHIFT                         20
 static inline uint32_t A4XX_TEX_SAMP_1_MIN_LOD(float val)
 {
-       return ((((uint32_t)(val * 64.0))) << A4XX_TEX_SAMP_1_MIN_LOD__SHIFT) & A4XX_TEX_SAMP_1_MIN_LOD__MASK;
+       return ((((uint32_t)(val * 256.0))) << A4XX_TEX_SAMP_1_MIN_LOD__SHIFT) & A4XX_TEX_SAMP_1_MIN_LOD__MASK;
 }
 
 #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)
@@ -2078,6 +4095,12 @@ static inline uint32_t A4XX_TEX_CONST_0_SWIZ_W(enum a4xx_tex_swiz val)
 {
        return ((val) << A4XX_TEX_CONST_0_SWIZ_W__SHIFT) & A4XX_TEX_CONST_0_SWIZ_W__MASK;
 }
+#define A4XX_TEX_CONST_0_MIPLVLS__MASK                         0x000f0000
+#define A4XX_TEX_CONST_0_MIPLVLS__SHIFT                                16
+static inline uint32_t A4XX_TEX_CONST_0_MIPLVLS(uint32_t val)
+{
+       return ((val) << A4XX_TEX_CONST_0_MIPLVLS__SHIFT) & A4XX_TEX_CONST_0_MIPLVLS__MASK;
+}
 #define A4XX_TEX_CONST_0_FMT__MASK                             0x1fc00000
 #define A4XX_TEX_CONST_0_FMT__SHIFT                            22
 static inline uint32_t A4XX_TEX_CONST_0_FMT(enum a4xx_tex_fmt val)
@@ -2098,7 +4121,7 @@ static inline uint32_t A4XX_TEX_CONST_1_HEIGHT(uint32_t val)
 {
        return ((val) << A4XX_TEX_CONST_1_HEIGHT__SHIFT) & A4XX_TEX_CONST_1_HEIGHT__MASK;
 }
-#define A4XX_TEX_CONST_1_WIDTH__MASK                           0x1fff8000
+#define A4XX_TEX_CONST_1_WIDTH__MASK                           0x3fff8000
 #define A4XX_TEX_CONST_1_WIDTH__SHIFT                          15
 static inline uint32_t A4XX_TEX_CONST_1_WIDTH(uint32_t val)
 {
@@ -2106,6 +4129,12 @@ static inline uint32_t A4XX_TEX_CONST_1_WIDTH(uint32_t val)
 }
 
 #define REG_A4XX_TEX_CONST_2                                   0x00000002
+#define A4XX_TEX_CONST_2_FETCHSIZE__MASK                       0x0000000f
+#define A4XX_TEX_CONST_2_FETCHSIZE__SHIFT                      0
+static inline uint32_t A4XX_TEX_CONST_2_FETCHSIZE(enum a4xx_tex_fetchsize val)
+{
+       return ((val) << A4XX_TEX_CONST_2_FETCHSIZE__SHIFT) & A4XX_TEX_CONST_2_FETCHSIZE__MASK;
+}
 #define A4XX_TEX_CONST_2_PITCH__MASK                           0x3ffffe00
 #define A4XX_TEX_CONST_2_PITCH__SHIFT                          9
 static inline uint32_t A4XX_TEX_CONST_2_PITCH(uint32_t val)
@@ -2120,19 +4149,34 @@ static inline uint32_t A4XX_TEX_CONST_2_SWAP(enum a3xx_color_swap val)
 }
 
 #define REG_A4XX_TEX_CONST_3                                   0x00000003
-#define A4XX_TEX_CONST_3_LAYERSZ__MASK                         0x0000000f
+#define A4XX_TEX_CONST_3_LAYERSZ__MASK                         0x00003fff
 #define A4XX_TEX_CONST_3_LAYERSZ__SHIFT                                0
 static inline uint32_t A4XX_TEX_CONST_3_LAYERSZ(uint32_t val)
 {
+       assert(!(val & 0xfff));
        return ((val >> 12) << A4XX_TEX_CONST_3_LAYERSZ__SHIFT) & A4XX_TEX_CONST_3_LAYERSZ__MASK;
 }
+#define A4XX_TEX_CONST_3_DEPTH__MASK                           0x7ffc0000
+#define A4XX_TEX_CONST_3_DEPTH__SHIFT                          18
+static inline uint32_t A4XX_TEX_CONST_3_DEPTH(uint32_t val)
+{
+       return ((val) << A4XX_TEX_CONST_3_DEPTH__SHIFT) & A4XX_TEX_CONST_3_DEPTH__MASK;
+}
 
 #define REG_A4XX_TEX_CONST_4                                   0x00000004
-#define A4XX_TEX_CONST_4_BASE__MASK                            0xffffffff
-#define A4XX_TEX_CONST_4_BASE__SHIFT                           0
+#define A4XX_TEX_CONST_4_LAYERSZ__MASK                         0x0000000f
+#define A4XX_TEX_CONST_4_LAYERSZ__SHIFT                                0
+static inline uint32_t A4XX_TEX_CONST_4_LAYERSZ(uint32_t val)
+{
+       assert(!(val & 0xfff));
+       return ((val >> 12) << A4XX_TEX_CONST_4_LAYERSZ__SHIFT) & A4XX_TEX_CONST_4_LAYERSZ__MASK;
+}
+#define A4XX_TEX_CONST_4_BASE__MASK                            0xffffffe0
+#define A4XX_TEX_CONST_4_BASE__SHIFT                           5
 static inline uint32_t A4XX_TEX_CONST_4_BASE(uint32_t val)
 {
-       return ((val) << A4XX_TEX_CONST_4_BASE__SHIFT) & A4XX_TEX_CONST_4_BASE__MASK;
+       assert(!(val & 0x1f));
+       return ((val >> 5) << A4XX_TEX_CONST_4_BASE__SHIFT) & A4XX_TEX_CONST_4_BASE__MASK;
 }
 
 #define REG_A4XX_TEX_CONST_5                                   0x00000005
@@ -2141,5 +4185,73 @@ static inline uint32_t A4XX_TEX_CONST_4_BASE(uint32_t val)
 
 #define REG_A4XX_TEX_CONST_7                                   0x00000007
 
+#define REG_A4XX_SSBO_0_0                                      0x00000000
+#define A4XX_SSBO_0_0_BASE__MASK                               0xffffffe0
+#define A4XX_SSBO_0_0_BASE__SHIFT                              5
+static inline uint32_t A4XX_SSBO_0_0_BASE(uint32_t val)
+{
+       assert(!(val & 0x1f));
+       return ((val >> 5) << A4XX_SSBO_0_0_BASE__SHIFT) & A4XX_SSBO_0_0_BASE__MASK;
+}
+
+#define REG_A4XX_SSBO_0_1                                      0x00000001
+#define A4XX_SSBO_0_1_PITCH__MASK                              0x003fffff
+#define A4XX_SSBO_0_1_PITCH__SHIFT                             0
+static inline uint32_t A4XX_SSBO_0_1_PITCH(uint32_t val)
+{
+       return ((val) << A4XX_SSBO_0_1_PITCH__SHIFT) & A4XX_SSBO_0_1_PITCH__MASK;
+}
+
+#define REG_A4XX_SSBO_0_2                                      0x00000002
+#define A4XX_SSBO_0_2_ARRAY_PITCH__MASK                                0x03fff000
+#define A4XX_SSBO_0_2_ARRAY_PITCH__SHIFT                       12
+static inline uint32_t A4XX_SSBO_0_2_ARRAY_PITCH(uint32_t val)
+{
+       assert(!(val & 0xfff));
+       return ((val >> 12) << A4XX_SSBO_0_2_ARRAY_PITCH__SHIFT) & A4XX_SSBO_0_2_ARRAY_PITCH__MASK;
+}
+
+#define REG_A4XX_SSBO_0_3                                      0x00000003
+#define A4XX_SSBO_0_3_CPP__MASK                                        0x0000003f
+#define A4XX_SSBO_0_3_CPP__SHIFT                               0
+static inline uint32_t A4XX_SSBO_0_3_CPP(uint32_t val)
+{
+       return ((val) << A4XX_SSBO_0_3_CPP__SHIFT) & A4XX_SSBO_0_3_CPP__MASK;
+}
+
+#define REG_A4XX_SSBO_1_0                                      0x00000000
+#define A4XX_SSBO_1_0_CPP__MASK                                        0x0000001f
+#define A4XX_SSBO_1_0_CPP__SHIFT                               0
+static inline uint32_t A4XX_SSBO_1_0_CPP(uint32_t val)
+{
+       return ((val) << A4XX_SSBO_1_0_CPP__SHIFT) & A4XX_SSBO_1_0_CPP__MASK;
+}
+#define A4XX_SSBO_1_0_FMT__MASK                                        0x0000ff00
+#define A4XX_SSBO_1_0_FMT__SHIFT                               8
+static inline uint32_t A4XX_SSBO_1_0_FMT(enum a4xx_color_fmt val)
+{
+       return ((val) << A4XX_SSBO_1_0_FMT__SHIFT) & A4XX_SSBO_1_0_FMT__MASK;
+}
+#define A4XX_SSBO_1_0_WIDTH__MASK                              0xffff0000
+#define A4XX_SSBO_1_0_WIDTH__SHIFT                             16
+static inline uint32_t A4XX_SSBO_1_0_WIDTH(uint32_t val)
+{
+       return ((val) << A4XX_SSBO_1_0_WIDTH__SHIFT) & A4XX_SSBO_1_0_WIDTH__MASK;
+}
+
+#define REG_A4XX_SSBO_1_1                                      0x00000001
+#define A4XX_SSBO_1_1_HEIGHT__MASK                             0x0000ffff
+#define A4XX_SSBO_1_1_HEIGHT__SHIFT                            0
+static inline uint32_t A4XX_SSBO_1_1_HEIGHT(uint32_t val)
+{
+       return ((val) << A4XX_SSBO_1_1_HEIGHT__SHIFT) & A4XX_SSBO_1_1_HEIGHT__MASK;
+}
+#define A4XX_SSBO_1_1_DEPTH__MASK                              0xffff0000
+#define A4XX_SSBO_1_1_DEPTH__SHIFT                             16
+static inline uint32_t A4XX_SSBO_1_1_DEPTH(uint32_t val)
+{
+       return ((val) << A4XX_SSBO_1_1_DEPTH__SHIFT) & A4XX_SSBO_1_1_DEPTH__MASK;
+}
+
 
 #endif /* A4XX_XML */