1bf215546Sopenharmony_ci<?xml version="1.0" encoding="UTF-8"?> 2bf215546Sopenharmony_ci<database xmlns="http://nouveau.freedesktop.org/" 3bf215546Sopenharmony_cixmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4bf215546Sopenharmony_cixsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd"> 5bf215546Sopenharmony_ci<import file="freedreno_copyright.xml"/> 6bf215546Sopenharmony_ci<import file="adreno/adreno_common.xml"/> 7bf215546Sopenharmony_ci<import file="adreno/adreno_pm4.xml"/> 8bf215546Sopenharmony_ci 9bf215546Sopenharmony_ci<!-- these might be same as a5xx --> 10bf215546Sopenharmony_ci<enum name="a6xx_tile_mode"> 11bf215546Sopenharmony_ci <value name="TILE6_LINEAR" value="0"/> 12bf215546Sopenharmony_ci <value name="TILE6_2" value="2"/> 13bf215546Sopenharmony_ci <value name="TILE6_3" value="3"/> 14bf215546Sopenharmony_ci</enum> 15bf215546Sopenharmony_ci 16bf215546Sopenharmony_ci<enum name="a6xx_format"> 17bf215546Sopenharmony_ci <value value="0x02" name="FMT6_A8_UNORM"/> 18bf215546Sopenharmony_ci <value value="0x03" name="FMT6_8_UNORM"/> 19bf215546Sopenharmony_ci <value value="0x04" name="FMT6_8_SNORM"/> 20bf215546Sopenharmony_ci <value value="0x05" name="FMT6_8_UINT"/> 21bf215546Sopenharmony_ci <value value="0x06" name="FMT6_8_SINT"/> 22bf215546Sopenharmony_ci 23bf215546Sopenharmony_ci <value value="0x08" name="FMT6_4_4_4_4_UNORM"/> 24bf215546Sopenharmony_ci <value value="0x0a" name="FMT6_5_5_5_1_UNORM"/> 25bf215546Sopenharmony_ci <value value="0x0c" name="FMT6_1_5_5_5_UNORM"/> <!-- read only --> 26bf215546Sopenharmony_ci <value value="0x0e" name="FMT6_5_6_5_UNORM"/> 27bf215546Sopenharmony_ci 28bf215546Sopenharmony_ci <value value="0x0f" name="FMT6_8_8_UNORM"/> 29bf215546Sopenharmony_ci <value value="0x10" name="FMT6_8_8_SNORM"/> 30bf215546Sopenharmony_ci <value value="0x11" name="FMT6_8_8_UINT"/> 31bf215546Sopenharmony_ci <value value="0x12" name="FMT6_8_8_SINT"/> 32bf215546Sopenharmony_ci <value value="0x13" name="FMT6_L8_A8_UNORM"/> 33bf215546Sopenharmony_ci 34bf215546Sopenharmony_ci <value value="0x15" name="FMT6_16_UNORM"/> 35bf215546Sopenharmony_ci <value value="0x16" name="FMT6_16_SNORM"/> 36bf215546Sopenharmony_ci <value value="0x17" name="FMT6_16_FLOAT"/> 37bf215546Sopenharmony_ci <value value="0x18" name="FMT6_16_UINT"/> 38bf215546Sopenharmony_ci <value value="0x19" name="FMT6_16_SINT"/> 39bf215546Sopenharmony_ci 40bf215546Sopenharmony_ci <value value="0x21" name="FMT6_8_8_8_UNORM"/> 41bf215546Sopenharmony_ci <value value="0x22" name="FMT6_8_8_8_SNORM"/> 42bf215546Sopenharmony_ci <value value="0x23" name="FMT6_8_8_8_UINT"/> 43bf215546Sopenharmony_ci <value value="0x24" name="FMT6_8_8_8_SINT"/> 44bf215546Sopenharmony_ci 45bf215546Sopenharmony_ci <value value="0x30" name="FMT6_8_8_8_8_UNORM"/> 46bf215546Sopenharmony_ci <value value="0x31" name="FMT6_8_8_8_X8_UNORM"/> <!-- samples 1 for alpha --> 47bf215546Sopenharmony_ci <value value="0x32" name="FMT6_8_8_8_8_SNORM"/> 48bf215546Sopenharmony_ci <value value="0x33" name="FMT6_8_8_8_8_UINT"/> 49bf215546Sopenharmony_ci <value value="0x34" name="FMT6_8_8_8_8_SINT"/> 50bf215546Sopenharmony_ci 51bf215546Sopenharmony_ci <value value="0x35" name="FMT6_9_9_9_E5_FLOAT"/> 52bf215546Sopenharmony_ci 53bf215546Sopenharmony_ci <value value="0x36" name="FMT6_10_10_10_2_UNORM"/> 54bf215546Sopenharmony_ci <value value="0x37" name="FMT6_10_10_10_2_UNORM_DEST"/> 55bf215546Sopenharmony_ci <value value="0x39" name="FMT6_10_10_10_2_SNORM"/> 56bf215546Sopenharmony_ci <value value="0x3a" name="FMT6_10_10_10_2_UINT"/> 57bf215546Sopenharmony_ci <value value="0x3b" name="FMT6_10_10_10_2_SINT"/> 58bf215546Sopenharmony_ci 59bf215546Sopenharmony_ci <value value="0x42" name="FMT6_11_11_10_FLOAT"/> 60bf215546Sopenharmony_ci 61bf215546Sopenharmony_ci <value value="0x43" name="FMT6_16_16_UNORM"/> 62bf215546Sopenharmony_ci <value value="0x44" name="FMT6_16_16_SNORM"/> 63bf215546Sopenharmony_ci <value value="0x45" name="FMT6_16_16_FLOAT"/> 64bf215546Sopenharmony_ci <value value="0x46" name="FMT6_16_16_UINT"/> 65bf215546Sopenharmony_ci <value value="0x47" name="FMT6_16_16_SINT"/> 66bf215546Sopenharmony_ci 67bf215546Sopenharmony_ci <value value="0x48" name="FMT6_32_UNORM"/> 68bf215546Sopenharmony_ci <value value="0x49" name="FMT6_32_SNORM"/> 69bf215546Sopenharmony_ci <value value="0x4a" name="FMT6_32_FLOAT"/> 70bf215546Sopenharmony_ci <value value="0x4b" name="FMT6_32_UINT"/> 71bf215546Sopenharmony_ci <value value="0x4c" name="FMT6_32_SINT"/> 72bf215546Sopenharmony_ci <value value="0x4d" name="FMT6_32_FIXED"/> 73bf215546Sopenharmony_ci 74bf215546Sopenharmony_ci <value value="0x58" name="FMT6_16_16_16_UNORM"/> 75bf215546Sopenharmony_ci <value value="0x59" name="FMT6_16_16_16_SNORM"/> 76bf215546Sopenharmony_ci <value value="0x5a" name="FMT6_16_16_16_FLOAT"/> 77bf215546Sopenharmony_ci <value value="0x5b" name="FMT6_16_16_16_UINT"/> 78bf215546Sopenharmony_ci <value value="0x5c" name="FMT6_16_16_16_SINT"/> 79bf215546Sopenharmony_ci 80bf215546Sopenharmony_ci <value value="0x60" name="FMT6_16_16_16_16_UNORM"/> 81bf215546Sopenharmony_ci <value value="0x61" name="FMT6_16_16_16_16_SNORM"/> 82bf215546Sopenharmony_ci <value value="0x62" name="FMT6_16_16_16_16_FLOAT"/> 83bf215546Sopenharmony_ci <value value="0x63" name="FMT6_16_16_16_16_UINT"/> 84bf215546Sopenharmony_ci <value value="0x64" name="FMT6_16_16_16_16_SINT"/> 85bf215546Sopenharmony_ci 86bf215546Sopenharmony_ci <value value="0x65" name="FMT6_32_32_UNORM"/> 87bf215546Sopenharmony_ci <value value="0x66" name="FMT6_32_32_SNORM"/> 88bf215546Sopenharmony_ci <value value="0x67" name="FMT6_32_32_FLOAT"/> 89bf215546Sopenharmony_ci <value value="0x68" name="FMT6_32_32_UINT"/> 90bf215546Sopenharmony_ci <value value="0x69" name="FMT6_32_32_SINT"/> 91bf215546Sopenharmony_ci <value value="0x6a" name="FMT6_32_32_FIXED"/> 92bf215546Sopenharmony_ci 93bf215546Sopenharmony_ci <value value="0x70" name="FMT6_32_32_32_UNORM"/> 94bf215546Sopenharmony_ci <value value="0x71" name="FMT6_32_32_32_SNORM"/> 95bf215546Sopenharmony_ci <value value="0x72" name="FMT6_32_32_32_UINT"/> 96bf215546Sopenharmony_ci <value value="0x73" name="FMT6_32_32_32_SINT"/> 97bf215546Sopenharmony_ci <value value="0x74" name="FMT6_32_32_32_FLOAT"/> 98bf215546Sopenharmony_ci <value value="0x75" name="FMT6_32_32_32_FIXED"/> 99bf215546Sopenharmony_ci 100bf215546Sopenharmony_ci <value value="0x80" name="FMT6_32_32_32_32_UNORM"/> 101bf215546Sopenharmony_ci <value value="0x81" name="FMT6_32_32_32_32_SNORM"/> 102bf215546Sopenharmony_ci <value value="0x82" name="FMT6_32_32_32_32_FLOAT"/> 103bf215546Sopenharmony_ci <value value="0x83" name="FMT6_32_32_32_32_UINT"/> 104bf215546Sopenharmony_ci <value value="0x84" name="FMT6_32_32_32_32_SINT"/> 105bf215546Sopenharmony_ci <value value="0x85" name="FMT6_32_32_32_32_FIXED"/> 106bf215546Sopenharmony_ci 107bf215546Sopenharmony_ci <value value="0x8c" name="FMT6_G8R8B8R8_422_UNORM"/> <!-- UYVY --> 108bf215546Sopenharmony_ci <value value="0x8d" name="FMT6_R8G8R8B8_422_UNORM"/> <!-- YUYV --> 109bf215546Sopenharmony_ci <value value="0x8e" name="FMT6_R8_G8B8_2PLANE_420_UNORM"/> <!-- NV12 --> 110bf215546Sopenharmony_ci <value value="0x8f" name="FMT6_NV21"/> 111bf215546Sopenharmony_ci <value value="0x90" name="FMT6_R8_G8_B8_3PLANE_420_UNORM"/> <!-- YV12 --> 112bf215546Sopenharmony_ci 113bf215546Sopenharmony_ci <value value="0x91" name="FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8"/> 114bf215546Sopenharmony_ci 115bf215546Sopenharmony_ci <!-- Note: tiling/UBWC for these may be different from equivalent formats 116bf215546Sopenharmony_ci For example FMT6_NV12_Y is not compatible with FMT6_8_UNORM 117bf215546Sopenharmony_ci --> 118bf215546Sopenharmony_ci <value value="0x94" name="FMT6_NV12_Y"/> 119bf215546Sopenharmony_ci <value value="0x95" name="FMT6_NV12_UV"/> 120bf215546Sopenharmony_ci <value value="0x96" name="FMT6_NV12_VU"/> 121bf215546Sopenharmony_ci <value value="0x97" name="FMT6_NV12_4R"/> 122bf215546Sopenharmony_ci <value value="0x98" name="FMT6_NV12_4R_Y"/> 123bf215546Sopenharmony_ci <value value="0x99" name="FMT6_NV12_4R_UV"/> 124bf215546Sopenharmony_ci <value value="0x9a" name="FMT6_P010"/> 125bf215546Sopenharmony_ci <value value="0x9b" name="FMT6_P010_Y"/> 126bf215546Sopenharmony_ci <value value="0x9c" name="FMT6_P010_UV"/> 127bf215546Sopenharmony_ci <value value="0x9d" name="FMT6_TP10"/> 128bf215546Sopenharmony_ci <value value="0x9e" name="FMT6_TP10_Y"/> 129bf215546Sopenharmony_ci <value value="0x9f" name="FMT6_TP10_UV"/> 130bf215546Sopenharmony_ci 131bf215546Sopenharmony_ci <value value="0xa0" name="FMT6_Z24_UNORM_S8_UINT"/> 132bf215546Sopenharmony_ci 133bf215546Sopenharmony_ci <value value="0xab" name="FMT6_ETC2_RG11_UNORM"/> 134bf215546Sopenharmony_ci <value value="0xac" name="FMT6_ETC2_RG11_SNORM"/> 135bf215546Sopenharmony_ci <value value="0xad" name="FMT6_ETC2_R11_UNORM"/> 136bf215546Sopenharmony_ci <value value="0xae" name="FMT6_ETC2_R11_SNORM"/> 137bf215546Sopenharmony_ci <value value="0xaf" name="FMT6_ETC1"/> 138bf215546Sopenharmony_ci <value value="0xb0" name="FMT6_ETC2_RGB8"/> 139bf215546Sopenharmony_ci <value value="0xb1" name="FMT6_ETC2_RGBA8"/> 140bf215546Sopenharmony_ci <value value="0xb2" name="FMT6_ETC2_RGB8A1"/> 141bf215546Sopenharmony_ci <value value="0xb3" name="FMT6_DXT1"/> 142bf215546Sopenharmony_ci <value value="0xb4" name="FMT6_DXT3"/> 143bf215546Sopenharmony_ci <value value="0xb5" name="FMT6_DXT5"/> 144bf215546Sopenharmony_ci <value value="0xb7" name="FMT6_RGTC1_UNORM"/> 145bf215546Sopenharmony_ci <value value="0xb8" name="FMT6_RGTC1_SNORM"/> 146bf215546Sopenharmony_ci <value value="0xbb" name="FMT6_RGTC2_UNORM"/> 147bf215546Sopenharmony_ci <value value="0xbc" name="FMT6_RGTC2_SNORM"/> 148bf215546Sopenharmony_ci <value value="0xbe" name="FMT6_BPTC_UFLOAT"/> 149bf215546Sopenharmony_ci <value value="0xbf" name="FMT6_BPTC_FLOAT"/> 150bf215546Sopenharmony_ci <value value="0xc0" name="FMT6_BPTC"/> 151bf215546Sopenharmony_ci <value value="0xc1" name="FMT6_ASTC_4x4"/> 152bf215546Sopenharmony_ci <value value="0xc2" name="FMT6_ASTC_5x4"/> 153bf215546Sopenharmony_ci <value value="0xc3" name="FMT6_ASTC_5x5"/> 154bf215546Sopenharmony_ci <value value="0xc4" name="FMT6_ASTC_6x5"/> 155bf215546Sopenharmony_ci <value value="0xc5" name="FMT6_ASTC_6x6"/> 156bf215546Sopenharmony_ci <value value="0xc6" name="FMT6_ASTC_8x5"/> 157bf215546Sopenharmony_ci <value value="0xc7" name="FMT6_ASTC_8x6"/> 158bf215546Sopenharmony_ci <value value="0xc8" name="FMT6_ASTC_8x8"/> 159bf215546Sopenharmony_ci <value value="0xc9" name="FMT6_ASTC_10x5"/> 160bf215546Sopenharmony_ci <value value="0xca" name="FMT6_ASTC_10x6"/> 161bf215546Sopenharmony_ci <value value="0xcb" name="FMT6_ASTC_10x8"/> 162bf215546Sopenharmony_ci <value value="0xcc" name="FMT6_ASTC_10x10"/> 163bf215546Sopenharmony_ci <value value="0xcd" name="FMT6_ASTC_12x10"/> 164bf215546Sopenharmony_ci <value value="0xce" name="FMT6_ASTC_12x12"/> 165bf215546Sopenharmony_ci 166bf215546Sopenharmony_ci <!-- for sampling stencil (integer, 2nd channel), not available on a630 --> 167bf215546Sopenharmony_ci <value value="0xea" name="FMT6_Z24_UINT_S8_UINT"/> 168bf215546Sopenharmony_ci 169bf215546Sopenharmony_ci <!-- Not a hw enum, used internally in driver --> 170bf215546Sopenharmony_ci <value value="0xff" name="FMT6_NONE"/> 171bf215546Sopenharmony_ci 172bf215546Sopenharmony_ci</enum> 173bf215546Sopenharmony_ci 174bf215546Sopenharmony_ci<!-- probably same as a5xx --> 175bf215546Sopenharmony_ci<enum name="a6xx_polygon_mode"> 176bf215546Sopenharmony_ci <value name="POLYMODE6_POINTS" value="1"/> 177bf215546Sopenharmony_ci <value name="POLYMODE6_LINES" value="2"/> 178bf215546Sopenharmony_ci <value name="POLYMODE6_TRIANGLES" value="3"/> 179bf215546Sopenharmony_ci</enum> 180bf215546Sopenharmony_ci 181bf215546Sopenharmony_ci<enum name="a6xx_depth_format"> 182bf215546Sopenharmony_ci <value name="DEPTH6_NONE" value="0"/> 183bf215546Sopenharmony_ci <value name="DEPTH6_16" value="1"/> 184bf215546Sopenharmony_ci <value name="DEPTH6_24_8" value="2"/> 185bf215546Sopenharmony_ci <value name="DEPTH6_32" value="4"/> 186bf215546Sopenharmony_ci</enum> 187bf215546Sopenharmony_ci 188bf215546Sopenharmony_ci<bitset name="a6x_cp_protect" inline="yes"> 189bf215546Sopenharmony_ci <bitfield name="BASE_ADDR" low="0" high="17"/> 190bf215546Sopenharmony_ci <bitfield name="MASK_LEN" low="18" high="30"/> 191bf215546Sopenharmony_ci <bitfield name="READ" pos="31" type="boolean"/> 192bf215546Sopenharmony_ci</bitset> 193bf215546Sopenharmony_ci 194bf215546Sopenharmony_ci<enum name="a6xx_shader_id"> 195bf215546Sopenharmony_ci <value value="0x9" name="A6XX_TP0_TMO_DATA"/> 196bf215546Sopenharmony_ci <value value="0xa" name="A6XX_TP0_SMO_DATA"/> 197bf215546Sopenharmony_ci <value value="0xb" name="A6XX_TP0_MIPMAP_BASE_DATA"/> 198bf215546Sopenharmony_ci <value value="0x19" name="A6XX_TP1_TMO_DATA"/> 199bf215546Sopenharmony_ci <value value="0x1a" name="A6XX_TP1_SMO_DATA"/> 200bf215546Sopenharmony_ci <value value="0x1b" name="A6XX_TP1_MIPMAP_BASE_DATA"/> 201bf215546Sopenharmony_ci <value value="0x29" name="A6XX_SP_INST_DATA"/> 202bf215546Sopenharmony_ci <value value="0x2a" name="A6XX_SP_LB_0_DATA"/> 203bf215546Sopenharmony_ci <value value="0x2b" name="A6XX_SP_LB_1_DATA"/> 204bf215546Sopenharmony_ci <value value="0x2c" name="A6XX_SP_LB_2_DATA"/> 205bf215546Sopenharmony_ci <value value="0x2d" name="A6XX_SP_LB_3_DATA"/> 206bf215546Sopenharmony_ci <value value="0x2e" name="A6XX_SP_LB_4_DATA"/> 207bf215546Sopenharmony_ci <value value="0x2f" name="A6XX_SP_LB_5_DATA"/> 208bf215546Sopenharmony_ci <value value="0x30" name="A6XX_SP_CB_BINDLESS_DATA"/> 209bf215546Sopenharmony_ci <value value="0x31" name="A6XX_SP_CB_LEGACY_DATA"/> 210bf215546Sopenharmony_ci <value value="0x32" name="A6XX_SP_UAV_DATA"/> 211bf215546Sopenharmony_ci <value value="0x33" name="A6XX_SP_INST_TAG"/> 212bf215546Sopenharmony_ci <value value="0x34" name="A6XX_SP_CB_BINDLESS_TAG"/> 213bf215546Sopenharmony_ci <value value="0x35" name="A6XX_SP_TMO_UMO_TAG"/> 214bf215546Sopenharmony_ci <value value="0x36" name="A6XX_SP_SMO_TAG"/> 215bf215546Sopenharmony_ci <value value="0x37" name="A6XX_SP_STATE_DATA"/> 216bf215546Sopenharmony_ci <value value="0x49" name="A6XX_HLSQ_CHUNK_CVS_RAM"/> 217bf215546Sopenharmony_ci <value value="0x4a" name="A6XX_HLSQ_CHUNK_CPS_RAM"/> 218bf215546Sopenharmony_ci <value value="0x4b" name="A6XX_HLSQ_CHUNK_CVS_RAM_TAG"/> 219bf215546Sopenharmony_ci <value value="0x4c" name="A6XX_HLSQ_CHUNK_CPS_RAM_TAG"/> 220bf215546Sopenharmony_ci <value value="0x4d" name="A6XX_HLSQ_ICB_CVS_CB_BASE_TAG"/> 221bf215546Sopenharmony_ci <value value="0x4e" name="A6XX_HLSQ_ICB_CPS_CB_BASE_TAG"/> 222bf215546Sopenharmony_ci <value value="0x50" name="A6XX_HLSQ_CVS_MISC_RAM"/> 223bf215546Sopenharmony_ci <value value="0x51" name="A6XX_HLSQ_CPS_MISC_RAM"/> 224bf215546Sopenharmony_ci <value value="0x52" name="A6XX_HLSQ_INST_RAM"/> 225bf215546Sopenharmony_ci <value value="0x53" name="A6XX_HLSQ_GFX_CVS_CONST_RAM"/> 226bf215546Sopenharmony_ci <value value="0x54" name="A6XX_HLSQ_GFX_CPS_CONST_RAM"/> 227bf215546Sopenharmony_ci <value value="0x55" name="A6XX_HLSQ_CVS_MISC_RAM_TAG"/> 228bf215546Sopenharmony_ci <value value="0x56" name="A6XX_HLSQ_CPS_MISC_RAM_TAG"/> 229bf215546Sopenharmony_ci <value value="0x57" name="A6XX_HLSQ_INST_RAM_TAG"/> 230bf215546Sopenharmony_ci <value value="0x58" name="A6XX_HLSQ_GFX_CVS_CONST_RAM_TAG"/> 231bf215546Sopenharmony_ci <value value="0x59" name="A6XX_HLSQ_GFX_CPS_CONST_RAM_TAG"/> 232bf215546Sopenharmony_ci <value value="0x5a" name="A6XX_HLSQ_PWR_REST_RAM"/> 233bf215546Sopenharmony_ci <value value="0x5b" name="A6XX_HLSQ_PWR_REST_TAG"/> 234bf215546Sopenharmony_ci <value value="0x60" name="A6XX_HLSQ_DATAPATH_META"/> 235bf215546Sopenharmony_ci <value value="0x61" name="A6XX_HLSQ_FRONTEND_META"/> 236bf215546Sopenharmony_ci <value value="0x62" name="A6XX_HLSQ_INDIRECT_META"/> 237bf215546Sopenharmony_ci <value value="0x63" name="A6XX_HLSQ_BACKEND_META"/> 238bf215546Sopenharmony_ci</enum> 239bf215546Sopenharmony_ci 240bf215546Sopenharmony_ci<enum name="a6xx_debugbus_id"> 241bf215546Sopenharmony_ci <value value="0x1" name="A6XX_DBGBUS_CP"/> 242bf215546Sopenharmony_ci <value value="0x2" name="A6XX_DBGBUS_RBBM"/> 243bf215546Sopenharmony_ci <value value="0x3" name="A6XX_DBGBUS_VBIF"/> 244bf215546Sopenharmony_ci <value value="0x4" name="A6XX_DBGBUS_HLSQ"/> 245bf215546Sopenharmony_ci <value value="0x5" name="A6XX_DBGBUS_UCHE"/> 246bf215546Sopenharmony_ci <value value="0x6" name="A6XX_DBGBUS_DPM"/> 247bf215546Sopenharmony_ci <value value="0x7" name="A6XX_DBGBUS_TESS"/> 248bf215546Sopenharmony_ci <value value="0x8" name="A6XX_DBGBUS_PC"/> 249bf215546Sopenharmony_ci <value value="0x9" name="A6XX_DBGBUS_VFDP"/> 250bf215546Sopenharmony_ci <value value="0xa" name="A6XX_DBGBUS_VPC"/> 251bf215546Sopenharmony_ci <value value="0xb" name="A6XX_DBGBUS_TSE"/> 252bf215546Sopenharmony_ci <value value="0xc" name="A6XX_DBGBUS_RAS"/> 253bf215546Sopenharmony_ci <value value="0xd" name="A6XX_DBGBUS_VSC"/> 254bf215546Sopenharmony_ci <value value="0xe" name="A6XX_DBGBUS_COM"/> 255bf215546Sopenharmony_ci <value value="0x10" name="A6XX_DBGBUS_LRZ"/> 256bf215546Sopenharmony_ci <value value="0x11" name="A6XX_DBGBUS_A2D"/> 257bf215546Sopenharmony_ci <value value="0x12" name="A6XX_DBGBUS_CCUFCHE"/> 258bf215546Sopenharmony_ci <value value="0x13" name="A6XX_DBGBUS_GMU_CX"/> 259bf215546Sopenharmony_ci <value value="0x14" name="A6XX_DBGBUS_RBP"/> 260bf215546Sopenharmony_ci <value value="0x15" name="A6XX_DBGBUS_DCS"/> 261bf215546Sopenharmony_ci <value value="0x16" name="A6XX_DBGBUS_DBGC"/> 262bf215546Sopenharmony_ci <value value="0x17" name="A6XX_DBGBUS_CX"/> 263bf215546Sopenharmony_ci <value value="0x18" name="A6XX_DBGBUS_GMU_GX"/> 264bf215546Sopenharmony_ci <value value="0x19" name="A6XX_DBGBUS_TPFCHE"/> 265bf215546Sopenharmony_ci <value value="0x1a" name="A6XX_DBGBUS_GBIF_GX"/> 266bf215546Sopenharmony_ci <value value="0x1d" name="A6XX_DBGBUS_GPC"/> 267bf215546Sopenharmony_ci <value value="0x1e" name="A6XX_DBGBUS_LARC"/> 268bf215546Sopenharmony_ci <value value="0x1f" name="A6XX_DBGBUS_HLSQ_SPTP"/> 269bf215546Sopenharmony_ci <value value="0x20" name="A6XX_DBGBUS_RB_0"/> 270bf215546Sopenharmony_ci <value value="0x21" name="A6XX_DBGBUS_RB_1"/> 271bf215546Sopenharmony_ci <value value="0x24" name="A6XX_DBGBUS_UCHE_WRAPPER"/> 272bf215546Sopenharmony_ci <value value="0x28" name="A6XX_DBGBUS_CCU_0"/> 273bf215546Sopenharmony_ci <value value="0x29" name="A6XX_DBGBUS_CCU_1"/> 274bf215546Sopenharmony_ci <value value="0x38" name="A6XX_DBGBUS_VFD_0"/> 275bf215546Sopenharmony_ci <value value="0x39" name="A6XX_DBGBUS_VFD_1"/> 276bf215546Sopenharmony_ci <value value="0x3a" name="A6XX_DBGBUS_VFD_2"/> 277bf215546Sopenharmony_ci <value value="0x3b" name="A6XX_DBGBUS_VFD_3"/> 278bf215546Sopenharmony_ci <value value="0x40" name="A6XX_DBGBUS_SP_0"/> 279bf215546Sopenharmony_ci <value value="0x41" name="A6XX_DBGBUS_SP_1"/> 280bf215546Sopenharmony_ci <value value="0x48" name="A6XX_DBGBUS_TPL1_0"/> 281bf215546Sopenharmony_ci <value value="0x49" name="A6XX_DBGBUS_TPL1_1"/> 282bf215546Sopenharmony_ci <value value="0x4a" name="A6XX_DBGBUS_TPL1_2"/> 283bf215546Sopenharmony_ci <value value="0x4b" name="A6XX_DBGBUS_TPL1_3"/> 284bf215546Sopenharmony_ci</enum> 285bf215546Sopenharmony_ci 286bf215546Sopenharmony_ci<enum name="a6xx_cp_perfcounter_select"> 287bf215546Sopenharmony_ci <value value="0" name="PERF_CP_ALWAYS_COUNT"/> 288bf215546Sopenharmony_ci <value value="1" name="PERF_CP_BUSY_GFX_CORE_IDLE"/> 289bf215546Sopenharmony_ci <value value="2" name="PERF_CP_BUSY_CYCLES"/> 290bf215546Sopenharmony_ci <value value="3" name="PERF_CP_NUM_PREEMPTIONS"/> 291bf215546Sopenharmony_ci <value value="4" name="PERF_CP_PREEMPTION_REACTION_DELAY"/> 292bf215546Sopenharmony_ci <value value="5" name="PERF_CP_PREEMPTION_SWITCH_OUT_TIME"/> 293bf215546Sopenharmony_ci <value value="6" name="PERF_CP_PREEMPTION_SWITCH_IN_TIME"/> 294bf215546Sopenharmony_ci <value value="7" name="PERF_CP_DEAD_DRAWS_IN_BIN_RENDER"/> 295bf215546Sopenharmony_ci <value value="8" name="PERF_CP_PREDICATED_DRAWS_KILLED"/> 296bf215546Sopenharmony_ci <value value="9" name="PERF_CP_MODE_SWITCH"/> 297bf215546Sopenharmony_ci <value value="10" name="PERF_CP_ZPASS_DONE"/> 298bf215546Sopenharmony_ci <value value="11" name="PERF_CP_CONTEXT_DONE"/> 299bf215546Sopenharmony_ci <value value="12" name="PERF_CP_CACHE_FLUSH"/> 300bf215546Sopenharmony_ci <value value="13" name="PERF_CP_LONG_PREEMPTIONS"/> 301bf215546Sopenharmony_ci <value value="14" name="PERF_CP_SQE_I_CACHE_STARVE"/> 302bf215546Sopenharmony_ci <value value="15" name="PERF_CP_SQE_IDLE"/> 303bf215546Sopenharmony_ci <value value="16" name="PERF_CP_SQE_PM4_STARVE_RB_IB"/> 304bf215546Sopenharmony_ci <value value="17" name="PERF_CP_SQE_PM4_STARVE_SDS"/> 305bf215546Sopenharmony_ci <value value="18" name="PERF_CP_SQE_MRB_STARVE"/> 306bf215546Sopenharmony_ci <value value="19" name="PERF_CP_SQE_RRB_STARVE"/> 307bf215546Sopenharmony_ci <value value="20" name="PERF_CP_SQE_VSD_STARVE"/> 308bf215546Sopenharmony_ci <value value="21" name="PERF_CP_VSD_DECODE_STARVE"/> 309bf215546Sopenharmony_ci <value value="22" name="PERF_CP_SQE_PIPE_OUT_STALL"/> 310bf215546Sopenharmony_ci <value value="23" name="PERF_CP_SQE_SYNC_STALL"/> 311bf215546Sopenharmony_ci <value value="24" name="PERF_CP_SQE_PM4_WFI_STALL"/> 312bf215546Sopenharmony_ci <value value="25" name="PERF_CP_SQE_SYS_WFI_STALL"/> 313bf215546Sopenharmony_ci <value value="26" name="PERF_CP_SQE_T4_EXEC"/> 314bf215546Sopenharmony_ci <value value="27" name="PERF_CP_SQE_LOAD_STATE_EXEC"/> 315bf215546Sopenharmony_ci <value value="28" name="PERF_CP_SQE_SAVE_SDS_STATE"/> 316bf215546Sopenharmony_ci <value value="29" name="PERF_CP_SQE_DRAW_EXEC"/> 317bf215546Sopenharmony_ci <value value="30" name="PERF_CP_SQE_CTXT_REG_BUNCH_EXEC"/> 318bf215546Sopenharmony_ci <value value="31" name="PERF_CP_SQE_EXEC_PROFILED"/> 319bf215546Sopenharmony_ci <value value="32" name="PERF_CP_MEMORY_POOL_EMPTY"/> 320bf215546Sopenharmony_ci <value value="33" name="PERF_CP_MEMORY_POOL_SYNC_STALL"/> 321bf215546Sopenharmony_ci <value value="34" name="PERF_CP_MEMORY_POOL_ABOVE_THRESH"/> 322bf215546Sopenharmony_ci <value value="35" name="PERF_CP_AHB_WR_STALL_PRE_DRAWS"/> 323bf215546Sopenharmony_ci <value value="36" name="PERF_CP_AHB_STALL_SQE_GMU"/> 324bf215546Sopenharmony_ci <value value="37" name="PERF_CP_AHB_STALL_SQE_WR_OTHER"/> 325bf215546Sopenharmony_ci <value value="38" name="PERF_CP_AHB_STALL_SQE_RD_OTHER"/> 326bf215546Sopenharmony_ci <value value="39" name="PERF_CP_CLUSTER0_EMPTY"/> 327bf215546Sopenharmony_ci <value value="40" name="PERF_CP_CLUSTER1_EMPTY"/> 328bf215546Sopenharmony_ci <value value="41" name="PERF_CP_CLUSTER2_EMPTY"/> 329bf215546Sopenharmony_ci <value value="42" name="PERF_CP_CLUSTER3_EMPTY"/> 330bf215546Sopenharmony_ci <value value="43" name="PERF_CP_CLUSTER4_EMPTY"/> 331bf215546Sopenharmony_ci <value value="44" name="PERF_CP_CLUSTER5_EMPTY"/> 332bf215546Sopenharmony_ci <value value="45" name="PERF_CP_PM4_DATA"/> 333bf215546Sopenharmony_ci <value value="46" name="PERF_CP_PM4_HEADERS"/> 334bf215546Sopenharmony_ci <value value="47" name="PERF_CP_VBIF_READ_BEATS"/> 335bf215546Sopenharmony_ci <value value="48" name="PERF_CP_VBIF_WRITE_BEATS"/> 336bf215546Sopenharmony_ci <value value="49" name="PERF_CP_SQE_INSTR_COUNTER"/> 337bf215546Sopenharmony_ci</enum> 338bf215546Sopenharmony_ci 339bf215546Sopenharmony_ci<enum name="a6xx_rbbm_perfcounter_select"> 340bf215546Sopenharmony_ci <value value="0" name="PERF_RBBM_ALWAYS_COUNT"/> 341bf215546Sopenharmony_ci <value value="1" name="PERF_RBBM_ALWAYS_ON"/> 342bf215546Sopenharmony_ci <value value="2" name="PERF_RBBM_TSE_BUSY"/> 343bf215546Sopenharmony_ci <value value="3" name="PERF_RBBM_RAS_BUSY"/> 344bf215546Sopenharmony_ci <value value="4" name="PERF_RBBM_PC_DCALL_BUSY"/> 345bf215546Sopenharmony_ci <value value="5" name="PERF_RBBM_PC_VSD_BUSY"/> 346bf215546Sopenharmony_ci <value value="6" name="PERF_RBBM_STATUS_MASKED"/> 347bf215546Sopenharmony_ci <value value="7" name="PERF_RBBM_COM_BUSY"/> 348bf215546Sopenharmony_ci <value value="8" name="PERF_RBBM_DCOM_BUSY"/> 349bf215546Sopenharmony_ci <value value="9" name="PERF_RBBM_VBIF_BUSY"/> 350bf215546Sopenharmony_ci <value value="10" name="PERF_RBBM_VSC_BUSY"/> 351bf215546Sopenharmony_ci <value value="11" name="PERF_RBBM_TESS_BUSY"/> 352bf215546Sopenharmony_ci <value value="12" name="PERF_RBBM_UCHE_BUSY"/> 353bf215546Sopenharmony_ci <value value="13" name="PERF_RBBM_HLSQ_BUSY"/> 354bf215546Sopenharmony_ci</enum> 355bf215546Sopenharmony_ci 356bf215546Sopenharmony_ci<enum name="a6xx_pc_perfcounter_select"> 357bf215546Sopenharmony_ci <value value="0" name="PERF_PC_BUSY_CYCLES"/> 358bf215546Sopenharmony_ci <value value="1" name="PERF_PC_WORKING_CYCLES"/> 359bf215546Sopenharmony_ci <value value="2" name="PERF_PC_STALL_CYCLES_VFD"/> 360bf215546Sopenharmony_ci <value value="3" name="PERF_PC_STALL_CYCLES_TSE"/> 361bf215546Sopenharmony_ci <value value="4" name="PERF_PC_STALL_CYCLES_VPC"/> 362bf215546Sopenharmony_ci <value value="5" name="PERF_PC_STALL_CYCLES_UCHE"/> 363bf215546Sopenharmony_ci <value value="6" name="PERF_PC_STALL_CYCLES_TESS"/> 364bf215546Sopenharmony_ci <value value="7" name="PERF_PC_STALL_CYCLES_TSE_ONLY"/> 365bf215546Sopenharmony_ci <value value="8" name="PERF_PC_STALL_CYCLES_VPC_ONLY"/> 366bf215546Sopenharmony_ci <value value="9" name="PERF_PC_PASS1_TF_STALL_CYCLES"/> 367bf215546Sopenharmony_ci <value value="10" name="PERF_PC_STARVE_CYCLES_FOR_INDEX"/> 368bf215546Sopenharmony_ci <value value="11" name="PERF_PC_STARVE_CYCLES_FOR_TESS_FACTOR"/> 369bf215546Sopenharmony_ci <value value="12" name="PERF_PC_STARVE_CYCLES_FOR_VIZ_STREAM"/> 370bf215546Sopenharmony_ci <value value="13" name="PERF_PC_STARVE_CYCLES_FOR_POSITION"/> 371bf215546Sopenharmony_ci <value value="14" name="PERF_PC_STARVE_CYCLES_DI"/> 372bf215546Sopenharmony_ci <value value="15" name="PERF_PC_VIS_STREAMS_LOADED"/> 373bf215546Sopenharmony_ci <value value="16" name="PERF_PC_INSTANCES"/> 374bf215546Sopenharmony_ci <value value="17" name="PERF_PC_VPC_PRIMITIVES"/> 375bf215546Sopenharmony_ci <value value="18" name="PERF_PC_DEAD_PRIM"/> 376bf215546Sopenharmony_ci <value value="19" name="PERF_PC_LIVE_PRIM"/> 377bf215546Sopenharmony_ci <value value="20" name="PERF_PC_VERTEX_HITS"/> 378bf215546Sopenharmony_ci <value value="21" name="PERF_PC_IA_VERTICES"/> 379bf215546Sopenharmony_ci <value value="22" name="PERF_PC_IA_PRIMITIVES"/> 380bf215546Sopenharmony_ci <value value="23" name="PERF_PC_GS_PRIMITIVES"/> 381bf215546Sopenharmony_ci <value value="24" name="PERF_PC_HS_INVOCATIONS"/> 382bf215546Sopenharmony_ci <value value="25" name="PERF_PC_DS_INVOCATIONS"/> 383bf215546Sopenharmony_ci <value value="26" name="PERF_PC_VS_INVOCATIONS"/> 384bf215546Sopenharmony_ci <value value="27" name="PERF_PC_GS_INVOCATIONS"/> 385bf215546Sopenharmony_ci <value value="28" name="PERF_PC_DS_PRIMITIVES"/> 386bf215546Sopenharmony_ci <value value="29" name="PERF_PC_VPC_POS_DATA_TRANSACTION"/> 387bf215546Sopenharmony_ci <value value="30" name="PERF_PC_3D_DRAWCALLS"/> 388bf215546Sopenharmony_ci <value value="31" name="PERF_PC_2D_DRAWCALLS"/> 389bf215546Sopenharmony_ci <value value="32" name="PERF_PC_NON_DRAWCALL_GLOBAL_EVENTS"/> 390bf215546Sopenharmony_ci <value value="33" name="PERF_TESS_BUSY_CYCLES"/> 391bf215546Sopenharmony_ci <value value="34" name="PERF_TESS_WORKING_CYCLES"/> 392bf215546Sopenharmony_ci <value value="35" name="PERF_TESS_STALL_CYCLES_PC"/> 393bf215546Sopenharmony_ci <value value="36" name="PERF_TESS_STARVE_CYCLES_PC"/> 394bf215546Sopenharmony_ci <value value="37" name="PERF_PC_TSE_TRANSACTION"/> 395bf215546Sopenharmony_ci <value value="38" name="PERF_PC_TSE_VERTEX"/> 396bf215546Sopenharmony_ci <value value="39" name="PERF_PC_TESS_PC_UV_TRANS"/> 397bf215546Sopenharmony_ci <value value="40" name="PERF_PC_TESS_PC_UV_PATCHES"/> 398bf215546Sopenharmony_ci <value value="41" name="PERF_PC_TESS_FACTOR_TRANS"/> 399bf215546Sopenharmony_ci</enum> 400bf215546Sopenharmony_ci 401bf215546Sopenharmony_ci<enum name="a6xx_vfd_perfcounter_select"> 402bf215546Sopenharmony_ci <value value="0" name="PERF_VFD_BUSY_CYCLES"/> 403bf215546Sopenharmony_ci <value value="1" name="PERF_VFD_STALL_CYCLES_UCHE"/> 404bf215546Sopenharmony_ci <value value="2" name="PERF_VFD_STALL_CYCLES_VPC_ALLOC"/> 405bf215546Sopenharmony_ci <value value="3" name="PERF_VFD_STALL_CYCLES_SP_INFO"/> 406bf215546Sopenharmony_ci <value value="4" name="PERF_VFD_STALL_CYCLES_SP_ATTR"/> 407bf215546Sopenharmony_ci <value value="5" name="PERF_VFD_STARVE_CYCLES_UCHE"/> 408bf215546Sopenharmony_ci <value value="6" name="PERF_VFD_RBUFFER_FULL"/> 409bf215546Sopenharmony_ci <value value="7" name="PERF_VFD_ATTR_INFO_FIFO_FULL"/> 410bf215546Sopenharmony_ci <value value="8" name="PERF_VFD_DECODED_ATTRIBUTE_BYTES"/> 411bf215546Sopenharmony_ci <value value="9" name="PERF_VFD_NUM_ATTRIBUTES"/> 412bf215546Sopenharmony_ci <value value="10" name="PERF_VFD_UPPER_SHADER_FIBERS"/> 413bf215546Sopenharmony_ci <value value="11" name="PERF_VFD_LOWER_SHADER_FIBERS"/> 414bf215546Sopenharmony_ci <value value="12" name="PERF_VFD_MODE_0_FIBERS"/> 415bf215546Sopenharmony_ci <value value="13" name="PERF_VFD_MODE_1_FIBERS"/> 416bf215546Sopenharmony_ci <value value="14" name="PERF_VFD_MODE_2_FIBERS"/> 417bf215546Sopenharmony_ci <value value="15" name="PERF_VFD_MODE_3_FIBERS"/> 418bf215546Sopenharmony_ci <value value="16" name="PERF_VFD_MODE_4_FIBERS"/> 419bf215546Sopenharmony_ci <value value="17" name="PERF_VFD_TOTAL_VERTICES"/> 420bf215546Sopenharmony_ci <value value="18" name="PERF_VFDP_STALL_CYCLES_VFD"/> 421bf215546Sopenharmony_ci <value value="19" name="PERF_VFDP_STALL_CYCLES_VFD_INDEX"/> 422bf215546Sopenharmony_ci <value value="20" name="PERF_VFDP_STALL_CYCLES_VFD_PROG"/> 423bf215546Sopenharmony_ci <value value="21" name="PERF_VFDP_STARVE_CYCLES_PC"/> 424bf215546Sopenharmony_ci <value value="22" name="PERF_VFDP_VS_STAGE_WAVES"/> 425bf215546Sopenharmony_ci</enum> 426bf215546Sopenharmony_ci 427bf215546Sopenharmony_ci<enum name="a6xx_hlsq_perfcounter_select"> 428bf215546Sopenharmony_ci <value value="0" name="PERF_HLSQ_BUSY_CYCLES"/> 429bf215546Sopenharmony_ci <value value="1" name="PERF_HLSQ_STALL_CYCLES_UCHE"/> 430bf215546Sopenharmony_ci <value value="2" name="PERF_HLSQ_STALL_CYCLES_SP_STATE"/> 431bf215546Sopenharmony_ci <value value="3" name="PERF_HLSQ_STALL_CYCLES_SP_FS_STAGE"/> 432bf215546Sopenharmony_ci <value value="4" name="PERF_HLSQ_UCHE_LATENCY_CYCLES"/> 433bf215546Sopenharmony_ci <value value="5" name="PERF_HLSQ_UCHE_LATENCY_COUNT"/> 434bf215546Sopenharmony_ci <value value="6" name="PERF_HLSQ_FS_STAGE_1X_WAVES"/> 435bf215546Sopenharmony_ci <value value="7" name="PERF_HLSQ_FS_STAGE_2X_WAVES"/> 436bf215546Sopenharmony_ci <value value="8" name="PERF_HLSQ_QUADS"/> 437bf215546Sopenharmony_ci <value value="9" name="PERF_HLSQ_CS_INVOCATIONS"/> 438bf215546Sopenharmony_ci <value value="10" name="PERF_HLSQ_COMPUTE_DRAWCALLS"/> 439bf215546Sopenharmony_ci <value value="11" name="PERF_HLSQ_FS_DATA_WAIT_PROGRAMMING"/> 440bf215546Sopenharmony_ci <value value="12" name="PERF_HLSQ_DUAL_FS_PROG_ACTIVE"/> 441bf215546Sopenharmony_ci <value value="13" name="PERF_HLSQ_DUAL_VS_PROG_ACTIVE"/> 442bf215546Sopenharmony_ci <value value="14" name="PERF_HLSQ_FS_BATCH_COUNT_ZERO"/> 443bf215546Sopenharmony_ci <value value="15" name="PERF_HLSQ_VS_BATCH_COUNT_ZERO"/> 444bf215546Sopenharmony_ci <value value="16" name="PERF_HLSQ_WAVE_PENDING_NO_QUAD"/> 445bf215546Sopenharmony_ci <value value="17" name="PERF_HLSQ_WAVE_PENDING_NO_PRIM_BASE"/> 446bf215546Sopenharmony_ci <value value="18" name="PERF_HLSQ_STALL_CYCLES_VPC"/> 447bf215546Sopenharmony_ci <value value="19" name="PERF_HLSQ_PIXELS"/> 448bf215546Sopenharmony_ci <value value="20" name="PERF_HLSQ_DRAW_MODE_SWITCH_VSFS_SYNC"/> 449bf215546Sopenharmony_ci</enum> 450bf215546Sopenharmony_ci 451bf215546Sopenharmony_ci<enum name="a6xx_vpc_perfcounter_select"> 452bf215546Sopenharmony_ci <value value="0" name="PERF_VPC_BUSY_CYCLES"/> 453bf215546Sopenharmony_ci <value value="1" name="PERF_VPC_WORKING_CYCLES"/> 454bf215546Sopenharmony_ci <value value="2" name="PERF_VPC_STALL_CYCLES_UCHE"/> 455bf215546Sopenharmony_ci <value value="3" name="PERF_VPC_STALL_CYCLES_VFD_WACK"/> 456bf215546Sopenharmony_ci <value value="4" name="PERF_VPC_STALL_CYCLES_HLSQ_PRIM_ALLOC"/> 457bf215546Sopenharmony_ci <value value="5" name="PERF_VPC_STALL_CYCLES_PC"/> 458bf215546Sopenharmony_ci <value value="6" name="PERF_VPC_STALL_CYCLES_SP_LM"/> 459bf215546Sopenharmony_ci <value value="7" name="PERF_VPC_STARVE_CYCLES_SP"/> 460bf215546Sopenharmony_ci <value value="8" name="PERF_VPC_STARVE_CYCLES_LRZ"/> 461bf215546Sopenharmony_ci <value value="9" name="PERF_VPC_PC_PRIMITIVES"/> 462bf215546Sopenharmony_ci <value value="10" name="PERF_VPC_SP_COMPONENTS"/> 463bf215546Sopenharmony_ci <value value="11" name="PERF_VPC_STALL_CYCLES_VPCRAM_POS"/> 464bf215546Sopenharmony_ci <value value="12" name="PERF_VPC_LRZ_ASSIGN_PRIMITIVES"/> 465bf215546Sopenharmony_ci <value value="13" name="PERF_VPC_RB_VISIBLE_PRIMITIVES"/> 466bf215546Sopenharmony_ci <value value="14" name="PERF_VPC_LM_TRANSACTION"/> 467bf215546Sopenharmony_ci <value value="15" name="PERF_VPC_STREAMOUT_TRANSACTION"/> 468bf215546Sopenharmony_ci <value value="16" name="PERF_VPC_VS_BUSY_CYCLES"/> 469bf215546Sopenharmony_ci <value value="17" name="PERF_VPC_PS_BUSY_CYCLES"/> 470bf215546Sopenharmony_ci <value value="18" name="PERF_VPC_VS_WORKING_CYCLES"/> 471bf215546Sopenharmony_ci <value value="19" name="PERF_VPC_PS_WORKING_CYCLES"/> 472bf215546Sopenharmony_ci <value value="20" name="PERF_VPC_STARVE_CYCLES_RB"/> 473bf215546Sopenharmony_ci <value value="21" name="PERF_VPC_NUM_VPCRAM_READ_POS"/> 474bf215546Sopenharmony_ci <value value="22" name="PERF_VPC_WIT_FULL_CYCLES"/> 475bf215546Sopenharmony_ci <value value="23" name="PERF_VPC_VPCRAM_FULL_CYCLES"/> 476bf215546Sopenharmony_ci <value value="24" name="PERF_VPC_LM_FULL_WAIT_FOR_INTP_END"/> 477bf215546Sopenharmony_ci <value value="25" name="PERF_VPC_NUM_VPCRAM_WRITE"/> 478bf215546Sopenharmony_ci <value value="26" name="PERF_VPC_NUM_VPCRAM_READ_SO"/> 479bf215546Sopenharmony_ci <value value="27" name="PERF_VPC_NUM_ATTR_REQ_LM"/> 480bf215546Sopenharmony_ci</enum> 481bf215546Sopenharmony_ci 482bf215546Sopenharmony_ci<enum name="a6xx_tse_perfcounter_select"> 483bf215546Sopenharmony_ci <value value="0" name="PERF_TSE_BUSY_CYCLES"/> 484bf215546Sopenharmony_ci <value value="1" name="PERF_TSE_CLIPPING_CYCLES"/> 485bf215546Sopenharmony_ci <value value="2" name="PERF_TSE_STALL_CYCLES_RAS"/> 486bf215546Sopenharmony_ci <value value="3" name="PERF_TSE_STALL_CYCLES_LRZ_BARYPLANE"/> 487bf215546Sopenharmony_ci <value value="4" name="PERF_TSE_STALL_CYCLES_LRZ_ZPLANE"/> 488bf215546Sopenharmony_ci <value value="5" name="PERF_TSE_STARVE_CYCLES_PC"/> 489bf215546Sopenharmony_ci <value value="6" name="PERF_TSE_INPUT_PRIM"/> 490bf215546Sopenharmony_ci <value value="7" name="PERF_TSE_INPUT_NULL_PRIM"/> 491bf215546Sopenharmony_ci <value value="8" name="PERF_TSE_TRIVAL_REJ_PRIM"/> 492bf215546Sopenharmony_ci <value value="9" name="PERF_TSE_CLIPPED_PRIM"/> 493bf215546Sopenharmony_ci <value value="10" name="PERF_TSE_ZERO_AREA_PRIM"/> 494bf215546Sopenharmony_ci <value value="11" name="PERF_TSE_FACENESS_CULLED_PRIM"/> 495bf215546Sopenharmony_ci <value value="12" name="PERF_TSE_ZERO_PIXEL_PRIM"/> 496bf215546Sopenharmony_ci <value value="13" name="PERF_TSE_OUTPUT_NULL_PRIM"/> 497bf215546Sopenharmony_ci <value value="14" name="PERF_TSE_OUTPUT_VISIBLE_PRIM"/> 498bf215546Sopenharmony_ci <value value="15" name="PERF_TSE_CINVOCATION"/> 499bf215546Sopenharmony_ci <value value="16" name="PERF_TSE_CPRIMITIVES"/> 500bf215546Sopenharmony_ci <value value="17" name="PERF_TSE_2D_INPUT_PRIM"/> 501bf215546Sopenharmony_ci <value value="18" name="PERF_TSE_2D_ALIVE_CYCLES"/> 502bf215546Sopenharmony_ci <value value="19" name="PERF_TSE_CLIP_PLANES"/> 503bf215546Sopenharmony_ci</enum> 504bf215546Sopenharmony_ci 505bf215546Sopenharmony_ci<enum name="a6xx_ras_perfcounter_select"> 506bf215546Sopenharmony_ci <value value="0" name="PERF_RAS_BUSY_CYCLES"/> 507bf215546Sopenharmony_ci <value value="1" name="PERF_RAS_SUPERTILE_ACTIVE_CYCLES"/> 508bf215546Sopenharmony_ci <value value="2" name="PERF_RAS_STALL_CYCLES_LRZ"/> 509bf215546Sopenharmony_ci <value value="3" name="PERF_RAS_STARVE_CYCLES_TSE"/> 510bf215546Sopenharmony_ci <value value="4" name="PERF_RAS_SUPER_TILES"/> 511bf215546Sopenharmony_ci <value value="5" name="PERF_RAS_8X4_TILES"/> 512bf215546Sopenharmony_ci <value value="6" name="PERF_RAS_MASKGEN_ACTIVE"/> 513bf215546Sopenharmony_ci <value value="7" name="PERF_RAS_FULLY_COVERED_SUPER_TILES"/> 514bf215546Sopenharmony_ci <value value="8" name="PERF_RAS_FULLY_COVERED_8X4_TILES"/> 515bf215546Sopenharmony_ci <value value="9" name="PERF_RAS_PRIM_KILLED_INVISILBE"/> 516bf215546Sopenharmony_ci <value value="10" name="PERF_RAS_SUPERTILE_GEN_ACTIVE_CYCLES"/> 517bf215546Sopenharmony_ci <value value="11" name="PERF_RAS_LRZ_INTF_WORKING_CYCLES"/> 518bf215546Sopenharmony_ci <value value="12" name="PERF_RAS_BLOCKS"/> 519bf215546Sopenharmony_ci</enum> 520bf215546Sopenharmony_ci 521bf215546Sopenharmony_ci<enum name="a6xx_uche_perfcounter_select"> 522bf215546Sopenharmony_ci <value value="0" name="PERF_UCHE_BUSY_CYCLES"/> 523bf215546Sopenharmony_ci <value value="1" name="PERF_UCHE_STALL_CYCLES_ARBITER"/> 524bf215546Sopenharmony_ci <value value="2" name="PERF_UCHE_VBIF_LATENCY_CYCLES"/> 525bf215546Sopenharmony_ci <value value="3" name="PERF_UCHE_VBIF_LATENCY_SAMPLES"/> 526bf215546Sopenharmony_ci <value value="4" name="PERF_UCHE_VBIF_READ_BEATS_TP"/> 527bf215546Sopenharmony_ci <value value="5" name="PERF_UCHE_VBIF_READ_BEATS_VFD"/> 528bf215546Sopenharmony_ci <value value="6" name="PERF_UCHE_VBIF_READ_BEATS_HLSQ"/> 529bf215546Sopenharmony_ci <value value="7" name="PERF_UCHE_VBIF_READ_BEATS_LRZ"/> 530bf215546Sopenharmony_ci <value value="8" name="PERF_UCHE_VBIF_READ_BEATS_SP"/> 531bf215546Sopenharmony_ci <value value="9" name="PERF_UCHE_READ_REQUESTS_TP"/> 532bf215546Sopenharmony_ci <value value="10" name="PERF_UCHE_READ_REQUESTS_VFD"/> 533bf215546Sopenharmony_ci <value value="11" name="PERF_UCHE_READ_REQUESTS_HLSQ"/> 534bf215546Sopenharmony_ci <value value="12" name="PERF_UCHE_READ_REQUESTS_LRZ"/> 535bf215546Sopenharmony_ci <value value="13" name="PERF_UCHE_READ_REQUESTS_SP"/> 536bf215546Sopenharmony_ci <value value="14" name="PERF_UCHE_WRITE_REQUESTS_LRZ"/> 537bf215546Sopenharmony_ci <value value="15" name="PERF_UCHE_WRITE_REQUESTS_SP"/> 538bf215546Sopenharmony_ci <value value="16" name="PERF_UCHE_WRITE_REQUESTS_VPC"/> 539bf215546Sopenharmony_ci <value value="17" name="PERF_UCHE_WRITE_REQUESTS_VSC"/> 540bf215546Sopenharmony_ci <value value="18" name="PERF_UCHE_EVICTS"/> 541bf215546Sopenharmony_ci <value value="19" name="PERF_UCHE_BANK_REQ0"/> 542bf215546Sopenharmony_ci <value value="20" name="PERF_UCHE_BANK_REQ1"/> 543bf215546Sopenharmony_ci <value value="21" name="PERF_UCHE_BANK_REQ2"/> 544bf215546Sopenharmony_ci <value value="22" name="PERF_UCHE_BANK_REQ3"/> 545bf215546Sopenharmony_ci <value value="23" name="PERF_UCHE_BANK_REQ4"/> 546bf215546Sopenharmony_ci <value value="24" name="PERF_UCHE_BANK_REQ5"/> 547bf215546Sopenharmony_ci <value value="25" name="PERF_UCHE_BANK_REQ6"/> 548bf215546Sopenharmony_ci <value value="26" name="PERF_UCHE_BANK_REQ7"/> 549bf215546Sopenharmony_ci <value value="27" name="PERF_UCHE_VBIF_READ_BEATS_CH0"/> 550bf215546Sopenharmony_ci <value value="28" name="PERF_UCHE_VBIF_READ_BEATS_CH1"/> 551bf215546Sopenharmony_ci <value value="29" name="PERF_UCHE_GMEM_READ_BEATS"/> 552bf215546Sopenharmony_ci <value value="30" name="PERF_UCHE_TPH_REF_FULL"/> 553bf215546Sopenharmony_ci <value value="31" name="PERF_UCHE_TPH_VICTIM_FULL"/> 554bf215546Sopenharmony_ci <value value="32" name="PERF_UCHE_TPH_EXT_FULL"/> 555bf215546Sopenharmony_ci <value value="33" name="PERF_UCHE_VBIF_STALL_WRITE_DATA"/> 556bf215546Sopenharmony_ci <value value="34" name="PERF_UCHE_DCMP_LATENCY_SAMPLES"/> 557bf215546Sopenharmony_ci <value value="35" name="PERF_UCHE_DCMP_LATENCY_CYCLES"/> 558bf215546Sopenharmony_ci <value value="36" name="PERF_UCHE_VBIF_READ_BEATS_PC"/> 559bf215546Sopenharmony_ci <value value="37" name="PERF_UCHE_READ_REQUESTS_PC"/> 560bf215546Sopenharmony_ci <value value="38" name="PERF_UCHE_RAM_READ_REQ"/> 561bf215546Sopenharmony_ci <value value="39" name="PERF_UCHE_RAM_WRITE_REQ"/> 562bf215546Sopenharmony_ci</enum> 563bf215546Sopenharmony_ci 564bf215546Sopenharmony_ci<enum name="a6xx_tp_perfcounter_select"> 565bf215546Sopenharmony_ci <value value="0" name="PERF_TP_BUSY_CYCLES"/> 566bf215546Sopenharmony_ci <value value="1" name="PERF_TP_STALL_CYCLES_UCHE"/> 567bf215546Sopenharmony_ci <value value="2" name="PERF_TP_LATENCY_CYCLES"/> 568bf215546Sopenharmony_ci <value value="3" name="PERF_TP_LATENCY_TRANS"/> 569bf215546Sopenharmony_ci <value value="4" name="PERF_TP_FLAG_CACHE_REQUEST_SAMPLES"/> 570bf215546Sopenharmony_ci <value value="5" name="PERF_TP_FLAG_CACHE_REQUEST_LATENCY"/> 571bf215546Sopenharmony_ci <value value="6" name="PERF_TP_L1_CACHELINE_REQUESTS"/> 572bf215546Sopenharmony_ci <value value="7" name="PERF_TP_L1_CACHELINE_MISSES"/> 573bf215546Sopenharmony_ci <value value="8" name="PERF_TP_SP_TP_TRANS"/> 574bf215546Sopenharmony_ci <value value="9" name="PERF_TP_TP_SP_TRANS"/> 575bf215546Sopenharmony_ci <value value="10" name="PERF_TP_OUTPUT_PIXELS"/> 576bf215546Sopenharmony_ci <value value="11" name="PERF_TP_FILTER_WORKLOAD_16BIT"/> 577bf215546Sopenharmony_ci <value value="12" name="PERF_TP_FILTER_WORKLOAD_32BIT"/> 578bf215546Sopenharmony_ci <value value="13" name="PERF_TP_QUADS_RECEIVED"/> 579bf215546Sopenharmony_ci <value value="14" name="PERF_TP_QUADS_OFFSET"/> 580bf215546Sopenharmony_ci <value value="15" name="PERF_TP_QUADS_SHADOW"/> 581bf215546Sopenharmony_ci <value value="16" name="PERF_TP_QUADS_ARRAY"/> 582bf215546Sopenharmony_ci <value value="17" name="PERF_TP_QUADS_GRADIENT"/> 583bf215546Sopenharmony_ci <value value="18" name="PERF_TP_QUADS_1D"/> 584bf215546Sopenharmony_ci <value value="19" name="PERF_TP_QUADS_2D"/> 585bf215546Sopenharmony_ci <value value="20" name="PERF_TP_QUADS_BUFFER"/> 586bf215546Sopenharmony_ci <value value="21" name="PERF_TP_QUADS_3D"/> 587bf215546Sopenharmony_ci <value value="22" name="PERF_TP_QUADS_CUBE"/> 588bf215546Sopenharmony_ci <value value="23" name="PERF_TP_DIVERGENT_QUADS_RECEIVED"/> 589bf215546Sopenharmony_ci <value value="24" name="PERF_TP_PRT_NON_RESIDENT_EVENTS"/> 590bf215546Sopenharmony_ci <value value="25" name="PERF_TP_OUTPUT_PIXELS_POINT"/> 591bf215546Sopenharmony_ci <value value="26" name="PERF_TP_OUTPUT_PIXELS_BILINEAR"/> 592bf215546Sopenharmony_ci <value value="27" name="PERF_TP_OUTPUT_PIXELS_MIP"/> 593bf215546Sopenharmony_ci <value value="28" name="PERF_TP_OUTPUT_PIXELS_ANISO"/> 594bf215546Sopenharmony_ci <value value="29" name="PERF_TP_OUTPUT_PIXELS_ZERO_LOD"/> 595bf215546Sopenharmony_ci <value value="30" name="PERF_TP_FLAG_CACHE_REQUESTS"/> 596bf215546Sopenharmony_ci <value value="31" name="PERF_TP_FLAG_CACHE_MISSES"/> 597bf215546Sopenharmony_ci <value value="32" name="PERF_TP_L1_5_L2_REQUESTS"/> 598bf215546Sopenharmony_ci <value value="33" name="PERF_TP_2D_OUTPUT_PIXELS"/> 599bf215546Sopenharmony_ci <value value="34" name="PERF_TP_2D_OUTPUT_PIXELS_POINT"/> 600bf215546Sopenharmony_ci <value value="35" name="PERF_TP_2D_OUTPUT_PIXELS_BILINEAR"/> 601bf215546Sopenharmony_ci <value value="36" name="PERF_TP_2D_FILTER_WORKLOAD_16BIT"/> 602bf215546Sopenharmony_ci <value value="37" name="PERF_TP_2D_FILTER_WORKLOAD_32BIT"/> 603bf215546Sopenharmony_ci <value value="38" name="PERF_TP_TPA2TPC_TRANS"/> 604bf215546Sopenharmony_ci <value value="39" name="PERF_TP_L1_MISSES_ASTC_1TILE"/> 605bf215546Sopenharmony_ci <value value="40" name="PERF_TP_L1_MISSES_ASTC_2TILE"/> 606bf215546Sopenharmony_ci <value value="41" name="PERF_TP_L1_MISSES_ASTC_4TILE"/> 607bf215546Sopenharmony_ci <value value="42" name="PERF_TP_L1_5_L2_COMPRESS_REQS"/> 608bf215546Sopenharmony_ci <value value="43" name="PERF_TP_L1_5_L2_COMPRESS_MISS"/> 609bf215546Sopenharmony_ci <value value="44" name="PERF_TP_L1_BANK_CONFLICT"/> 610bf215546Sopenharmony_ci <value value="45" name="PERF_TP_L1_5_MISS_LATENCY_CYCLES"/> 611bf215546Sopenharmony_ci <value value="46" name="PERF_TP_L1_5_MISS_LATENCY_TRANS"/> 612bf215546Sopenharmony_ci <value value="47" name="PERF_TP_QUADS_CONSTANT_MULTIPLIED"/> 613bf215546Sopenharmony_ci <value value="48" name="PERF_TP_FRONTEND_WORKING_CYCLES"/> 614bf215546Sopenharmony_ci <value value="49" name="PERF_TP_L1_TAG_WORKING_CYCLES"/> 615bf215546Sopenharmony_ci <value value="50" name="PERF_TP_L1_DATA_WRITE_WORKING_CYCLES"/> 616bf215546Sopenharmony_ci <value value="51" name="PERF_TP_PRE_L1_DECOM_WORKING_CYCLES"/> 617bf215546Sopenharmony_ci <value value="52" name="PERF_TP_BACKEND_WORKING_CYCLES"/> 618bf215546Sopenharmony_ci <value value="53" name="PERF_TP_FLAG_CACHE_WORKING_CYCLES"/> 619bf215546Sopenharmony_ci <value value="54" name="PERF_TP_L1_5_CACHE_WORKING_CYCLES"/> 620bf215546Sopenharmony_ci <value value="55" name="PERF_TP_STARVE_CYCLES_SP"/> 621bf215546Sopenharmony_ci <value value="56" name="PERF_TP_STARVE_CYCLES_UCHE"/> 622bf215546Sopenharmony_ci</enum> 623bf215546Sopenharmony_ci 624bf215546Sopenharmony_ci<enum name="a6xx_sp_perfcounter_select"> 625bf215546Sopenharmony_ci <value value="0" name="PERF_SP_BUSY_CYCLES"/> 626bf215546Sopenharmony_ci <value value="1" name="PERF_SP_ALU_WORKING_CYCLES"/> 627bf215546Sopenharmony_ci <value value="2" name="PERF_SP_EFU_WORKING_CYCLES"/> 628bf215546Sopenharmony_ci <value value="3" name="PERF_SP_STALL_CYCLES_VPC"/> 629bf215546Sopenharmony_ci <value value="4" name="PERF_SP_STALL_CYCLES_TP"/> 630bf215546Sopenharmony_ci <value value="5" name="PERF_SP_STALL_CYCLES_UCHE"/> 631bf215546Sopenharmony_ci <value value="6" name="PERF_SP_STALL_CYCLES_RB"/> 632bf215546Sopenharmony_ci <value value="7" name="PERF_SP_NON_EXECUTION_CYCLES"/> 633bf215546Sopenharmony_ci <value value="8" name="PERF_SP_WAVE_CONTEXTS"/> 634bf215546Sopenharmony_ci <value value="9" name="PERF_SP_WAVE_CONTEXT_CYCLES"/> 635bf215546Sopenharmony_ci <value value="10" name="PERF_SP_FS_STAGE_WAVE_CYCLES"/> 636bf215546Sopenharmony_ci <value value="11" name="PERF_SP_FS_STAGE_WAVE_SAMPLES"/> 637bf215546Sopenharmony_ci <value value="12" name="PERF_SP_VS_STAGE_WAVE_CYCLES"/> 638bf215546Sopenharmony_ci <value value="13" name="PERF_SP_VS_STAGE_WAVE_SAMPLES"/> 639bf215546Sopenharmony_ci <value value="14" name="PERF_SP_FS_STAGE_DURATION_CYCLES"/> 640bf215546Sopenharmony_ci <value value="15" name="PERF_SP_VS_STAGE_DURATION_CYCLES"/> 641bf215546Sopenharmony_ci <value value="16" name="PERF_SP_WAVE_CTRL_CYCLES"/> 642bf215546Sopenharmony_ci <value value="17" name="PERF_SP_WAVE_LOAD_CYCLES"/> 643bf215546Sopenharmony_ci <value value="18" name="PERF_SP_WAVE_EMIT_CYCLES"/> 644bf215546Sopenharmony_ci <value value="19" name="PERF_SP_WAVE_NOP_CYCLES"/> 645bf215546Sopenharmony_ci <value value="20" name="PERF_SP_WAVE_WAIT_CYCLES"/> 646bf215546Sopenharmony_ci <value value="21" name="PERF_SP_WAVE_FETCH_CYCLES"/> 647bf215546Sopenharmony_ci <value value="22" name="PERF_SP_WAVE_IDLE_CYCLES"/> 648bf215546Sopenharmony_ci <value value="23" name="PERF_SP_WAVE_END_CYCLES"/> 649bf215546Sopenharmony_ci <value value="24" name="PERF_SP_WAVE_LONG_SYNC_CYCLES"/> 650bf215546Sopenharmony_ci <value value="25" name="PERF_SP_WAVE_SHORT_SYNC_CYCLES"/> 651bf215546Sopenharmony_ci <value value="26" name="PERF_SP_WAVE_JOIN_CYCLES"/> 652bf215546Sopenharmony_ci <value value="27" name="PERF_SP_LM_LOAD_INSTRUCTIONS"/> 653bf215546Sopenharmony_ci <value value="28" name="PERF_SP_LM_STORE_INSTRUCTIONS"/> 654bf215546Sopenharmony_ci <value value="29" name="PERF_SP_LM_ATOMICS"/> 655bf215546Sopenharmony_ci <value value="30" name="PERF_SP_GM_LOAD_INSTRUCTIONS"/> 656bf215546Sopenharmony_ci <value value="31" name="PERF_SP_GM_STORE_INSTRUCTIONS"/> 657bf215546Sopenharmony_ci <value value="32" name="PERF_SP_GM_ATOMICS"/> 658bf215546Sopenharmony_ci <value value="33" name="PERF_SP_VS_STAGE_TEX_INSTRUCTIONS"/> 659bf215546Sopenharmony_ci <value value="34" name="PERF_SP_VS_STAGE_EFU_INSTRUCTIONS"/> 660bf215546Sopenharmony_ci <value value="35" name="PERF_SP_VS_STAGE_FULL_ALU_INSTRUCTIONS"/> 661bf215546Sopenharmony_ci <value value="36" name="PERF_SP_VS_STAGE_HALF_ALU_INSTRUCTIONS"/> 662bf215546Sopenharmony_ci <value value="37" name="PERF_SP_FS_STAGE_TEX_INSTRUCTIONS"/> 663bf215546Sopenharmony_ci <value value="38" name="PERF_SP_FS_STAGE_CFLOW_INSTRUCTIONS"/> 664bf215546Sopenharmony_ci <value value="39" name="PERF_SP_FS_STAGE_EFU_INSTRUCTIONS"/> 665bf215546Sopenharmony_ci <value value="40" name="PERF_SP_FS_STAGE_FULL_ALU_INSTRUCTIONS"/> 666bf215546Sopenharmony_ci <value value="41" name="PERF_SP_FS_STAGE_HALF_ALU_INSTRUCTIONS"/> 667bf215546Sopenharmony_ci <value value="42" name="PERF_SP_FS_STAGE_BARY_INSTRUCTIONS"/> 668bf215546Sopenharmony_ci <value value="43" name="PERF_SP_VS_INSTRUCTIONS"/> 669bf215546Sopenharmony_ci <value value="44" name="PERF_SP_FS_INSTRUCTIONS"/> 670bf215546Sopenharmony_ci <value value="45" name="PERF_SP_ADDR_LOCK_COUNT"/> 671bf215546Sopenharmony_ci <value value="46" name="PERF_SP_UCHE_READ_TRANS"/> 672bf215546Sopenharmony_ci <value value="47" name="PERF_SP_UCHE_WRITE_TRANS"/> 673bf215546Sopenharmony_ci <value value="48" name="PERF_SP_EXPORT_VPC_TRANS"/> 674bf215546Sopenharmony_ci <value value="49" name="PERF_SP_EXPORT_RB_TRANS"/> 675bf215546Sopenharmony_ci <value value="50" name="PERF_SP_PIXELS_KILLED"/> 676bf215546Sopenharmony_ci <value value="51" name="PERF_SP_ICL1_REQUESTS"/> 677bf215546Sopenharmony_ci <value value="52" name="PERF_SP_ICL1_MISSES"/> 678bf215546Sopenharmony_ci <value value="53" name="PERF_SP_HS_INSTRUCTIONS"/> 679bf215546Sopenharmony_ci <value value="54" name="PERF_SP_DS_INSTRUCTIONS"/> 680bf215546Sopenharmony_ci <value value="55" name="PERF_SP_GS_INSTRUCTIONS"/> 681bf215546Sopenharmony_ci <value value="56" name="PERF_SP_CS_INSTRUCTIONS"/> 682bf215546Sopenharmony_ci <value value="57" name="PERF_SP_GPR_READ"/> 683bf215546Sopenharmony_ci <value value="58" name="PERF_SP_GPR_WRITE"/> 684bf215546Sopenharmony_ci <value value="59" name="PERF_SP_FS_STAGE_HALF_EFU_INSTRUCTIONS"/> 685bf215546Sopenharmony_ci <value value="60" name="PERF_SP_VS_STAGE_HALF_EFU_INSTRUCTIONS"/> 686bf215546Sopenharmony_ci <value value="61" name="PERF_SP_LM_BANK_CONFLICTS"/> 687bf215546Sopenharmony_ci <value value="62" name="PERF_SP_TEX_CONTROL_WORKING_CYCLES"/> 688bf215546Sopenharmony_ci <value value="63" name="PERF_SP_LOAD_CONTROL_WORKING_CYCLES"/> 689bf215546Sopenharmony_ci <value value="64" name="PERF_SP_FLOW_CONTROL_WORKING_CYCLES"/> 690bf215546Sopenharmony_ci <value value="65" name="PERF_SP_LM_WORKING_CYCLES"/> 691bf215546Sopenharmony_ci <value value="66" name="PERF_SP_DISPATCHER_WORKING_CYCLES"/> 692bf215546Sopenharmony_ci <value value="67" name="PERF_SP_SEQUENCER_WORKING_CYCLES"/> 693bf215546Sopenharmony_ci <value value="68" name="PERF_SP_LOW_EFFICIENCY_STARVED_BY_TP"/> 694bf215546Sopenharmony_ci <value value="69" name="PERF_SP_STARVE_CYCLES_HLSQ"/> 695bf215546Sopenharmony_ci <value value="70" name="PERF_SP_NON_EXECUTION_LS_CYCLES"/> 696bf215546Sopenharmony_ci <value value="71" name="PERF_SP_WORKING_EU"/> 697bf215546Sopenharmony_ci <value value="72" name="PERF_SP_ANY_EU_WORKING"/> 698bf215546Sopenharmony_ci <value value="73" name="PERF_SP_WORKING_EU_FS_STAGE"/> 699bf215546Sopenharmony_ci <value value="74" name="PERF_SP_ANY_EU_WORKING_FS_STAGE"/> 700bf215546Sopenharmony_ci <value value="75" name="PERF_SP_WORKING_EU_VS_STAGE"/> 701bf215546Sopenharmony_ci <value value="76" name="PERF_SP_ANY_EU_WORKING_VS_STAGE"/> 702bf215546Sopenharmony_ci <value value="77" name="PERF_SP_WORKING_EU_CS_STAGE"/> 703bf215546Sopenharmony_ci <value value="78" name="PERF_SP_ANY_EU_WORKING_CS_STAGE"/> 704bf215546Sopenharmony_ci <value value="79" name="PERF_SP_GPR_READ_PREFETCH"/> 705bf215546Sopenharmony_ci <value value="80" name="PERF_SP_GPR_READ_CONFLICT"/> 706bf215546Sopenharmony_ci <value value="81" name="PERF_SP_GPR_WRITE_CONFLICT"/> 707bf215546Sopenharmony_ci <value value="82" name="PERF_SP_GM_LOAD_LATENCY_CYCLES"/> 708bf215546Sopenharmony_ci <value value="83" name="PERF_SP_GM_LOAD_LATENCY_SAMPLES"/> 709bf215546Sopenharmony_ci <value value="84" name="PERF_SP_EXECUTABLE_WAVES"/> 710bf215546Sopenharmony_ci</enum> 711bf215546Sopenharmony_ci 712bf215546Sopenharmony_ci<enum name="a6xx_rb_perfcounter_select"> 713bf215546Sopenharmony_ci <value value="0" name="PERF_RB_BUSY_CYCLES"/> 714bf215546Sopenharmony_ci <value value="1" name="PERF_RB_STALL_CYCLES_HLSQ"/> 715bf215546Sopenharmony_ci <value value="2" name="PERF_RB_STALL_CYCLES_FIFO0_FULL"/> 716bf215546Sopenharmony_ci <value value="3" name="PERF_RB_STALL_CYCLES_FIFO1_FULL"/> 717bf215546Sopenharmony_ci <value value="4" name="PERF_RB_STALL_CYCLES_FIFO2_FULL"/> 718bf215546Sopenharmony_ci <value value="5" name="PERF_RB_STARVE_CYCLES_SP"/> 719bf215546Sopenharmony_ci <value value="6" name="PERF_RB_STARVE_CYCLES_LRZ_TILE"/> 720bf215546Sopenharmony_ci <value value="7" name="PERF_RB_STARVE_CYCLES_CCU"/> 721bf215546Sopenharmony_ci <value value="8" name="PERF_RB_STARVE_CYCLES_Z_PLANE"/> 722bf215546Sopenharmony_ci <value value="9" name="PERF_RB_STARVE_CYCLES_BARY_PLANE"/> 723bf215546Sopenharmony_ci <value value="10" name="PERF_RB_Z_WORKLOAD"/> 724bf215546Sopenharmony_ci <value value="11" name="PERF_RB_HLSQ_ACTIVE"/> 725bf215546Sopenharmony_ci <value value="12" name="PERF_RB_Z_READ"/> 726bf215546Sopenharmony_ci <value value="13" name="PERF_RB_Z_WRITE"/> 727bf215546Sopenharmony_ci <value value="14" name="PERF_RB_C_READ"/> 728bf215546Sopenharmony_ci <value value="15" name="PERF_RB_C_WRITE"/> 729bf215546Sopenharmony_ci <value value="16" name="PERF_RB_TOTAL_PASS"/> 730bf215546Sopenharmony_ci <value value="17" name="PERF_RB_Z_PASS"/> 731bf215546Sopenharmony_ci <value value="18" name="PERF_RB_Z_FAIL"/> 732bf215546Sopenharmony_ci <value value="19" name="PERF_RB_S_FAIL"/> 733bf215546Sopenharmony_ci <value value="20" name="PERF_RB_BLENDED_FXP_COMPONENTS"/> 734bf215546Sopenharmony_ci <value value="21" name="PERF_RB_BLENDED_FP16_COMPONENTS"/> 735bf215546Sopenharmony_ci <value value="22" name="PERF_RB_PS_INVOCATIONS"/> 736bf215546Sopenharmony_ci <value value="23" name="PERF_RB_2D_ALIVE_CYCLES"/> 737bf215546Sopenharmony_ci <value value="24" name="PERF_RB_2D_STALL_CYCLES_A2D"/> 738bf215546Sopenharmony_ci <value value="25" name="PERF_RB_2D_STARVE_CYCLES_SRC"/> 739bf215546Sopenharmony_ci <value value="26" name="PERF_RB_2D_STARVE_CYCLES_SP"/> 740bf215546Sopenharmony_ci <value value="27" name="PERF_RB_2D_STARVE_CYCLES_DST"/> 741bf215546Sopenharmony_ci <value value="28" name="PERF_RB_2D_VALID_PIXELS"/> 742bf215546Sopenharmony_ci <value value="29" name="PERF_RB_3D_PIXELS"/> 743bf215546Sopenharmony_ci <value value="30" name="PERF_RB_BLENDER_WORKING_CYCLES"/> 744bf215546Sopenharmony_ci <value value="31" name="PERF_RB_ZPROC_WORKING_CYCLES"/> 745bf215546Sopenharmony_ci <value value="32" name="PERF_RB_CPROC_WORKING_CYCLES"/> 746bf215546Sopenharmony_ci <value value="33" name="PERF_RB_SAMPLER_WORKING_CYCLES"/> 747bf215546Sopenharmony_ci <value value="34" name="PERF_RB_STALL_CYCLES_CCU_COLOR_READ"/> 748bf215546Sopenharmony_ci <value value="35" name="PERF_RB_STALL_CYCLES_CCU_COLOR_WRITE"/> 749bf215546Sopenharmony_ci <value value="36" name="PERF_RB_STALL_CYCLES_CCU_DEPTH_READ"/> 750bf215546Sopenharmony_ci <value value="37" name="PERF_RB_STALL_CYCLES_CCU_DEPTH_WRITE"/> 751bf215546Sopenharmony_ci <value value="38" name="PERF_RB_STALL_CYCLES_VPC"/> 752bf215546Sopenharmony_ci <value value="39" name="PERF_RB_2D_INPUT_TRANS"/> 753bf215546Sopenharmony_ci <value value="40" name="PERF_RB_2D_OUTPUT_RB_DST_TRANS"/> 754bf215546Sopenharmony_ci <value value="41" name="PERF_RB_2D_OUTPUT_RB_SRC_TRANS"/> 755bf215546Sopenharmony_ci <value value="42" name="PERF_RB_BLENDED_FP32_COMPONENTS"/> 756bf215546Sopenharmony_ci <value value="43" name="PERF_RB_COLOR_PIX_TILES"/> 757bf215546Sopenharmony_ci <value value="44" name="PERF_RB_STALL_CYCLES_CCU"/> 758bf215546Sopenharmony_ci <value value="45" name="PERF_RB_EARLY_Z_ARB3_GRANT"/> 759bf215546Sopenharmony_ci <value value="46" name="PERF_RB_LATE_Z_ARB3_GRANT"/> 760bf215546Sopenharmony_ci <value value="47" name="PERF_RB_EARLY_Z_SKIP_GRANT"/> 761bf215546Sopenharmony_ci</enum> 762bf215546Sopenharmony_ci 763bf215546Sopenharmony_ci<enum name="a6xx_vsc_perfcounter_select"> 764bf215546Sopenharmony_ci <value value="0" name="PERF_VSC_BUSY_CYCLES"/> 765bf215546Sopenharmony_ci <value value="1" name="PERF_VSC_WORKING_CYCLES"/> 766bf215546Sopenharmony_ci <value value="2" name="PERF_VSC_STALL_CYCLES_UCHE"/> 767bf215546Sopenharmony_ci <value value="3" name="PERF_VSC_EOT_NUM"/> 768bf215546Sopenharmony_ci <value value="4" name="PERF_VSC_INPUT_TILES"/> 769bf215546Sopenharmony_ci</enum> 770bf215546Sopenharmony_ci 771bf215546Sopenharmony_ci<enum name="a6xx_ccu_perfcounter_select"> 772bf215546Sopenharmony_ci <value value="0" name="PERF_CCU_BUSY_CYCLES"/> 773bf215546Sopenharmony_ci <value value="1" name="PERF_CCU_STALL_CYCLES_RB_DEPTH_RETURN"/> 774bf215546Sopenharmony_ci <value value="2" name="PERF_CCU_STALL_CYCLES_RB_COLOR_RETURN"/> 775bf215546Sopenharmony_ci <value value="3" name="PERF_CCU_STARVE_CYCLES_FLAG_RETURN"/> 776bf215546Sopenharmony_ci <value value="4" name="PERF_CCU_DEPTH_BLOCKS"/> 777bf215546Sopenharmony_ci <value value="5" name="PERF_CCU_COLOR_BLOCKS"/> 778bf215546Sopenharmony_ci <value value="6" name="PERF_CCU_DEPTH_BLOCK_HIT"/> 779bf215546Sopenharmony_ci <value value="7" name="PERF_CCU_COLOR_BLOCK_HIT"/> 780bf215546Sopenharmony_ci <value value="8" name="PERF_CCU_PARTIAL_BLOCK_READ"/> 781bf215546Sopenharmony_ci <value value="9" name="PERF_CCU_GMEM_READ"/> 782bf215546Sopenharmony_ci <value value="10" name="PERF_CCU_GMEM_WRITE"/> 783bf215546Sopenharmony_ci <value value="11" name="PERF_CCU_DEPTH_READ_FLAG0_COUNT"/> 784bf215546Sopenharmony_ci <value value="12" name="PERF_CCU_DEPTH_READ_FLAG1_COUNT"/> 785bf215546Sopenharmony_ci <value value="13" name="PERF_CCU_DEPTH_READ_FLAG2_COUNT"/> 786bf215546Sopenharmony_ci <value value="14" name="PERF_CCU_DEPTH_READ_FLAG3_COUNT"/> 787bf215546Sopenharmony_ci <value value="15" name="PERF_CCU_DEPTH_READ_FLAG4_COUNT"/> 788bf215546Sopenharmony_ci <value value="16" name="PERF_CCU_DEPTH_READ_FLAG5_COUNT"/> 789bf215546Sopenharmony_ci <value value="17" name="PERF_CCU_DEPTH_READ_FLAG6_COUNT"/> 790bf215546Sopenharmony_ci <value value="18" name="PERF_CCU_DEPTH_READ_FLAG8_COUNT"/> 791bf215546Sopenharmony_ci <value value="19" name="PERF_CCU_COLOR_READ_FLAG0_COUNT"/> 792bf215546Sopenharmony_ci <value value="20" name="PERF_CCU_COLOR_READ_FLAG1_COUNT"/> 793bf215546Sopenharmony_ci <value value="21" name="PERF_CCU_COLOR_READ_FLAG2_COUNT"/> 794bf215546Sopenharmony_ci <value value="22" name="PERF_CCU_COLOR_READ_FLAG3_COUNT"/> 795bf215546Sopenharmony_ci <value value="23" name="PERF_CCU_COLOR_READ_FLAG4_COUNT"/> 796bf215546Sopenharmony_ci <value value="24" name="PERF_CCU_COLOR_READ_FLAG5_COUNT"/> 797bf215546Sopenharmony_ci <value value="25" name="PERF_CCU_COLOR_READ_FLAG6_COUNT"/> 798bf215546Sopenharmony_ci <value value="26" name="PERF_CCU_COLOR_READ_FLAG8_COUNT"/> 799bf215546Sopenharmony_ci <value value="27" name="PERF_CCU_2D_RD_REQ"/> 800bf215546Sopenharmony_ci <value value="28" name="PERF_CCU_2D_WR_REQ"/> 801bf215546Sopenharmony_ci</enum> 802bf215546Sopenharmony_ci 803bf215546Sopenharmony_ci<enum name="a6xx_lrz_perfcounter_select"> 804bf215546Sopenharmony_ci <value value="0" name="PERF_LRZ_BUSY_CYCLES"/> 805bf215546Sopenharmony_ci <value value="1" name="PERF_LRZ_STARVE_CYCLES_RAS"/> 806bf215546Sopenharmony_ci <value value="2" name="PERF_LRZ_STALL_CYCLES_RB"/> 807bf215546Sopenharmony_ci <value value="3" name="PERF_LRZ_STALL_CYCLES_VSC"/> 808bf215546Sopenharmony_ci <value value="4" name="PERF_LRZ_STALL_CYCLES_VPC"/> 809bf215546Sopenharmony_ci <value value="5" name="PERF_LRZ_STALL_CYCLES_FLAG_PREFETCH"/> 810bf215546Sopenharmony_ci <value value="6" name="PERF_LRZ_STALL_CYCLES_UCHE"/> 811bf215546Sopenharmony_ci <value value="7" name="PERF_LRZ_LRZ_READ"/> 812bf215546Sopenharmony_ci <value value="8" name="PERF_LRZ_LRZ_WRITE"/> 813bf215546Sopenharmony_ci <value value="9" name="PERF_LRZ_READ_LATENCY"/> 814bf215546Sopenharmony_ci <value value="10" name="PERF_LRZ_MERGE_CACHE_UPDATING"/> 815bf215546Sopenharmony_ci <value value="11" name="PERF_LRZ_PRIM_KILLED_BY_MASKGEN"/> 816bf215546Sopenharmony_ci <value value="12" name="PERF_LRZ_PRIM_KILLED_BY_LRZ"/> 817bf215546Sopenharmony_ci <value value="13" name="PERF_LRZ_VISIBLE_PRIM_AFTER_LRZ"/> 818bf215546Sopenharmony_ci <value value="14" name="PERF_LRZ_FULL_8X8_TILES"/> 819bf215546Sopenharmony_ci <value value="15" name="PERF_LRZ_PARTIAL_8X8_TILES"/> 820bf215546Sopenharmony_ci <value value="16" name="PERF_LRZ_TILE_KILLED"/> 821bf215546Sopenharmony_ci <value value="17" name="PERF_LRZ_TOTAL_PIXEL"/> 822bf215546Sopenharmony_ci <value value="18" name="PERF_LRZ_VISIBLE_PIXEL_AFTER_LRZ"/> 823bf215546Sopenharmony_ci <value value="19" name="PERF_LRZ_FULLY_COVERED_TILES"/> 824bf215546Sopenharmony_ci <value value="20" name="PERF_LRZ_PARTIAL_COVERED_TILES"/> 825bf215546Sopenharmony_ci <value value="21" name="PERF_LRZ_FEEDBACK_ACCEPT"/> 826bf215546Sopenharmony_ci <value value="22" name="PERF_LRZ_FEEDBACK_DISCARD"/> 827bf215546Sopenharmony_ci <value value="23" name="PERF_LRZ_FEEDBACK_STALL"/> 828bf215546Sopenharmony_ci <value value="24" name="PERF_LRZ_STALL_CYCLES_RB_ZPLANE"/> 829bf215546Sopenharmony_ci <value value="25" name="PERF_LRZ_STALL_CYCLES_RB_BPLANE"/> 830bf215546Sopenharmony_ci <value value="26" name="PERF_LRZ_STALL_CYCLES_VC"/> 831bf215546Sopenharmony_ci <value value="27" name="PERF_LRZ_RAS_MASK_TRANS"/> 832bf215546Sopenharmony_ci</enum> 833bf215546Sopenharmony_ci 834bf215546Sopenharmony_ci<enum name="a6xx_cmp_perfcounter_select"> 835bf215546Sopenharmony_ci <value value="0" name="PERF_CMPDECMP_STALL_CYCLES_ARB"/> 836bf215546Sopenharmony_ci <value value="1" name="PERF_CMPDECMP_VBIF_LATENCY_CYCLES"/> 837bf215546Sopenharmony_ci <value value="2" name="PERF_CMPDECMP_VBIF_LATENCY_SAMPLES"/> 838bf215546Sopenharmony_ci <value value="3" name="PERF_CMPDECMP_VBIF_READ_DATA_CCU"/> 839bf215546Sopenharmony_ci <value value="4" name="PERF_CMPDECMP_VBIF_WRITE_DATA_CCU"/> 840bf215546Sopenharmony_ci <value value="5" name="PERF_CMPDECMP_VBIF_READ_REQUEST"/> 841bf215546Sopenharmony_ci <value value="6" name="PERF_CMPDECMP_VBIF_WRITE_REQUEST"/> 842bf215546Sopenharmony_ci <value value="7" name="PERF_CMPDECMP_VBIF_READ_DATA"/> 843bf215546Sopenharmony_ci <value value="8" name="PERF_CMPDECMP_VBIF_WRITE_DATA"/> 844bf215546Sopenharmony_ci <value value="9" name="PERF_CMPDECMP_FLAG_FETCH_CYCLES"/> 845bf215546Sopenharmony_ci <value value="10" name="PERF_CMPDECMP_FLAG_FETCH_SAMPLES"/> 846bf215546Sopenharmony_ci <value value="11" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG1_COUNT"/> 847bf215546Sopenharmony_ci <value value="12" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG2_COUNT"/> 848bf215546Sopenharmony_ci <value value="13" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG3_COUNT"/> 849bf215546Sopenharmony_ci <value value="14" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG4_COUNT"/> 850bf215546Sopenharmony_ci <value value="15" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG5_COUNT"/> 851bf215546Sopenharmony_ci <value value="16" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG6_COUNT"/> 852bf215546Sopenharmony_ci <value value="17" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG8_COUNT"/> 853bf215546Sopenharmony_ci <value value="18" name="PERF_CMPDECMP_COLOR_WRITE_FLAG1_COUNT"/> 854bf215546Sopenharmony_ci <value value="19" name="PERF_CMPDECMP_COLOR_WRITE_FLAG2_COUNT"/> 855bf215546Sopenharmony_ci <value value="20" name="PERF_CMPDECMP_COLOR_WRITE_FLAG3_COUNT"/> 856bf215546Sopenharmony_ci <value value="21" name="PERF_CMPDECMP_COLOR_WRITE_FLAG4_COUNT"/> 857bf215546Sopenharmony_ci <value value="22" name="PERF_CMPDECMP_COLOR_WRITE_FLAG5_COUNT"/> 858bf215546Sopenharmony_ci <value value="23" name="PERF_CMPDECMP_COLOR_WRITE_FLAG6_COUNT"/> 859bf215546Sopenharmony_ci <value value="24" name="PERF_CMPDECMP_COLOR_WRITE_FLAG8_COUNT"/> 860bf215546Sopenharmony_ci <value value="25" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_REQ"/> 861bf215546Sopenharmony_ci <value value="26" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_WR"/> 862bf215546Sopenharmony_ci <value value="27" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_RETURN"/> 863bf215546Sopenharmony_ci <value value="28" name="PERF_CMPDECMP_2D_RD_DATA"/> 864bf215546Sopenharmony_ci <value value="29" name="PERF_CMPDECMP_2D_WR_DATA"/> 865bf215546Sopenharmony_ci <value value="30" name="PERF_CMPDECMP_VBIF_READ_DATA_UCHE_CH0"/> 866bf215546Sopenharmony_ci <value value="31" name="PERF_CMPDECMP_VBIF_READ_DATA_UCHE_CH1"/> 867bf215546Sopenharmony_ci <value value="32" name="PERF_CMPDECMP_2D_OUTPUT_TRANS"/> 868bf215546Sopenharmony_ci <value value="33" name="PERF_CMPDECMP_VBIF_WRITE_DATA_UCHE"/> 869bf215546Sopenharmony_ci <value value="34" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG0_COUNT"/> 870bf215546Sopenharmony_ci <value value="35" name="PERF_CMPDECMP_COLOR_WRITE_FLAG0_COUNT"/> 871bf215546Sopenharmony_ci <value value="36" name="PERF_CMPDECMP_COLOR_WRITE_FLAGALPHA_COUNT"/> 872bf215546Sopenharmony_ci <value value="37" name="PERF_CMPDECMP_2D_BUSY_CYCLES"/> 873bf215546Sopenharmony_ci <value value="38" name="PERF_CMPDECMP_2D_REORDER_STARVE_CYCLES"/> 874bf215546Sopenharmony_ci <value value="39" name="PERF_CMPDECMP_2D_PIXELS"/> 875bf215546Sopenharmony_ci</enum> 876bf215546Sopenharmony_ci 877bf215546Sopenharmony_ci<!-- 878bf215546Sopenharmony_ciUsed in a6xx_2d_blit_cntl.. the value mostly seems to correlate to the 879bf215546Sopenharmony_cicomponent type/size, so I think it relates to internal format used for 880bf215546Sopenharmony_ciblending? The one exception is that 16b unorm and 32b float use the 881bf215546Sopenharmony_cisame value... maybe 16b unorm is uncommon enough that it was just easier 882bf215546Sopenharmony_cito upconvert to 32b float internally? 883bf215546Sopenharmony_ci 884bf215546Sopenharmony_ci 8b unorm: 10 (sometimes 0, is the high bit part of something else?) 885bf215546Sopenharmony_ci16b unorm: 4 886bf215546Sopenharmony_ci 887bf215546Sopenharmony_ci32b int: 7 888bf215546Sopenharmony_ci16b int: 6 889bf215546Sopenharmony_ci 8b int: 5 890bf215546Sopenharmony_ci 891bf215546Sopenharmony_ci32b float: 4 892bf215546Sopenharmony_ci16b float: 3 893bf215546Sopenharmony_ci --> 894bf215546Sopenharmony_ci<enum name="a6xx_2d_ifmt"> 895bf215546Sopenharmony_ci <value value="0x10" name="R2D_UNORM8"/> 896bf215546Sopenharmony_ci <value value="0x7" name="R2D_INT32"/> 897bf215546Sopenharmony_ci <value value="0x6" name="R2D_INT16"/> 898bf215546Sopenharmony_ci <value value="0x5" name="R2D_INT8"/> 899bf215546Sopenharmony_ci <value value="0x4" name="R2D_FLOAT32"/> 900bf215546Sopenharmony_ci <value value="0x3" name="R2D_FLOAT16"/> 901bf215546Sopenharmony_ci <value value="0x1" name="R2D_UNORM8_SRGB"/> 902bf215546Sopenharmony_ci <value value="0x0" name="R2D_RAW"/> 903bf215546Sopenharmony_ci</enum> 904bf215546Sopenharmony_ci 905bf215546Sopenharmony_ci<enum name="a6xx_ztest_mode"> 906bf215546Sopenharmony_ci <doc>Allow early z-test and early-lrz (if applicable)</doc> 907bf215546Sopenharmony_ci <value value="0x0" name="A6XX_EARLY_Z"/> 908bf215546Sopenharmony_ci <doc>Disable early z-test and early-lrz test (if applicable)</doc> 909bf215546Sopenharmony_ci <value value="0x1" name="A6XX_LATE_Z"/> 910bf215546Sopenharmony_ci <doc> 911bf215546Sopenharmony_ci A special mode that allows early-lrz test but disables 912bf215546Sopenharmony_ci early-z test. Which might sound a bit funny, since 913bf215546Sopenharmony_ci lrz-test happens before z-test. But as long as a couple 914bf215546Sopenharmony_ci conditions are maintained this allows using lrz-test in 915bf215546Sopenharmony_ci cases where fragment shader has kill/discard: 916bf215546Sopenharmony_ci 917bf215546Sopenharmony_ci 1) Disable lrz-write in cases where it is uncertain during 918bf215546Sopenharmony_ci binning pass that a fragment will pass. Ie. if frag 919bf215546Sopenharmony_ci shader has-kill, writes-z, or alpha/stencil test is 920bf215546Sopenharmony_ci enabled. (For correctness, lrz-write must be disabled 921bf215546Sopenharmony_ci when blend is enabled.) This is analogous to how a 922bf215546Sopenharmony_ci z-prepass works. 923bf215546Sopenharmony_ci 924bf215546Sopenharmony_ci 2) Disable lrz-write and test if a depth-test direction 925bf215546Sopenharmony_ci reversal is detected. Due to condition (1), the contents 926bf215546Sopenharmony_ci of the lrz buffer are a conservative estimation of the 927bf215546Sopenharmony_ci depth buffer during the draw pass. Meaning that geometry 928bf215546Sopenharmony_ci that we know for certain will not be visible will not pass 929bf215546Sopenharmony_ci lrz-test. But geometry which may be (or contributes to 930bf215546Sopenharmony_ci blend) will pass the lrz-test. 931bf215546Sopenharmony_ci 932bf215546Sopenharmony_ci This allows us to keep early-lrz-test in cases where the frag 933bf215546Sopenharmony_ci shader does not write-z (ie. we know the z-value before FS) 934bf215546Sopenharmony_ci and does not have side-effects (image/ssbo writes, etc), but 935bf215546Sopenharmony_ci does have kill/discard. Which turns out to be a common 936bf215546Sopenharmony_ci enough case that it is useful to keep early-lrz test against 937bf215546Sopenharmony_ci the conservative lrz buffer to discard fragments that we 938bf215546Sopenharmony_ci know will definitely not be visible. 939bf215546Sopenharmony_ci </doc> 940bf215546Sopenharmony_ci <value value="0x2" name="A6XX_EARLY_LRZ_LATE_Z"/> 941bf215546Sopenharmony_ci</enum> 942bf215546Sopenharmony_ci 943bf215546Sopenharmony_ci<domain name="A6XX" width="32"> 944bf215546Sopenharmony_ci <bitset name="A6XX_RBBM_INT_0_MASK" inline="no"> 945bf215546Sopenharmony_ci <bitfield name="RBBM_GPU_IDLE" pos="0" type="boolean"/> 946bf215546Sopenharmony_ci <bitfield name="CP_AHB_ERROR" pos="1" type="boolean"/> 947bf215546Sopenharmony_ci <bitfield name="RBBM_ATB_ASYNCFIFO_OVERFLOW" pos="6" type="boolean"/> 948bf215546Sopenharmony_ci <bitfield name="RBBM_GPC_ERROR" pos="7" type="boolean"/> 949bf215546Sopenharmony_ci <bitfield name="CP_SW" pos="8" type="boolean"/> 950bf215546Sopenharmony_ci <bitfield name="CP_HW_ERROR" pos="9" type="boolean"/> 951bf215546Sopenharmony_ci <bitfield name="CP_CCU_FLUSH_DEPTH_TS" pos="10" type="boolean"/> 952bf215546Sopenharmony_ci <bitfield name="CP_CCU_FLUSH_COLOR_TS" pos="11" type="boolean"/> 953bf215546Sopenharmony_ci <bitfield name="CP_CCU_RESOLVE_TS" pos="12" type="boolean"/> 954bf215546Sopenharmony_ci <bitfield name="CP_IB2" pos="13" type="boolean"/> 955bf215546Sopenharmony_ci <bitfield name="CP_IB1" pos="14" type="boolean"/> 956bf215546Sopenharmony_ci <bitfield name="CP_RB" pos="15" type="boolean"/> 957bf215546Sopenharmony_ci <bitfield name="CP_RB_DONE_TS" pos="17" type="boolean"/> 958bf215546Sopenharmony_ci <bitfield name="CP_WT_DONE_TS" pos="18" type="boolean"/> 959bf215546Sopenharmony_ci <bitfield name="CP_CACHE_FLUSH_TS" pos="20" type="boolean"/> 960bf215546Sopenharmony_ci <bitfield name="RBBM_ATB_BUS_OVERFLOW" pos="22" type="boolean"/> 961bf215546Sopenharmony_ci <bitfield name="RBBM_HANG_DETECT" pos="23" type="boolean"/> 962bf215546Sopenharmony_ci <bitfield name="UCHE_OOB_ACCESS" pos="24" type="boolean"/> 963bf215546Sopenharmony_ci <bitfield name="UCHE_TRAP_INTR" pos="25" type="boolean"/> 964bf215546Sopenharmony_ci <bitfield name="DEBBUS_INTR_0" pos="26" type="boolean"/> 965bf215546Sopenharmony_ci <bitfield name="DEBBUS_INTR_1" pos="27" type="boolean"/> 966bf215546Sopenharmony_ci <bitfield name="ISDB_CPU_IRQ" pos="30" type="boolean"/> 967bf215546Sopenharmony_ci <bitfield name="ISDB_UNDER_DEBUG" pos="31" type="boolean"/> 968bf215546Sopenharmony_ci </bitset> 969bf215546Sopenharmony_ci 970bf215546Sopenharmony_ci <bitset name="A6XX_CP_INT"> 971bf215546Sopenharmony_ci <bitfield name="CP_OPCODE_ERROR" pos="0" type="boolean"/> 972bf215546Sopenharmony_ci <bitfield name="CP_UCODE_ERROR" pos="1" type="boolean"/> 973bf215546Sopenharmony_ci <bitfield name="CP_HW_FAULT_ERROR" pos="2" type="boolean"/> 974bf215546Sopenharmony_ci <bitfield name="CP_REGISTER_PROTECTION_ERROR" pos="4" type="boolean"/> 975bf215546Sopenharmony_ci <bitfield name="CP_AHB_ERROR" pos="5" type="boolean"/> 976bf215546Sopenharmony_ci <bitfield name="CP_VSD_PARITY_ERROR" pos="6" type="boolean"/> 977bf215546Sopenharmony_ci <bitfield name="CP_ILLEGAL_INSTR_ERROR" pos="7" type="boolean"/> 978bf215546Sopenharmony_ci </bitset> 979bf215546Sopenharmony_ci 980bf215546Sopenharmony_ci <reg64 offset="0x0800" name="CP_RB_BASE"/> 981bf215546Sopenharmony_ci <reg32 offset="0x0802" name="CP_RB_CNTL"/> 982bf215546Sopenharmony_ci <reg64 offset="0x0804" name="CP_RB_RPTR_ADDR"/> 983bf215546Sopenharmony_ci <reg32 offset="0x0806" name="CP_RB_RPTR"/> 984bf215546Sopenharmony_ci <reg32 offset="0x0807" name="CP_RB_WPTR"/> 985bf215546Sopenharmony_ci <reg32 offset="0x0808" name="CP_SQE_CNTL"/> 986bf215546Sopenharmony_ci <reg32 offset="0x0812" name="CP_CP2GMU_STATUS"> 987bf215546Sopenharmony_ci <bitfield name="IFPC" pos="0" type="boolean"/> 988bf215546Sopenharmony_ci </reg32> 989bf215546Sopenharmony_ci <reg32 offset="0x0821" name="CP_HW_FAULT"/> 990bf215546Sopenharmony_ci <reg32 offset="0x0823" name="CP_INTERRUPT_STATUS"/> 991bf215546Sopenharmony_ci <reg32 offset="0x0824" name="CP_PROTECT_STATUS"/> 992bf215546Sopenharmony_ci <reg64 offset="0x0830" name="CP_SQE_INSTR_BASE"/> 993bf215546Sopenharmony_ci <reg32 offset="0x0840" name="CP_MISC_CNTL"/> 994bf215546Sopenharmony_ci <reg32 offset="0x0844" name="CP_APRIV_CNTL"/> 995bf215546Sopenharmony_ci <!-- all the threshold values seem to be in units of quad-dwords: --> 996bf215546Sopenharmony_ci <reg32 offset="0x08C1" name="CP_ROQ_THRESHOLDS_1"> 997bf215546Sopenharmony_ci <doc> 998bf215546Sopenharmony_ci b0..7 seems to contain the size of buffered by not yet processed 999bf215546Sopenharmony_ci RB level cmdstream.. it's possible that it is a low threshold 1000bf215546Sopenharmony_ci and b8..15 is a high threshold? 1001bf215546Sopenharmony_ci 1002bf215546Sopenharmony_ci b16..23 identifies where IB1 data starts (and RB data ends?) 1003bf215546Sopenharmony_ci 1004bf215546Sopenharmony_ci b24..31 identifies where IB2 data starts (and IB1 data ends) 1005bf215546Sopenharmony_ci </doc> 1006bf215546Sopenharmony_ci <bitfield name="RB_LO" low="0" high="7" shr="2"/> 1007bf215546Sopenharmony_ci <bitfield name="RB_HI" low="8" high="15" shr="2"/> 1008bf215546Sopenharmony_ci <bitfield name="IB1_START" low="16" high="23" shr="2"/> 1009bf215546Sopenharmony_ci <bitfield name="IB2_START" low="24" high="31" shr="2"/> 1010bf215546Sopenharmony_ci </reg32> 1011bf215546Sopenharmony_ci <reg32 offset="0x08C2" name="CP_ROQ_THRESHOLDS_2"> 1012bf215546Sopenharmony_ci <doc> 1013bf215546Sopenharmony_ci low bits identify where CP_SET_DRAW_STATE stateobj 1014bf215546Sopenharmony_ci processing starts (and IB2 data ends). I'm guessing 1015bf215546Sopenharmony_ci b8 is part of this since (from downstream kgsl): 1016bf215546Sopenharmony_ci 1017bf215546Sopenharmony_ci /* ROQ sizes are twice as big on a640/a680 than on a630 */ 1018bf215546Sopenharmony_ci if (adreno_is_a640(adreno_dev) || adreno_is_a680(adreno_dev)) { 1019bf215546Sopenharmony_ci kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_2, 0x02000140); 1020bf215546Sopenharmony_ci kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_1, 0x8040362C); 1021bf215546Sopenharmony_ci } ... 1022bf215546Sopenharmony_ci </doc> 1023bf215546Sopenharmony_ci <bitfield name="SDS_START" low="0" high="8" shr="2"/> 1024bf215546Sopenharmony_ci <!-- total ROQ size: --> 1025bf215546Sopenharmony_ci <bitfield name="ROQ_SIZE" low="16" high="31" shr="2"/> 1026bf215546Sopenharmony_ci </reg32> 1027bf215546Sopenharmony_ci <reg32 offset="0x08C3" name="CP_MEM_POOL_SIZE"/> 1028bf215546Sopenharmony_ci <reg32 offset="0x0841" name="CP_CHICKEN_DBG"/> 1029bf215546Sopenharmony_ci <reg32 offset="0x0842" name="CP_ADDR_MODE_CNTL" type="a5xx_address_mode"/> 1030bf215546Sopenharmony_ci <reg32 offset="0x0843" name="CP_DBG_ECO_CNTL"/> 1031bf215546Sopenharmony_ci <reg32 offset="0x084F" name="CP_PROTECT_CNTL"/> 1032bf215546Sopenharmony_ci 1033bf215546Sopenharmony_ci <array offset="0x0883" name="CP_SCRATCH" stride="1" length="8"> 1034bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG" type="uint"/> 1035bf215546Sopenharmony_ci </array> 1036bf215546Sopenharmony_ci <array offset="0x0850" name="CP_PROTECT" stride="1" length="32"> 1037bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG" type="a6x_cp_protect"/> 1038bf215546Sopenharmony_ci </array> 1039bf215546Sopenharmony_ci 1040bf215546Sopenharmony_ci <reg32 offset="0x08A0" name="CP_CONTEXT_SWITCH_CNTL"/> 1041bf215546Sopenharmony_ci <reg64 offset="0x08A1" name="CP_CONTEXT_SWITCH_SMMU_INFO"/> 1042bf215546Sopenharmony_ci <reg64 offset="0x08A3" name="CP_CONTEXT_SWITCH_PRIV_NON_SECURE_RESTORE_ADDR"/> 1043bf215546Sopenharmony_ci <reg64 offset="0x08A5" name="CP_CONTEXT_SWITCH_PRIV_SECURE_RESTORE_ADDR"/> 1044bf215546Sopenharmony_ci <reg64 offset="0x08A7" name="CP_CONTEXT_SWITCH_NON_PRIV_RESTORE_ADDR"/> 1045bf215546Sopenharmony_ci <array offset="0x08D0" name="CP_PERFCTR_CP_SEL" stride="1" length="14"/> 1046bf215546Sopenharmony_ci <reg64 offset="0x0900" name="CP_CRASH_SCRIPT_BASE"/> 1047bf215546Sopenharmony_ci <reg32 offset="0x0902" name="CP_CRASH_DUMP_CNTL"/> 1048bf215546Sopenharmony_ci <reg32 offset="0x0903" name="CP_CRASH_DUMP_STATUS"/> 1049bf215546Sopenharmony_ci <reg32 offset="0x0908" name="CP_SQE_STAT_ADDR"/> 1050bf215546Sopenharmony_ci <reg32 offset="0x0909" name="CP_SQE_STAT_DATA"/> 1051bf215546Sopenharmony_ci <reg32 offset="0x090A" name="CP_DRAW_STATE_ADDR"/> 1052bf215546Sopenharmony_ci <reg32 offset="0x090B" name="CP_DRAW_STATE_DATA"/> 1053bf215546Sopenharmony_ci <reg32 offset="0x090C" name="CP_ROQ_DBG_ADDR"/> 1054bf215546Sopenharmony_ci <reg32 offset="0x090D" name="CP_ROQ_DBG_DATA"/> 1055bf215546Sopenharmony_ci <reg32 offset="0x090E" name="CP_MEM_POOL_DBG_ADDR"/> 1056bf215546Sopenharmony_ci <reg32 offset="0x090F" name="CP_MEM_POOL_DBG_DATA"/> 1057bf215546Sopenharmony_ci <reg32 offset="0x0910" name="CP_SQE_UCODE_DBG_ADDR"/> 1058bf215546Sopenharmony_ci <reg32 offset="0x0911" name="CP_SQE_UCODE_DBG_DATA"/> 1059bf215546Sopenharmony_ci <reg64 offset="0x0928" name="CP_IB1_BASE"/> 1060bf215546Sopenharmony_ci <reg32 offset="0x092A" name="CP_IB1_REM_SIZE"/> 1061bf215546Sopenharmony_ci <reg64 offset="0x092B" name="CP_IB2_BASE"/> 1062bf215546Sopenharmony_ci <reg32 offset="0x092D" name="CP_IB2_REM_SIZE"/> 1063bf215546Sopenharmony_ci <!-- SDS == CP_SET_DRAW_STATE: --> 1064bf215546Sopenharmony_ci <reg64 offset="0x092e" name="CP_SDS_BASE"/> 1065bf215546Sopenharmony_ci <reg32 offset="0x0930" name="CP_SDS_REM_SIZE"/> 1066bf215546Sopenharmony_ci <!-- MRB == MEM_READ_ADDR/$addr in SQE firmware --> 1067bf215546Sopenharmony_ci <reg64 offset="0x0931" name="CP_MRB_BASE"/> 1068bf215546Sopenharmony_ci <reg32 offset="0x0933" name="CP_MRB_REM_SIZE"/> 1069bf215546Sopenharmony_ci <!-- 1070bf215546Sopenharmony_ci VSD == Visibility Stream Decode 1071bf215546Sopenharmony_ci This is used by CP to read the draw stream and skip empty draws 1072bf215546Sopenharmony_ci --> 1073bf215546Sopenharmony_ci <reg64 offset="0x0934" name="CP_VSD_BASE"/> 1074bf215546Sopenharmony_ci <reg32 offset="0x0946" name="CP_MRB_DWORDS"/> 1075bf215546Sopenharmony_ci <reg32 offset="0x0947" name="CP_VSD_DWORDS"/> 1076bf215546Sopenharmony_ci <!-- 1077bf215546Sopenharmony_ci There are probably similar registers for RB and SDS, teasing out SDS will 1078bf215546Sopenharmony_ci take a slightly better test case.. 1079bf215546Sopenharmony_ci --> 1080bf215546Sopenharmony_ci <reg32 offset="0x0949" name="CP_CSQ_IB1_STAT"> 1081bf215546Sopenharmony_ci <doc>number of remaining dwords incl current dword being consumed?</doc> 1082bf215546Sopenharmony_ci <bitfield name="REM" low="16" high="31"/> 1083bf215546Sopenharmony_ci </reg32> 1084bf215546Sopenharmony_ci <reg32 offset="0x094a" name="CP_CSQ_IB2_STAT"> 1085bf215546Sopenharmony_ci <doc>number of remaining dwords incl current dword being consumed?</doc> 1086bf215546Sopenharmony_ci <bitfield name="REM" low="16" high="31"/> 1087bf215546Sopenharmony_ci </reg32> 1088bf215546Sopenharmony_ci <reg32 offset="0x094c" name="CP_MRQ_MRB_STAT"> 1089bf215546Sopenharmony_ci <doc>number of dwords that have already been read but haven't been consumed by $addr</doc> 1090bf215546Sopenharmony_ci <bitfield name="REM" low="16" high="31"/> 1091bf215546Sopenharmony_ci </reg32> 1092bf215546Sopenharmony_ci <reg64 offset="0x0980" name="CP_ALWAYS_ON_COUNTER"/> 1093bf215546Sopenharmony_ci <reg32 offset="0x098D" name="CP_AHB_CNTL"/> 1094bf215546Sopenharmony_ci <reg32 offset="0x0A00" name="CP_APERTURE_CNTL_HOST"/> 1095bf215546Sopenharmony_ci <reg32 offset="0x0A03" name="CP_APERTURE_CNTL_CD"/> 1096bf215546Sopenharmony_ci <reg32 offset="0x0B34" name="CP_LPAC_PROG_FIFO_SIZE"/> 1097bf215546Sopenharmony_ci <reg64 offset="0x0b82" name="CP_LPAC_SQE_INSTR_BASE"/> 1098bf215546Sopenharmony_ci <reg32 offset="0x0C01" name="VSC_ADDR_MODE_CNTL" type="a5xx_address_mode"/> 1099bf215546Sopenharmony_ci <reg32 offset="0x0201" name="RBBM_INT_0_STATUS" type="A6XX_RBBM_INT_0_MASK"/> 1100bf215546Sopenharmony_ci <reg32 offset="0x0210" name="RBBM_STATUS"> 1101bf215546Sopenharmony_ci <bitfield pos="23" name="GPU_BUSY_IGN_AHB" type="boolean"/> 1102bf215546Sopenharmony_ci <bitfield pos="22" name="GPU_BUSY_IGN_AHB_CP" type="boolean"/> 1103bf215546Sopenharmony_ci <bitfield pos="21" name="HLSQ_BUSY" type="boolean"/> 1104bf215546Sopenharmony_ci <bitfield pos="20" name="VSC_BUSY" type="boolean"/> 1105bf215546Sopenharmony_ci <bitfield pos="19" name="TPL1_BUSY" type="boolean"/> 1106bf215546Sopenharmony_ci <bitfield pos="18" name="SP_BUSY" type="boolean"/> 1107bf215546Sopenharmony_ci <bitfield pos="17" name="UCHE_BUSY" type="boolean"/> 1108bf215546Sopenharmony_ci <bitfield pos="16" name="VPC_BUSY" type="boolean"/> 1109bf215546Sopenharmony_ci <bitfield pos="15" name="VFD_BUSY" type="boolean"/> 1110bf215546Sopenharmony_ci <bitfield pos="14" name="TESS_BUSY" type="boolean"/> 1111bf215546Sopenharmony_ci <bitfield pos="13" name="PC_VSD_BUSY" type="boolean"/> 1112bf215546Sopenharmony_ci <bitfield pos="12" name="PC_DCALL_BUSY" type="boolean"/> 1113bf215546Sopenharmony_ci <bitfield pos="11" name="COM_DCOM_BUSY" type="boolean"/> 1114bf215546Sopenharmony_ci <bitfield pos="10" name="LRZ_BUSY" type="boolean"/> 1115bf215546Sopenharmony_ci <bitfield pos="9" name="A2D_BUSY" type="boolean"/> 1116bf215546Sopenharmony_ci <bitfield pos="8" name="CCU_BUSY" type="boolean"/> 1117bf215546Sopenharmony_ci <bitfield pos="7" name="RB_BUSY" type="boolean"/> 1118bf215546Sopenharmony_ci <bitfield pos="6" name="RAS_BUSY" type="boolean"/> 1119bf215546Sopenharmony_ci <bitfield pos="5" name="TSE_BUSY" type="boolean"/> 1120bf215546Sopenharmony_ci <bitfield pos="4" name="VBIF_BUSY" type="boolean"/> 1121bf215546Sopenharmony_ci <bitfield pos="3" name="GFX_DBGC_BUSY" type="boolean"/> 1122bf215546Sopenharmony_ci <bitfield pos="2" name="CP_BUSY" type="boolean"/> 1123bf215546Sopenharmony_ci <bitfield pos="1" name="CP_AHB_BUSY_CP_MASTER" type="boolean"/> 1124bf215546Sopenharmony_ci <bitfield pos="0" name="CP_AHB_BUSY_CX_MASTER" type="boolean"/> 1125bf215546Sopenharmony_ci </reg32> 1126bf215546Sopenharmony_ci <reg32 offset="0x0213" name="RBBM_STATUS3"> 1127bf215546Sopenharmony_ci <bitfield pos="24" name="SMMU_STALLED_ON_FAULT" type="boolean"/> 1128bf215546Sopenharmony_ci </reg32> 1129bf215546Sopenharmony_ci <reg32 offset="0x0215" name="RBBM_VBIF_GX_RESET_STATUS"/> 1130bf215546Sopenharmony_ci <array offset="0x0400" name="RBBM_PERFCTR_CP" stride="2" length="14"/> 1131bf215546Sopenharmony_ci <array offset="0x041c" name="RBBM_PERFCTR_RBBM" stride="2" length="4"/> 1132bf215546Sopenharmony_ci <array offset="0x0424" name="RBBM_PERFCTR_PC" stride="2" length="8"/> 1133bf215546Sopenharmony_ci <array offset="0x0434" name="RBBM_PERFCTR_VFD" stride="2" length="8"/> 1134bf215546Sopenharmony_ci <array offset="0x0444" name="RBBM_PERFCTR_HLSQ" stride="2" length="6"/> 1135bf215546Sopenharmony_ci <array offset="0x0450" name="RBBM_PERFCTR_VPC" stride="2" length="6"/> 1136bf215546Sopenharmony_ci <array offset="0x045c" name="RBBM_PERFCTR_CCU" stride="2" length="5"/> 1137bf215546Sopenharmony_ci <array offset="0x0466" name="RBBM_PERFCTR_TSE" stride="2" length="4"/> 1138bf215546Sopenharmony_ci <array offset="0x046e" name="RBBM_PERFCTR_RAS" stride="2" length="4"/> 1139bf215546Sopenharmony_ci <array offset="0x0476" name="RBBM_PERFCTR_UCHE" stride="2" length="12"/> 1140bf215546Sopenharmony_ci <array offset="0x048e" name="RBBM_PERFCTR_TP" stride="2" length="12"/> 1141bf215546Sopenharmony_ci <array offset="0x04a6" name="RBBM_PERFCTR_SP" stride="2" length="24"/> 1142bf215546Sopenharmony_ci <array offset="0x04d6" name="RBBM_PERFCTR_RB" stride="2" length="8"/> 1143bf215546Sopenharmony_ci <array offset="0x04e6" name="RBBM_PERFCTR_VSC" stride="2" length="2"/> 1144bf215546Sopenharmony_ci <array offset="0x04ea" name="RBBM_PERFCTR_LRZ" stride="2" length="4"/> 1145bf215546Sopenharmony_ci <array offset="0x04f2" name="RBBM_PERFCTR_CMP" stride="2" length="4"/> 1146bf215546Sopenharmony_ci <reg32 offset="0x0500" name="RBBM_PERFCTR_CNTL"/> 1147bf215546Sopenharmony_ci <reg32 offset="0x0501" name="RBBM_PERFCTR_LOAD_CMD0"/> 1148bf215546Sopenharmony_ci <reg32 offset="0x0502" name="RBBM_PERFCTR_LOAD_CMD1"/> 1149bf215546Sopenharmony_ci <reg32 offset="0x0503" name="RBBM_PERFCTR_LOAD_CMD2"/> 1150bf215546Sopenharmony_ci <reg32 offset="0x0504" name="RBBM_PERFCTR_LOAD_CMD3"/> 1151bf215546Sopenharmony_ci <reg32 offset="0x0505" name="RBBM_PERFCTR_LOAD_VALUE_LO"/> 1152bf215546Sopenharmony_ci <reg32 offset="0x0506" name="RBBM_PERFCTR_LOAD_VALUE_HI"/> 1153bf215546Sopenharmony_ci <array offset="0x0507" name="RBBM_PERFCTR_RBBM_SEL" stride="1" length="4"/> 1154bf215546Sopenharmony_ci <reg32 offset="0x050B" name="RBBM_PERFCTR_GPU_BUSY_MASKED"/> 1155bf215546Sopenharmony_ci <reg32 offset="0x050e" name="RBBM_PERFCTR_SRAM_INIT_CMD"/> 1156bf215546Sopenharmony_ci <reg32 offset="0x050f" name="RBBM_PERFCTR_SRAM_INIT_STATUS"/> 1157bf215546Sopenharmony_ci <reg32 offset="0x0533" name="RBBM_ISDB_CNT"/> 1158bf215546Sopenharmony_ci 1159bf215546Sopenharmony_ci <!--- 1160bf215546Sopenharmony_ci This block of registers aren't tied to perf counters. They 1161bf215546Sopenharmony_ci count various geometry stats, for example number of 1162bf215546Sopenharmony_ci vertices in, number of primnitives assembled etc. 1163bf215546Sopenharmony_ci --> 1164bf215546Sopenharmony_ci 1165bf215546Sopenharmony_ci <reg32 offset="0x0540" name="RBBM_PRIMCTR_0_LO"/> <!-- vs vertices in --> 1166bf215546Sopenharmony_ci <reg32 offset="0x0541" name="RBBM_PRIMCTR_0_HI"/> 1167bf215546Sopenharmony_ci <reg32 offset="0x0542" name="RBBM_PRIMCTR_1_LO"/> <!-- vs primitives out --> 1168bf215546Sopenharmony_ci <reg32 offset="0x0543" name="RBBM_PRIMCTR_1_HI"/> 1169bf215546Sopenharmony_ci <reg32 offset="0x0544" name="RBBM_PRIMCTR_2_LO"/> <!-- hs vertices in --> 1170bf215546Sopenharmony_ci <reg32 offset="0x0545" name="RBBM_PRIMCTR_2_HI"/> 1171bf215546Sopenharmony_ci <reg32 offset="0x0546" name="RBBM_PRIMCTR_3_LO"/> <!-- hs patches out --> 1172bf215546Sopenharmony_ci <reg32 offset="0x0547" name="RBBM_PRIMCTR_3_HI"/> 1173bf215546Sopenharmony_ci <reg32 offset="0x0548" name="RBBM_PRIMCTR_4_LO"/> <!-- dss vertices in --> 1174bf215546Sopenharmony_ci <reg32 offset="0x0549" name="RBBM_PRIMCTR_4_HI"/> 1175bf215546Sopenharmony_ci <reg32 offset="0x054a" name="RBBM_PRIMCTR_5_LO"/> <!-- ds primitives out --> 1176bf215546Sopenharmony_ci <reg32 offset="0x054b" name="RBBM_PRIMCTR_5_HI"/> 1177bf215546Sopenharmony_ci <reg32 offset="0x054c" name="RBBM_PRIMCTR_6_LO"/> <!-- gs primitives in --> 1178bf215546Sopenharmony_ci <reg32 offset="0x054d" name="RBBM_PRIMCTR_6_HI"/> 1179bf215546Sopenharmony_ci <reg32 offset="0x054e" name="RBBM_PRIMCTR_7_LO"/> <!-- gs primitives out --> 1180bf215546Sopenharmony_ci <reg32 offset="0x054f" name="RBBM_PRIMCTR_7_HI"/> 1181bf215546Sopenharmony_ci <reg32 offset="0x0550" name="RBBM_PRIMCTR_8_LO"/> <!-- gs primitives out --> 1182bf215546Sopenharmony_ci <reg32 offset="0x0551" name="RBBM_PRIMCTR_8_HI"/> 1183bf215546Sopenharmony_ci <reg32 offset="0x0552" name="RBBM_PRIMCTR_9_LO"/> <!-- raster primitives in --> 1184bf215546Sopenharmony_ci <reg32 offset="0x0553" name="RBBM_PRIMCTR_9_HI"/> 1185bf215546Sopenharmony_ci <reg32 offset="0x0554" name="RBBM_PRIMCTR_10_LO"/> 1186bf215546Sopenharmony_ci <reg32 offset="0x0555" name="RBBM_PRIMCTR_10_HI"/> 1187bf215546Sopenharmony_ci 1188bf215546Sopenharmony_ci <reg32 offset="0xF400" name="RBBM_SECVID_TRUST_CNTL"/> 1189bf215546Sopenharmony_ci <reg64 offset="0xF800" name="RBBM_SECVID_TSB_TRUSTED_BASE"/> 1190bf215546Sopenharmony_ci <reg32 offset="0xF802" name="RBBM_SECVID_TSB_TRUSTED_SIZE"/> 1191bf215546Sopenharmony_ci <reg32 offset="0xF803" name="RBBM_SECVID_TSB_CNTL"/> 1192bf215546Sopenharmony_ci <reg32 offset="0xF810" name="RBBM_SECVID_TSB_ADDR_MODE_CNTL" type="a5xx_address_mode"/> 1193bf215546Sopenharmony_ci <reg32 offset="0x00010" name="RBBM_VBIF_CLIENT_QOS_CNTL"/> 1194bf215546Sopenharmony_ci <reg32 offset="0x00011" name="RBBM_GBIF_CLIENT_QOS_CNTL"/> 1195bf215546Sopenharmony_ci <reg32 offset="0x0001c" name="RBBM_WAIT_FOR_GPU_IDLE_CMD"> 1196bf215546Sopenharmony_ci <bitfield pos="0" name="WAIT_GPU_IDLE" type="boolean"/> 1197bf215546Sopenharmony_ci </reg32> 1198bf215546Sopenharmony_ci <reg32 offset="0x0001f" name="RBBM_INTERFACE_HANG_INT_CNTL"/> 1199bf215546Sopenharmony_ci <reg32 offset="0x00037" name="RBBM_INT_CLEAR_CMD" type="A6XX_RBBM_INT_0_MASK"/> 1200bf215546Sopenharmony_ci <reg32 offset="0x00038" name="RBBM_INT_0_MASK"/> 1201bf215546Sopenharmony_ci <reg32 offset="0x00042" name="RBBM_SP_HYST_CNT"/> 1202bf215546Sopenharmony_ci <reg32 offset="0x00043" name="RBBM_SW_RESET_CMD"/> 1203bf215546Sopenharmony_ci <reg32 offset="0x00044" name="RBBM_RAC_THRESHOLD_CNT"/> 1204bf215546Sopenharmony_ci <reg32 offset="0x00045" name="RBBM_BLOCK_SW_RESET_CMD"/> 1205bf215546Sopenharmony_ci <reg32 offset="0x00046" name="RBBM_BLOCK_SW_RESET_CMD2"/> 1206bf215546Sopenharmony_ci <reg32 offset="0x000ae" name="RBBM_CLOCK_CNTL"/> 1207bf215546Sopenharmony_ci <reg32 offset="0x000b0" name="RBBM_CLOCK_CNTL_SP0"/> 1208bf215546Sopenharmony_ci <reg32 offset="0x000b1" name="RBBM_CLOCK_CNTL_SP1"/> 1209bf215546Sopenharmony_ci <reg32 offset="0x000b2" name="RBBM_CLOCK_CNTL_SP2"/> 1210bf215546Sopenharmony_ci <reg32 offset="0x000b3" name="RBBM_CLOCK_CNTL_SP3"/> 1211bf215546Sopenharmony_ci <reg32 offset="0x000b4" name="RBBM_CLOCK_CNTL2_SP0"/> 1212bf215546Sopenharmony_ci <reg32 offset="0x000b5" name="RBBM_CLOCK_CNTL2_SP1"/> 1213bf215546Sopenharmony_ci <reg32 offset="0x000b6" name="RBBM_CLOCK_CNTL2_SP2"/> 1214bf215546Sopenharmony_ci <reg32 offset="0x000b7" name="RBBM_CLOCK_CNTL2_SP3"/> 1215bf215546Sopenharmony_ci <reg32 offset="0x000b8" name="RBBM_CLOCK_DELAY_SP0"/> 1216bf215546Sopenharmony_ci <reg32 offset="0x000b9" name="RBBM_CLOCK_DELAY_SP1"/> 1217bf215546Sopenharmony_ci <reg32 offset="0x000ba" name="RBBM_CLOCK_DELAY_SP2"/> 1218bf215546Sopenharmony_ci <reg32 offset="0x000bb" name="RBBM_CLOCK_DELAY_SP3"/> 1219bf215546Sopenharmony_ci <reg32 offset="0x000bc" name="RBBM_CLOCK_HYST_SP0"/> 1220bf215546Sopenharmony_ci <reg32 offset="0x000bd" name="RBBM_CLOCK_HYST_SP1"/> 1221bf215546Sopenharmony_ci <reg32 offset="0x000be" name="RBBM_CLOCK_HYST_SP2"/> 1222bf215546Sopenharmony_ci <reg32 offset="0x000bf" name="RBBM_CLOCK_HYST_SP3"/> 1223bf215546Sopenharmony_ci <reg32 offset="0x000c0" name="RBBM_CLOCK_CNTL_TP0"/> 1224bf215546Sopenharmony_ci <reg32 offset="0x000c1" name="RBBM_CLOCK_CNTL_TP1"/> 1225bf215546Sopenharmony_ci <reg32 offset="0x000c2" name="RBBM_CLOCK_CNTL_TP2"/> 1226bf215546Sopenharmony_ci <reg32 offset="0x000c3" name="RBBM_CLOCK_CNTL_TP3"/> 1227bf215546Sopenharmony_ci <reg32 offset="0x000c4" name="RBBM_CLOCK_CNTL2_TP0"/> 1228bf215546Sopenharmony_ci <reg32 offset="0x000c5" name="RBBM_CLOCK_CNTL2_TP1"/> 1229bf215546Sopenharmony_ci <reg32 offset="0x000c6" name="RBBM_CLOCK_CNTL2_TP2"/> 1230bf215546Sopenharmony_ci <reg32 offset="0x000c7" name="RBBM_CLOCK_CNTL2_TP3"/> 1231bf215546Sopenharmony_ci <reg32 offset="0x000c8" name="RBBM_CLOCK_CNTL3_TP0"/> 1232bf215546Sopenharmony_ci <reg32 offset="0x000c9" name="RBBM_CLOCK_CNTL3_TP1"/> 1233bf215546Sopenharmony_ci <reg32 offset="0x000ca" name="RBBM_CLOCK_CNTL3_TP2"/> 1234bf215546Sopenharmony_ci <reg32 offset="0x000cb" name="RBBM_CLOCK_CNTL3_TP3"/> 1235bf215546Sopenharmony_ci <reg32 offset="0x000cc" name="RBBM_CLOCK_CNTL4_TP0"/> 1236bf215546Sopenharmony_ci <reg32 offset="0x000cd" name="RBBM_CLOCK_CNTL4_TP1"/> 1237bf215546Sopenharmony_ci <reg32 offset="0x000ce" name="RBBM_CLOCK_CNTL4_TP2"/> 1238bf215546Sopenharmony_ci <reg32 offset="0x000cf" name="RBBM_CLOCK_CNTL4_TP3"/> 1239bf215546Sopenharmony_ci <reg32 offset="0x000d0" name="RBBM_CLOCK_DELAY_TP0"/> 1240bf215546Sopenharmony_ci <reg32 offset="0x000d1" name="RBBM_CLOCK_DELAY_TP1"/> 1241bf215546Sopenharmony_ci <reg32 offset="0x000d2" name="RBBM_CLOCK_DELAY_TP2"/> 1242bf215546Sopenharmony_ci <reg32 offset="0x000d3" name="RBBM_CLOCK_DELAY_TP3"/> 1243bf215546Sopenharmony_ci <reg32 offset="0x000d4" name="RBBM_CLOCK_DELAY2_TP0"/> 1244bf215546Sopenharmony_ci <reg32 offset="0x000d5" name="RBBM_CLOCK_DELAY2_TP1"/> 1245bf215546Sopenharmony_ci <reg32 offset="0x000d6" name="RBBM_CLOCK_DELAY2_TP2"/> 1246bf215546Sopenharmony_ci <reg32 offset="0x000d7" name="RBBM_CLOCK_DELAY2_TP3"/> 1247bf215546Sopenharmony_ci <reg32 offset="0x000d8" name="RBBM_CLOCK_DELAY3_TP0"/> 1248bf215546Sopenharmony_ci <reg32 offset="0x000d9" name="RBBM_CLOCK_DELAY3_TP1"/> 1249bf215546Sopenharmony_ci <reg32 offset="0x000da" name="RBBM_CLOCK_DELAY3_TP2"/> 1250bf215546Sopenharmony_ci <reg32 offset="0x000db" name="RBBM_CLOCK_DELAY3_TP3"/> 1251bf215546Sopenharmony_ci <reg32 offset="0x000dc" name="RBBM_CLOCK_DELAY4_TP0"/> 1252bf215546Sopenharmony_ci <reg32 offset="0x000dd" name="RBBM_CLOCK_DELAY4_TP1"/> 1253bf215546Sopenharmony_ci <reg32 offset="0x000de" name="RBBM_CLOCK_DELAY4_TP2"/> 1254bf215546Sopenharmony_ci <reg32 offset="0x000df" name="RBBM_CLOCK_DELAY4_TP3"/> 1255bf215546Sopenharmony_ci <reg32 offset="0x000e0" name="RBBM_CLOCK_HYST_TP0"/> 1256bf215546Sopenharmony_ci <reg32 offset="0x000e1" name="RBBM_CLOCK_HYST_TP1"/> 1257bf215546Sopenharmony_ci <reg32 offset="0x000e2" name="RBBM_CLOCK_HYST_TP2"/> 1258bf215546Sopenharmony_ci <reg32 offset="0x000e3" name="RBBM_CLOCK_HYST_TP3"/> 1259bf215546Sopenharmony_ci <reg32 offset="0x000e4" name="RBBM_CLOCK_HYST2_TP0"/> 1260bf215546Sopenharmony_ci <reg32 offset="0x000e5" name="RBBM_CLOCK_HYST2_TP1"/> 1261bf215546Sopenharmony_ci <reg32 offset="0x000e6" name="RBBM_CLOCK_HYST2_TP2"/> 1262bf215546Sopenharmony_ci <reg32 offset="0x000e7" name="RBBM_CLOCK_HYST2_TP3"/> 1263bf215546Sopenharmony_ci <reg32 offset="0x000e8" name="RBBM_CLOCK_HYST3_TP0"/> 1264bf215546Sopenharmony_ci <reg32 offset="0x000e9" name="RBBM_CLOCK_HYST3_TP1"/> 1265bf215546Sopenharmony_ci <reg32 offset="0x000ea" name="RBBM_CLOCK_HYST3_TP2"/> 1266bf215546Sopenharmony_ci <reg32 offset="0x000eb" name="RBBM_CLOCK_HYST3_TP3"/> 1267bf215546Sopenharmony_ci <reg32 offset="0x000ec" name="RBBM_CLOCK_HYST4_TP0"/> 1268bf215546Sopenharmony_ci <reg32 offset="0x000ed" name="RBBM_CLOCK_HYST4_TP1"/> 1269bf215546Sopenharmony_ci <reg32 offset="0x000ee" name="RBBM_CLOCK_HYST4_TP2"/> 1270bf215546Sopenharmony_ci <reg32 offset="0x000ef" name="RBBM_CLOCK_HYST4_TP3"/> 1271bf215546Sopenharmony_ci <reg32 offset="0x000f0" name="RBBM_CLOCK_CNTL_RB0"/> 1272bf215546Sopenharmony_ci <reg32 offset="0x000f1" name="RBBM_CLOCK_CNTL_RB1"/> 1273bf215546Sopenharmony_ci <reg32 offset="0x000f2" name="RBBM_CLOCK_CNTL_RB2"/> 1274bf215546Sopenharmony_ci <reg32 offset="0x000f3" name="RBBM_CLOCK_CNTL_RB3"/> 1275bf215546Sopenharmony_ci <reg32 offset="0x000f4" name="RBBM_CLOCK_CNTL2_RB0"/> 1276bf215546Sopenharmony_ci <reg32 offset="0x000f5" name="RBBM_CLOCK_CNTL2_RB1"/> 1277bf215546Sopenharmony_ci <reg32 offset="0x000f6" name="RBBM_CLOCK_CNTL2_RB2"/> 1278bf215546Sopenharmony_ci <reg32 offset="0x000f7" name="RBBM_CLOCK_CNTL2_RB3"/> 1279bf215546Sopenharmony_ci <reg32 offset="0x000f8" name="RBBM_CLOCK_CNTL_CCU0"/> 1280bf215546Sopenharmony_ci <reg32 offset="0x000f9" name="RBBM_CLOCK_CNTL_CCU1"/> 1281bf215546Sopenharmony_ci <reg32 offset="0x000fa" name="RBBM_CLOCK_CNTL_CCU2"/> 1282bf215546Sopenharmony_ci <reg32 offset="0x000fb" name="RBBM_CLOCK_CNTL_CCU3"/> 1283bf215546Sopenharmony_ci <reg32 offset="0x00100" name="RBBM_CLOCK_HYST_RB_CCU0"/> 1284bf215546Sopenharmony_ci <reg32 offset="0x00101" name="RBBM_CLOCK_HYST_RB_CCU1"/> 1285bf215546Sopenharmony_ci <reg32 offset="0x00102" name="RBBM_CLOCK_HYST_RB_CCU2"/> 1286bf215546Sopenharmony_ci <reg32 offset="0x00103" name="RBBM_CLOCK_HYST_RB_CCU3"/> 1287bf215546Sopenharmony_ci <reg32 offset="0x00104" name="RBBM_CLOCK_CNTL_RAC"/> 1288bf215546Sopenharmony_ci <reg32 offset="0x00105" name="RBBM_CLOCK_CNTL2_RAC"/> 1289bf215546Sopenharmony_ci <reg32 offset="0x00106" name="RBBM_CLOCK_DELAY_RAC"/> 1290bf215546Sopenharmony_ci <reg32 offset="0x00107" name="RBBM_CLOCK_HYST_RAC"/> 1291bf215546Sopenharmony_ci <reg32 offset="0x00108" name="RBBM_CLOCK_CNTL_TSE_RAS_RBBM"/> 1292bf215546Sopenharmony_ci <reg32 offset="0x00109" name="RBBM_CLOCK_DELAY_TSE_RAS_RBBM"/> 1293bf215546Sopenharmony_ci <reg32 offset="0x0010a" name="RBBM_CLOCK_HYST_TSE_RAS_RBBM"/> 1294bf215546Sopenharmony_ci <reg32 offset="0x0010b" name="RBBM_CLOCK_CNTL_UCHE"/> 1295bf215546Sopenharmony_ci <reg32 offset="0x0010c" name="RBBM_CLOCK_CNTL2_UCHE"/> 1296bf215546Sopenharmony_ci <reg32 offset="0x0010d" name="RBBM_CLOCK_CNTL3_UCHE"/> 1297bf215546Sopenharmony_ci <reg32 offset="0x0010e" name="RBBM_CLOCK_CNTL4_UCHE"/> 1298bf215546Sopenharmony_ci <reg32 offset="0x0010f" name="RBBM_CLOCK_DELAY_UCHE"/> 1299bf215546Sopenharmony_ci <reg32 offset="0x00110" name="RBBM_CLOCK_HYST_UCHE"/> 1300bf215546Sopenharmony_ci <reg32 offset="0x00111" name="RBBM_CLOCK_MODE_VFD"/> 1301bf215546Sopenharmony_ci <reg32 offset="0x00112" name="RBBM_CLOCK_DELAY_VFD"/> 1302bf215546Sopenharmony_ci <reg32 offset="0x00113" name="RBBM_CLOCK_HYST_VFD"/> 1303bf215546Sopenharmony_ci <reg32 offset="0x00114" name="RBBM_CLOCK_MODE_GPC"/> 1304bf215546Sopenharmony_ci <reg32 offset="0x00115" name="RBBM_CLOCK_DELAY_GPC"/> 1305bf215546Sopenharmony_ci <reg32 offset="0x00116" name="RBBM_CLOCK_HYST_GPC"/> 1306bf215546Sopenharmony_ci <reg32 offset="0x00117" name="RBBM_CLOCK_DELAY_HLSQ_2"/> 1307bf215546Sopenharmony_ci <reg32 offset="0x00118" name="RBBM_CLOCK_CNTL_GMU_GX"/> 1308bf215546Sopenharmony_ci <reg32 offset="0x00119" name="RBBM_CLOCK_DELAY_GMU_GX"/> 1309bf215546Sopenharmony_ci <reg32 offset="0x0011a" name="RBBM_CLOCK_HYST_GMU_GX"/> 1310bf215546Sopenharmony_ci <reg32 offset="0x0011b" name="RBBM_CLOCK_MODE_HLSQ"/> 1311bf215546Sopenharmony_ci <reg32 offset="0x0011c" name="RBBM_CLOCK_DELAY_HLSQ"/> 1312bf215546Sopenharmony_ci <reg32 offset="0x0011d" name="RBBM_CLOCK_HYST_HLSQ"/> 1313bf215546Sopenharmony_ci <reg32 offset="0x00120" name="RBBM_CLOCK_CNTL_TEX_FCHE"/> 1314bf215546Sopenharmony_ci <reg32 offset="0x00121" name="RBBM_CLOCK_DELAY_TEX_FCHE"/> 1315bf215546Sopenharmony_ci <reg32 offset="0x00122" name="RBBM_CLOCK_HYST_TEX_FCHE"/> 1316bf215546Sopenharmony_ci 1317bf215546Sopenharmony_ci <reg32 offset="0x0600" name="DBGC_CFG_DBGBUS_SEL_A"/> 1318bf215546Sopenharmony_ci <reg32 offset="0x0601" name="DBGC_CFG_DBGBUS_SEL_B"/> 1319bf215546Sopenharmony_ci <reg32 offset="0x0602" name="DBGC_CFG_DBGBUS_SEL_C"/> 1320bf215546Sopenharmony_ci <reg32 offset="0x0603" name="DBGC_CFG_DBGBUS_SEL_D"> 1321bf215546Sopenharmony_ci <bitfield high="7" low="0" name="PING_INDEX"/> 1322bf215546Sopenharmony_ci <bitfield high="15" low="8" name="PING_BLK_SEL"/> 1323bf215546Sopenharmony_ci </reg32> 1324bf215546Sopenharmony_ci <reg32 offset="0x0604" name="DBGC_CFG_DBGBUS_CNTLT"> 1325bf215546Sopenharmony_ci <bitfield high="5" low="0" name="TRACEEN"/> 1326bf215546Sopenharmony_ci <bitfield high="14" low="12" name="GRANU"/> 1327bf215546Sopenharmony_ci <bitfield high="31" low="28" name="SEGT"/> 1328bf215546Sopenharmony_ci </reg32> 1329bf215546Sopenharmony_ci <reg32 offset="0x0605" name="DBGC_CFG_DBGBUS_CNTLM"> 1330bf215546Sopenharmony_ci <bitfield high="27" low="24" name="ENABLE"/> 1331bf215546Sopenharmony_ci </reg32> 1332bf215546Sopenharmony_ci <reg32 offset="0x0608" name="DBGC_CFG_DBGBUS_IVTL_0"/> 1333bf215546Sopenharmony_ci <reg32 offset="0x0609" name="DBGC_CFG_DBGBUS_IVTL_1"/> 1334bf215546Sopenharmony_ci <reg32 offset="0x060a" name="DBGC_CFG_DBGBUS_IVTL_2"/> 1335bf215546Sopenharmony_ci <reg32 offset="0x060b" name="DBGC_CFG_DBGBUS_IVTL_3"/> 1336bf215546Sopenharmony_ci <reg32 offset="0x060c" name="DBGC_CFG_DBGBUS_MASKL_0"/> 1337bf215546Sopenharmony_ci <reg32 offset="0x060d" name="DBGC_CFG_DBGBUS_MASKL_1"/> 1338bf215546Sopenharmony_ci <reg32 offset="0x060e" name="DBGC_CFG_DBGBUS_MASKL_2"/> 1339bf215546Sopenharmony_ci <reg32 offset="0x060f" name="DBGC_CFG_DBGBUS_MASKL_3"/> 1340bf215546Sopenharmony_ci <reg32 offset="0x0610" name="DBGC_CFG_DBGBUS_BYTEL_0"> 1341bf215546Sopenharmony_ci <bitfield high="3" low="0" name="BYTEL0"/> 1342bf215546Sopenharmony_ci <bitfield high="7" low="4" name="BYTEL1"/> 1343bf215546Sopenharmony_ci <bitfield high="11" low="8" name="BYTEL2"/> 1344bf215546Sopenharmony_ci <bitfield high="15" low="12" name="BYTEL3"/> 1345bf215546Sopenharmony_ci <bitfield high="19" low="16" name="BYTEL4"/> 1346bf215546Sopenharmony_ci <bitfield high="23" low="20" name="BYTEL5"/> 1347bf215546Sopenharmony_ci <bitfield high="27" low="24" name="BYTEL6"/> 1348bf215546Sopenharmony_ci <bitfield high="31" low="28" name="BYTEL7"/> 1349bf215546Sopenharmony_ci </reg32> 1350bf215546Sopenharmony_ci <reg32 offset="0x0611" name="DBGC_CFG_DBGBUS_BYTEL_1"> 1351bf215546Sopenharmony_ci <bitfield high="3" low="0" name="BYTEL8"/> 1352bf215546Sopenharmony_ci <bitfield high="7" low="4" name="BYTEL9"/> 1353bf215546Sopenharmony_ci <bitfield high="11" low="8" name="BYTEL10"/> 1354bf215546Sopenharmony_ci <bitfield high="15" low="12" name="BYTEL11"/> 1355bf215546Sopenharmony_ci <bitfield high="19" low="16" name="BYTEL12"/> 1356bf215546Sopenharmony_ci <bitfield high="23" low="20" name="BYTEL13"/> 1357bf215546Sopenharmony_ci <bitfield high="27" low="24" name="BYTEL14"/> 1358bf215546Sopenharmony_ci <bitfield high="31" low="28" name="BYTEL15"/> 1359bf215546Sopenharmony_ci </reg32> 1360bf215546Sopenharmony_ci <reg32 offset="0x062f" name="DBGC_CFG_DBGBUS_TRACE_BUF1"/> 1361bf215546Sopenharmony_ci <reg32 offset="0x0630" name="DBGC_CFG_DBGBUS_TRACE_BUF2"/> 1362bf215546Sopenharmony_ci <array offset="0x0CD8" name="VSC_PERFCTR_VSC_SEL" stride="1" length="2"/> 1363bf215546Sopenharmony_ci <reg32 offset="0xC800" name="HLSQ_DBG_AHB_READ_APERTURE"/> 1364bf215546Sopenharmony_ci <reg32 offset="0xD000" name="HLSQ_DBG_READ_SEL"/> 1365bf215546Sopenharmony_ci <reg32 offset="0x0E00" name="UCHE_ADDR_MODE_CNTL" type="a5xx_address_mode"/> 1366bf215546Sopenharmony_ci <reg32 offset="0x0E01" name="UCHE_MODE_CNTL"/> 1367bf215546Sopenharmony_ci <reg64 offset="0x0E05" name="UCHE_WRITE_RANGE_MAX"/> 1368bf215546Sopenharmony_ci <reg64 offset="0x0E07" name="UCHE_WRITE_THRU_BASE"/> 1369bf215546Sopenharmony_ci <reg64 offset="0x0E09" name="UCHE_TRAP_BASE"/> 1370bf215546Sopenharmony_ci <reg64 offset="0x0E0B" name="UCHE_GMEM_RANGE_MIN"/> 1371bf215546Sopenharmony_ci <reg64 offset="0x0E0D" name="UCHE_GMEM_RANGE_MAX"/> 1372bf215546Sopenharmony_ci <reg32 offset="0x0E17" name="UCHE_CACHE_WAYS"/> 1373bf215546Sopenharmony_ci <reg32 offset="0x0E18" name="UCHE_FILTER_CNTL"/> 1374bf215546Sopenharmony_ci <reg32 offset="0x0E19" name="UCHE_CLIENT_PF"> 1375bf215546Sopenharmony_ci <bitfield high="7" low="0" name="PERFSEL"/> 1376bf215546Sopenharmony_ci </reg32> 1377bf215546Sopenharmony_ci <array offset="0x0E1C" name="UCHE_PERFCTR_UCHE_SEL" stride="1" length="12"/> 1378bf215546Sopenharmony_ci <reg32 offset="0x0e3c" name="UCHE_CMDQ_CONFIG"/> 1379bf215546Sopenharmony_ci 1380bf215546Sopenharmony_ci <reg32 offset="0x3000" name="VBIF_VERSION"/> 1381bf215546Sopenharmony_ci <reg32 offset="0x3001" name="VBIF_CLKON"> 1382bf215546Sopenharmony_ci <bitfield pos="1" name="FORCE_ON_TESTBUS" type="boolean"/> 1383bf215546Sopenharmony_ci </reg32> 1384bf215546Sopenharmony_ci <reg32 offset="0x302A" name="VBIF_GATE_OFF_WRREQ_EN"/> 1385bf215546Sopenharmony_ci <reg32 offset="0x3080" name="VBIF_XIN_HALT_CTRL0"/> 1386bf215546Sopenharmony_ci <reg32 offset="0x3081" name="VBIF_XIN_HALT_CTRL1"/> 1387bf215546Sopenharmony_ci <reg32 offset="0x3084" name="VBIF_TEST_BUS_OUT_CTRL"/> 1388bf215546Sopenharmony_ci <reg32 offset="0x3085" name="VBIF_TEST_BUS1_CTRL0"/> 1389bf215546Sopenharmony_ci <reg32 offset="0x3086" name="VBIF_TEST_BUS1_CTRL1"> 1390bf215546Sopenharmony_ci <bitfield low="0" high="3" name="DATA_SEL"/> 1391bf215546Sopenharmony_ci </reg32> 1392bf215546Sopenharmony_ci <reg32 offset="0x3087" name="VBIF_TEST_BUS2_CTRL0"/> 1393bf215546Sopenharmony_ci <reg32 offset="0x3088" name="VBIF_TEST_BUS2_CTRL1"> 1394bf215546Sopenharmony_ci <bitfield low="0" high="8" name="DATA_SEL"/> 1395bf215546Sopenharmony_ci </reg32> 1396bf215546Sopenharmony_ci <reg32 offset="0x308c" name="VBIF_TEST_BUS_OUT"/> 1397bf215546Sopenharmony_ci <reg32 offset="0x30d0" name="VBIF_PERF_CNT_SEL0"/> 1398bf215546Sopenharmony_ci <reg32 offset="0x30d1" name="VBIF_PERF_CNT_SEL1"/> 1399bf215546Sopenharmony_ci <reg32 offset="0x30d2" name="VBIF_PERF_CNT_SEL2"/> 1400bf215546Sopenharmony_ci <reg32 offset="0x30d3" name="VBIF_PERF_CNT_SEL3"/> 1401bf215546Sopenharmony_ci <reg32 offset="0x30d8" name="VBIF_PERF_CNT_LOW0"/> 1402bf215546Sopenharmony_ci <reg32 offset="0x30d9" name="VBIF_PERF_CNT_LOW1"/> 1403bf215546Sopenharmony_ci <reg32 offset="0x30da" name="VBIF_PERF_CNT_LOW2"/> 1404bf215546Sopenharmony_ci <reg32 offset="0x30db" name="VBIF_PERF_CNT_LOW3"/> 1405bf215546Sopenharmony_ci <reg32 offset="0x30e0" name="VBIF_PERF_CNT_HIGH0"/> 1406bf215546Sopenharmony_ci <reg32 offset="0x30e1" name="VBIF_PERF_CNT_HIGH1"/> 1407bf215546Sopenharmony_ci <reg32 offset="0x30e2" name="VBIF_PERF_CNT_HIGH2"/> 1408bf215546Sopenharmony_ci <reg32 offset="0x30e3" name="VBIF_PERF_CNT_HIGH3"/> 1409bf215546Sopenharmony_ci <reg32 offset="0x3100" name="VBIF_PERF_PWR_CNT_EN0"/> 1410bf215546Sopenharmony_ci <reg32 offset="0x3101" name="VBIF_PERF_PWR_CNT_EN1"/> 1411bf215546Sopenharmony_ci <reg32 offset="0x3102" name="VBIF_PERF_PWR_CNT_EN2"/> 1412bf215546Sopenharmony_ci <reg32 offset="0x3110" name="VBIF_PERF_PWR_CNT_LOW0"/> 1413bf215546Sopenharmony_ci <reg32 offset="0x3111" name="VBIF_PERF_PWR_CNT_LOW1"/> 1414bf215546Sopenharmony_ci <reg32 offset="0x3112" name="VBIF_PERF_PWR_CNT_LOW2"/> 1415bf215546Sopenharmony_ci <reg32 offset="0x3118" name="VBIF_PERF_PWR_CNT_HIGH0"/> 1416bf215546Sopenharmony_ci <reg32 offset="0x3119" name="VBIF_PERF_PWR_CNT_HIGH1"/> 1417bf215546Sopenharmony_ci <reg32 offset="0x311a" name="VBIF_PERF_PWR_CNT_HIGH2"/> 1418bf215546Sopenharmony_ci 1419bf215546Sopenharmony_ci <reg32 offset="0x3c01" name="GBIF_SCACHE_CNTL0"/> 1420bf215546Sopenharmony_ci <reg32 offset="0x3c02" name="GBIF_SCACHE_CNTL1"/> 1421bf215546Sopenharmony_ci <reg32 offset="0x3c03" name="GBIF_QSB_SIDE0"/> 1422bf215546Sopenharmony_ci <reg32 offset="0x3c04" name="GBIF_QSB_SIDE1"/> 1423bf215546Sopenharmony_ci <reg32 offset="0x3c05" name="GBIF_QSB_SIDE2"/> 1424bf215546Sopenharmony_ci <reg32 offset="0x3c06" name="GBIF_QSB_SIDE3"/> 1425bf215546Sopenharmony_ci <reg32 offset="0x3c45" name="GBIF_HALT"/> 1426bf215546Sopenharmony_ci <reg32 offset="0x3c46" name="GBIF_HALT_ACK"/> 1427bf215546Sopenharmony_ci <reg32 offset="0x3cc0" name="GBIF_PERF_PWR_CNT_EN"/> 1428bf215546Sopenharmony_ci <reg32 offset="0x3cc2" name="GBIF_PERF_CNT_SEL"/> 1429bf215546Sopenharmony_ci <reg32 offset="0x3cc3" name="GBIF_PERF_PWR_CNT_SEL"/> 1430bf215546Sopenharmony_ci <reg32 offset="0x3cc4" name="GBIF_PERF_CNT_LOW0"/> 1431bf215546Sopenharmony_ci <reg32 offset="0x3cc5" name="GBIF_PERF_CNT_LOW1"/> 1432bf215546Sopenharmony_ci <reg32 offset="0x3cc6" name="GBIF_PERF_CNT_LOW2"/> 1433bf215546Sopenharmony_ci <reg32 offset="0x3cc7" name="GBIF_PERF_CNT_LOW3"/> 1434bf215546Sopenharmony_ci <reg32 offset="0x3cc8" name="GBIF_PERF_CNT_HIGH0"/> 1435bf215546Sopenharmony_ci <reg32 offset="0x3cc9" name="GBIF_PERF_CNT_HIGH1"/> 1436bf215546Sopenharmony_ci <reg32 offset="0x3cca" name="GBIF_PERF_CNT_HIGH2"/> 1437bf215546Sopenharmony_ci <reg32 offset="0x3ccb" name="GBIF_PERF_CNT_HIGH3"/> 1438bf215546Sopenharmony_ci <reg32 offset="0x3ccc" name="GBIF_PWR_CNT_LOW0"/> 1439bf215546Sopenharmony_ci <reg32 offset="0x3ccd" name="GBIF_PWR_CNT_LOW1"/> 1440bf215546Sopenharmony_ci <reg32 offset="0x3cce" name="GBIF_PWR_CNT_LOW2"/> 1441bf215546Sopenharmony_ci <reg32 offset="0x3ccf" name="GBIF_PWR_CNT_HIGH0"/> 1442bf215546Sopenharmony_ci <reg32 offset="0x3cd0" name="GBIF_PWR_CNT_HIGH1"/> 1443bf215546Sopenharmony_ci <reg32 offset="0x3cd1" name="GBIF_PWR_CNT_HIGH2"/> 1444bf215546Sopenharmony_ci 1445bf215546Sopenharmony_ci <reg32 offset="0x0c00" name="VSC_DBG_ECO_CNTL"/> 1446bf215546Sopenharmony_ci <reg32 offset="0x0c02" name="VSC_BIN_SIZE"> 1447bf215546Sopenharmony_ci <bitfield name="WIDTH" low="0" high="7" shr="5" type="uint"/> 1448bf215546Sopenharmony_ci <bitfield name="HEIGHT" low="8" high="16" shr="4" type="uint"/> 1449bf215546Sopenharmony_ci </reg32> 1450bf215546Sopenharmony_ci <reg64 offset="0x0c03" name="VSC_DRAW_STRM_SIZE_ADDRESS" type="waddress"/> 1451bf215546Sopenharmony_ci <reg32 offset="0x0c06" name="VSC_BIN_COUNT"> 1452bf215546Sopenharmony_ci <bitfield name="NX" low="1" high="10" type="uint"/> 1453bf215546Sopenharmony_ci <bitfield name="NY" low="11" high="20" type="uint"/> 1454bf215546Sopenharmony_ci </reg32> 1455bf215546Sopenharmony_ci <array offset="0x0c10" name="VSC_PIPE_CONFIG" stride="1" length="32"> 1456bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"> 1457bf215546Sopenharmony_ci <doc> 1458bf215546Sopenharmony_ci Configures the mapping between VSC_PIPE buffer and 1459bf215546Sopenharmony_ci bin, X/Y specify the bin index in the horiz/vert 1460bf215546Sopenharmony_ci direction (0,0 is upper left, 0,1 is leftmost bin 1461bf215546Sopenharmony_ci on second row, and so on). W/H specify the number 1462bf215546Sopenharmony_ci of bins assigned to this VSC_PIPE in the horiz/vert 1463bf215546Sopenharmony_ci dimension. 1464bf215546Sopenharmony_ci </doc> 1465bf215546Sopenharmony_ci <bitfield name="X" low="0" high="9" type="uint"/> 1466bf215546Sopenharmony_ci <bitfield name="Y" low="10" high="19" type="uint"/> 1467bf215546Sopenharmony_ci <bitfield name="W" low="20" high="25" type="uint"/> 1468bf215546Sopenharmony_ci <bitfield name="H" low="26" high="31" type="uint"/> 1469bf215546Sopenharmony_ci </reg32> 1470bf215546Sopenharmony_ci </array> 1471bf215546Sopenharmony_ci <!-- 1472bf215546Sopenharmony_ci HW binning primitive & draw streams, which enable draws and primitives 1473bf215546Sopenharmony_ci within a draw to be skipped in the main tile pass. See: 1474bf215546Sopenharmony_ci https://github.com/freedreno/freedreno/wiki/Visibility-Stream-Format 1475bf215546Sopenharmony_ci 1476bf215546Sopenharmony_ci Compared to a5xx and earlier, we just program the address of the first 1477bf215546Sopenharmony_ci stream and hw adds (pipe_num * VSC_*_STRM_PITCH) 1478bf215546Sopenharmony_ci 1479bf215546Sopenharmony_ci LIMIT is set to PITCH - 64, to make room for a bit of overflow 1480bf215546Sopenharmony_ci --> 1481bf215546Sopenharmony_ci <reg64 offset="0x0c30" name="VSC_PRIM_STRM_ADDRESS" type="waddress"/> 1482bf215546Sopenharmony_ci <reg32 offset="0x0c32" name="VSC_PRIM_STRM_PITCH"/> 1483bf215546Sopenharmony_ci <reg32 offset="0x0c33" name="VSC_PRIM_STRM_LIMIT"/> 1484bf215546Sopenharmony_ci <reg64 offset="0x0c34" name="VSC_DRAW_STRM_ADDRESS" type="waddress"/> 1485bf215546Sopenharmony_ci <reg32 offset="0x0c36" name="VSC_DRAW_STRM_PITCH"/> 1486bf215546Sopenharmony_ci <reg32 offset="0x0c37" name="VSC_DRAW_STRM_LIMIT"/> 1487bf215546Sopenharmony_ci 1488bf215546Sopenharmony_ci <array offset="0x0c38" name="VSC_STATE" stride="1" length="32"> 1489bf215546Sopenharmony_ci <doc> 1490bf215546Sopenharmony_ci Seems to be a bitmap of which tiles mapped to the VSC 1491bf215546Sopenharmony_ci pipe contain geometry. 1492bf215546Sopenharmony_ci 1493bf215546Sopenharmony_ci I suppose we can connect a maximum of 32 tiles to a 1494bf215546Sopenharmony_ci single VSC pipe. 1495bf215546Sopenharmony_ci </doc> 1496bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"/> 1497bf215546Sopenharmony_ci </array> 1498bf215546Sopenharmony_ci 1499bf215546Sopenharmony_ci <array offset="0x0c58" name="VSC_PRIM_STRM_SIZE" stride="1" length="32"> 1500bf215546Sopenharmony_ci <doc> 1501bf215546Sopenharmony_ci Has the size of data written to corresponding VSC_PRIM_STRM 1502bf215546Sopenharmony_ci buffer. 1503bf215546Sopenharmony_ci </doc> 1504bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"/> 1505bf215546Sopenharmony_ci </array> 1506bf215546Sopenharmony_ci 1507bf215546Sopenharmony_ci <array offset="0x0c78" name="VSC_DRAW_STRM_SIZE" stride="1" length="32"> 1508bf215546Sopenharmony_ci <doc> 1509bf215546Sopenharmony_ci Has the size of data written to corresponding VSC pipe, ie. 1510bf215546Sopenharmony_ci same thing that is written out to VSC_DRAW_STRM_SIZE_ADDRESS_LO/HI 1511bf215546Sopenharmony_ci </doc> 1512bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"/> 1513bf215546Sopenharmony_ci </array> 1514bf215546Sopenharmony_ci 1515bf215546Sopenharmony_ci <!-- always 0x03200000 ? --> 1516bf215546Sopenharmony_ci <reg32 offset="0x0e12" name="UCHE_UNKNOWN_0E12"/> 1517bf215546Sopenharmony_ci 1518bf215546Sopenharmony_ci <!-- adreno_reg_xy has 15 bits per coordinate, but a6xx registers only have 14 --> 1519bf215546Sopenharmony_ci <bitset name="a6xx_reg_xy" inline="yes"> 1520bf215546Sopenharmony_ci <bitfield name="X" low="0" high="13" type="uint"/> 1521bf215546Sopenharmony_ci <bitfield name="Y" low="16" high="29" type="uint"/> 1522bf215546Sopenharmony_ci </bitset> 1523bf215546Sopenharmony_ci 1524bf215546Sopenharmony_ci <reg32 offset="0x8000" name="GRAS_CL_CNTL"> 1525bf215546Sopenharmony_ci <bitfield name="CLIP_DISABLE" pos="0" type="boolean"/> 1526bf215546Sopenharmony_ci <bitfield name="ZNEAR_CLIP_DISABLE" pos="1" type="boolean"/> 1527bf215546Sopenharmony_ci <bitfield name="ZFAR_CLIP_DISABLE" pos="2" type="boolean"/> 1528bf215546Sopenharmony_ci <!-- set with depthClampEnable, not clear what it does --> 1529bf215546Sopenharmony_ci <bitfield name="UNK5" pos="5" type="boolean"/> 1530bf215546Sopenharmony_ci <!-- controls near z clip behavior (set for vulkan) --> 1531bf215546Sopenharmony_ci <bitfield name="ZERO_GB_SCALE_Z" pos="6" type="boolean"/> 1532bf215546Sopenharmony_ci <!-- guess based on a3xx and meaning of bits 8 and 9 1533bf215546Sopenharmony_ci if the guess is right then this is related to point sprite clipping --> 1534bf215546Sopenharmony_ci <bitfield name="VP_CLIP_CODE_IGNORE" pos="7" type="boolean"/> 1535bf215546Sopenharmony_ci <bitfield name="VP_XFORM_DISABLE" pos="8" type="boolean"/> 1536bf215546Sopenharmony_ci <bitfield name="PERSP_DIVISION_DISABLE" pos="9" type="boolean"/> 1537bf215546Sopenharmony_ci </reg32> 1538bf215546Sopenharmony_ci 1539bf215546Sopenharmony_ci <bitset name="a6xx_gras_xs_cl_cntl" inline="yes"> 1540bf215546Sopenharmony_ci <bitfield name="CLIP_MASK" low="0" high="7"/> 1541bf215546Sopenharmony_ci <bitfield name="CULL_MASK" low="8" high="15"/> 1542bf215546Sopenharmony_ci </bitset> 1543bf215546Sopenharmony_ci <reg32 offset="0x8001" name="GRAS_VS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/> 1544bf215546Sopenharmony_ci <reg32 offset="0x8002" name="GRAS_DS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/> 1545bf215546Sopenharmony_ci <reg32 offset="0x8003" name="GRAS_GS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/> 1546bf215546Sopenharmony_ci <reg32 offset="0x8004" name="GRAS_MAX_LAYER_INDEX" low="0" high="10" type="uint"/> 1547bf215546Sopenharmony_ci 1548bf215546Sopenharmony_ci <reg32 offset="0x8005" name="GRAS_CNTL"> 1549bf215546Sopenharmony_ci <!-- see also RB_RENDER_CONTROL0 --> 1550bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_PIXEL" pos="0" type="boolean"/> 1551bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_CENTROID" pos="1" type="boolean"/> 1552bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_SAMPLE" pos="2" type="boolean"/> 1553bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_PIXEL" pos="3" type="boolean"/> 1554bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_CENTROID" pos="4" type="boolean"/> 1555bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_SAMPLE" pos="5" type="boolean"/> 1556bf215546Sopenharmony_ci <bitfield name="COORD_MASK" low="6" high="9" type="hex"/> 1557bf215546Sopenharmony_ci </reg32> 1558bf215546Sopenharmony_ci <reg32 offset="0x8006" name="GRAS_CL_GUARDBAND_CLIP_ADJ"> 1559bf215546Sopenharmony_ci <bitfield name="HORZ" low="0" high="8" type="uint"/> 1560bf215546Sopenharmony_ci <bitfield name="VERT" low="10" high="18" type="uint"/> 1561bf215546Sopenharmony_ci </reg32> 1562bf215546Sopenharmony_ci <!-- 0x8006-0x800f invalid --> 1563bf215546Sopenharmony_ci <array offset="0x8010" name="GRAS_CL_VPORT" stride="6" length="16"> 1564bf215546Sopenharmony_ci <reg32 offset="0" name="XOFFSET" type="float"/> 1565bf215546Sopenharmony_ci <reg32 offset="1" name="XSCALE" type="float"/> 1566bf215546Sopenharmony_ci <reg32 offset="2" name="YOFFSET" type="float"/> 1567bf215546Sopenharmony_ci <reg32 offset="3" name="YSCALE" type="float"/> 1568bf215546Sopenharmony_ci <reg32 offset="4" name="ZOFFSET" type="float"/> 1569bf215546Sopenharmony_ci <reg32 offset="5" name="ZSCALE" type="float"/> 1570bf215546Sopenharmony_ci </array> 1571bf215546Sopenharmony_ci <array offset="0x8070" name="GRAS_CL_Z_CLAMP" stride="2" length="16"> 1572bf215546Sopenharmony_ci <reg32 offset="0" name="MIN" type="float"/> 1573bf215546Sopenharmony_ci <reg32 offset="1" name="MAX" type="float"/> 1574bf215546Sopenharmony_ci </array> 1575bf215546Sopenharmony_ci 1576bf215546Sopenharmony_ci <reg32 offset="0x8090" name="GRAS_SU_CNTL"> 1577bf215546Sopenharmony_ci <bitfield name="CULL_FRONT" pos="0" type="boolean"/> 1578bf215546Sopenharmony_ci <bitfield name="CULL_BACK" pos="1" type="boolean"/> 1579bf215546Sopenharmony_ci <bitfield name="FRONT_CW" pos="2" type="boolean"/> 1580bf215546Sopenharmony_ci <bitfield name="LINEHALFWIDTH" low="3" high="10" radix="2" type="fixed"/> 1581bf215546Sopenharmony_ci <bitfield name="POLY_OFFSET" pos="11" type="boolean"/> 1582bf215546Sopenharmony_ci <bitfield name="UNK12" pos="12"/> 1583bf215546Sopenharmony_ci <bitfield name="LINE_MODE" pos="13" type="a5xx_line_mode"/> 1584bf215546Sopenharmony_ci <bitfield name="UNK15" low="15" high="16"/> 1585bf215546Sopenharmony_ci <!-- 1586bf215546Sopenharmony_ci This is set by the blob when multiview is enabled, but doesn't seem 1587bf215546Sopenharmony_ci to do anything. 1588bf215546Sopenharmony_ci --> 1589bf215546Sopenharmony_ci <bitfield name="UNK17" pos="17" type="boolean"/> 1590bf215546Sopenharmony_ci <bitfield name="MULTIVIEW_ENABLE" pos="18" type="boolean"/> 1591bf215546Sopenharmony_ci <bitfield name="UNK19" low="19" high="22"/> 1592bf215546Sopenharmony_ci </reg32> 1593bf215546Sopenharmony_ci <reg32 offset="0x8091" name="GRAS_SU_POINT_MINMAX"> 1594bf215546Sopenharmony_ci <bitfield name="MIN" low="0" high="15" type="ufixed" radix="4"/> 1595bf215546Sopenharmony_ci <bitfield name="MAX" low="16" high="31" type="ufixed" radix="4"/> 1596bf215546Sopenharmony_ci </reg32> 1597bf215546Sopenharmony_ci <reg32 offset="0x8092" name="GRAS_SU_POINT_SIZE" low="0" high="15" type="fixed" radix="4"/> 1598bf215546Sopenharmony_ci <!-- 0x8093 invalid --> 1599bf215546Sopenharmony_ci <reg32 offset="0x8094" name="GRAS_SU_DEPTH_PLANE_CNTL"> 1600bf215546Sopenharmony_ci <bitfield name="Z_MODE" low="0" high="1" type="a6xx_ztest_mode"/> 1601bf215546Sopenharmony_ci </reg32> 1602bf215546Sopenharmony_ci <reg32 offset="0x8095" name="GRAS_SU_POLY_OFFSET_SCALE" type="float"/> 1603bf215546Sopenharmony_ci <reg32 offset="0x8096" name="GRAS_SU_POLY_OFFSET_OFFSET" type="float"/> 1604bf215546Sopenharmony_ci <reg32 offset="0x8097" name="GRAS_SU_POLY_OFFSET_OFFSET_CLAMP" type="float"/> 1605bf215546Sopenharmony_ci <!-- duplicates RB_DEPTH_BUFFER_INFO: --> 1606bf215546Sopenharmony_ci <reg32 offset="0x8098" name="GRAS_SU_DEPTH_BUFFER_INFO"> 1607bf215546Sopenharmony_ci <bitfield name="DEPTH_FORMAT" low="0" high="2" type="a6xx_depth_format"/> 1608bf215546Sopenharmony_ci <bitfield name="UNK3" pos="3"/> 1609bf215546Sopenharmony_ci </reg32> 1610bf215546Sopenharmony_ci 1611bf215546Sopenharmony_ci <reg32 offset="0x8099" name="GRAS_SU_CONSERVATIVE_RAS_CNTL"> 1612bf215546Sopenharmony_ci <bitfield name="CONSERVATIVERASEN" pos="0" type="boolean"/> 1613bf215546Sopenharmony_ci <bitfield name="SHIFTAMOUNT" low="1" high="2"/> 1614bf215546Sopenharmony_ci <bitfield name="INNERCONSERVATIVERASEN" pos="3" type="boolean"/> 1615bf215546Sopenharmony_ci <bitfield name="UNK4" low="4" high="5"/> 1616bf215546Sopenharmony_ci </reg32> 1617bf215546Sopenharmony_ci <reg32 offset="0x809a" name="GRAS_SU_PATH_RENDERING_CNTL"> 1618bf215546Sopenharmony_ci <bitfield name="UNK0" pos="0" type="boolean"/> 1619bf215546Sopenharmony_ci <bitfield name="LINELENGTHEN" pos="1" type="boolean"/> 1620bf215546Sopenharmony_ci </reg32> 1621bf215546Sopenharmony_ci 1622bf215546Sopenharmony_ci <bitset name="a6xx_gras_layer_cntl" inline="yes"> 1623bf215546Sopenharmony_ci <bitfield name="WRITES_LAYER" pos="0" type="boolean"/> 1624bf215546Sopenharmony_ci <bitfield name="WRITES_VIEW" pos="1" type="boolean"/> 1625bf215546Sopenharmony_ci </bitset> 1626bf215546Sopenharmony_ci <reg32 offset="0x809b" name="GRAS_VS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/> 1627bf215546Sopenharmony_ci <reg32 offset="0x809c" name="GRAS_GS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/> 1628bf215546Sopenharmony_ci <reg32 offset="0x809d" name="GRAS_DS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/> 1629bf215546Sopenharmony_ci <!-- 0x809e/0x809f invalid --> 1630bf215546Sopenharmony_ci 1631bf215546Sopenharmony_ci <enum name="a6xx_sequenced_thread_dist"> 1632bf215546Sopenharmony_ci <value value="0x0" name="DIST_SCREEN_COORD"/> 1633bf215546Sopenharmony_ci <value value="0x1" name="DIST_ALL_TO_RB0"/> 1634bf215546Sopenharmony_ci </enum> 1635bf215546Sopenharmony_ci 1636bf215546Sopenharmony_ci <enum name="a6xx_single_prim_mode"> 1637bf215546Sopenharmony_ci <value value="0x0" name="NO_FLUSH"/> 1638bf215546Sopenharmony_ci <doc> 1639bf215546Sopenharmony_ci In addition to FLUSH_PER_OVERLAP, guarantee that UCHE 1640bf215546Sopenharmony_ci and CCU don't get out of sync when fetching the previous 1641bf215546Sopenharmony_ci value for the current pixel. With NO_FLUSH, there's the 1642bf215546Sopenharmony_ci possibility that the flags for the current pixel are 1643bf215546Sopenharmony_ci flushed before the data or vice-versa, leading to 1644bf215546Sopenharmony_ci texture fetches via UCHE getting out of sync values. 1645bf215546Sopenharmony_ci This mode should eliminate that. It's used in bypass 1646bf215546Sopenharmony_ci mode for coherent blending 1647bf215546Sopenharmony_ci (GL_KHR_blend_equation_advanced_coherent) as well as 1648bf215546Sopenharmony_ci non-coherent blending. 1649bf215546Sopenharmony_ci </doc> 1650bf215546Sopenharmony_ci <value value="0x1" name="FLUSH_PER_OVERLAP_AND_OVERWRITE"/> 1651bf215546Sopenharmony_ci <doc> 1652bf215546Sopenharmony_ci Invalidate UCHE and wait for any pending work to finish 1653bf215546Sopenharmony_ci if there was possibly an overlapping primitive prior to 1654bf215546Sopenharmony_ci the current one. This is similar to a combination of 1655bf215546Sopenharmony_ci GRAS_SC_CONTROL::INJECT_L2_INVALIDATE_EVENT and 1656bf215546Sopenharmony_ci WAIT_RB_IDLE_ALL_TRI on a3xx. It's used in GMEM mode for 1657bf215546Sopenharmony_ci coherent blending 1658bf215546Sopenharmony_ci (GL_KHR_blend_equation_advanced_coherent). 1659bf215546Sopenharmony_ci </doc> 1660bf215546Sopenharmony_ci <value value="0x3" name="FLUSH_PER_OVERLAP"/> 1661bf215546Sopenharmony_ci </enum> 1662bf215546Sopenharmony_ci 1663bf215546Sopenharmony_ci <!-- this probably has the same meaning as a3xx GRAS_SC_CONTROL::RASTER_MODE --> 1664bf215546Sopenharmony_ci <enum name="a6xx_raster_mode"> 1665bf215546Sopenharmony_ci <value value="0x0" name="TYPE_TILED"/> 1666bf215546Sopenharmony_ci <value value="0x1" name="TYPE_WRITER"/> 1667bf215546Sopenharmony_ci </enum> 1668bf215546Sopenharmony_ci 1669bf215546Sopenharmony_ci <!-- I'm guessing this is the same as a3xx --> 1670bf215546Sopenharmony_ci <enum name="a6xx_raster_direction"> 1671bf215546Sopenharmony_ci <value value="0x0" name="LR_TB"/> 1672bf215546Sopenharmony_ci <value value="0x1" name="RL_TB"/> 1673bf215546Sopenharmony_ci <value value="0x2" name="LR_BT"/> 1674bf215546Sopenharmony_ci <value value="0x3" name="RB_BT"/> 1675bf215546Sopenharmony_ci </enum> 1676bf215546Sopenharmony_ci 1677bf215546Sopenharmony_ci <reg32 offset="0x80a0" name="GRAS_SC_CNTL"> 1678bf215546Sopenharmony_ci <bitfield name="CCUSINGLECACHELINESIZE" low="0" high="2"/> 1679bf215546Sopenharmony_ci <bitfield name="SINGLE_PRIM_MODE" low="3" high="4" type="a6xx_single_prim_mode"/> 1680bf215546Sopenharmony_ci <bitfield name="RASTER_MODE" pos="5" type="a6xx_raster_mode"/> 1681bf215546Sopenharmony_ci <bitfield name="RASTER_DIRECTION" low="6" high="7" type="a6xx_raster_direction"/> 1682bf215546Sopenharmony_ci <bitfield name="SEQUENCED_THREAD_DISTRIBUTION" pos="8" type="a6xx_sequenced_thread_dist"/> 1683bf215546Sopenharmony_ci <!-- CCUSINGLECACHELINESIZE is ignored unless bit 9 is set --> 1684bf215546Sopenharmony_ci <bitfield name="UNK9" low="9" high="11"/> 1685bf215546Sopenharmony_ci <bitfield name="EARLYVIZOUTEN" pos="12" type="boolean"/> 1686bf215546Sopenharmony_ci </reg32> 1687bf215546Sopenharmony_ci 1688bf215546Sopenharmony_ci <enum name="a6xx_render_mode"> 1689bf215546Sopenharmony_ci <value value="0x0" name="RENDERING_PASS"/> 1690bf215546Sopenharmony_ci <value value="0x1" name="BINNING_PASS"/> 1691bf215546Sopenharmony_ci </enum> 1692bf215546Sopenharmony_ci 1693bf215546Sopenharmony_ci <enum name="a6xx_buffers_location"> 1694bf215546Sopenharmony_ci <value value="0" name="BUFFERS_IN_GMEM"/> 1695bf215546Sopenharmony_ci <value value="3" name="BUFFERS_IN_SYSMEM"/> 1696bf215546Sopenharmony_ci </enum> 1697bf215546Sopenharmony_ci 1698bf215546Sopenharmony_ci <reg32 offset="0x80a1" name="GRAS_BIN_CONTROL"> 1699bf215546Sopenharmony_ci <bitfield name="BINW" low="0" high="5" shr="5" type="uint"/> 1700bf215546Sopenharmony_ci <bitfield name="BINH" low="8" high="14" shr="4" type="uint"/> 1701bf215546Sopenharmony_ci <bitfield name="RENDER_MODE" low="18" high="20" type="a6xx_render_mode"/> 1702bf215546Sopenharmony_ci <bitfield name="FORCE_LRZ_WRITE_DIS" pos="21" type="boolean"/> 1703bf215546Sopenharmony_ci <bitfield name="BUFFERS_LOCATION" low="22" high="23" type="a6xx_buffers_location"/> 1704bf215546Sopenharmony_ci <bitfield name="LRZ_FEEDBACK_ZMODE_MASK" low="24" high="26"/> 1705bf215546Sopenharmony_ci <bitfield name="UNK27" pos="27"/> 1706bf215546Sopenharmony_ci </reg32> 1707bf215546Sopenharmony_ci 1708bf215546Sopenharmony_ci <reg32 offset="0x80a2" name="GRAS_RAS_MSAA_CNTL"> 1709bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> 1710bf215546Sopenharmony_ci <bitfield name="UNK2" pos="2"/> 1711bf215546Sopenharmony_ci <bitfield name="UNK3" pos="3"/> 1712bf215546Sopenharmony_ci </reg32> 1713bf215546Sopenharmony_ci <reg32 offset="0x80a3" name="GRAS_DEST_MSAA_CNTL"> 1714bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> 1715bf215546Sopenharmony_ci <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/> 1716bf215546Sopenharmony_ci </reg32> 1717bf215546Sopenharmony_ci 1718bf215546Sopenharmony_ci <bitset name="a6xx_sample_config" inline="yes"> 1719bf215546Sopenharmony_ci <bitfield name="UNK0" pos="0"/> 1720bf215546Sopenharmony_ci <bitfield name="LOCATION_ENABLE" pos="1" type="boolean"/> 1721bf215546Sopenharmony_ci </bitset> 1722bf215546Sopenharmony_ci 1723bf215546Sopenharmony_ci <bitset name="a6xx_sample_locations" inline="yes"> 1724bf215546Sopenharmony_ci <bitfield name="SAMPLE_0_X" low="0" high="3" radix="4" type="fixed"/> 1725bf215546Sopenharmony_ci <bitfield name="SAMPLE_0_Y" low="4" high="7" radix="4" type="fixed"/> 1726bf215546Sopenharmony_ci <bitfield name="SAMPLE_1_X" low="8" high="11" radix="4" type="fixed"/> 1727bf215546Sopenharmony_ci <bitfield name="SAMPLE_1_Y" low="12" high="15" radix="4" type="fixed"/> 1728bf215546Sopenharmony_ci <bitfield name="SAMPLE_2_X" low="16" high="19" radix="4" type="fixed"/> 1729bf215546Sopenharmony_ci <bitfield name="SAMPLE_2_Y" low="20" high="23" radix="4" type="fixed"/> 1730bf215546Sopenharmony_ci <bitfield name="SAMPLE_3_X" low="24" high="27" radix="4" type="fixed"/> 1731bf215546Sopenharmony_ci <bitfield name="SAMPLE_3_Y" low="28" high="31" radix="4" type="fixed"/> 1732bf215546Sopenharmony_ci </bitset> 1733bf215546Sopenharmony_ci 1734bf215546Sopenharmony_ci <reg32 offset="0x80a4" name="GRAS_SAMPLE_CONFIG" type="a6xx_sample_config"/> 1735bf215546Sopenharmony_ci <reg32 offset="0x80a5" name="GRAS_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/> 1736bf215546Sopenharmony_ci <reg32 offset="0x80a6" name="GRAS_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/> 1737bf215546Sopenharmony_ci <!-- 0x80a7-0x80ae invalid --> 1738bf215546Sopenharmony_ci <reg32 offset="0x80af" name="GRAS_UNKNOWN_80AF" pos="0"/> 1739bf215546Sopenharmony_ci 1740bf215546Sopenharmony_ci <bitset name="a6xx_scissor_xy" inline="yes"> 1741bf215546Sopenharmony_ci <bitfield name="X" low="0" high="15" type="uint"/> 1742bf215546Sopenharmony_ci <bitfield name="Y" low="16" high="31" type="uint"/> 1743bf215546Sopenharmony_ci </bitset> 1744bf215546Sopenharmony_ci <array offset="0x80b0" name="GRAS_SC_SCREEN_SCISSOR" stride="2" length="16"> 1745bf215546Sopenharmony_ci <reg32 offset="0" name="TL" type="a6xx_scissor_xy"/> 1746bf215546Sopenharmony_ci <reg32 offset="1" name="BR" type="a6xx_scissor_xy"/> 1747bf215546Sopenharmony_ci </array> 1748bf215546Sopenharmony_ci <array offset="0x80d0" name="GRAS_SC_VIEWPORT_SCISSOR" stride="2" length="16"> 1749bf215546Sopenharmony_ci <reg32 offset="0" name="TL" type="a6xx_scissor_xy"/> 1750bf215546Sopenharmony_ci <reg32 offset="1" name="BR" type="a6xx_scissor_xy"/> 1751bf215546Sopenharmony_ci </array> 1752bf215546Sopenharmony_ci 1753bf215546Sopenharmony_ci <reg32 offset="0x80f0" name="GRAS_SC_WINDOW_SCISSOR_TL" type="a6xx_reg_xy"/> 1754bf215546Sopenharmony_ci <reg32 offset="0x80f1" name="GRAS_SC_WINDOW_SCISSOR_BR" type="a6xx_reg_xy"/> 1755bf215546Sopenharmony_ci <!-- 0x80f2-0x80ff invalid --> 1756bf215546Sopenharmony_ci 1757bf215546Sopenharmony_ci <enum name="a6xx_lrz_dir_status"> 1758bf215546Sopenharmony_ci <value value="0x1" name="LRZ_DIR_LE"/> 1759bf215546Sopenharmony_ci <value value="0x2" name="LRZ_DIR_GE"/> 1760bf215546Sopenharmony_ci <value value="0x3" name="LRZ_DIR_INVALID"/> 1761bf215546Sopenharmony_ci </enum> 1762bf215546Sopenharmony_ci 1763bf215546Sopenharmony_ci <reg32 offset="0x8100" name="GRAS_LRZ_CNTL"> 1764bf215546Sopenharmony_ci <bitfield name="ENABLE" pos="0" type="boolean"/> 1765bf215546Sopenharmony_ci <doc>LRZ write also disabled for blend/etc.</doc> 1766bf215546Sopenharmony_ci <bitfield name="LRZ_WRITE" pos="1" type="boolean"/> 1767bf215546Sopenharmony_ci <doc>update MAX instead of MIN value, ie. GL_GREATER/GL_GEQUAL</doc> 1768bf215546Sopenharmony_ci <bitfield name="GREATER" pos="2" type="boolean"/> 1769bf215546Sopenharmony_ci <doc> 1770bf215546Sopenharmony_ci Clears the LRZ block being touched to: 1771bf215546Sopenharmony_ci - 0.0 if GREATER 1772bf215546Sopenharmony_ci - 1.0 if LESS 1773bf215546Sopenharmony_ci </doc> 1774bf215546Sopenharmony_ci <bitfield name="FC_ENABLE" pos="3" type="boolean"/> 1775bf215546Sopenharmony_ci <!-- set when depth-test + depth-write enabled --> 1776bf215546Sopenharmony_ci <bitfield name="Z_TEST_ENABLE" pos="4" type="boolean"/> 1777bf215546Sopenharmony_ci <bitfield name="Z_BOUNDS_ENABLE" pos="5" type="boolean"/> 1778bf215546Sopenharmony_ci <bitfield name="DIR" low="6" high="7" type="a6xx_lrz_dir_status"/> 1779bf215546Sopenharmony_ci <doc> 1780bf215546Sopenharmony_ci If DISABLE_ON_WRONG_DIR enabled - write new LRZ direction into 1781bf215546Sopenharmony_ci buffer, in case of mismatched direction writes 0 (disables LRZ). 1782bf215546Sopenharmony_ci </doc> 1783bf215546Sopenharmony_ci <bitfield name="DIR_WRITE" pos="8" type="boolean"/> 1784bf215546Sopenharmony_ci <doc> 1785bf215546Sopenharmony_ci Disable LRZ based on previous direction and the current one. 1786bf215546Sopenharmony_ci If DIR_WRITE is not enabled - there is no write to direction buffer. 1787bf215546Sopenharmony_ci </doc> 1788bf215546Sopenharmony_ci <bitfield name="DISABLE_ON_WRONG_DIR" pos="9" type="boolean"/> 1789bf215546Sopenharmony_ci </reg32> 1790bf215546Sopenharmony_ci 1791bf215546Sopenharmony_ci <enum name="a6xx_fragcoord_sample_mode"> 1792bf215546Sopenharmony_ci <value value="0" name="FRAGCOORD_CENTER"/> 1793bf215546Sopenharmony_ci <value value="3" name="FRAGCOORD_SAMPLE"/> 1794bf215546Sopenharmony_ci </enum> 1795bf215546Sopenharmony_ci 1796bf215546Sopenharmony_ci <reg32 offset="0x8101" name="GRAS_LRZ_PS_INPUT_CNTL" low="0" high="2"> 1797bf215546Sopenharmony_ci <bitfield name="SAMPLEID" pos="0" type="boolean"/> 1798bf215546Sopenharmony_ci <bitfield name="FRAGCOORDSAMPLEMODE" low="1" high="2" type="a6xx_fragcoord_sample_mode"/> 1799bf215546Sopenharmony_ci </reg32> 1800bf215546Sopenharmony_ci 1801bf215546Sopenharmony_ci <reg32 offset="0x8102" name="GRAS_LRZ_MRT_BUF_INFO_0"> 1802bf215546Sopenharmony_ci <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/> 1803bf215546Sopenharmony_ci </reg32> 1804bf215546Sopenharmony_ci <reg64 offset="0x8103" name="GRAS_LRZ_BUFFER_BASE" align="256" type="waddress"/> 1805bf215546Sopenharmony_ci <reg32 offset="0x8105" name="GRAS_LRZ_BUFFER_PITCH"> 1806bf215546Sopenharmony_ci <!-- TODO: fix the shr fields --> 1807bf215546Sopenharmony_ci <bitfield name="PITCH" low="0" high="7" shr="5" type="uint"/> 1808bf215546Sopenharmony_ci <bitfield name="ARRAY_PITCH" low="10" high="28" shr="4" type="uint"/> 1809bf215546Sopenharmony_ci </reg32> 1810bf215546Sopenharmony_ci 1811bf215546Sopenharmony_ci <!-- 1812bf215546Sopenharmony_ci The LRZ "fast clear" buffer is initialized to zero's by blob, and 1813bf215546Sopenharmony_ci read/written when GRAS_LRZ_CNTL.FC_ENABLE (b3) is set. It appears 1814bf215546Sopenharmony_ci to store 1b/block. It appears that '0' means block has original 1815bf215546Sopenharmony_ci depth clear value, and '1' means that the corresponding block in 1816bf215546Sopenharmony_ci LRZ has been modified. Ignoring alignment/padding, the size is 1817bf215546Sopenharmony_ci given by the formula: 1818bf215546Sopenharmony_ci 1819bf215546Sopenharmony_ci // calculate LRZ size from depth size: 1820bf215546Sopenharmony_ci if (nr_samples == 4) { 1821bf215546Sopenharmony_ci width *= 2; 1822bf215546Sopenharmony_ci height *= 2; 1823bf215546Sopenharmony_ci } else if (nr_samples == 2) { 1824bf215546Sopenharmony_ci height *= 2; 1825bf215546Sopenharmony_ci } 1826bf215546Sopenharmony_ci 1827bf215546Sopenharmony_ci lrz_width = div_round_up(width, 8); 1828bf215546Sopenharmony_ci lrz_heigh = div_round_up(height, 8); 1829bf215546Sopenharmony_ci 1830bf215546Sopenharmony_ci // calculate # of blocks: 1831bf215546Sopenharmony_ci nblocksx = div_round_up(lrz_width, 16); 1832bf215546Sopenharmony_ci nblocksy = div_round_up(lrz_height, 4); 1833bf215546Sopenharmony_ci 1834bf215546Sopenharmony_ci // fast-clear buffer is 1bit/block: 1835bf215546Sopenharmony_ci fc_sz = div_round_up(nblocksx * nblocksy, 8); 1836bf215546Sopenharmony_ci 1837bf215546Sopenharmony_ci In practice the blob seems to switch off FC_ENABLE once the size 1838bf215546Sopenharmony_ci increases beyond 1 page. Not sure if that is an actual limit or 1839bf215546Sopenharmony_ci not. 1840bf215546Sopenharmony_ci --> 1841bf215546Sopenharmony_ci <reg64 offset="0x8106" name="GRAS_LRZ_FAST_CLEAR_BUFFER_BASE" align="64" type="waddress"/> 1842bf215546Sopenharmony_ci <!-- 0x8108 invalid --> 1843bf215546Sopenharmony_ci <reg32 offset="0x8109" name="GRAS_SAMPLE_CNTL"> 1844bf215546Sopenharmony_ci <bitfield name="PER_SAMP_MODE" pos="0" type="boolean"/> 1845bf215546Sopenharmony_ci </reg32> 1846bf215546Sopenharmony_ci <!-- 1847bf215546Sopenharmony_ci LRZ buffer represents a single array layer + mip level, and there is 1848bf215546Sopenharmony_ci a single buffer per depth image. Thus to reuse LRZ between renderpasses 1849bf215546Sopenharmony_ci it is necessary to track the depth view used in the past renderpass, which 1850bf215546Sopenharmony_ci GRAS_LRZ_DEPTH_VIEW is for. 1851bf215546Sopenharmony_ci GRAS_LRZ_CNTL checks if current value of GRAS_LRZ_DEPTH_VIEW is equal to 1852bf215546Sopenharmony_ci the value stored in the LRZ buffer, if not - LRZ is disabled. 1853bf215546Sopenharmony_ci --> 1854bf215546Sopenharmony_ci <reg32 offset="0x810a" name="GRAS_LRZ_DEPTH_VIEW"> 1855bf215546Sopenharmony_ci <bitfield name="BASE_LAYER" low="0" high="10" type="uint"/> 1856bf215546Sopenharmony_ci <bitfield name="LAYER_COUNT" low="16" high="26" type="uint"/> 1857bf215546Sopenharmony_ci <bitfield name="BASE_MIP_LEVEL" low="28" high="31" type="uint"/> 1858bf215546Sopenharmony_ci </reg32> 1859bf215546Sopenharmony_ci 1860bf215546Sopenharmony_ci <!-- 0x810b-0x810f invalid --> 1861bf215546Sopenharmony_ci 1862bf215546Sopenharmony_ci <reg32 offset="0x8110" name="GRAS_UNKNOWN_8110" low="0" high="1"/> 1863bf215546Sopenharmony_ci 1864bf215546Sopenharmony_ci <!-- 0x8111-0x83ff invalid --> 1865bf215546Sopenharmony_ci 1866bf215546Sopenharmony_ci <enum name="a6xx_rotation"> 1867bf215546Sopenharmony_ci <value value="0x0" name="ROTATE_0"/> 1868bf215546Sopenharmony_ci <value value="0x1" name="ROTATE_90"/> 1869bf215546Sopenharmony_ci <value value="0x2" name="ROTATE_180"/> 1870bf215546Sopenharmony_ci <value value="0x3" name="ROTATE_270"/> 1871bf215546Sopenharmony_ci <value value="0x4" name="ROTATE_HFLIP"/> 1872bf215546Sopenharmony_ci <value value="0x5" name="ROTATE_VFLIP"/> 1873bf215546Sopenharmony_ci </enum> 1874bf215546Sopenharmony_ci 1875bf215546Sopenharmony_ci <bitset name="a6xx_2d_blit_cntl" inline="yes"> 1876bf215546Sopenharmony_ci <bitfield name="ROTATE" low="0" high="2" type="a6xx_rotation"/> 1877bf215546Sopenharmony_ci <bitfield name="OVERWRITEEN" pos="3" type="boolean"/> 1878bf215546Sopenharmony_ci <bitfield name="UNK4" low="4" high="6"/> 1879bf215546Sopenharmony_ci <bitfield name="SOLID_COLOR" pos="7" type="boolean"/> 1880bf215546Sopenharmony_ci <bitfield name="COLOR_FORMAT" low="8" high="15" type="a6xx_format"/> 1881bf215546Sopenharmony_ci <bitfield name="SCISSOR" pos="16" type="boolean"/> 1882bf215546Sopenharmony_ci <bitfield name="UNK17" low="17" high="18"/> 1883bf215546Sopenharmony_ci <!-- required when blitting D24S8/D24X8 --> 1884bf215546Sopenharmony_ci <bitfield name="D24S8" pos="19" type="boolean"/> 1885bf215546Sopenharmony_ci <!-- some sort of channel mask, disabled channels are set to zero ? --> 1886bf215546Sopenharmony_ci <bitfield name="MASK" low="20" high="23"/> 1887bf215546Sopenharmony_ci <bitfield name="IFMT" low="24" high="28" type="a6xx_2d_ifmt"/> 1888bf215546Sopenharmony_ci <bitfield name="RASTER_MODE" pos="29" type="a6xx_raster_mode"/> 1889bf215546Sopenharmony_ci </bitset> 1890bf215546Sopenharmony_ci 1891bf215546Sopenharmony_ci <reg32 offset="0x8400" name="GRAS_2D_BLIT_CNTL" type="a6xx_2d_blit_cntl"/> 1892bf215546Sopenharmony_ci <!-- note: the low 8 bits for src coords are valid, probably fixed point 1893bf215546Sopenharmony_ci it would be a bit weird though, since we subtract 1 from BR coords 1894bf215546Sopenharmony_ci apparently signed, gallium driver uses negative coords and it works? 1895bf215546Sopenharmony_ci --> 1896bf215546Sopenharmony_ci <reg32 offset="0x8401" name="GRAS_2D_SRC_TL_X" low="8" high="24" type="int"/> 1897bf215546Sopenharmony_ci <reg32 offset="0x8402" name="GRAS_2D_SRC_BR_X" low="8" high="24" type="int"/> 1898bf215546Sopenharmony_ci <reg32 offset="0x8403" name="GRAS_2D_SRC_TL_Y" low="8" high="24" type="int"/> 1899bf215546Sopenharmony_ci <reg32 offset="0x8404" name="GRAS_2D_SRC_BR_Y" low="8" high="24" type="int"/> 1900bf215546Sopenharmony_ci <reg32 offset="0x8405" name="GRAS_2D_DST_TL" type="a6xx_reg_xy"/> 1901bf215546Sopenharmony_ci <reg32 offset="0x8406" name="GRAS_2D_DST_BR" type="a6xx_reg_xy"/> 1902bf215546Sopenharmony_ci <reg32 offset="0x8407" name="GRAS_2D_UNKNOWN_8407" low="0" high="31"/> 1903bf215546Sopenharmony_ci <reg32 offset="0x8408" name="GRAS_2D_UNKNOWN_8408" low="0" high="31"/> 1904bf215546Sopenharmony_ci <reg32 offset="0x8409" name="GRAS_2D_UNKNOWN_8409" low="0" high="31"/> 1905bf215546Sopenharmony_ci <reg32 offset="0x840a" name="GRAS_2D_RESOLVE_CNTL_1" type="a6xx_reg_xy"/> 1906bf215546Sopenharmony_ci <reg32 offset="0x840b" name="GRAS_2D_RESOLVE_CNTL_2" type="a6xx_reg_xy"/> 1907bf215546Sopenharmony_ci <!-- 0x840c-0x85ff invalid --> 1908bf215546Sopenharmony_ci 1909bf215546Sopenharmony_ci <!-- always 0x880 ? (and 0 in a640/a650 traces?) --> 1910bf215546Sopenharmony_ci <reg32 offset="0x8600" name="GRAS_DBG_ECO_CNTL"> 1911bf215546Sopenharmony_ci <bitfield name="UNK7" pos="7" type="boolean"/> 1912bf215546Sopenharmony_ci <bitfield name="LRZCACHELOCKDIS" pos="11" type="boolean"/> 1913bf215546Sopenharmony_ci </reg32> 1914bf215546Sopenharmony_ci <reg32 offset="0x8601" name="GRAS_ADDR_MODE_CNTL" pos="0" type="a5xx_address_mode"/> 1915bf215546Sopenharmony_ci <array offset="0x8610" name="GRAS_PERFCTR_TSE_SEL" stride="1" length="4"/> 1916bf215546Sopenharmony_ci <array offset="0x8614" name="GRAS_PERFCTR_RAS_SEL" stride="1" length="4"/> 1917bf215546Sopenharmony_ci <array offset="0x8618" name="GRAS_PERFCTR_LRZ_SEL" stride="1" length="4"/> 1918bf215546Sopenharmony_ci 1919bf215546Sopenharmony_ci <!-- note 0x8620-0x87ff are not all invalid 1920bf215546Sopenharmony_ci (in particular, 0x8631/0x8632 have 0x3fff3fff mask and would be xy coords) 1921bf215546Sopenharmony_ci --> 1922bf215546Sopenharmony_ci 1923bf215546Sopenharmony_ci <!-- same as GRAS_BIN_CONTROL, but without bit 27: --> 1924bf215546Sopenharmony_ci <reg32 offset="0x8800" name="RB_BIN_CONTROL"> 1925bf215546Sopenharmony_ci <bitfield name="BINW" low="0" high="5" shr="5" type="uint"/> 1926bf215546Sopenharmony_ci <bitfield name="BINH" low="8" high="14" shr="4" type="uint"/> 1927bf215546Sopenharmony_ci <bitfield name="RENDER_MODE" low="18" high="20" type="a6xx_render_mode"/> 1928bf215546Sopenharmony_ci <bitfield name="FORCE_LRZ_WRITE_DIS" pos="21" type="boolean"/> 1929bf215546Sopenharmony_ci <bitfield name="BUFFERS_LOCATION" low="22" high="23" type="a6xx_buffers_location"/> 1930bf215546Sopenharmony_ci <bitfield name="LRZ_FEEDBACK_ZMODE_MASK" low="24" high="26"/> 1931bf215546Sopenharmony_ci </reg32> 1932bf215546Sopenharmony_ci 1933bf215546Sopenharmony_ci <reg32 offset="0x8801" name="RB_RENDER_CNTL"> 1934bf215546Sopenharmony_ci <bitfield name="CCUSINGLECACHELINESIZE" low="3" high="5"/> 1935bf215546Sopenharmony_ci <bitfield name="EARLYVIZOUTEN" pos="6" type="boolean"/> 1936bf215546Sopenharmony_ci <!-- set during binning pass: --> 1937bf215546Sopenharmony_ci <bitfield name="BINNING" pos="7" type="boolean"/> 1938bf215546Sopenharmony_ci <bitfield name="UNK8" low="8" high="10"/> 1939bf215546Sopenharmony_ci <bitfield name="RASTER_MODE" pos="8" type="a6xx_raster_mode"/> 1940bf215546Sopenharmony_ci <bitfield name="RASTER_DIRECTION" low="9" high="10" type="a6xx_raster_direction"/> 1941bf215546Sopenharmony_ci <bitfield name="CONSERVATIVERASEN" pos="11" type="boolean"/> 1942bf215546Sopenharmony_ci <bitfield name="INNERCONSERVATIVERASEN" pos="12" type="boolean"/> 1943bf215546Sopenharmony_ci <!-- bit seems to be set whenever depth buffer enabled: --> 1944bf215546Sopenharmony_ci <bitfield name="FLAG_DEPTH" pos="14" type="boolean"/> 1945bf215546Sopenharmony_ci <!-- bitmask of MRTs using UBWC flag buffer: --> 1946bf215546Sopenharmony_ci <bitfield name="FLAG_MRTS" low="16" high="23"/> 1947bf215546Sopenharmony_ci </reg32> 1948bf215546Sopenharmony_ci <reg32 offset="0x8802" name="RB_RAS_MSAA_CNTL"> 1949bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> 1950bf215546Sopenharmony_ci <bitfield name="UNK2" pos="2"/> 1951bf215546Sopenharmony_ci <bitfield name="UNK3" pos="3"/> 1952bf215546Sopenharmony_ci </reg32> 1953bf215546Sopenharmony_ci <reg32 offset="0x8803" name="RB_DEST_MSAA_CNTL"> 1954bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> 1955bf215546Sopenharmony_ci <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/> 1956bf215546Sopenharmony_ci </reg32> 1957bf215546Sopenharmony_ci 1958bf215546Sopenharmony_ci <reg32 offset="0x8804" name="RB_SAMPLE_CONFIG" type="a6xx_sample_config"/> 1959bf215546Sopenharmony_ci <reg32 offset="0x8805" name="RB_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/> 1960bf215546Sopenharmony_ci <reg32 offset="0x8806" name="RB_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/> 1961bf215546Sopenharmony_ci <!-- 0x8807-0x8808 invalid --> 1962bf215546Sopenharmony_ci <!-- 1963bf215546Sopenharmony_ci note: maybe not actually called RB_RENDER_CONTROLn (since RB_RENDER_CNTL 1964bf215546Sopenharmony_ci name comes from kernel and is probably right) 1965bf215546Sopenharmony_ci --> 1966bf215546Sopenharmony_ci <reg32 offset="0x8809" name="RB_RENDER_CONTROL0"> 1967bf215546Sopenharmony_ci <!-- see also GRAS_CNTL --> 1968bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_PIXEL" pos="0" type="boolean"/> 1969bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_CENTROID" pos="1" type="boolean"/> 1970bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_SAMPLE" pos="2" type="boolean"/> 1971bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_PIXEL" pos="3" type="boolean"/> 1972bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_CENTROID" pos="4" type="boolean"/> 1973bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_SAMPLE" pos="5" type="boolean"/> 1974bf215546Sopenharmony_ci <bitfield name="COORD_MASK" low="6" high="9" type="hex"/> 1975bf215546Sopenharmony_ci <bitfield name="UNK10" pos="10" type="boolean"/> 1976bf215546Sopenharmony_ci </reg32> 1977bf215546Sopenharmony_ci <reg32 offset="0x880a" name="RB_RENDER_CONTROL1"> 1978bf215546Sopenharmony_ci <!-- enable bits for various FS sysvalue regs: --> 1979bf215546Sopenharmony_ci <bitfield name="SAMPLEMASK" pos="0" type="boolean"/> 1980bf215546Sopenharmony_ci <bitfield name="UNK1" pos="1" type="boolean"/> 1981bf215546Sopenharmony_ci <bitfield name="FACENESS" pos="2" type="boolean"/> 1982bf215546Sopenharmony_ci <bitfield name="SAMPLEID" pos="3" type="boolean"/> 1983bf215546Sopenharmony_ci <bitfield name="FRAGCOORDSAMPLEMODE" low="4" high="5" type="a6xx_fragcoord_sample_mode"/> 1984bf215546Sopenharmony_ci <bitfield name="CENTERRHW" pos="6" type="boolean"/> 1985bf215546Sopenharmony_ci <bitfield name="LINELENGTHEN" pos="7" type="boolean"/> 1986bf215546Sopenharmony_ci <bitfield name="FOVEATION" pos="8" type="boolean"/> 1987bf215546Sopenharmony_ci </reg32> 1988bf215546Sopenharmony_ci 1989bf215546Sopenharmony_ci <reg32 offset="0x880b" name="RB_FS_OUTPUT_CNTL0"> 1990bf215546Sopenharmony_ci <bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/> 1991bf215546Sopenharmony_ci <bitfield name="FRAG_WRITES_Z" pos="1" type="boolean"/> 1992bf215546Sopenharmony_ci <bitfield name="FRAG_WRITES_SAMPMASK" pos="2" type="boolean"/> 1993bf215546Sopenharmony_ci <bitfield name="FRAG_WRITES_STENCILREF" pos="3" type="boolean"/> 1994bf215546Sopenharmony_ci </reg32> 1995bf215546Sopenharmony_ci <reg32 offset="0x880c" name="RB_FS_OUTPUT_CNTL1"> 1996bf215546Sopenharmony_ci <bitfield name="MRT" low="0" high="3" type="uint"/> 1997bf215546Sopenharmony_ci </reg32> 1998bf215546Sopenharmony_ci <reg32 offset="0x880d" name="RB_RENDER_COMPONENTS"> 1999bf215546Sopenharmony_ci <bitfield name="RT0" low="0" high="3"/> 2000bf215546Sopenharmony_ci <bitfield name="RT1" low="4" high="7"/> 2001bf215546Sopenharmony_ci <bitfield name="RT2" low="8" high="11"/> 2002bf215546Sopenharmony_ci <bitfield name="RT3" low="12" high="15"/> 2003bf215546Sopenharmony_ci <bitfield name="RT4" low="16" high="19"/> 2004bf215546Sopenharmony_ci <bitfield name="RT5" low="20" high="23"/> 2005bf215546Sopenharmony_ci <bitfield name="RT6" low="24" high="27"/> 2006bf215546Sopenharmony_ci <bitfield name="RT7" low="28" high="31"/> 2007bf215546Sopenharmony_ci </reg32> 2008bf215546Sopenharmony_ci <reg32 offset="0x880e" name="RB_DITHER_CNTL"> 2009bf215546Sopenharmony_ci <bitfield name="DITHER_MODE_MRT0" low="0" high="1" type="adreno_rb_dither_mode"/> 2010bf215546Sopenharmony_ci <bitfield name="DITHER_MODE_MRT1" low="2" high="3" type="adreno_rb_dither_mode"/> 2011bf215546Sopenharmony_ci <bitfield name="DITHER_MODE_MRT2" low="4" high="5" type="adreno_rb_dither_mode"/> 2012bf215546Sopenharmony_ci <bitfield name="DITHER_MODE_MRT3" low="6" high="7" type="adreno_rb_dither_mode"/> 2013bf215546Sopenharmony_ci <bitfield name="DITHER_MODE_MRT4" low="8" high="9" type="adreno_rb_dither_mode"/> 2014bf215546Sopenharmony_ci <bitfield name="DITHER_MODE_MRT5" low="10" high="11" type="adreno_rb_dither_mode"/> 2015bf215546Sopenharmony_ci <bitfield name="DITHER_MODE_MRT6" low="12" high="12" type="adreno_rb_dither_mode"/> 2016bf215546Sopenharmony_ci <bitfield name="DITHER_MODE_MRT7" low="14" high="15" type="adreno_rb_dither_mode"/> 2017bf215546Sopenharmony_ci </reg32> 2018bf215546Sopenharmony_ci <reg32 offset="0x880f" name="RB_SRGB_CNTL"> 2019bf215546Sopenharmony_ci <!-- Same as SP_SRGB_CNTL --> 2020bf215546Sopenharmony_ci <bitfield name="SRGB_MRT0" pos="0" type="boolean"/> 2021bf215546Sopenharmony_ci <bitfield name="SRGB_MRT1" pos="1" type="boolean"/> 2022bf215546Sopenharmony_ci <bitfield name="SRGB_MRT2" pos="2" type="boolean"/> 2023bf215546Sopenharmony_ci <bitfield name="SRGB_MRT3" pos="3" type="boolean"/> 2024bf215546Sopenharmony_ci <bitfield name="SRGB_MRT4" pos="4" type="boolean"/> 2025bf215546Sopenharmony_ci <bitfield name="SRGB_MRT5" pos="5" type="boolean"/> 2026bf215546Sopenharmony_ci <bitfield name="SRGB_MRT6" pos="6" type="boolean"/> 2027bf215546Sopenharmony_ci <bitfield name="SRGB_MRT7" pos="7" type="boolean"/> 2028bf215546Sopenharmony_ci </reg32> 2029bf215546Sopenharmony_ci 2030bf215546Sopenharmony_ci <reg32 offset="0x8810" name="RB_SAMPLE_CNTL"> 2031bf215546Sopenharmony_ci <bitfield name="PER_SAMP_MODE" pos="0" type="boolean"/> 2032bf215546Sopenharmony_ci </reg32> 2033bf215546Sopenharmony_ci <reg32 offset="0x8811" name="RB_UNKNOWN_8811" low="4" high="6"/> 2034bf215546Sopenharmony_ci <!-- 0x8812-0x8817 invalid --> 2035bf215546Sopenharmony_ci <!-- always 0x0 ? --> 2036bf215546Sopenharmony_ci <reg32 offset="0x8818" name="RB_UNKNOWN_8818" low="0" high="6"/> 2037bf215546Sopenharmony_ci <!-- 0x8819-0x881e all 32 bits --> 2038bf215546Sopenharmony_ci <reg32 offset="0x8819" name="RB_UNKNOWN_8819"/> 2039bf215546Sopenharmony_ci <reg32 offset="0x881a" name="RB_UNKNOWN_881A"/> 2040bf215546Sopenharmony_ci <reg32 offset="0x881b" name="RB_UNKNOWN_881B"/> 2041bf215546Sopenharmony_ci <reg32 offset="0x881c" name="RB_UNKNOWN_881C"/> 2042bf215546Sopenharmony_ci <reg32 offset="0x881d" name="RB_UNKNOWN_881D"/> 2043bf215546Sopenharmony_ci <reg32 offset="0x881e" name="RB_UNKNOWN_881E"/> 2044bf215546Sopenharmony_ci <!-- 0x881f invalid --> 2045bf215546Sopenharmony_ci <array offset="0x8820" name="RB_MRT" stride="8" length="8"> 2046bf215546Sopenharmony_ci <reg32 offset="0x0" name="CONTROL"> 2047bf215546Sopenharmony_ci <bitfield name="BLEND" pos="0" type="boolean"/> 2048bf215546Sopenharmony_ci <bitfield name="BLEND2" pos="1" type="boolean"/> 2049bf215546Sopenharmony_ci <bitfield name="ROP_ENABLE" pos="2" type="boolean"/> 2050bf215546Sopenharmony_ci <bitfield name="ROP_CODE" low="3" high="6" type="a3xx_rop_code"/> 2051bf215546Sopenharmony_ci <bitfield name="COMPONENT_ENABLE" low="7" high="10" type="hex"/> 2052bf215546Sopenharmony_ci </reg32> 2053bf215546Sopenharmony_ci <reg32 offset="0x1" name="BLEND_CONTROL"> 2054bf215546Sopenharmony_ci <bitfield name="RGB_SRC_FACTOR" low="0" high="4" type="adreno_rb_blend_factor"/> 2055bf215546Sopenharmony_ci <bitfield name="RGB_BLEND_OPCODE" low="5" high="7" type="a3xx_rb_blend_opcode"/> 2056bf215546Sopenharmony_ci <bitfield name="RGB_DEST_FACTOR" low="8" high="12" type="adreno_rb_blend_factor"/> 2057bf215546Sopenharmony_ci <bitfield name="ALPHA_SRC_FACTOR" low="16" high="20" type="adreno_rb_blend_factor"/> 2058bf215546Sopenharmony_ci <bitfield name="ALPHA_BLEND_OPCODE" low="21" high="23" type="a3xx_rb_blend_opcode"/> 2059bf215546Sopenharmony_ci <bitfield name="ALPHA_DEST_FACTOR" low="24" high="28" type="adreno_rb_blend_factor"/> 2060bf215546Sopenharmony_ci </reg32> 2061bf215546Sopenharmony_ci <reg32 offset="0x2" name="BUF_INFO"> 2062bf215546Sopenharmony_ci <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/> 2063bf215546Sopenharmony_ci <bitfield name="COLOR_TILE_MODE" low="8" high="9" type="a6xx_tile_mode"/> 2064bf215546Sopenharmony_ci <bitfield name="UNK10" pos="10"/> 2065bf215546Sopenharmony_ci <bitfield name="COLOR_SWAP" low="13" high="14" type="a3xx_color_swap"/> 2066bf215546Sopenharmony_ci </reg32> 2067bf215546Sopenharmony_ci <!-- 2068bf215546Sopenharmony_ci at least in gmem, things seem to be aligned to pitch of 64.. 2069bf215546Sopenharmony_ci maybe an artifact of tiled format used in gmem? 2070bf215546Sopenharmony_ci --> 2071bf215546Sopenharmony_ci <reg32 offset="0x3" name="PITCH" shr="6" high="15" type="uint"/> 2072bf215546Sopenharmony_ci <reg32 offset="0x4" name="ARRAY_PITCH" shr="6" high="28" type="uint"/> 2073bf215546Sopenharmony_ci <!-- 2074bf215546Sopenharmony_ci Compared to a5xx and before, we configure both a GMEM base and 2075bf215546Sopenharmony_ci external base. Not sure if this is to facilitate GMEM save/ 2076bf215546Sopenharmony_ci restore for context switch, or just to simplify state setup to 2077bf215546Sopenharmony_ci not have to care about GMEM vs BYPASS mode. 2078bf215546Sopenharmony_ci --> 2079bf215546Sopenharmony_ci <!-- maybe something in low bits since alignment of 1 doesn't make sense? --> 2080bf215546Sopenharmony_ci <reg64 offset="0x5" name="BASE" type="waddress" align="1"/> 2081bf215546Sopenharmony_ci 2082bf215546Sopenharmony_ci <reg32 offset="0x7" name="BASE_GMEM" low="12" high="31" shr="12"/> 2083bf215546Sopenharmony_ci </array> 2084bf215546Sopenharmony_ci 2085bf215546Sopenharmony_ci <reg32 offset="0x8860" name="RB_BLEND_RED_F32" type="float"/> 2086bf215546Sopenharmony_ci <reg32 offset="0x8861" name="RB_BLEND_GREEN_F32" type="float"/> 2087bf215546Sopenharmony_ci <reg32 offset="0x8862" name="RB_BLEND_BLUE_F32" type="float"/> 2088bf215546Sopenharmony_ci <reg32 offset="0x8863" name="RB_BLEND_ALPHA_F32" type="float"/> 2089bf215546Sopenharmony_ci <reg32 offset="0x8864" name="RB_ALPHA_CONTROL"> 2090bf215546Sopenharmony_ci <bitfield name="ALPHA_REF" low="0" high="7" type="hex"/> 2091bf215546Sopenharmony_ci <bitfield name="ALPHA_TEST" pos="8" type="boolean"/> 2092bf215546Sopenharmony_ci <bitfield name="ALPHA_TEST_FUNC" low="9" high="11" type="adreno_compare_func"/> 2093bf215546Sopenharmony_ci </reg32> 2094bf215546Sopenharmony_ci <reg32 offset="0x8865" name="RB_BLEND_CNTL"> 2095bf215546Sopenharmony_ci <!-- per-mrt enable bit --> 2096bf215546Sopenharmony_ci <bitfield name="ENABLE_BLEND" low="0" high="7"/> 2097bf215546Sopenharmony_ci <bitfield name="INDEPENDENT_BLEND" pos="8" type="boolean"/> 2098bf215546Sopenharmony_ci <bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/> 2099bf215546Sopenharmony_ci <bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/> 2100bf215546Sopenharmony_ci <bitfield name="ALPHA_TO_ONE" pos="11" type="boolean"/> 2101bf215546Sopenharmony_ci <bitfield name="SAMPLE_MASK" low="16" high="31"/> 2102bf215546Sopenharmony_ci </reg32> 2103bf215546Sopenharmony_ci <!-- 0x8866-0x886f invalid --> 2104bf215546Sopenharmony_ci <reg32 offset="0x8870" name="RB_DEPTH_PLANE_CNTL"> 2105bf215546Sopenharmony_ci <bitfield name="Z_MODE" low="0" high="1" type="a6xx_ztest_mode"/> 2106bf215546Sopenharmony_ci </reg32> 2107bf215546Sopenharmony_ci 2108bf215546Sopenharmony_ci <reg32 offset="0x8871" name="RB_DEPTH_CNTL"> 2109bf215546Sopenharmony_ci <bitfield name="Z_TEST_ENABLE" pos="0" type="boolean"/> 2110bf215546Sopenharmony_ci <bitfield name="Z_WRITE_ENABLE" pos="1" type="boolean"/> 2111bf215546Sopenharmony_ci <bitfield name="ZFUNC" low="2" high="4" type="adreno_compare_func"/> 2112bf215546Sopenharmony_ci <bitfield name="Z_CLIP_DISABLE" pos="5" type="boolean"/> 2113bf215546Sopenharmony_ci <doc> 2114bf215546Sopenharmony_ci Z_READ_ENABLE bit is set for zfunc other than GL_ALWAYS or GL_NEVER 2115bf215546Sopenharmony_ci also set when Z_BOUNDS_ENABLE is set 2116bf215546Sopenharmony_ci </doc> 2117bf215546Sopenharmony_ci <bitfield name="Z_READ_ENABLE" pos="6" type="boolean"/> 2118bf215546Sopenharmony_ci <bitfield name="Z_BOUNDS_ENABLE" pos="7" type="boolean"/> 2119bf215546Sopenharmony_ci </reg32> 2120bf215546Sopenharmony_ci <!-- duplicates GRAS_SU_DEPTH_BUFFER_INFO: --> 2121bf215546Sopenharmony_ci <reg32 offset="0x8872" name="RB_DEPTH_BUFFER_INFO"> 2122bf215546Sopenharmony_ci <bitfield name="DEPTH_FORMAT" low="0" high="2" type="a6xx_depth_format"/> 2123bf215546Sopenharmony_ci <bitfield name="UNK3" low="3" high="4"/> 2124bf215546Sopenharmony_ci </reg32> 2125bf215546Sopenharmony_ci <reg32 offset="0x8873" name="RB_DEPTH_BUFFER_PITCH" low="0" high="13" shr="6" type="uint"/> 2126bf215546Sopenharmony_ci <reg32 offset="0x8874" name="RB_DEPTH_BUFFER_ARRAY_PITCH" low="0" high="27" shr="6" type="uint"/> 2127bf215546Sopenharmony_ci <reg64 offset="0x8875" name="RB_DEPTH_BUFFER_BASE" type="waddress" align="64"/> 2128bf215546Sopenharmony_ci <reg32 offset="0x8877" name="RB_DEPTH_BUFFER_BASE_GMEM" low="12" high="31" shr="12"/> 2129bf215546Sopenharmony_ci 2130bf215546Sopenharmony_ci <reg32 offset="0x8878" name="RB_Z_BOUNDS_MIN" type="float"/> 2131bf215546Sopenharmony_ci <reg32 offset="0x8879" name="RB_Z_BOUNDS_MAX" type="float"/> 2132bf215546Sopenharmony_ci <!-- 0x887a-0x887f invalid --> 2133bf215546Sopenharmony_ci <reg32 offset="0x8880" name="RB_STENCIL_CONTROL"> 2134bf215546Sopenharmony_ci <bitfield name="STENCIL_ENABLE" pos="0" type="boolean"/> 2135bf215546Sopenharmony_ci <bitfield name="STENCIL_ENABLE_BF" pos="1" type="boolean"/> 2136bf215546Sopenharmony_ci <!-- 2137bf215546Sopenharmony_ci set for stencil operations that require read from stencil 2138bf215546Sopenharmony_ci buffer, but not for example for stencil clear (which does 2139bf215546Sopenharmony_ci not require read).. so guessing this is analogous to 2140bf215546Sopenharmony_ci READ_DEST_ENABLE for color buffer.. 2141bf215546Sopenharmony_ci --> 2142bf215546Sopenharmony_ci <bitfield name="STENCIL_READ" pos="2" type="boolean"/> 2143bf215546Sopenharmony_ci <bitfield name="FUNC" low="8" high="10" type="adreno_compare_func"/> 2144bf215546Sopenharmony_ci <bitfield name="FAIL" low="11" high="13" type="adreno_stencil_op"/> 2145bf215546Sopenharmony_ci <bitfield name="ZPASS" low="14" high="16" type="adreno_stencil_op"/> 2146bf215546Sopenharmony_ci <bitfield name="ZFAIL" low="17" high="19" type="adreno_stencil_op"/> 2147bf215546Sopenharmony_ci <bitfield name="FUNC_BF" low="20" high="22" type="adreno_compare_func"/> 2148bf215546Sopenharmony_ci <bitfield name="FAIL_BF" low="23" high="25" type="adreno_stencil_op"/> 2149bf215546Sopenharmony_ci <bitfield name="ZPASS_BF" low="26" high="28" type="adreno_stencil_op"/> 2150bf215546Sopenharmony_ci <bitfield name="ZFAIL_BF" low="29" high="31" type="adreno_stencil_op"/> 2151bf215546Sopenharmony_ci </reg32> 2152bf215546Sopenharmony_ci <reg32 offset="0x8881" name="RB_STENCIL_INFO"> 2153bf215546Sopenharmony_ci <bitfield name="SEPARATE_STENCIL" pos="0" type="boolean"/> 2154bf215546Sopenharmony_ci <bitfield name="UNK1" pos="1" type="boolean"/> 2155bf215546Sopenharmony_ci </reg32> 2156bf215546Sopenharmony_ci <reg32 offset="0x8882" name="RB_STENCIL_BUFFER_PITCH" low="0" high="11" shr="6" type="uint"/> 2157bf215546Sopenharmony_ci <reg32 offset="0x8883" name="RB_STENCIL_BUFFER_ARRAY_PITCH" low="0" high="23" shr="6" type="uint"/> 2158bf215546Sopenharmony_ci <reg64 offset="0x8884" name="RB_STENCIL_BUFFER_BASE" type="waddress" align="64"/> 2159bf215546Sopenharmony_ci <reg32 offset="0x8886" name="RB_STENCIL_BUFFER_BASE_GMEM" low="12" high="31" shr="12"/> 2160bf215546Sopenharmony_ci <reg32 offset="0x8887" name="RB_STENCILREF"> 2161bf215546Sopenharmony_ci <bitfield name="REF" low="0" high="7"/> 2162bf215546Sopenharmony_ci <bitfield name="BFREF" low="8" high="15"/> 2163bf215546Sopenharmony_ci </reg32> 2164bf215546Sopenharmony_ci <reg32 offset="0x8888" name="RB_STENCILMASK"> 2165bf215546Sopenharmony_ci <bitfield name="MASK" low="0" high="7"/> 2166bf215546Sopenharmony_ci <bitfield name="BFMASK" low="8" high="15"/> 2167bf215546Sopenharmony_ci </reg32> 2168bf215546Sopenharmony_ci <reg32 offset="0x8889" name="RB_STENCILWRMASK"> 2169bf215546Sopenharmony_ci <bitfield name="WRMASK" low="0" high="7"/> 2170bf215546Sopenharmony_ci <bitfield name="BFWRMASK" low="8" high="15"/> 2171bf215546Sopenharmony_ci </reg32> 2172bf215546Sopenharmony_ci <!-- 0x888a-0x888f invalid --> 2173bf215546Sopenharmony_ci <reg32 offset="0x8890" name="RB_WINDOW_OFFSET" type="a6xx_reg_xy"/> 2174bf215546Sopenharmony_ci <reg32 offset="0x8891" name="RB_SAMPLE_COUNT_CONTROL"> 2175bf215546Sopenharmony_ci <bitfield name="DISABLE" pos="0" type="boolean"/> 2176bf215546Sopenharmony_ci <bitfield name="COPY" pos="1" type="boolean"/> 2177bf215546Sopenharmony_ci </reg32> 2178bf215546Sopenharmony_ci <!-- 0x8892-0x8897 invalid --> 2179bf215546Sopenharmony_ci <reg32 offset="0x8898" name="RB_LRZ_CNTL"> 2180bf215546Sopenharmony_ci <bitfield name="ENABLE" pos="0" type="boolean"/> 2181bf215546Sopenharmony_ci </reg32> 2182bf215546Sopenharmony_ci <!-- 0x8899-0x88bf invalid --> 2183bf215546Sopenharmony_ci <!-- clamps depth value for depth test/write --> 2184bf215546Sopenharmony_ci <reg32 offset="0x88c0" name="RB_Z_CLAMP_MIN" type="float"/> 2185bf215546Sopenharmony_ci <reg32 offset="0x88c1" name="RB_Z_CLAMP_MAX" type="float"/> 2186bf215546Sopenharmony_ci <!-- 0x88c2-0x88cf invalid--> 2187bf215546Sopenharmony_ci <reg32 offset="0x88d0" name="RB_UNKNOWN_88D0"> 2188bf215546Sopenharmony_ci <bitfield name="UNK0" low="0" high="12"/> 2189bf215546Sopenharmony_ci <bitfield name="UNK16" low="16" high="26"/> 2190bf215546Sopenharmony_ci </reg32> 2191bf215546Sopenharmony_ci <reg32 offset="0x88d1" name="RB_BLIT_SCISSOR_TL" type="a6xx_reg_xy"/> 2192bf215546Sopenharmony_ci <reg32 offset="0x88d2" name="RB_BLIT_SCISSOR_BR" type="a6xx_reg_xy"/> 2193bf215546Sopenharmony_ci <!-- weird to duplicate other regs from same block?? --> 2194bf215546Sopenharmony_ci <reg32 offset="0x88d3" name="RB_BIN_CONTROL2"> 2195bf215546Sopenharmony_ci <bitfield name="BINW" low="0" high="5" shr="5" type="uint"/> 2196bf215546Sopenharmony_ci <bitfield name="BINH" low="8" high="14" shr="4" type="uint"/> 2197bf215546Sopenharmony_ci </reg32> 2198bf215546Sopenharmony_ci <reg32 offset="0x88d4" name="RB_WINDOW_OFFSET2" type="a6xx_reg_xy"/> 2199bf215546Sopenharmony_ci <reg32 offset="0x88d5" name="RB_MSAA_CNTL"> 2200bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="3" high="4" type="a3xx_msaa_samples"/> 2201bf215546Sopenharmony_ci </reg32> 2202bf215546Sopenharmony_ci <reg32 offset="0x88d6" name="RB_BLIT_BASE_GMEM" low="12" high="31" shr="12"/> 2203bf215546Sopenharmony_ci <!-- s/DST_FORMAT/DST_INFO/ probably: --> 2204bf215546Sopenharmony_ci <reg32 offset="0x88d7" name="RB_BLIT_DST_INFO"> 2205bf215546Sopenharmony_ci <bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/> 2206bf215546Sopenharmony_ci <bitfield name="FLAGS" pos="2" type="boolean"/> 2207bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="3" high="4" type="a3xx_msaa_samples"/> 2208bf215546Sopenharmony_ci <bitfield name="COLOR_SWAP" low="5" high="6" type="a3xx_color_swap"/> 2209bf215546Sopenharmony_ci <bitfield name="COLOR_FORMAT" low="7" high="14" type="a6xx_format"/> 2210bf215546Sopenharmony_ci <bitfield name="UNK15" pos="15" type="boolean"/> 2211bf215546Sopenharmony_ci </reg32> 2212bf215546Sopenharmony_ci <reg64 offset="0x88d8" name="RB_BLIT_DST" type="waddress" align="64"/> 2213bf215546Sopenharmony_ci <reg32 offset="0x88da" name="RB_BLIT_DST_PITCH" low="0" high="15" shr="6" type="uint"/> 2214bf215546Sopenharmony_ci <!-- array-pitch is size of layer --> 2215bf215546Sopenharmony_ci <reg32 offset="0x88db" name="RB_BLIT_DST_ARRAY_PITCH" low="0" high="28" shr="6" type="uint"/> 2216bf215546Sopenharmony_ci <reg64 offset="0x88dc" name="RB_BLIT_FLAG_DST" type="waddress" align="64"/> 2217bf215546Sopenharmony_ci <reg32 offset="0x88de" name="RB_BLIT_FLAG_DST_PITCH"> 2218bf215546Sopenharmony_ci <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/> 2219bf215546Sopenharmony_ci <bitfield name="ARRAY_PITCH" low="11" high="27" shr="7" type="uint"/> 2220bf215546Sopenharmony_ci </reg32> 2221bf215546Sopenharmony_ci 2222bf215546Sopenharmony_ci <reg32 offset="0x88df" name="RB_BLIT_CLEAR_COLOR_DW0"/> 2223bf215546Sopenharmony_ci <reg32 offset="0x88e0" name="RB_BLIT_CLEAR_COLOR_DW1"/> 2224bf215546Sopenharmony_ci <reg32 offset="0x88e1" name="RB_BLIT_CLEAR_COLOR_DW2"/> 2225bf215546Sopenharmony_ci <reg32 offset="0x88e2" name="RB_BLIT_CLEAR_COLOR_DW3"/> 2226bf215546Sopenharmony_ci 2227bf215546Sopenharmony_ci <!-- seems somewhat similar to what we called RB_CLEAR_CNTL on a5xx: --> 2228bf215546Sopenharmony_ci <reg32 offset="0x88e3" name="RB_BLIT_INFO"> 2229bf215546Sopenharmony_ci <bitfield name="UNK0" pos="0" type="boolean"/> <!-- s8 stencil restore/clear? But also color restore? --> 2230bf215546Sopenharmony_ci <bitfield name="GMEM" pos="1" type="boolean"/> <!-- set for restore and clear to gmem? --> 2231bf215546Sopenharmony_ci <bitfield name="SAMPLE_0" pos="2" type="boolean"/> <!-- takes sample 0 instead of averaging --> 2232bf215546Sopenharmony_ci <bitfield name="DEPTH" pos="3" type="boolean"/> <!-- z16/z32/z24s8/x24x8 clear or resolve? --> 2233bf215546Sopenharmony_ci <doc> 2234bf215546Sopenharmony_ci For clearing depth/stencil 2235bf215546Sopenharmony_ci 1 - depth 2236bf215546Sopenharmony_ci 2 - stencil 2237bf215546Sopenharmony_ci 3 - depth+stencil 2238bf215546Sopenharmony_ci For clearing color buffer: 2239bf215546Sopenharmony_ci then probably a component mask, I always see 0xf 2240bf215546Sopenharmony_ci </doc> 2241bf215546Sopenharmony_ci <bitfield name="CLEAR_MASK" low="4" high="7"/> 2242bf215546Sopenharmony_ci <!-- set when this is the last resolve on a650+ --> 2243bf215546Sopenharmony_ci <bitfield name="LAST" low="8" high="9"/> 2244bf215546Sopenharmony_ci <!-- 2245bf215546Sopenharmony_ci a618 GLES: color render target number being resolved for RM6_RESOLVE, 0x8 for depth, 0x9 for separate stencil. 2246bf215546Sopenharmony_ci a618 VK: 0x8 for depth RM6_RESOLVE, 0x9 for separate stencil, 0 otherwise. 2247bf215546Sopenharmony_ci 2248bf215546Sopenharmony_ci We believe this is related to concurrent resolves 2249bf215546Sopenharmony_ci --> 2250bf215546Sopenharmony_ci <bitfield name="BUFFER_ID" low="12" high="15"/> 2251bf215546Sopenharmony_ci </reg32> 2252bf215546Sopenharmony_ci <!-- 0x88e4-0x88ef invalid --> 2253bf215546Sopenharmony_ci <!-- always 0x0 ? --> 2254bf215546Sopenharmony_ci <reg32 offset="0x88f0" name="RB_UNKNOWN_88F0" low="0" high="11"/> 2255bf215546Sopenharmony_ci <!-- could be for separate stencil? (or may not be a flag buffer at all) --> 2256bf215546Sopenharmony_ci <reg64 offset="0x88f1" name="RB_UNK_FLAG_BUFFER_BASE" type="waddress" align="64"/> 2257bf215546Sopenharmony_ci <reg32 offset="0x88f3" name="RB_UNK_FLAG_BUFFER_PITCH"> 2258bf215546Sopenharmony_ci <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/> 2259bf215546Sopenharmony_ci <bitfield name="ARRAY_PITCH" low="11" high="23" shr="7" type="uint"/> 2260bf215546Sopenharmony_ci </reg32> 2261bf215546Sopenharmony_ci <reg32 offset="0x88f4" name="RB_UNKNOWN_88F4" low="0" high="2"/> 2262bf215546Sopenharmony_ci <!-- 0x88f5-0x88ff invalid --> 2263bf215546Sopenharmony_ci <reg64 offset="0x8900" name="RB_DEPTH_FLAG_BUFFER_BASE" type="waddress" align="64"/> 2264bf215546Sopenharmony_ci <reg32 offset="0x8902" name="RB_DEPTH_FLAG_BUFFER_PITCH"> 2265bf215546Sopenharmony_ci <bitfield name="PITCH" low="0" high="6" shr="6" type="uint"/> 2266bf215546Sopenharmony_ci <!-- TODO: actually part of array pitch --> 2267bf215546Sopenharmony_ci <bitfield name="UNK8" low="8" high="10"/> 2268bf215546Sopenharmony_ci <bitfield name="ARRAY_PITCH" low="11" high="27" shr="7" type="uint"/> 2269bf215546Sopenharmony_ci </reg32> 2270bf215546Sopenharmony_ci <array offset="0x8903" name="RB_MRT_FLAG_BUFFER" stride="3" length="8"> 2271bf215546Sopenharmony_ci <reg64 offset="0" name="ADDR" type="waddress" align="64"/> 2272bf215546Sopenharmony_ci <reg32 offset="2" name="PITCH"> 2273bf215546Sopenharmony_ci <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/> 2274bf215546Sopenharmony_ci <bitfield name="ARRAY_PITCH" low="11" high="28" shr="7" type="uint"/> 2275bf215546Sopenharmony_ci </reg32> 2276bf215546Sopenharmony_ci </array> 2277bf215546Sopenharmony_ci <!-- 0x891b-0x8926 invalid --> 2278bf215546Sopenharmony_ci <reg64 offset="0x8927" name="RB_SAMPLE_COUNT_ADDR" type="waddress" align="16"/> 2279bf215546Sopenharmony_ci <!-- 0x8929-0x89ff invalid --> 2280bf215546Sopenharmony_ci 2281bf215546Sopenharmony_ci <!-- TODO: there are some registers in the 0x8a00-0x8bff range --> 2282bf215546Sopenharmony_ci 2283bf215546Sopenharmony_ci <!-- 2284bf215546Sopenharmony_ci These show up in a6xx gen3+ but so far haven't found an example of 2285bf215546Sopenharmony_ci blob writing non-zero: 2286bf215546Sopenharmony_ci --> 2287bf215546Sopenharmony_ci <reg32 offset="0x8a00" name="RB_UNKNOWN_8A00"/> 2288bf215546Sopenharmony_ci <reg32 offset="0x8a10" name="RB_UNKNOWN_8A10"/> 2289bf215546Sopenharmony_ci <reg32 offset="0x8a20" name="RB_UNKNOWN_8A20"/> 2290bf215546Sopenharmony_ci <reg32 offset="0x8a30" name="RB_UNKNOWN_8A30"/> 2291bf215546Sopenharmony_ci 2292bf215546Sopenharmony_ci <reg32 offset="0x8c00" name="RB_2D_BLIT_CNTL" type="a6xx_2d_blit_cntl"/> 2293bf215546Sopenharmony_ci <reg32 offset="0x8c01" name="RB_2D_UNKNOWN_8C01" low="0" high="31"/> 2294bf215546Sopenharmony_ci 2295bf215546Sopenharmony_ci <bitset name="a6xx_2d_surf_info" inline="yes"> 2296bf215546Sopenharmony_ci <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/> 2297bf215546Sopenharmony_ci <bitfield name="TILE_MODE" low="8" high="9" type="a6xx_tile_mode"/> 2298bf215546Sopenharmony_ci <bitfield name="COLOR_SWAP" low="10" high="11" type="a3xx_color_swap"/> 2299bf215546Sopenharmony_ci <bitfield name="FLAGS" pos="12" type="boolean"/> 2300bf215546Sopenharmony_ci <bitfield name="SRGB" pos="13" type="boolean"/> 2301bf215546Sopenharmony_ci <!-- the rest is only for src --> 2302bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="14" high="15" type="a3xx_msaa_samples"/> 2303bf215546Sopenharmony_ci <bitfield name="FILTER" pos="16" type="boolean"/> 2304bf215546Sopenharmony_ci <bitfield name="UNK17" pos="17" type="boolean"/> 2305bf215546Sopenharmony_ci <bitfield name="SAMPLES_AVERAGE" pos="18" type="boolean"/> 2306bf215546Sopenharmony_ci <bitfield name="UNK19" pos="19" type="boolean"/> 2307bf215546Sopenharmony_ci <bitfield name="UNK20" pos="20" type="boolean"/> 2308bf215546Sopenharmony_ci <bitfield name="UNK21" pos="21" type="boolean"/> 2309bf215546Sopenharmony_ci <bitfield name="UNK22" pos="22" type="boolean"/> 2310bf215546Sopenharmony_ci <bitfield name="UNK23" low="23" high="26"/> 2311bf215546Sopenharmony_ci <bitfield name="UNK28" pos="28" type="boolean"/> 2312bf215546Sopenharmony_ci </bitset> 2313bf215546Sopenharmony_ci 2314bf215546Sopenharmony_ci <!-- 0x8c02-0x8c16 invalid --> 2315bf215546Sopenharmony_ci <!-- TODO: RB_2D_DST_INFO has 17 valid bits (doesn't match a6xx_2d_surf_info) --> 2316bf215546Sopenharmony_ci <reg32 offset="0x8c17" name="RB_2D_DST_INFO" type="a6xx_2d_surf_info"/> 2317bf215546Sopenharmony_ci <reg64 offset="0x8c18" name="RB_2D_DST" type="waddress" align="64"/> 2318bf215546Sopenharmony_ci <reg32 offset="0x8c1a" name="RB_2D_DST_PITCH" low="0" high="15" shr="6" type="uint"/> 2319bf215546Sopenharmony_ci <!-- this is a guess but seems likely (for NV12/IYUV): --> 2320bf215546Sopenharmony_ci <reg64 offset="0x8c1b" name="RB_2D_DST_PLANE1" type="waddress" align="64"/> 2321bf215546Sopenharmony_ci <reg32 offset="0x8c1d" name="RB_2D_DST_PLANE_PITCH" low="0" high="15" shr="6" type="uint"/> 2322bf215546Sopenharmony_ci <reg64 offset="0x8c1e" name="RB_2D_DST_PLANE2" type="waddress" align="64"/> 2323bf215546Sopenharmony_ci 2324bf215546Sopenharmony_ci <reg64 offset="0x8c20" name="RB_2D_DST_FLAGS" type="waddress" align="64"/> 2325bf215546Sopenharmony_ci <reg32 offset="0x8c22" name="RB_2D_DST_FLAGS_PITCH" low="0" high="7" shr="6" type="uint"/> 2326bf215546Sopenharmony_ci <!-- this is a guess but seems likely (for NV12 with UBWC): --> 2327bf215546Sopenharmony_ci <reg64 offset="0x8c23" name="RB_2D_DST_FLAGS_PLANE" type="waddress" align="64"/> 2328bf215546Sopenharmony_ci <reg32 offset="0x8c25" name="RB_2D_DST_FLAGS_PLANE_PITCH" low="0" high="7" shr="6" type="uint"/> 2329bf215546Sopenharmony_ci 2330bf215546Sopenharmony_ci <!-- TODO: 0x8c26-0x8c33 are all full 32-bit registers --> 2331bf215546Sopenharmony_ci <!-- unlike a5xx, these are per channel values rather than packed --> 2332bf215546Sopenharmony_ci <reg32 offset="0x8c2c" name="RB_2D_SRC_SOLID_C0"/> 2333bf215546Sopenharmony_ci <reg32 offset="0x8c2d" name="RB_2D_SRC_SOLID_C1"/> 2334bf215546Sopenharmony_ci <reg32 offset="0x8c2e" name="RB_2D_SRC_SOLID_C2"/> 2335bf215546Sopenharmony_ci <reg32 offset="0x8c2f" name="RB_2D_SRC_SOLID_C3"/> 2336bf215546Sopenharmony_ci <!-- 0x8c34-0x8dff invalid --> 2337bf215546Sopenharmony_ci 2338bf215546Sopenharmony_ci <!-- always 0x1 ? either doesn't exist for a650 or write-only: --> 2339bf215546Sopenharmony_ci <reg32 offset="0x8e01" name="RB_UNKNOWN_8E01"/> 2340bf215546Sopenharmony_ci <!-- 0x8e00-0x8e03 invalid --> 2341bf215546Sopenharmony_ci <reg32 offset="0x8e04" name="RB_UNKNOWN_8E04"/> <!-- TODO: valid mask 0xfffffeff --> 2342bf215546Sopenharmony_ci <reg32 offset="0x8e05" name="RB_ADDR_MODE_CNTL" pos="0" type="a5xx_address_mode"/> 2343bf215546Sopenharmony_ci <!-- 0x8e06 invalid --> 2344bf215546Sopenharmony_ci <reg32 offset="0x8e07" name="RB_CCU_CNTL"> 2345bf215546Sopenharmony_ci <!-- GMEM offset of CCU color cache 2346bf215546Sopenharmony_ci for GMEM rendering, we set it to GMEM size minus the minimum 2347bf215546Sopenharmony_ci CCU color cache size. CCU color cache will be needed in some 2348bf215546Sopenharmony_ci resolve cases, and in those cases we need to reserve the end 2349bf215546Sopenharmony_ci of GMEM for color cache. 2350bf215546Sopenharmony_ci --> 2351bf215546Sopenharmony_ci <bitfield name="COLOR_OFFSET" low="23" high="31" shr="12" type="hex"/> 2352bf215546Sopenharmony_ci <!-- GMEM offset of CCU depth cache --> 2353bf215546Sopenharmony_ci <bitfield name="DEPTH_OFFSET" low="12" high="20" shr="12" type="hex"/> 2354bf215546Sopenharmony_ci <bitfield name="GMEM" pos="22" type="boolean"/> <!-- set for GMEM path --> 2355bf215546Sopenharmony_ci <!-- concurrent resolves are apparently a 2-bit enum on a650+ --> 2356bf215546Sopenharmony_ci <bitfield name="CONCURRENT_RESOLVE" pos="2" type="boolean"/> 2357bf215546Sopenharmony_ci <!--TODO: valid mask 0xfffffc1f --> 2358bf215546Sopenharmony_ci </reg32> 2359bf215546Sopenharmony_ci <reg32 offset="0x8e08" name="RB_NC_MODE_CNTL"> 2360bf215546Sopenharmony_ci <bitfield name="MODE" pos="0" type="boolean"/> 2361bf215546Sopenharmony_ci <bitfield name="LOWER_BIT" low="1" high="2" type="uint"/> 2362bf215546Sopenharmony_ci <bitfield name="MIN_ACCESS_LENGTH" pos="3" type="boolean"/> <!-- true=64b false=32b --> 2363bf215546Sopenharmony_ci <bitfield name="AMSBC" pos="4" type="boolean"/> 2364bf215546Sopenharmony_ci <bitfield name="UPPER_BIT" pos="10" type="uint"/> 2365bf215546Sopenharmony_ci <bitfield name="RGB565_PREDICATOR" pos="11" type="boolean"/> 2366bf215546Sopenharmony_ci <bitfield name="UNK12" low="12" high="13"/> 2367bf215546Sopenharmony_ci </reg32> 2368bf215546Sopenharmony_ci <!-- 0x8e09-0x8e0f invalid --> 2369bf215546Sopenharmony_ci <array offset="0x8e10" name="RB_PERFCTR_RB_SEL" stride="1" length="8"/> 2370bf215546Sopenharmony_ci <array offset="0x8e18" name="RB_PERFCTR_CCU_SEL" stride="1" length="5"/> 2371bf215546Sopenharmony_ci <!-- 0x8e1d-0x8e1f invalid --> 2372bf215546Sopenharmony_ci <!-- 0x8e20-0x8e25 more perfcntr sel? --> 2373bf215546Sopenharmony_ci <!-- 0x8e26-0x8e27 invalid --> 2374bf215546Sopenharmony_ci <reg32 offset="0x8e28" name="RB_UNKNOWN_8E28" low="0" high="10"/> 2375bf215546Sopenharmony_ci <!-- 0x8e29-0x8e2b invalid --> 2376bf215546Sopenharmony_ci <array offset="0x8e2c" name="RB_PERFCTR_CMP_SEL" stride="1" length="4"/> 2377bf215546Sopenharmony_ci <reg32 offset="0x8e3b" name="RB_RB_SUB_BLOCK_SEL_CNTL_HOST"/> 2378bf215546Sopenharmony_ci <reg32 offset="0x8e3d" name="RB_RB_SUB_BLOCK_SEL_CNTL_CD"/> 2379bf215546Sopenharmony_ci <!-- 0x8e3e-0x8e4f invalid --> 2380bf215546Sopenharmony_ci <!-- GMEM save/restore for preemption: --> 2381bf215546Sopenharmony_ci <reg32 offset="0x8e50" name="RB_CONTEXT_SWITCH_GMEM_SAVE_RESTORE" pos="0" type="boolean"/> 2382bf215546Sopenharmony_ci <!-- address for GMEM save/restore? --> 2383bf215546Sopenharmony_ci <reg32 offset="0x8e51" name="RB_UNKNOWN_8E51" type="waddress" align="1"/> 2384bf215546Sopenharmony_ci <!-- 0x8e53-0x8e7f invalid --> 2385bf215546Sopenharmony_ci <!-- 0x8e80-0x8e83 are valid --> 2386bf215546Sopenharmony_ci <!-- 0x8e84-0x90ff invalid --> 2387bf215546Sopenharmony_ci 2388bf215546Sopenharmony_ci <!-- 0x9000-0x90ff invalid --> 2389bf215546Sopenharmony_ci 2390bf215546Sopenharmony_ci <reg32 offset="0x9100" name="VPC_GS_PARAM"> 2391bf215546Sopenharmony_ci <bitfield name="LINELENGTHLOC" low="0" high="7" type="uint"/> 2392bf215546Sopenharmony_ci </reg32> 2393bf215546Sopenharmony_ci 2394bf215546Sopenharmony_ci <bitset name="a6xx_vpc_xs_clip_cntl" inline="yes"> 2395bf215546Sopenharmony_ci <bitfield name="CLIP_MASK" low="0" high="7" type="uint"/> 2396bf215546Sopenharmony_ci <!-- there can be up to 8 total clip/cull distance outputs, 2397bf215546Sopenharmony_ci but apparenly VPC can only deal with vec4, so when there are 2398bf215546Sopenharmony_ci more than 4 outputs a second location needs to be programmed 2399bf215546Sopenharmony_ci --> 2400bf215546Sopenharmony_ci <bitfield name="CLIP_DIST_03_LOC" low="8" high="15" type="uint"/> 2401bf215546Sopenharmony_ci <bitfield name="CLIP_DIST_47_LOC" low="16" high="23" type="uint"/> 2402bf215546Sopenharmony_ci </bitset> 2403bf215546Sopenharmony_ci <reg32 offset="0x9101" name="VPC_VS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/> 2404bf215546Sopenharmony_ci <reg32 offset="0x9102" name="VPC_GS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/> 2405bf215546Sopenharmony_ci <reg32 offset="0x9103" name="VPC_DS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/> 2406bf215546Sopenharmony_ci 2407bf215546Sopenharmony_ci <bitset name="a6xx_vpc_xs_layer_cntl" inline="yes"> 2408bf215546Sopenharmony_ci <bitfield name="LAYERLOC" low="0" high="7" type="uint"/> 2409bf215546Sopenharmony_ci <bitfield name="VIEWLOC" low="8" high="15" type="uint"/> 2410bf215546Sopenharmony_ci </bitset> 2411bf215546Sopenharmony_ci 2412bf215546Sopenharmony_ci <reg32 offset="0x9104" name="VPC_VS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/> 2413bf215546Sopenharmony_ci <reg32 offset="0x9105" name="VPC_GS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/> 2414bf215546Sopenharmony_ci <reg32 offset="0x9106" name="VPC_DS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/> 2415bf215546Sopenharmony_ci 2416bf215546Sopenharmony_ci <reg32 offset="0x9107" name="VPC_UNKNOWN_9107"> 2417bf215546Sopenharmony_ci <!-- this mirrors PC_RASTER_CNTL::DISCARD, although it seems it's unused --> 2418bf215546Sopenharmony_ci <bitfield name="RASTER_DISCARD" pos="0" type="boolean"/> 2419bf215546Sopenharmony_ci <bitfield name="UNK2" pos="2" type="boolean"/> 2420bf215546Sopenharmony_ci </reg32> 2421bf215546Sopenharmony_ci <reg32 offset="0x9108" name="VPC_POLYGON_MODE"> 2422bf215546Sopenharmony_ci <bitfield name="MODE" low="0" high="1" type="a6xx_polygon_mode"/> 2423bf215546Sopenharmony_ci </reg32> 2424bf215546Sopenharmony_ci <!-- 0x9109-0x91ff invalid --> 2425bf215546Sopenharmony_ci <array offset="0x9200" name="VPC_VARYING_INTERP" stride="1" length="8"> 2426bf215546Sopenharmony_ci <reg32 offset="0x0" name="MODE"/> 2427bf215546Sopenharmony_ci </array> 2428bf215546Sopenharmony_ci <array offset="0x9208" name="VPC_VARYING_PS_REPL" stride="1" length="8"> 2429bf215546Sopenharmony_ci <reg32 offset="0x0" name="MODE"/> 2430bf215546Sopenharmony_ci </array> 2431bf215546Sopenharmony_ci 2432bf215546Sopenharmony_ci <!-- always 0x0 --> 2433bf215546Sopenharmony_ci <reg32 offset="0x9210" name="VPC_UNKNOWN_9210" low="0" high="31"/> 2434bf215546Sopenharmony_ci <reg32 offset="0x9211" name="VPC_UNKNOWN_9211" low="0" high="31"/> 2435bf215546Sopenharmony_ci 2436bf215546Sopenharmony_ci <array offset="0x9212" name="VPC_VAR" stride="1" length="4"> 2437bf215546Sopenharmony_ci <!-- one bit per varying component: --> 2438bf215546Sopenharmony_ci <reg32 offset="0" name="DISABLE"/> 2439bf215546Sopenharmony_ci </array> 2440bf215546Sopenharmony_ci 2441bf215546Sopenharmony_ci <reg32 offset="0x9216" name="VPC_SO_CNTL"> 2442bf215546Sopenharmony_ci <!-- 2443bf215546Sopenharmony_ci Choose which DWORD to write to. There is an array of 2444bf215546Sopenharmony_ci (4 * 64) DWORD's, dumped in the devcoredump at 2445bf215546Sopenharmony_ci HLSQ_INST_RAM dword 0x400. Each DWORD corresponds to a 2446bf215546Sopenharmony_ci (VPC location, stream) pair like so: 2447bf215546Sopenharmony_ci 2448bf215546Sopenharmony_ci location 0, stream 0 2449bf215546Sopenharmony_ci location 2, stream 0 2450bf215546Sopenharmony_ci ... 2451bf215546Sopenharmony_ci location 126, stream 0 2452bf215546Sopenharmony_ci location 0, stream 1 2453bf215546Sopenharmony_ci location 2, stream 1 2454bf215546Sopenharmony_ci ... 2455bf215546Sopenharmony_ci location 126, stream 1 2456bf215546Sopenharmony_ci location 0, stream 2 2457bf215546Sopenharmony_ci ... 2458bf215546Sopenharmony_ci 2459bf215546Sopenharmony_ci When EmitStreamVertex(N) happens, the HW goes to DWORD 2460bf215546Sopenharmony_ci 64 * N and then "executes" the next 64 DWORD's. 2461bf215546Sopenharmony_ci 2462bf215546Sopenharmony_ci This field is auto-incremented when VPC_SO_PROG is 2463bf215546Sopenharmony_ci written to. 2464bf215546Sopenharmony_ci --> 2465bf215546Sopenharmony_ci <bitfield name="ADDR" low="0" high="7" type="hex"/> 2466bf215546Sopenharmony_ci <!-- clear all A_EN and B_EN bits for all DWORD's --> 2467bf215546Sopenharmony_ci <bitfield name="RESET" pos="16" type="boolean"/> 2468bf215546Sopenharmony_ci </reg32> 2469bf215546Sopenharmony_ci <!-- special register, write multiple times to load SO program (not readable) --> 2470bf215546Sopenharmony_ci <reg32 offset="0x9217" name="VPC_SO_PROG"> 2471bf215546Sopenharmony_ci <bitfield name="A_BUF" low="0" high="1" type="uint"/> 2472bf215546Sopenharmony_ci <bitfield name="A_OFF" low="2" high="10" shr="2" type="uint"/> 2473bf215546Sopenharmony_ci <bitfield name="A_EN" pos="11" type="boolean"/> 2474bf215546Sopenharmony_ci <bitfield name="B_BUF" low="12" high="13" type="uint"/> 2475bf215546Sopenharmony_ci <bitfield name="B_OFF" low="14" high="22" shr="2" type="uint"/> 2476bf215546Sopenharmony_ci <bitfield name="B_EN" pos="23" type="boolean"/> 2477bf215546Sopenharmony_ci </reg32> 2478bf215546Sopenharmony_ci 2479bf215546Sopenharmony_ci <reg64 offset="0x9218" name="VPC_SO_STREAM_COUNTS" type="waddress" align="32"/> 2480bf215546Sopenharmony_ci 2481bf215546Sopenharmony_ci <array offset="0x921a" name="VPC_SO" stride="7" length="4"> 2482bf215546Sopenharmony_ci <reg64 offset="0" name="BUFFER_BASE" type="waddress" align="32"/> 2483bf215546Sopenharmony_ci <reg32 offset="2" name="BUFFER_SIZE" low="2" high="31" shr="2"/> 2484bf215546Sopenharmony_ci <reg32 offset="3" name="BUFFER_STRIDE" low="0" high="9" shr="2"/> 2485bf215546Sopenharmony_ci <reg32 offset="4" name="BUFFER_OFFSET" low="2" high="31" shr="2"/> 2486bf215546Sopenharmony_ci <reg64 offset="5" name="FLUSH_BASE" type="waddress" align="32"/> 2487bf215546Sopenharmony_ci </array> 2488bf215546Sopenharmony_ci 2489bf215546Sopenharmony_ci <reg32 offset="0x9236" name="VPC_POINT_COORD_INVERT"> 2490bf215546Sopenharmony_ci <bitfield name="INVERT" pos="0" type="boolean"/> 2491bf215546Sopenharmony_ci </reg32> 2492bf215546Sopenharmony_ci <!-- 0x9237-0x92ff invalid --> 2493bf215546Sopenharmony_ci <!-- always 0x0 ? --> 2494bf215546Sopenharmony_ci <reg32 offset="0x9300" name="VPC_UNKNOWN_9300" low="0" high="2"/> 2495bf215546Sopenharmony_ci 2496bf215546Sopenharmony_ci <bitset name="a6xx_vpc_xs_pack" inline="yes"> 2497bf215546Sopenharmony_ci <doc> 2498bf215546Sopenharmony_ci num of varyings plus four for gl_Position (plus one if gl_PointSize) 2499bf215546Sopenharmony_ci plus # of transform-feedback (streamout) varyings if using the 2500bf215546Sopenharmony_ci hw streamout (rather than stg instructions in shader) 2501bf215546Sopenharmony_ci </doc> 2502bf215546Sopenharmony_ci <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/> 2503bf215546Sopenharmony_ci <bitfield name="POSITIONLOC" low="8" high="15" type="uint"/> 2504bf215546Sopenharmony_ci <bitfield name="PSIZELOC" low="16" high="23" type="uint"/> 2505bf215546Sopenharmony_ci <bitfield name="EXTRAPOS" low="24" high="27" type="uint"> 2506bf215546Sopenharmony_ci <doc> 2507bf215546Sopenharmony_ci The number of extra copies of POSITION, i.e. 2508bf215546Sopenharmony_ci number of views minus one when multi-position 2509bf215546Sopenharmony_ci output is enabled, otherwise 0. 2510bf215546Sopenharmony_ci </doc> 2511bf215546Sopenharmony_ci </bitfield> 2512bf215546Sopenharmony_ci </bitset> 2513bf215546Sopenharmony_ci <reg32 offset="0x9301" name="VPC_VS_PACK" type="a6xx_vpc_xs_pack"/> 2514bf215546Sopenharmony_ci <reg32 offset="0x9302" name="VPC_GS_PACK" type="a6xx_vpc_xs_pack"/> 2515bf215546Sopenharmony_ci <reg32 offset="0x9303" name="VPC_DS_PACK" type="a6xx_vpc_xs_pack"/> 2516bf215546Sopenharmony_ci 2517bf215546Sopenharmony_ci <reg32 offset="0x9304" name="VPC_CNTL_0"> 2518bf215546Sopenharmony_ci <bitfield name="NUMNONPOSVAR" low="0" high="7" type="uint"/> 2519bf215546Sopenharmony_ci <!-- for fixed-function (i.e. no GS) gl_PrimitiveID in FS --> 2520bf215546Sopenharmony_ci <bitfield name="PRIMIDLOC" low="8" high="15" type="uint"/> 2521bf215546Sopenharmony_ci <bitfield name="VARYING" pos="16" type="boolean"/> 2522bf215546Sopenharmony_ci <bitfield name="VIEWIDLOC" low="24" high="31" type="uint"> 2523bf215546Sopenharmony_ci <doc> 2524bf215546Sopenharmony_ci This VPC location will be overwritten with 2525bf215546Sopenharmony_ci ViewID when multiview is enabled. It's used when 2526bf215546Sopenharmony_ci fragment shaders read ViewID. It's only 2527bf215546Sopenharmony_ci strictly required for multi-position output, 2528bf215546Sopenharmony_ci where the same VS invocation is used for all the 2529bf215546Sopenharmony_ci views at once, but it can be used when multi-pos 2530bf215546Sopenharmony_ci output is disabled too, to avoid having to pass 2531bf215546Sopenharmony_ci ViewID through the VS. 2532bf215546Sopenharmony_ci </doc> 2533bf215546Sopenharmony_ci </bitfield> 2534bf215546Sopenharmony_ci </reg32> 2535bf215546Sopenharmony_ci 2536bf215546Sopenharmony_ci <reg32 offset="0x9305" name="VPC_SO_STREAM_CNTL"> 2537bf215546Sopenharmony_ci <!-- 2538bf215546Sopenharmony_ci It's offset by 1, and 0 means "disabled" 2539bf215546Sopenharmony_ci --> 2540bf215546Sopenharmony_ci <bitfield name="BUF0_STREAM" low="0" high="2" type="uint"/> 2541bf215546Sopenharmony_ci <bitfield name="BUF1_STREAM" low="3" high="5" type="uint"/> 2542bf215546Sopenharmony_ci <bitfield name="BUF2_STREAM" low="6" high="8" type="uint"/> 2543bf215546Sopenharmony_ci <bitfield name="BUF3_STREAM" low="9" high="11" type="uint"/> 2544bf215546Sopenharmony_ci <bitfield name="STREAM_ENABLE" low="15" high="18" type="hex"/> 2545bf215546Sopenharmony_ci </reg32> 2546bf215546Sopenharmony_ci <reg32 offset="0x9306" name="VPC_SO_DISABLE"> 2547bf215546Sopenharmony_ci <bitfield name="DISABLE" pos="0" type="boolean"/> 2548bf215546Sopenharmony_ci </reg32> 2549bf215546Sopenharmony_ci <!-- 0x9307-0x95ff invalid --> 2550bf215546Sopenharmony_ci 2551bf215546Sopenharmony_ci <!-- TODO: 0x9600-0x97ff range --> 2552bf215546Sopenharmony_ci <reg32 offset="0x9600" name="VPC_UNKNOWN_9600"/> <!-- always 0x0 ? TODO: 0x1fbf37ff valid mask --> 2553bf215546Sopenharmony_ci <reg32 offset="0x9601" name="VPC_ADDR_MODE_CNTL" pos="0" type="a5xx_address_mode"/> 2554bf215546Sopenharmony_ci <reg32 offset="0x9602" name="VPC_UNKNOWN_9602" pos="0"/> <!-- always 0x0 ? --> 2555bf215546Sopenharmony_ci <reg32 offset="0x9603" name="VPC_UNKNOWN_9603" low="0" high="26"/> 2556bf215546Sopenharmony_ci <array offset="0x9604" name="VPC_PERFCTR_VPC_SEL" stride="1" length="6"/> 2557bf215546Sopenharmony_ci <!-- 0x960a-0x9623 invalid --> 2558bf215546Sopenharmony_ci <!-- TODO: regs from 0x9624-0x963a --> 2559bf215546Sopenharmony_ci <!-- 0x963b-0x97ff invalid --> 2560bf215546Sopenharmony_ci 2561bf215546Sopenharmony_ci <reg32 offset="0x9800" name="PC_TESS_NUM_VERTEX" low="0" high="5" type="uint"/> 2562bf215546Sopenharmony_ci 2563bf215546Sopenharmony_ci <!-- always 0x0 ? --> 2564bf215546Sopenharmony_ci <reg32 offset="0x9801" name="PC_HS_INPUT_SIZE"> 2565bf215546Sopenharmony_ci <bitfield name="SIZE" low="0" high="10" type="uint"/> 2566bf215546Sopenharmony_ci <bitfield name="UNK13" pos="13"/> 2567bf215546Sopenharmony_ci </reg32> 2568bf215546Sopenharmony_ci 2569bf215546Sopenharmony_ci <enum name="a6xx_tess_spacing"> 2570bf215546Sopenharmony_ci <value value="0x0" name="TESS_EQUAL"/> 2571bf215546Sopenharmony_ci <value value="0x2" name="TESS_FRACTIONAL_ODD"/> 2572bf215546Sopenharmony_ci <value value="0x3" name="TESS_FRACTIONAL_EVEN"/> 2573bf215546Sopenharmony_ci </enum> 2574bf215546Sopenharmony_ci <enum name="a6xx_tess_output"> 2575bf215546Sopenharmony_ci <value value="0x0" name="TESS_POINTS"/> 2576bf215546Sopenharmony_ci <value value="0x1" name="TESS_LINES"/> 2577bf215546Sopenharmony_ci <value value="0x2" name="TESS_CW_TRIS"/> 2578bf215546Sopenharmony_ci <value value="0x3" name="TESS_CCW_TRIS"/> 2579bf215546Sopenharmony_ci </enum> 2580bf215546Sopenharmony_ci <reg32 offset="0x9802" name="PC_TESS_CNTL"> 2581bf215546Sopenharmony_ci <bitfield name="SPACING" low="0" high="1" type="a6xx_tess_spacing"/> 2582bf215546Sopenharmony_ci <bitfield name="OUTPUT" low="2" high="3" type="a6xx_tess_output"/> 2583bf215546Sopenharmony_ci </reg32> 2584bf215546Sopenharmony_ci 2585bf215546Sopenharmony_ci <reg32 offset="0x9803" name="PC_RESTART_INDEX" low="0" high="31" type="uint"/> 2586bf215546Sopenharmony_ci <reg32 offset="0x9804" name="PC_MODE_CNTL" low="0" high="7"/> 2587bf215546Sopenharmony_ci 2588bf215546Sopenharmony_ci <reg32 offset="0x9805" name="PC_POWER_CNTL" low="0" high="2"/> 2589bf215546Sopenharmony_ci 2590bf215546Sopenharmony_ci <!-- probably a mirror of VFD_CONTROL_6 --> 2591bf215546Sopenharmony_ci <reg32 offset="0x9806" name="PC_PRIMID_PASSTHRU" pos="0" type="boolean"/> 2592bf215546Sopenharmony_ci 2593bf215546Sopenharmony_ci <!-- New in a6xx gen3+ --> 2594bf215546Sopenharmony_ci <reg32 offset="0x9808" name="PC_SO_STREAM_CNTL"> 2595bf215546Sopenharmony_ci <bitfield name="STREAM_ENABLE" pos="15" type="boolean"/> 2596bf215546Sopenharmony_ci </reg32> 2597bf215546Sopenharmony_ci 2598bf215546Sopenharmony_ci <reg32 offset="0x980a" name="PC_DGEN_SU_CONSERVATIVE_RAS_CNTL"> 2599bf215546Sopenharmony_ci <bitfield name="CONSERVATIVERASEN" pos="0" type="boolean"/> 2600bf215546Sopenharmony_ci </reg32> 2601bf215546Sopenharmony_ci <!-- 0x980b-0x983f invalid --> 2602bf215546Sopenharmony_ci 2603bf215546Sopenharmony_ci <!-- 0x9840 - 0x9842 are not readable --> 2604bf215546Sopenharmony_ci <reg32 offset="0x9840" name="PC_DRAW_CMD"> 2605bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="0" high="7"/> 2606bf215546Sopenharmony_ci </reg32> 2607bf215546Sopenharmony_ci 2608bf215546Sopenharmony_ci <reg32 offset="0x9841" name="PC_DISPATCH_CMD"> 2609bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="0" high="7"/> 2610bf215546Sopenharmony_ci </reg32> 2611bf215546Sopenharmony_ci 2612bf215546Sopenharmony_ci <reg32 offset="0x9842" name="PC_EVENT_CMD"> 2613bf215546Sopenharmony_ci <!-- I think only the low bit is actually used? --> 2614bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="16" high="23"/> 2615bf215546Sopenharmony_ci <bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/> 2616bf215546Sopenharmony_ci </reg32> 2617bf215546Sopenharmony_ci 2618bf215546Sopenharmony_ci <!-- 2619bf215546Sopenharmony_ci 0x9880 written in a lot of places by SQE, same value gets written 2620bf215546Sopenharmony_ci to control reg 0x12a. Set by CP_SET_MARKER, so lets name it after 2621bf215546Sopenharmony_ci that 2622bf215546Sopenharmony_ci --> 2623bf215546Sopenharmony_ci <reg32 offset="0x9880" name="PC_MARKER"/> 2624bf215546Sopenharmony_ci 2625bf215546Sopenharmony_ci <!-- 0x9843-0x997f invalid --> 2626bf215546Sopenharmony_ci 2627bf215546Sopenharmony_ci <reg32 offset="0x9981" name="PC_POLYGON_MODE"> 2628bf215546Sopenharmony_ci <bitfield name="MODE" low="0" high="1" type="a6xx_polygon_mode"/> 2629bf215546Sopenharmony_ci </reg32> 2630bf215546Sopenharmony_ci 2631bf215546Sopenharmony_ci <reg32 offset="0x9980" name="PC_RASTER_CNTL"> 2632bf215546Sopenharmony_ci <!-- which stream to send to GRAS --> 2633bf215546Sopenharmony_ci <bitfield name="STREAM" low="0" high="1" type="uint"/> 2634bf215546Sopenharmony_ci <!-- discard primitives before rasterization --> 2635bf215546Sopenharmony_ci <bitfield name="DISCARD" pos="2" type="boolean"/> 2636bf215546Sopenharmony_ci </reg32> 2637bf215546Sopenharmony_ci 2638bf215546Sopenharmony_ci <!-- 0x9982-0x9aff invalid --> 2639bf215546Sopenharmony_ci 2640bf215546Sopenharmony_ci <reg32 offset="0x9b00" name="PC_PRIMITIVE_CNTL_0"> 2641bf215546Sopenharmony_ci <bitfield name="PRIMITIVE_RESTART" pos="0" type="boolean"/> 2642bf215546Sopenharmony_ci <!-- maybe? b1 seems always set, so just assume it is for now: --> 2643bf215546Sopenharmony_ci <bitfield name="PROVOKING_VTX_LAST" pos="1" type="boolean"/> 2644bf215546Sopenharmony_ci <bitfield name="TESS_UPPER_LEFT_DOMAIN_ORIGIN" pos="2" type="boolean"/> 2645bf215546Sopenharmony_ci <bitfield name="UNK3" pos="3" type="boolean"/> 2646bf215546Sopenharmony_ci </reg32> 2647bf215546Sopenharmony_ci 2648bf215546Sopenharmony_ci <bitset name="a6xx_xs_out_cntl" inline="yes"> 2649bf215546Sopenharmony_ci <doc> 2650bf215546Sopenharmony_ci num of varyings plus four for gl_Position (plus one if gl_PointSize) 2651bf215546Sopenharmony_ci plus # of transform-feedback (streamout) varyings if using the 2652bf215546Sopenharmony_ci hw streamout (rather than stg instructions in shader) 2653bf215546Sopenharmony_ci </doc> 2654bf215546Sopenharmony_ci <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/> 2655bf215546Sopenharmony_ci <bitfield name="PSIZE" pos="8" type="boolean"/> 2656bf215546Sopenharmony_ci <bitfield name="LAYER" pos="9" type="boolean"/> 2657bf215546Sopenharmony_ci <bitfield name="VIEW" pos="10" type="boolean"/> 2658bf215546Sopenharmony_ci <!-- note: PC_VS_OUT_CNTL doesn't have the PRIMITIVE_ID bit --> 2659bf215546Sopenharmony_ci <bitfield name="PRIMITIVE_ID" pos="11" type="boolean"/> 2660bf215546Sopenharmony_ci <bitfield name="CLIP_MASK" low="16" high="23" type="uint"/> 2661bf215546Sopenharmony_ci </bitset> 2662bf215546Sopenharmony_ci 2663bf215546Sopenharmony_ci <reg32 offset="0x9b01" name="PC_VS_OUT_CNTL" type="a6xx_xs_out_cntl"/> 2664bf215546Sopenharmony_ci <reg32 offset="0x9b02" name="PC_GS_OUT_CNTL" type="a6xx_xs_out_cntl"/> 2665bf215546Sopenharmony_ci <!-- since HS can't output anything, only PRIMITIVE_ID is valid --> 2666bf215546Sopenharmony_ci <reg32 offset="0x9b03" name="PC_HS_OUT_CNTL" type="a6xx_xs_out_cntl"/> 2667bf215546Sopenharmony_ci <reg32 offset="0x9b04" name="PC_DS_OUT_CNTL" type="a6xx_xs_out_cntl"/> 2668bf215546Sopenharmony_ci 2669bf215546Sopenharmony_ci <reg32 offset="0x9b05" name="PC_PRIMITIVE_CNTL_5"> 2670bf215546Sopenharmony_ci <doc> 2671bf215546Sopenharmony_ci geometry shader 2672bf215546Sopenharmony_ci </doc> 2673bf215546Sopenharmony_ci <!-- TODO: first 16 bits are valid so something is wrong or missing here --> 2674bf215546Sopenharmony_ci <bitfield name="GS_VERTICES_OUT" low="0" high="7" type="uint"/> 2675bf215546Sopenharmony_ci <bitfield name="GS_INVOCATIONS" low="10" high="14" type="uint"/> 2676bf215546Sopenharmony_ci <bitfield name="LINELENGTHEN" pos="15" type="boolean"/> 2677bf215546Sopenharmony_ci <bitfield name="GS_OUTPUT" low="16" high="17" type="a6xx_tess_output"/> 2678bf215546Sopenharmony_ci <bitfield name="UNK18" pos="18"/> 2679bf215546Sopenharmony_ci </reg32> 2680bf215546Sopenharmony_ci 2681bf215546Sopenharmony_ci <reg32 offset="0x9b06" name="PC_PRIMITIVE_CNTL_6"> 2682bf215546Sopenharmony_ci <doc> 2683bf215546Sopenharmony_ci size in vec4s of per-primitive storage for gs. TODO: not actually in VPC 2684bf215546Sopenharmony_ci </doc> 2685bf215546Sopenharmony_ci <bitfield name="STRIDE_IN_VPC" low="0" high="10" type="uint"/> 2686bf215546Sopenharmony_ci </reg32> 2687bf215546Sopenharmony_ci 2688bf215546Sopenharmony_ci <bitset name="a6xx_multiview_cntl" inline="yes"> 2689bf215546Sopenharmony_ci <bitfield name="ENABLE" pos="0" type="boolean"/> 2690bf215546Sopenharmony_ci <bitfield name="DISABLEMULTIPOS" pos="1" type="boolean"> 2691bf215546Sopenharmony_ci <doc> 2692bf215546Sopenharmony_ci Multi-position output lets the last geometry 2693bf215546Sopenharmony_ci stage shader write multiple copies of 2694bf215546Sopenharmony_ci gl_Position. If disabled then the VS is run once 2695bf215546Sopenharmony_ci for each view, and ViewID is passed as a 2696bf215546Sopenharmony_ci register to the VS. 2697bf215546Sopenharmony_ci </doc> 2698bf215546Sopenharmony_ci </bitfield> 2699bf215546Sopenharmony_ci <bitfield name="VIEWS" low="2" high="6" type="uint"/> 2700bf215546Sopenharmony_ci </bitset> 2701bf215546Sopenharmony_ci 2702bf215546Sopenharmony_ci <reg32 offset="0x9b07" name="PC_MULTIVIEW_CNTL" type="a6xx_multiview_cntl"/> 2703bf215546Sopenharmony_ci <!-- mask of enabled views, doesn't exist on A630 --> 2704bf215546Sopenharmony_ci <reg32 offset="0x9b08" name="PC_MULTIVIEW_MASK" type="hex" low="0" high="15"/> 2705bf215546Sopenharmony_ci <!-- 0x9b09-0x9bff invalid --> 2706bf215546Sopenharmony_ci <reg32 offset="0x9c00" name="PC_2D_EVENT_CMD"> 2707bf215546Sopenharmony_ci <!-- special register (but note first 8 bits can be written/read) --> 2708bf215546Sopenharmony_ci <bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/> 2709bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="8" high="15"/> 2710bf215546Sopenharmony_ci </reg32> 2711bf215546Sopenharmony_ci <!-- 0x9c01-0x9dff invalid --> 2712bf215546Sopenharmony_ci <!-- TODO: 0x9e00-0xa000 range incomplete --> 2713bf215546Sopenharmony_ci <reg32 offset="0x9e00" name="PC_DBG_ECO_CNTL"/> 2714bf215546Sopenharmony_ci <reg32 offset="0x9e01" name="PC_ADDR_MODE_CNTL" type="a5xx_address_mode"/> 2715bf215546Sopenharmony_ci <reg64 offset="0x9e04" name="PC_DRAW_INDX_BASE"/> 2716bf215546Sopenharmony_ci <reg32 offset="0x9e06" name="PC_DRAW_FIRST_INDX" type="uint"/> 2717bf215546Sopenharmony_ci <reg32 offset="0x9e07" name="PC_DRAW_MAX_INDICES" type="uint"/> 2718bf215546Sopenharmony_ci <reg64 offset="0x9e08" name="PC_TESSFACTOR_ADDR" type="waddress" align="32"/> 2719bf215546Sopenharmony_ci 2720bf215546Sopenharmony_ci <reg32 offset="0x9e0b" name="PC_DRAW_INITIATOR" type="vgt_draw_initiator_a4xx"> 2721bf215546Sopenharmony_ci <doc> 2722bf215546Sopenharmony_ci Possibly not really "initiating" the draw but the layout is similar 2723bf215546Sopenharmony_ci to VGT_DRAW_INITIATOR on older gens 2724bf215546Sopenharmony_ci </doc> 2725bf215546Sopenharmony_ci </reg32> 2726bf215546Sopenharmony_ci <reg32 offset="0x9e0c" name="PC_DRAW_NUM_INSTANCES" type="uint"/> 2727bf215546Sopenharmony_ci <reg32 offset="0x9e0d" name="PC_DRAW_NUM_INDICES" type="uint"/> 2728bf215546Sopenharmony_ci 2729bf215546Sopenharmony_ci <!-- These match the contents of CP_SET_BIN_DATA (not written directly) --> 2730bf215546Sopenharmony_ci <reg32 offset="0x9e11" name="PC_VSTREAM_CONTROL"> 2731bf215546Sopenharmony_ci <bitfield name="UNK0" low="0" high="15"/> 2732bf215546Sopenharmony_ci <bitfield name="VSC_SIZE" low="16" high="21" type="uint"/> 2733bf215546Sopenharmony_ci <bitfield name="VSC_N" low="22" high="26" type="uint"/> 2734bf215546Sopenharmony_ci </reg32> 2735bf215546Sopenharmony_ci <reg64 offset="0x9e12" name="PC_BIN_PRIM_STRM" type="waddress" align="32"/> 2736bf215546Sopenharmony_ci <reg64 offset="0x9e14" name="PC_BIN_DRAW_STRM" type="waddress" align="32"/> 2737bf215546Sopenharmony_ci 2738bf215546Sopenharmony_ci <reg32 offset="0x9e1c" name="PC_VISIBILITY_OVERRIDE"> 2739bf215546Sopenharmony_ci <doc>Written by CP_SET_VISIBILITY_OVERRIDE handler</doc> 2740bf215546Sopenharmony_ci <bitfield name="OVERRIDE" pos="0" type="boolean"/> 2741bf215546Sopenharmony_ci </reg32> 2742bf215546Sopenharmony_ci 2743bf215546Sopenharmony_ci <array offset="0x9e34" name="PC_PERFCTR_PC_SEL" stride="1" length="8"/> 2744bf215546Sopenharmony_ci 2745bf215546Sopenharmony_ci <!-- always 0x0 --> 2746bf215546Sopenharmony_ci <reg32 offset="0x9e72" name="PC_UNKNOWN_9E72"/> 2747bf215546Sopenharmony_ci 2748bf215546Sopenharmony_ci <reg32 offset="0xa000" name="VFD_CONTROL_0"> 2749bf215546Sopenharmony_ci <bitfield name="FETCH_CNT" low="0" high="5" type="uint"/> 2750bf215546Sopenharmony_ci <bitfield name="DECODE_CNT" low="8" high="13" type="uint"/> 2751bf215546Sopenharmony_ci </reg32> 2752bf215546Sopenharmony_ci <reg32 offset="0xa001" name="VFD_CONTROL_1"> 2753bf215546Sopenharmony_ci <bitfield name="REGID4VTX" low="0" high="7" type="a3xx_regid"/> 2754bf215546Sopenharmony_ci <bitfield name="REGID4INST" low="8" high="15" type="a3xx_regid"/> 2755bf215546Sopenharmony_ci <bitfield name="REGID4PRIMID" low="16" high="23" type="a3xx_regid"/> 2756bf215546Sopenharmony_ci <!-- only used for VS in non-multi-position-output case --> 2757bf215546Sopenharmony_ci <bitfield name="REGID4VIEWID" low="24" high="31" type="a3xx_regid"/> 2758bf215546Sopenharmony_ci </reg32> 2759bf215546Sopenharmony_ci <reg32 offset="0xa002" name="VFD_CONTROL_2"> 2760bf215546Sopenharmony_ci <bitfield name="REGID_HSRELPATCHID" low="0" high="7" type="a3xx_regid"> 2761bf215546Sopenharmony_ci <doc> 2762bf215546Sopenharmony_ci This is the ID of the current patch within the 2763bf215546Sopenharmony_ci subdraw, used to calculate the offset of the 2764bf215546Sopenharmony_ci patch within the HS->DS buffers. When a draw is 2765bf215546Sopenharmony_ci split into multiple subdraws then this differs 2766bf215546Sopenharmony_ci from gl_PrimitiveID on the second, third, etc. 2767bf215546Sopenharmony_ci subdraws. 2768bf215546Sopenharmony_ci </doc> 2769bf215546Sopenharmony_ci </bitfield> 2770bf215546Sopenharmony_ci <bitfield name="REGID_INVOCATIONID" low="8" high="15" type="a3xx_regid"/> 2771bf215546Sopenharmony_ci </reg32> 2772bf215546Sopenharmony_ci <reg32 offset="0xa003" name="VFD_CONTROL_3"> 2773bf215546Sopenharmony_ci <bitfield name="REGID_DSPRIMID" low="0" high="7" type="a3xx_regid"/> 2774bf215546Sopenharmony_ci <bitfield name="REGID_DSRELPATCHID" low="8" high="15" type="a3xx_regid"/> 2775bf215546Sopenharmony_ci <bitfield name="REGID_TESSX" low="16" high="23" type="a3xx_regid"/> 2776bf215546Sopenharmony_ci <bitfield name="REGID_TESSY" low="24" high="31" type="a3xx_regid"/> 2777bf215546Sopenharmony_ci </reg32> 2778bf215546Sopenharmony_ci <reg32 offset="0xa004" name="VFD_CONTROL_4"> 2779bf215546Sopenharmony_ci <bitfield name="UNK0" low="0" high="7" type="a3xx_regid"/> 2780bf215546Sopenharmony_ci </reg32> 2781bf215546Sopenharmony_ci <reg32 offset="0xa005" name="VFD_CONTROL_5"> 2782bf215546Sopenharmony_ci <bitfield name="REGID_GSHEADER" low="0" high="7" type="a3xx_regid"/> 2783bf215546Sopenharmony_ci <bitfield name="UNK8" low="8" high="15" type="a3xx_regid"/> 2784bf215546Sopenharmony_ci </reg32> 2785bf215546Sopenharmony_ci <reg32 offset="0xa006" name="VFD_CONTROL_6"> 2786bf215546Sopenharmony_ci <!-- 2787bf215546Sopenharmony_ci True if gl_PrimitiveID is read via the FS and there is 2788bf215546Sopenharmony_ci no matching write from the GS, and therefore it needs to 2789bf215546Sopenharmony_ci be passed through via fixed-function logic. 2790bf215546Sopenharmony_ci --> 2791bf215546Sopenharmony_ci <bitfield name="PRIMID_PASSTHRU" pos="0" type="boolean"/> 2792bf215546Sopenharmony_ci </reg32> 2793bf215546Sopenharmony_ci 2794bf215546Sopenharmony_ci <reg32 offset="0xa007" name="VFD_MODE_CNTL"> 2795bf215546Sopenharmony_ci <bitfield name="RENDER_MODE" low="0" high="2" type="a6xx_render_mode"/> 2796bf215546Sopenharmony_ci </reg32> 2797bf215546Sopenharmony_ci 2798bf215546Sopenharmony_ci <reg32 offset="0xa008" name="VFD_MULTIVIEW_CNTL" type="a6xx_multiview_cntl"/> 2799bf215546Sopenharmony_ci <reg32 offset="0xa009" name="VFD_ADD_OFFSET"> 2800bf215546Sopenharmony_ci <!-- add VFD_INDEX_OFFSET to REGID4VTX --> 2801bf215546Sopenharmony_ci <bitfield name="VERTEX" pos="0" type="boolean"/> 2802bf215546Sopenharmony_ci <!-- add VFD_INSTANCE_START_OFFSET to REGID4INST --> 2803bf215546Sopenharmony_ci <bitfield name="INSTANCE" pos="1" type="boolean"/> 2804bf215546Sopenharmony_ci </reg32> 2805bf215546Sopenharmony_ci 2806bf215546Sopenharmony_ci <reg32 offset="0xa00e" name="VFD_INDEX_OFFSET"/> 2807bf215546Sopenharmony_ci <reg32 offset="0xa00f" name="VFD_INSTANCE_START_OFFSET"/> 2808bf215546Sopenharmony_ci <array offset="0xa010" name="VFD_FETCH" stride="4" length="32"> 2809bf215546Sopenharmony_ci <reg64 offset="0x0" name="BASE" type="address" align="1"/> 2810bf215546Sopenharmony_ci <reg32 offset="0x2" name="SIZE" type="uint"/> 2811bf215546Sopenharmony_ci <reg32 offset="0x3" name="STRIDE" low="0" high="11" type="uint"/> 2812bf215546Sopenharmony_ci </array> 2813bf215546Sopenharmony_ci <array offset="0xa090" name="VFD_DECODE" stride="2" length="32"> 2814bf215546Sopenharmony_ci <reg32 offset="0x0" name="INSTR"> 2815bf215546Sopenharmony_ci <!-- IDX and byte OFFSET into VFD_FETCH --> 2816bf215546Sopenharmony_ci <bitfield name="IDX" low="0" high="4" type="uint"/> 2817bf215546Sopenharmony_ci <bitfield name="OFFSET" low="5" high="16"/> 2818bf215546Sopenharmony_ci <bitfield name="INSTANCED" pos="17" type="boolean"/> 2819bf215546Sopenharmony_ci <bitfield name="FORMAT" low="20" high="27" type="a6xx_format"/> 2820bf215546Sopenharmony_ci <bitfield name="SWAP" low="28" high="29" type="a3xx_color_swap"/> 2821bf215546Sopenharmony_ci <bitfield name="UNK30" pos="30" type="boolean"/> 2822bf215546Sopenharmony_ci <bitfield name="FLOAT" pos="31" type="boolean"/> 2823bf215546Sopenharmony_ci </reg32> 2824bf215546Sopenharmony_ci <reg32 offset="0x1" name="STEP_RATE" type="uint"/> 2825bf215546Sopenharmony_ci </array> 2826bf215546Sopenharmony_ci <array offset="0xa0d0" name="VFD_DEST_CNTL" stride="1" length="32"> 2827bf215546Sopenharmony_ci <reg32 offset="0x0" name="INSTR"> 2828bf215546Sopenharmony_ci <bitfield name="WRITEMASK" low="0" high="3" type="hex"/> 2829bf215546Sopenharmony_ci <bitfield name="REGID" low="4" high="11" type="a3xx_regid"/> 2830bf215546Sopenharmony_ci </reg32> 2831bf215546Sopenharmony_ci </array> 2832bf215546Sopenharmony_ci 2833bf215546Sopenharmony_ci <reg32 offset="0xa0f8" name="VFD_POWER_CNTL" low="0" high="2"/> 2834bf215546Sopenharmony_ci 2835bf215546Sopenharmony_ci <reg32 offset="0xa601" name="VFD_ADDR_MODE_CNTL" type="a5xx_address_mode"/> 2836bf215546Sopenharmony_ci <array offset="0xa610" name="VFD_PERFCTR_VFD_SEL" stride="1" length="8"/> 2837bf215546Sopenharmony_ci 2838bf215546Sopenharmony_ci <!-- 2839bf215546Sopenharmony_ci Note: this seems to always be paired with another bit in another 2840bf215546Sopenharmony_ci block. 2841bf215546Sopenharmony_ci --> 2842bf215546Sopenharmony_ci <enum name="a6xx_threadsize"> 2843bf215546Sopenharmony_ci <value value="0" name="THREAD64"/> 2844bf215546Sopenharmony_ci <value value="1" name="THREAD128"/> 2845bf215546Sopenharmony_ci </enum> 2846bf215546Sopenharmony_ci 2847bf215546Sopenharmony_ci <bitset name="a6xx_sp_xs_ctrl_reg0" inline="yes"> 2848bf215546Sopenharmony_ci <!-- if set to SINGLE, only use 1 concurrent wave on each SP --> 2849bf215546Sopenharmony_ci <bitfield name="THREADMODE" pos="0" type="a3xx_threadmode"/> 2850bf215546Sopenharmony_ci <!-- 2851bf215546Sopenharmony_ci When b31 set we just see FULLREGFOOTPRINT set. The pattern of 2852bf215546Sopenharmony_ci used registers is a bit odd too: 2853bf215546Sopenharmony_ci - used (half): 0-15 68-179 (cnt=128, max=179) 2854bf215546Sopenharmony_ci - used (full): 0-33 50-69 71 73 75 77 79 81 83 85 87 89-105 107 109 111 113 115 117 119 121 123 125 127> 2855bf215546Sopenharmony_ci whereas we usually see a (mostly) contiguous range of regs used. But if 2856bf215546Sopenharmony_ci I merge the full and half ranges (ie. rN counts as hr(N*2) and hr(N*2+1)), 2857bf215546Sopenharmony_ci then: 2858bf215546Sopenharmony_ci - used (merged): 0-191 (cnt=192, max=191) 2859bf215546Sopenharmony_ci So I think if b31 is set, then the half precision registers overlap 2860bf215546Sopenharmony_ci the full precision registers. (Which seems like a pretty sensible 2861bf215546Sopenharmony_ci feature, actually I'm not sure when you *wouldn't* want to use that, 2862bf215546Sopenharmony_ci since it gives register allocation more flexibility) 2863bf215546Sopenharmony_ci --> 2864bf215546Sopenharmony_ci <bitfield name="HALFREGFOOTPRINT" low="1" high="6" type="uint"/> 2865bf215546Sopenharmony_ci <bitfield name="FULLREGFOOTPRINT" low="7" high="12" type="uint"/> 2866bf215546Sopenharmony_ci <!-- could it be a low bit of branchstack? --> 2867bf215546Sopenharmony_ci <bitfield name="UNK13" pos="13" type="boolean"/> 2868bf215546Sopenharmony_ci <!-- seems to be nesting level for flow control:.. --> 2869bf215546Sopenharmony_ci <bitfield name="BRANCHSTACK" low="14" high="19" type="uint"/> 2870bf215546Sopenharmony_ci </bitset> 2871bf215546Sopenharmony_ci 2872bf215546Sopenharmony_ci <bitset name="a6xx_sp_xs_config" inline="yes"> 2873bf215546Sopenharmony_ci <!-- 2874bf215546Sopenharmony_ci Each of these are set if the given resource type is used 2875bf215546Sopenharmony_ci with the Vulkan/bindless binding model. 2876bf215546Sopenharmony_ci --> 2877bf215546Sopenharmony_ci <bitfield name="BINDLESS_TEX" pos="0" type="boolean"/> 2878bf215546Sopenharmony_ci <bitfield name="BINDLESS_SAMP" pos="1" type="boolean"/> 2879bf215546Sopenharmony_ci <bitfield name="BINDLESS_IBO" pos="2" type="boolean"/> 2880bf215546Sopenharmony_ci <bitfield name="BINDLESS_UBO" pos="3" type="boolean"/> 2881bf215546Sopenharmony_ci 2882bf215546Sopenharmony_ci <bitfield name="ENABLED" pos="8" type="boolean"/> 2883bf215546Sopenharmony_ci <!-- 2884bf215546Sopenharmony_ci number of textures and samplers.. these might be swapped, with GL I 2885bf215546Sopenharmony_ci always see the same value for both. 2886bf215546Sopenharmony_ci --> 2887bf215546Sopenharmony_ci <bitfield name="NTEX" low="9" high="16" type="uint"/> 2888bf215546Sopenharmony_ci <bitfield name="NSAMP" low="17" high="21" type="uint"/> 2889bf215546Sopenharmony_ci <bitfield name="NIBO" low="22" high="28" type="uint"/> 2890bf215546Sopenharmony_ci </bitset> 2891bf215546Sopenharmony_ci 2892bf215546Sopenharmony_ci <bitset name="a6xx_sp_xs_prim_cntl" inline="yes"> 2893bf215546Sopenharmony_ci <!-- # of VS outputs including pos/psize --> 2894bf215546Sopenharmony_ci <bitfield name="OUT" low="0" high="5" type="uint"/> 2895bf215546Sopenharmony_ci <!-- FLAGS_REGID only for GS --> 2896bf215546Sopenharmony_ci <bitfield name="FLAGS_REGID" low="6" high="13" type="a3xx_regid"/> 2897bf215546Sopenharmony_ci </bitset> 2898bf215546Sopenharmony_ci 2899bf215546Sopenharmony_ci <reg32 offset="0xa800" name="SP_VS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"> 2900bf215546Sopenharmony_ci <!-- 2901bf215546Sopenharmony_ci This field actually controls all geometry stages. TCS, TES, and 2902bf215546Sopenharmony_ci GS must have the same mergedregs setting as VS. 2903bf215546Sopenharmony_ci --> 2904bf215546Sopenharmony_ci <bitfield name="MERGEDREGS" pos="20" type="boolean"/> 2905bf215546Sopenharmony_ci <!-- 2906bf215546Sopenharmony_ci Creates a separate preamble-only thread? 2907bf215546Sopenharmony_ci 2908bf215546Sopenharmony_ci Early preamble has the following limitations: 2909bf215546Sopenharmony_ci - Only shared, a1, and consts regs could be used 2910bf215546Sopenharmony_ci (accessing other regs would result in GPU fault); 2911bf215546Sopenharmony_ci - No cat5/cat6, only stc/ldc variants are working; 2912bf215546Sopenharmony_ci - Values writen to shared regs are not accessible by the rest 2913bf215546Sopenharmony_ci of the shader; 2914bf215546Sopenharmony_ci - Instructions before shps are also considered to be a part of 2915bf215546Sopenharmony_ci early preamble; 2916bf215546Sopenharmony_ci 2917bf215546Sopenharmony_ci Note, for all shaders from d3d11 games blob produced preambles 2918bf215546Sopenharmony_ci compatible with early preamble mode. 2919bf215546Sopenharmony_ci --> 2920bf215546Sopenharmony_ci <bitfield name="EARLYPREAMBLE" pos="21" type="boolean"/> 2921bf215546Sopenharmony_ci </reg32> 2922bf215546Sopenharmony_ci <!-- bitmask of true/false conditions for VS brac.N instructions, 2923bf215546Sopenharmony_ci bit N corresponds to brac.N --> 2924bf215546Sopenharmony_ci <reg32 offset="0xa801" name="SP_VS_BRANCH_COND" type="hex"/> 2925bf215546Sopenharmony_ci <!-- # of VS outputs including pos/psize --> 2926bf215546Sopenharmony_ci <reg32 offset="0xa802" name="SP_VS_PRIMITIVE_CNTL" type="a6xx_sp_xs_prim_cntl"/> 2927bf215546Sopenharmony_ci <array offset="0xa803" name="SP_VS_OUT" stride="1" length="16"> 2928bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"> 2929bf215546Sopenharmony_ci <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/> 2930bf215546Sopenharmony_ci <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/> 2931bf215546Sopenharmony_ci <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/> 2932bf215546Sopenharmony_ci <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/> 2933bf215546Sopenharmony_ci </reg32> 2934bf215546Sopenharmony_ci </array> 2935bf215546Sopenharmony_ci <!-- 2936bf215546Sopenharmony_ci Starting with a5xx, position/psize outputs from shader end up in the 2937bf215546Sopenharmony_ci SP_VS_OUT map, with highest OUTLOCn position. (Generally they are 2938bf215546Sopenharmony_ci the last entries too, except when gl_PointCoord is used, blob inserts 2939bf215546Sopenharmony_ci an extra varying after, but with a lower OUTLOC position. If present, 2940bf215546Sopenharmony_ci psize is last, preceded by position. 2941bf215546Sopenharmony_ci --> 2942bf215546Sopenharmony_ci <array offset="0xa813" name="SP_VS_VPC_DST" stride="1" length="8"> 2943bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"> 2944bf215546Sopenharmony_ci <bitfield name="OUTLOC0" low="0" high="7" type="uint"/> 2945bf215546Sopenharmony_ci <bitfield name="OUTLOC1" low="8" high="15" type="uint"/> 2946bf215546Sopenharmony_ci <bitfield name="OUTLOC2" low="16" high="23" type="uint"/> 2947bf215546Sopenharmony_ci <bitfield name="OUTLOC3" low="24" high="31" type="uint"/> 2948bf215546Sopenharmony_ci </reg32> 2949bf215546Sopenharmony_ci </array> 2950bf215546Sopenharmony_ci 2951bf215546Sopenharmony_ci <bitset name="a6xx_sp_xs_pvt_mem_param" inline="yes"> 2952bf215546Sopenharmony_ci <bitfield name="MEMSIZEPERITEM" low="0" high="7" shr="9"> 2953bf215546Sopenharmony_ci <doc>The size of memory that ldp/stp can address.</doc> 2954bf215546Sopenharmony_ci </bitfield> 2955bf215546Sopenharmony_ci <bitfield name="HWSTACKSIZEPERTHREAD" low="24" high="31"> 2956bf215546Sopenharmony_ci <doc> 2957bf215546Sopenharmony_ci Seems to be the same as a3xx. The maximum stack 2958bf215546Sopenharmony_ci size in units of 4 calls, so a call depth of 7 2959bf215546Sopenharmony_ci would result in a value of 2. 2960bf215546Sopenharmony_ci TODO: What's the actual size per call, i.e. the 2961bf215546Sopenharmony_ci size of the PC? a3xx docs say it's 16 bits 2962bf215546Sopenharmony_ci there, but the length register now takes 28 bits 2963bf215546Sopenharmony_ci so it's probably been bumped to 32 bits. 2964bf215546Sopenharmony_ci </doc> 2965bf215546Sopenharmony_ci </bitfield> 2966bf215546Sopenharmony_ci </bitset> 2967bf215546Sopenharmony_ci 2968bf215546Sopenharmony_ci <bitset name="a6xx_sp_xs_pvt_mem_size" inline="yes"> 2969bf215546Sopenharmony_ci <bitfield name="TOTALPVTMEMSIZE" low="0" high="17" shr="12"/> 2970bf215546Sopenharmony_ci <bitfield name="PERWAVEMEMLAYOUT" pos="31" type="boolean"> 2971bf215546Sopenharmony_ci <doc> 2972bf215546Sopenharmony_ci There are four indices used to compute the 2973bf215546Sopenharmony_ci private memory location for an access: 2974bf215546Sopenharmony_ci 2975bf215546Sopenharmony_ci - stp/ldp offset 2976bf215546Sopenharmony_ci - fiber id 2977bf215546Sopenharmony_ci - wavefront id (a swizzled version of what "getwid" returns) 2978bf215546Sopenharmony_ci - SP ID (the same as what "getspid" returns) 2979bf215546Sopenharmony_ci 2980bf215546Sopenharmony_ci The stride for the SP ID is always set by 2981bf215546Sopenharmony_ci TOTALPVTMEMSIZE. In the per-wave layout, the 2982bf215546Sopenharmony_ci indices are used in this order: 2983bf215546Sopenharmony_ci 2984bf215546Sopenharmony_ci - offset % 4 (offset within dword) 2985bf215546Sopenharmony_ci - fiber id 2986bf215546Sopenharmony_ci - offset / 4 2987bf215546Sopenharmony_ci - wavefront id 2988bf215546Sopenharmony_ci - SP ID 2989bf215546Sopenharmony_ci 2990bf215546Sopenharmony_ci and the stride for the wavefront ID is 2991bf215546Sopenharmony_ci MEMSIZEPERITEM, multiplied by 128 (fibers per 2992bf215546Sopenharmony_ci wavefront). In the per-fiber layout, the indices 2993bf215546Sopenharmony_ci are used in this order: 2994bf215546Sopenharmony_ci 2995bf215546Sopenharmony_ci - offset 2996bf215546Sopenharmony_ci - fiber id % 4 2997bf215546Sopenharmony_ci - wavefront id 2998bf215546Sopenharmony_ci - fiber id / 4 2999bf215546Sopenharmony_ci - SP ID 3000bf215546Sopenharmony_ci 3001bf215546Sopenharmony_ci and the stride for the fiber id/wavefront id 3002bf215546Sopenharmony_ci combo is MEMSIZEPERITEM. 3003bf215546Sopenharmony_ci 3004bf215546Sopenharmony_ci Note: Accesses of more than 1 dword do not work 3005bf215546Sopenharmony_ci with per-fiber layout. The blob will fall back 3006bf215546Sopenharmony_ci to per-wave instead. 3007bf215546Sopenharmony_ci </doc> 3008bf215546Sopenharmony_ci </bitfield> 3009bf215546Sopenharmony_ci </bitset> 3010bf215546Sopenharmony_ci 3011bf215546Sopenharmony_ci <bitset name="a6xx_sp_xs_pvt_mem_hw_stack_offset" inline="yes"> 3012bf215546Sopenharmony_ci <doc> 3013bf215546Sopenharmony_ci This seems to be be the equivalent of HWSTACKOFFSET in 3014bf215546Sopenharmony_ci a3xx. The ldp/stp offset formula above isn't affected by 3015bf215546Sopenharmony_ci HWSTACKSIZEPERTHREAD at all, so the HW return address 3016bf215546Sopenharmony_ci stack seems to be after all the normal per-SP private 3017bf215546Sopenharmony_ci memory. 3018bf215546Sopenharmony_ci </doc> 3019bf215546Sopenharmony_ci <bitfield name="OFFSET" low="0" high="18" shr="11"/> 3020bf215546Sopenharmony_ci </bitset> 3021bf215546Sopenharmony_ci 3022bf215546Sopenharmony_ci <reg32 offset="0xa81b" name="SP_VS_OBJ_FIRST_EXEC_OFFSET" type="uint"/> 3023bf215546Sopenharmony_ci <reg64 offset="0xa81c" name="SP_VS_OBJ_START" type="address" align="32"/> 3024bf215546Sopenharmony_ci <reg32 offset="0xa81e" name="SP_VS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/> 3025bf215546Sopenharmony_ci <reg64 offset="0xa81f" name="SP_VS_PVT_MEM_ADDR" type="waddress" align="32"/> 3026bf215546Sopenharmony_ci <reg32 offset="0xa821" name="SP_VS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/> 3027bf215546Sopenharmony_ci <reg32 offset="0xa822" name="SP_VS_TEX_COUNT" low="0" high="7" type="uint"/> 3028bf215546Sopenharmony_ci <reg32 offset="0xa823" name="SP_VS_CONFIG" type="a6xx_sp_xs_config"/> 3029bf215546Sopenharmony_ci <reg32 offset="0xa824" name="SP_VS_INSTRLEN" low="0" high="27" type="uint"/> 3030bf215546Sopenharmony_ci <reg32 offset="0xa825" name="SP_VS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/> 3031bf215546Sopenharmony_ci 3032bf215546Sopenharmony_ci <reg32 offset="0xa830" name="SP_HS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"> 3033bf215546Sopenharmony_ci <!-- There is no mergedregs bit, that comes from the VS. --> 3034bf215546Sopenharmony_ci <bitfield name="EARLYPREAMBLE" pos="20" type="boolean"/> 3035bf215546Sopenharmony_ci </reg32> 3036bf215546Sopenharmony_ci <!-- 3037bf215546Sopenharmony_ci Total size of local storage in dwords divided by the wave size. 3038bf215546Sopenharmony_ci The maximum value is 64. With the wave size being always 64 for HS, 3039bf215546Sopenharmony_ci the maximum size of local storage should be: 3040bf215546Sopenharmony_ci 64 (wavesize) * 64 (SP_HS_WAVE_INPUT_SIZE) * 4 = 16k 3041bf215546Sopenharmony_ci --> 3042bf215546Sopenharmony_ci <reg32 offset="0xa831" name="SP_HS_WAVE_INPUT_SIZE" low="0" high="7" type="uint"/> 3043bf215546Sopenharmony_ci <reg32 offset="0xa832" name="SP_HS_BRANCH_COND" type="hex"/> 3044bf215546Sopenharmony_ci 3045bf215546Sopenharmony_ci <!-- TODO: exact same layout as 0xa81b-0xa825 --> 3046bf215546Sopenharmony_ci <reg32 offset="0xa833" name="SP_HS_OBJ_FIRST_EXEC_OFFSET" type="uint"/> 3047bf215546Sopenharmony_ci <reg64 offset="0xa834" name="SP_HS_OBJ_START" type="address" align="32"/> 3048bf215546Sopenharmony_ci <reg32 offset="0xa836" name="SP_HS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/> 3049bf215546Sopenharmony_ci <reg64 offset="0xa837" name="SP_HS_PVT_MEM_ADDR" type="waddress" align="32"/> 3050bf215546Sopenharmony_ci <reg32 offset="0xa839" name="SP_HS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/> 3051bf215546Sopenharmony_ci <reg32 offset="0xa83a" name="SP_HS_TEX_COUNT" low="0" high="7" type="uint"/> 3052bf215546Sopenharmony_ci <reg32 offset="0xa83b" name="SP_HS_CONFIG" type="a6xx_sp_xs_config"/> 3053bf215546Sopenharmony_ci <reg32 offset="0xa83c" name="SP_HS_INSTRLEN" low="0" high="27" type="uint"/> 3054bf215546Sopenharmony_ci <reg32 offset="0xa83d" name="SP_HS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/> 3055bf215546Sopenharmony_ci 3056bf215546Sopenharmony_ci <reg32 offset="0xa840" name="SP_DS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"> 3057bf215546Sopenharmony_ci <!-- There is no mergedregs bit, that comes from the VS. --> 3058bf215546Sopenharmony_ci <bitfield name="EARLYPREAMBLE" pos="20" type="boolean"/> 3059bf215546Sopenharmony_ci </reg32> 3060bf215546Sopenharmony_ci <reg32 offset="0xa841" name="SP_DS_BRANCH_COND" type="hex"/> 3061bf215546Sopenharmony_ci 3062bf215546Sopenharmony_ci <!-- TODO: exact same layout as 0xa802-0xa81a --> 3063bf215546Sopenharmony_ci <reg32 offset="0xa842" name="SP_DS_PRIMITIVE_CNTL" type="a6xx_sp_xs_prim_cntl"/> 3064bf215546Sopenharmony_ci <array offset="0xa843" name="SP_DS_OUT" stride="1" length="16"> 3065bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"> 3066bf215546Sopenharmony_ci <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/> 3067bf215546Sopenharmony_ci <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/> 3068bf215546Sopenharmony_ci <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/> 3069bf215546Sopenharmony_ci <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/> 3070bf215546Sopenharmony_ci </reg32> 3071bf215546Sopenharmony_ci </array> 3072bf215546Sopenharmony_ci <array offset="0xa853" name="SP_DS_VPC_DST" stride="1" length="8"> 3073bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"> 3074bf215546Sopenharmony_ci <bitfield name="OUTLOC0" low="0" high="7" type="uint"/> 3075bf215546Sopenharmony_ci <bitfield name="OUTLOC1" low="8" high="15" type="uint"/> 3076bf215546Sopenharmony_ci <bitfield name="OUTLOC2" low="16" high="23" type="uint"/> 3077bf215546Sopenharmony_ci <bitfield name="OUTLOC3" low="24" high="31" type="uint"/> 3078bf215546Sopenharmony_ci </reg32> 3079bf215546Sopenharmony_ci </array> 3080bf215546Sopenharmony_ci 3081bf215546Sopenharmony_ci <!-- TODO: exact same layout as 0xa81b-0xa825 --> 3082bf215546Sopenharmony_ci <reg32 offset="0xa85b" name="SP_DS_OBJ_FIRST_EXEC_OFFSET" type="uint"/> 3083bf215546Sopenharmony_ci <reg64 offset="0xa85c" name="SP_DS_OBJ_START" type="address" align="32"/> 3084bf215546Sopenharmony_ci <reg32 offset="0xa85e" name="SP_DS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/> 3085bf215546Sopenharmony_ci <reg64 offset="0xa85f" name="SP_DS_PVT_MEM_ADDR" type="waddress" align="32"/> 3086bf215546Sopenharmony_ci <reg32 offset="0xa861" name="SP_DS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/> 3087bf215546Sopenharmony_ci <reg32 offset="0xa862" name="SP_DS_TEX_COUNT" low="0" high="7" type="uint"/> 3088bf215546Sopenharmony_ci <reg32 offset="0xa863" name="SP_DS_CONFIG" type="a6xx_sp_xs_config"/> 3089bf215546Sopenharmony_ci <reg32 offset="0xa864" name="SP_DS_INSTRLEN" low="0" high="27" type="uint"/> 3090bf215546Sopenharmony_ci <reg32 offset="0xa865" name="SP_DS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/> 3091bf215546Sopenharmony_ci 3092bf215546Sopenharmony_ci <reg32 offset="0xa870" name="SP_GS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"> 3093bf215546Sopenharmony_ci <!-- There is no mergedregs bit, that comes from the VS. --> 3094bf215546Sopenharmony_ci <bitfield name="EARLYPREAMBLE" pos="20" type="boolean"/> 3095bf215546Sopenharmony_ci </reg32> 3096bf215546Sopenharmony_ci <reg32 offset="0xa871" name="SP_GS_PRIM_SIZE" low="0" high="7" type="uint"> 3097bf215546Sopenharmony_ci <doc> 3098bf215546Sopenharmony_ci Normally the size of the output of the last stage in 3099bf215546Sopenharmony_ci dwords. It should be programmed as follows: 3100bf215546Sopenharmony_ci 3101bf215546Sopenharmony_ci size less than 63 - size 3102bf215546Sopenharmony_ci size of 63 (?) or 64 - 63 3103bf215546Sopenharmony_ci size greater than 64 - 64 3104bf215546Sopenharmony_ci 3105bf215546Sopenharmony_ci What to program when the size is 61-63 is a guess, but 3106bf215546Sopenharmony_ci both the blob and ir3 align the size to 4 dword's so it 3107bf215546Sopenharmony_ci doesn't matter in practice. 3108bf215546Sopenharmony_ci </doc> 3109bf215546Sopenharmony_ci </reg32> 3110bf215546Sopenharmony_ci <reg32 offset="0xa872" name="SP_GS_BRANCH_COND" type="hex"/> 3111bf215546Sopenharmony_ci 3112bf215546Sopenharmony_ci <!-- TODO: exact same layout as 0xa802-0xa81a --> 3113bf215546Sopenharmony_ci <reg32 offset="0xa873" name="SP_GS_PRIMITIVE_CNTL" type="a6xx_sp_xs_prim_cntl"/> 3114bf215546Sopenharmony_ci <array offset="0xa874" name="SP_GS_OUT" stride="1" length="16"> 3115bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"> 3116bf215546Sopenharmony_ci <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/> 3117bf215546Sopenharmony_ci <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/> 3118bf215546Sopenharmony_ci <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/> 3119bf215546Sopenharmony_ci <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/> 3120bf215546Sopenharmony_ci </reg32> 3121bf215546Sopenharmony_ci </array> 3122bf215546Sopenharmony_ci 3123bf215546Sopenharmony_ci <array offset="0xa884" name="SP_GS_VPC_DST" stride="1" length="8"> 3124bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"> 3125bf215546Sopenharmony_ci <bitfield name="OUTLOC0" low="0" high="7" type="uint"/> 3126bf215546Sopenharmony_ci <bitfield name="OUTLOC1" low="8" high="15" type="uint"/> 3127bf215546Sopenharmony_ci <bitfield name="OUTLOC2" low="16" high="23" type="uint"/> 3128bf215546Sopenharmony_ci <bitfield name="OUTLOC3" low="24" high="31" type="uint"/> 3129bf215546Sopenharmony_ci </reg32> 3130bf215546Sopenharmony_ci </array> 3131bf215546Sopenharmony_ci 3132bf215546Sopenharmony_ci <!-- TODO: exact same layout as 0xa81b-0xa825 --> 3133bf215546Sopenharmony_ci <reg32 offset="0xa88c" name="SP_GS_OBJ_FIRST_EXEC_OFFSET" type="uint"/> 3134bf215546Sopenharmony_ci <reg64 offset="0xa88d" name="SP_GS_OBJ_START" type="address" align="32"/> 3135bf215546Sopenharmony_ci <reg32 offset="0xa88f" name="SP_GS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/> 3136bf215546Sopenharmony_ci <reg64 offset="0xa890" name="SP_GS_PVT_MEM_ADDR" type="waddress" align="32"/> 3137bf215546Sopenharmony_ci <reg32 offset="0xa892" name="SP_GS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/> 3138bf215546Sopenharmony_ci <reg32 offset="0xa893" name="SP_GS_TEX_COUNT" low="0" high="7" type="uint"/> 3139bf215546Sopenharmony_ci <reg32 offset="0xa894" name="SP_GS_CONFIG" type="a6xx_sp_xs_config"/> 3140bf215546Sopenharmony_ci <reg32 offset="0xa895" name="SP_GS_INSTRLEN" low="0" high="27" type="uint"/> 3141bf215546Sopenharmony_ci <reg32 offset="0xa896" name="SP_GS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/> 3142bf215546Sopenharmony_ci 3143bf215546Sopenharmony_ci <reg64 offset="0xa8a0" name="SP_VS_TEX_SAMP" type="address" align="16"/> 3144bf215546Sopenharmony_ci <reg64 offset="0xa8a2" name="SP_HS_TEX_SAMP" type="address" align="16"/> 3145bf215546Sopenharmony_ci <reg64 offset="0xa8a4" name="SP_DS_TEX_SAMP" type="address" align="16"/> 3146bf215546Sopenharmony_ci <reg64 offset="0xa8a6" name="SP_GS_TEX_SAMP" type="address" align="16"/> 3147bf215546Sopenharmony_ci <reg64 offset="0xa8a8" name="SP_VS_TEX_CONST" type="address" align="64"/> 3148bf215546Sopenharmony_ci <reg64 offset="0xa8aa" name="SP_HS_TEX_CONST" type="address" align="64"/> 3149bf215546Sopenharmony_ci <reg64 offset="0xa8ac" name="SP_DS_TEX_CONST" type="address" align="64"/> 3150bf215546Sopenharmony_ci <reg64 offset="0xa8ae" name="SP_GS_TEX_CONST" type="address" align="64"/> 3151bf215546Sopenharmony_ci 3152bf215546Sopenharmony_ci <!-- TODO: 4 unknown bool registers 0xa8c0-0xa8c3 --> 3153bf215546Sopenharmony_ci 3154bf215546Sopenharmony_ci <reg32 offset="0xa980" name="SP_FS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"> 3155bf215546Sopenharmony_ci <bitfield name="THREADSIZE" pos="20" type="a6xx_threadsize"/> 3156bf215546Sopenharmony_ci <bitfield name="UNK21" pos="21" type="boolean"/> 3157bf215546Sopenharmony_ci <bitfield name="VARYING" pos="22" type="boolean"/> 3158bf215546Sopenharmony_ci <bitfield name="DIFF_FINE" pos="23" type="boolean"/> 3159bf215546Sopenharmony_ci <!-- note: vk blob uses bit24 --> 3160bf215546Sopenharmony_ci <bitfield name="UNK24" pos="24" type="boolean"/> 3161bf215546Sopenharmony_ci <bitfield name="UNK25" pos="25" type="boolean"/> 3162bf215546Sopenharmony_ci <bitfield name="PIXLODENABLE" pos="26" type="boolean"/> 3163bf215546Sopenharmony_ci <bitfield name="UNK27" pos="27" type="boolean"/> 3164bf215546Sopenharmony_ci <bitfield name="EARLYPREAMBLE" pos="28" type="boolean"/> 3165bf215546Sopenharmony_ci <bitfield name="MERGEDREGS" pos="31" type="boolean"/> 3166bf215546Sopenharmony_ci </reg32> 3167bf215546Sopenharmony_ci <reg32 offset="0xa981" name="SP_FS_BRANCH_COND" type="hex"/> 3168bf215546Sopenharmony_ci <reg32 offset="0xa982" name="SP_FS_OBJ_FIRST_EXEC_OFFSET" type="uint"/> 3169bf215546Sopenharmony_ci <reg64 offset="0xa983" name="SP_FS_OBJ_START" type="address" align="32"/> 3170bf215546Sopenharmony_ci <reg32 offset="0xa985" name="SP_FS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/> 3171bf215546Sopenharmony_ci <reg64 offset="0xa986" name="SP_FS_PVT_MEM_ADDR" type="waddress" align="32"/> 3172bf215546Sopenharmony_ci <reg32 offset="0xa988" name="SP_FS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/> 3173bf215546Sopenharmony_ci 3174bf215546Sopenharmony_ci <reg32 offset="0xa989" name="SP_BLEND_CNTL"> 3175bf215546Sopenharmony_ci <!-- per-mrt enable bit --> 3176bf215546Sopenharmony_ci <bitfield name="ENABLE_BLEND" low="0" high="7"/> 3177bf215546Sopenharmony_ci <bitfield name="UNK8" pos="8" type="boolean"/> 3178bf215546Sopenharmony_ci <bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/> 3179bf215546Sopenharmony_ci <bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/> 3180bf215546Sopenharmony_ci </reg32> 3181bf215546Sopenharmony_ci <reg32 offset="0xa98a" name="SP_SRGB_CNTL"> 3182bf215546Sopenharmony_ci <!-- Same as RB_SRGB_CNTL --> 3183bf215546Sopenharmony_ci <bitfield name="SRGB_MRT0" pos="0" type="boolean"/> 3184bf215546Sopenharmony_ci <bitfield name="SRGB_MRT1" pos="1" type="boolean"/> 3185bf215546Sopenharmony_ci <bitfield name="SRGB_MRT2" pos="2" type="boolean"/> 3186bf215546Sopenharmony_ci <bitfield name="SRGB_MRT3" pos="3" type="boolean"/> 3187bf215546Sopenharmony_ci <bitfield name="SRGB_MRT4" pos="4" type="boolean"/> 3188bf215546Sopenharmony_ci <bitfield name="SRGB_MRT5" pos="5" type="boolean"/> 3189bf215546Sopenharmony_ci <bitfield name="SRGB_MRT6" pos="6" type="boolean"/> 3190bf215546Sopenharmony_ci <bitfield name="SRGB_MRT7" pos="7" type="boolean"/> 3191bf215546Sopenharmony_ci </reg32> 3192bf215546Sopenharmony_ci <reg32 offset="0xa98b" name="SP_FS_RENDER_COMPONENTS"> 3193bf215546Sopenharmony_ci <bitfield name="RT0" low="0" high="3"/> 3194bf215546Sopenharmony_ci <bitfield name="RT1" low="4" high="7"/> 3195bf215546Sopenharmony_ci <bitfield name="RT2" low="8" high="11"/> 3196bf215546Sopenharmony_ci <bitfield name="RT3" low="12" high="15"/> 3197bf215546Sopenharmony_ci <bitfield name="RT4" low="16" high="19"/> 3198bf215546Sopenharmony_ci <bitfield name="RT5" low="20" high="23"/> 3199bf215546Sopenharmony_ci <bitfield name="RT6" low="24" high="27"/> 3200bf215546Sopenharmony_ci <bitfield name="RT7" low="28" high="31"/> 3201bf215546Sopenharmony_ci </reg32> 3202bf215546Sopenharmony_ci <reg32 offset="0xa98c" name="SP_FS_OUTPUT_CNTL0"> 3203bf215546Sopenharmony_ci <bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/> 3204bf215546Sopenharmony_ci <bitfield name="DEPTH_REGID" low="8" high="15" type="a3xx_regid"/> 3205bf215546Sopenharmony_ci <bitfield name="SAMPMASK_REGID" low="16" high="23" type="a3xx_regid"/> 3206bf215546Sopenharmony_ci <bitfield name="STENCILREF_REGID" low="24" high="31" type="a3xx_regid"/> 3207bf215546Sopenharmony_ci </reg32> 3208bf215546Sopenharmony_ci <reg32 offset="0xa98d" name="SP_FS_OUTPUT_CNTL1"> 3209bf215546Sopenharmony_ci <bitfield name="MRT" low="0" high="3" type="uint"/> 3210bf215546Sopenharmony_ci </reg32> 3211bf215546Sopenharmony_ci 3212bf215546Sopenharmony_ci <array offset="0xa98e" name="SP_FS_OUTPUT" stride="1" length="8"> 3213bf215546Sopenharmony_ci <doc>per MRT</doc> 3214bf215546Sopenharmony_ci <reg32 offset="0x0" name="REG"> 3215bf215546Sopenharmony_ci <bitfield name="REGID" low="0" high="7" type="a3xx_regid"/> 3216bf215546Sopenharmony_ci <bitfield name="HALF_PRECISION" pos="8" type="boolean"/> 3217bf215546Sopenharmony_ci </reg32> 3218bf215546Sopenharmony_ci </array> 3219bf215546Sopenharmony_ci 3220bf215546Sopenharmony_ci <array offset="0xa996" name="SP_FS_MRT" stride="1" length="8"> 3221bf215546Sopenharmony_ci <reg32 offset="0" name="REG"> 3222bf215546Sopenharmony_ci <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/> 3223bf215546Sopenharmony_ci <bitfield name="COLOR_SINT" pos="8" type="boolean"/> 3224bf215546Sopenharmony_ci <bitfield name="COLOR_UINT" pos="9" type="boolean"/> 3225bf215546Sopenharmony_ci <bitfield name="UNK10" pos="10" type="boolean"/> 3226bf215546Sopenharmony_ci </reg32> 3227bf215546Sopenharmony_ci </array> 3228bf215546Sopenharmony_ci 3229bf215546Sopenharmony_ci <reg32 offset="0xa99e" name="SP_FS_PREFETCH_CNTL"> 3230bf215546Sopenharmony_ci <!-- unknown bits 0x7fc0 always set --> 3231bf215546Sopenharmony_ci <bitfield name="COUNT" low="0" high="2" type="uint"/> 3232bf215546Sopenharmony_ci <!-- b3 set if no other use of varyings in the shader itself.. maybe alternative to dummy bary.f? --> 3233bf215546Sopenharmony_ci <bitfield name="UNK3" pos="3" type="boolean"/> 3234bf215546Sopenharmony_ci <bitfield name="UNK4" low="4" high="11" type="a3xx_regid"/> 3235bf215546Sopenharmony_ci <bitfield name="UNK12" low="12" high="14"/> 3236bf215546Sopenharmony_ci </reg32> 3237bf215546Sopenharmony_ci <array offset="0xa99f" name="SP_FS_PREFETCH" stride="1" length="4"> 3238bf215546Sopenharmony_ci <reg32 offset="0" name="CMD"> 3239bf215546Sopenharmony_ci <bitfield name="SRC" low="0" high="6" type="uint"/> 3240bf215546Sopenharmony_ci <bitfield name="SAMP_ID" low="7" high="10" type="uint"/> 3241bf215546Sopenharmony_ci <bitfield name="TEX_ID" low="11" high="15" type="uint"/> 3242bf215546Sopenharmony_ci <bitfield name="DST" low="16" high="21" type="a3xx_regid"/> 3243bf215546Sopenharmony_ci <bitfield name="WRMASK" low="22" high="25" type="hex"/> 3244bf215546Sopenharmony_ci <bitfield name="HALF" pos="26" type="boolean"/> 3245bf215546Sopenharmony_ci <!-- 3246bf215546Sopenharmony_ci CMD seems always 0x4?? 3d, textureProj, textureLod seem to 3247bf215546Sopenharmony_ci skip pre-fetch.. TODO test texelFetch 3248bf215546Sopenharmony_ci CMD is 0x6 when the Vulkan mode is enabled, and 3249bf215546Sopenharmony_ci TEX_ID/SAMP_ID refer to the descriptor sets while the 3250bf215546Sopenharmony_ci indices come from SP_FS_BINDLESS_PREFETCH[n] 3251bf215546Sopenharmony_ci --> 3252bf215546Sopenharmony_ci <bitfield name="CMD" low="27" high="31"/> 3253bf215546Sopenharmony_ci </reg32> 3254bf215546Sopenharmony_ci </array> 3255bf215546Sopenharmony_ci <array offset="0xa9a3" name="SP_FS_BINDLESS_PREFETCH" stride="1" length="4"> 3256bf215546Sopenharmony_ci <reg32 offset="0" name="CMD"> 3257bf215546Sopenharmony_ci <bitfield name="SAMP_ID" low="0" high="15" type="uint"/> 3258bf215546Sopenharmony_ci <bitfield name="TEX_ID" low="16" high="31" type="uint"/> 3259bf215546Sopenharmony_ci </reg32> 3260bf215546Sopenharmony_ci </array> 3261bf215546Sopenharmony_ci <reg32 offset="0xa9a7" name="SP_FS_TEX_COUNT" low="0" high="7" type="uint"/> 3262bf215546Sopenharmony_ci <reg32 offset="0xa9a8" name="SP_UNKNOWN_A9A8" low="0" high="16" /> <!-- always 0x0 ? --> 3263bf215546Sopenharmony_ci <reg32 offset="0xa9a9" name="SP_FS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/> 3264bf215546Sopenharmony_ci 3265bf215546Sopenharmony_ci <!-- TODO: unknown bool register at 0xa9aa, likely same as 0xa8c0-0xa8c3 but for FS --> 3266bf215546Sopenharmony_ci 3267bf215546Sopenharmony_ci 3268bf215546Sopenharmony_ci 3269bf215546Sopenharmony_ci 3270bf215546Sopenharmony_ci <reg32 offset="0xa9b0" name="SP_CS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"> 3271bf215546Sopenharmony_ci <bitfield name="THREADSIZE" pos="20" type="a6xx_threadsize"/> 3272bf215546Sopenharmony_ci <!-- seems to make SP use less concurrent threads when possible? --> 3273bf215546Sopenharmony_ci <bitfield name="UNK21" pos="21" type="boolean"/> 3274bf215546Sopenharmony_ci <!-- has a small impact on performance, not clear what it does --> 3275bf215546Sopenharmony_ci <bitfield name="UNK22" pos="22" type="boolean"/> 3276bf215546Sopenharmony_ci <bitfield name="EARLYPREAMBLE" pos="23" type="boolean"/> 3277bf215546Sopenharmony_ci <bitfield name="MERGEDREGS" pos="31" type="boolean"/> 3278bf215546Sopenharmony_ci </reg32> 3279bf215546Sopenharmony_ci 3280bf215546Sopenharmony_ci <!-- set for compute shaders --> 3281bf215546Sopenharmony_ci <reg32 offset="0xa9b1" name="SP_CS_UNKNOWN_A9B1"> 3282bf215546Sopenharmony_ci <bitfield name="SHARED_SIZE" low="0" high="4" type="uint"> 3283bf215546Sopenharmony_ci <doc> 3284bf215546Sopenharmony_ci If 0 - all 32k of shared storage is enabled, otherwise 3285bf215546Sopenharmony_ci (SHARED_SIZE + 1) * 1k is enabled. 3286bf215546Sopenharmony_ci The ldl/stl offset seems to be rewritten to 0 when it is beyond 3287bf215546Sopenharmony_ci this limit. This is different from ldlw/stlw, which wraps at 3288bf215546Sopenharmony_ci 64k (and has 36k of storage on A640 - reads between 36k-64k 3289bf215546Sopenharmony_ci always return 0) 3290bf215546Sopenharmony_ci </doc> 3291bf215546Sopenharmony_ci </bitfield> 3292bf215546Sopenharmony_ci <bitfield name="UNK5" pos="5" type="boolean"/> 3293bf215546Sopenharmony_ci <!-- always 1 ? --> 3294bf215546Sopenharmony_ci <bitfield name="UNK6" pos="6" type="boolean"/> 3295bf215546Sopenharmony_ci </reg32> 3296bf215546Sopenharmony_ci <reg32 offset="0xa9b2" name="SP_CS_BRANCH_COND" type="hex"/> 3297bf215546Sopenharmony_ci <reg32 offset="0xa9b3" name="SP_CS_OBJ_FIRST_EXEC_OFFSET" type="uint"/> 3298bf215546Sopenharmony_ci <reg64 offset="0xa9b4" name="SP_CS_OBJ_START" type="address" align="32"/> 3299bf215546Sopenharmony_ci <reg32 offset="0xa9b6" name="SP_CS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/> 3300bf215546Sopenharmony_ci <reg64 offset="0xa9b7" name="SP_CS_PVT_MEM_ADDR" align="32"/> 3301bf215546Sopenharmony_ci <reg32 offset="0xa9b9" name="SP_CS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/> 3302bf215546Sopenharmony_ci <reg32 offset="0xa9ba" name="SP_CS_TEX_COUNT" low="0" high="7" type="uint"/> 3303bf215546Sopenharmony_ci <reg32 offset="0xa9bb" name="SP_CS_CONFIG" type="a6xx_sp_xs_config"/> 3304bf215546Sopenharmony_ci <reg32 offset="0xa9bc" name="SP_CS_INSTRLEN" low="0" high="27" type="uint"/> 3305bf215546Sopenharmony_ci <reg32 offset="0xa9bd" name="SP_CS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/> 3306bf215546Sopenharmony_ci 3307bf215546Sopenharmony_ci <!-- new in a6xx gen4, matches HLSQ_CS_CNTL_0 --> 3308bf215546Sopenharmony_ci <reg32 offset="0xa9c2" name="SP_CS_CNTL_0"> 3309bf215546Sopenharmony_ci <bitfield name="WGIDCONSTID" low="0" high="7" type="a3xx_regid"/> 3310bf215546Sopenharmony_ci <bitfield name="WGSIZECONSTID" low="8" high="15" type="a3xx_regid"/> 3311bf215546Sopenharmony_ci <bitfield name="WGOFFSETCONSTID" low="16" high="23" type="a3xx_regid"/> 3312bf215546Sopenharmony_ci <bitfield name="LOCALIDREGID" low="24" high="31" type="a3xx_regid"/> 3313bf215546Sopenharmony_ci </reg32> 3314bf215546Sopenharmony_ci <!-- new in a6xx gen4, matches HLSQ_CS_CNTL_1 --> 3315bf215546Sopenharmony_ci <reg32 offset="0xa9c3" name="SP_CS_CNTL_1"> 3316bf215546Sopenharmony_ci <!-- gl_LocalInvocationIndex --> 3317bf215546Sopenharmony_ci <bitfield name="LINEARLOCALIDREGID" low="0" high="7" type="a3xx_regid"/> 3318bf215546Sopenharmony_ci <!-- a650 has 6 "SP cores" (but 3 "SP"). this makes it use only 3319bf215546Sopenharmony_ci one of those 6 "SP cores" --> 3320bf215546Sopenharmony_ci <bitfield name="SINGLE_SP_CORE" pos="8" type="boolean"/> 3321bf215546Sopenharmony_ci <!-- Must match SP_CS_CTRL --> 3322bf215546Sopenharmony_ci <bitfield name="THREADSIZE" pos="9" type="a6xx_threadsize"/> 3323bf215546Sopenharmony_ci <!-- 1 thread per wave (ignored if bit9 set) --> 3324bf215546Sopenharmony_ci <bitfield name="THREADSIZE_SCALAR" pos="10" type="boolean"/> 3325bf215546Sopenharmony_ci </reg32> 3326bf215546Sopenharmony_ci 3327bf215546Sopenharmony_ci <!-- TODO: two 64kb aligned addresses at a9d0/a9d2 --> 3328bf215546Sopenharmony_ci 3329bf215546Sopenharmony_ci <reg64 offset="0xa9e0" name="SP_FS_TEX_SAMP" type="address" align="16"/> 3330bf215546Sopenharmony_ci <reg64 offset="0xa9e2" name="SP_CS_TEX_SAMP" type="address" align="16"/> 3331bf215546Sopenharmony_ci <reg64 offset="0xa9e4" name="SP_FS_TEX_CONST" type="address" align="64"/> 3332bf215546Sopenharmony_ci <reg64 offset="0xa9e6" name="SP_CS_TEX_CONST" type="address" align="64"/> 3333bf215546Sopenharmony_ci 3334bf215546Sopenharmony_ci <array offset="0xa9e8" name="SP_CS_BINDLESS_BASE" stride="2" length="5"> 3335bf215546Sopenharmony_ci <!-- TODO: probably align=64 with 6 flags bits in the low bits ? --> 3336bf215546Sopenharmony_ci <reg64 offset="0" name="ADDR" type="address"/> 3337bf215546Sopenharmony_ci </array> 3338bf215546Sopenharmony_ci 3339bf215546Sopenharmony_ci <!-- 3340bf215546Sopenharmony_ci IBO state for compute shader: 3341bf215546Sopenharmony_ci --> 3342bf215546Sopenharmony_ci <reg64 offset="0xa9f2" name="SP_CS_IBO" type="address" align="16"/> 3343bf215546Sopenharmony_ci <reg32 offset="0xaa00" name="SP_CS_IBO_COUNT" low="0" high="6" type="uint"/> 3344bf215546Sopenharmony_ci 3345bf215546Sopenharmony_ci <!-- 3346bf215546Sopenharmony_ci This enum is probably similar in purpose to SNORMMODE on a3xx, 3347bf215546Sopenharmony_ci minus the snorm stuff, i.e. it controls what happens with an 3348bf215546Sopenharmony_ci out-of-bounds isam/isamm. GL and Vulkan robustness require us to 3349bf215546Sopenharmony_ci return 0 on out-of-bound textureFetch(). 3350bf215546Sopenharmony_ci --> 3351bf215546Sopenharmony_ci <enum name="a6xx_isam_mode"> 3352bf215546Sopenharmony_ci <value value="0x2" name="ISAMMODE_GL"/> 3353bf215546Sopenharmony_ci </enum> 3354bf215546Sopenharmony_ci 3355bf215546Sopenharmony_ci <reg32 offset="0xab00" name="SP_MODE_CONTROL"> 3356bf215546Sopenharmony_ci <!-- 3357bf215546Sopenharmony_ci When set, half register loads from the constant file will 3358bf215546Sopenharmony_ci load a 32-bit value (so hc0.y loads the same value as c0.y) 3359bf215546Sopenharmony_ci and implicitly convert it to 16b (f2f16, or u2u16, based on 3360bf215546Sopenharmony_ci operand type). When unset, half register loads from the 3361bf215546Sopenharmony_ci constant file will load 16 bits from the packed constant 3362bf215546Sopenharmony_ci file (so hc0.y loads the top 16 bits of the value of c0.x) 3363bf215546Sopenharmony_ci --> 3364bf215546Sopenharmony_ci <bitfield name="CONSTANT_DEMOTION_ENABLE" pos="0" type="boolean"/> 3365bf215546Sopenharmony_ci <bitfield name="ISAMMODE" low="1" high="2" type="a6xx_isam_mode"/> 3366bf215546Sopenharmony_ci <bitfield name="SHARED_CONSTS_ENABLE" pos="3" type="boolean"/> <!-- see HLSQ_SHARED_CONSTS --> 3367bf215546Sopenharmony_ci </reg32> 3368bf215546Sopenharmony_ci 3369bf215546Sopenharmony_ci <reg32 offset="0xab04" name="SP_FS_CONFIG" type="a6xx_sp_xs_config"/> 3370bf215546Sopenharmony_ci <reg32 offset="0xab05" name="SP_FS_INSTRLEN" low="0" high="27" type="uint"/> 3371bf215546Sopenharmony_ci 3372bf215546Sopenharmony_ci <array offset="0xab10" name="SP_BINDLESS_BASE" stride="2" length="5"> 3373bf215546Sopenharmony_ci <!-- TODO: probably align=64 with 6 flags bits in the low bits? --> 3374bf215546Sopenharmony_ci <reg64 offset="0" name="ADDR" type="address"/> 3375bf215546Sopenharmony_ci </array> 3376bf215546Sopenharmony_ci 3377bf215546Sopenharmony_ci <!-- 3378bf215546Sopenharmony_ci Combined IBO state for 3d pipe, used for Image and SSBO write/atomic 3379bf215546Sopenharmony_ci instructions VS/HS/DS/GS/FS. See SP_CS_IBO_* for compute shaders. 3380bf215546Sopenharmony_ci --> 3381bf215546Sopenharmony_ci <reg64 offset="0xab1a" name="SP_IBO" type="address" align="16"/> 3382bf215546Sopenharmony_ci <reg32 offset="0xab20" name="SP_IBO_COUNT" low="0" high="6" type="uint"/> 3383bf215546Sopenharmony_ci 3384bf215546Sopenharmony_ci <reg32 offset="0xacc0" name="SP_2D_DST_FORMAT"> 3385bf215546Sopenharmony_ci <bitfield name="NORM" pos="0" type="boolean"/> 3386bf215546Sopenharmony_ci <bitfield name="SINT" pos="1" type="boolean"/> 3387bf215546Sopenharmony_ci <bitfield name="UINT" pos="2" type="boolean"/> 3388bf215546Sopenharmony_ci <!-- looks like HW only cares about the base type of this format, 3389bf215546Sopenharmony_ci which matches the ifmt? --> 3390bf215546Sopenharmony_ci <bitfield name="COLOR_FORMAT" low="3" high="10" type="a6xx_format"/> 3391bf215546Sopenharmony_ci <!-- set when ifmt is R2D_UNORM8_SRGB --> 3392bf215546Sopenharmony_ci <bitfield name="SRGB" pos="11" type="boolean"/> 3393bf215546Sopenharmony_ci <!-- some sort of channel mask, not sure what it is for --> 3394bf215546Sopenharmony_ci <bitfield name="MASK" low="12" high="15"/> 3395bf215546Sopenharmony_ci </reg32> 3396bf215546Sopenharmony_ci 3397bf215546Sopenharmony_ci <reg32 offset="0xae00" name="SP_UNKNOWN_AE00"/> 3398bf215546Sopenharmony_ci <reg32 offset="0xae01" name="SP_ADDR_MODE_CNTL" pos="0" type="a5xx_address_mode"/> 3399bf215546Sopenharmony_ci <reg32 offset="0xae02" name="SP_NC_MODE_CNTL"> 3400bf215546Sopenharmony_ci <!-- TODO: valid bits 0x3c3f, see kernel --> 3401bf215546Sopenharmony_ci </reg32> 3402bf215546Sopenharmony_ci <reg32 offset="0xae03" name="SP_CHICKEN_BITS"/> 3403bf215546Sopenharmony_ci <reg32 offset="0xae04" name="SP_FLOAT_CNTL"> 3404bf215546Sopenharmony_ci <bitfield name="F16_NO_INF" pos="3" type="boolean"/> 3405bf215546Sopenharmony_ci </reg32> 3406bf215546Sopenharmony_ci 3407bf215546Sopenharmony_ci <reg32 offset="0xae0f" name="SP_PERFCTR_ENABLE"> 3408bf215546Sopenharmony_ci <!-- some perfcntrs are affected by a per-stage enable bit 3409bf215546Sopenharmony_ci (PERF_SP_ALU_WORKING_CYCLES for example) 3410bf215546Sopenharmony_ci TODO: verify position of HS/DS/GS bits --> 3411bf215546Sopenharmony_ci <bitfield name="VS" pos="0" type="boolean"/> 3412bf215546Sopenharmony_ci <bitfield name="HS" pos="1" type="boolean"/> 3413bf215546Sopenharmony_ci <bitfield name="DS" pos="2" type="boolean"/> 3414bf215546Sopenharmony_ci <bitfield name="GS" pos="3" type="boolean"/> 3415bf215546Sopenharmony_ci <bitfield name="FS" pos="4" type="boolean"/> 3416bf215546Sopenharmony_ci <bitfield name="CS" pos="5" type="boolean"/> 3417bf215546Sopenharmony_ci </reg32> 3418bf215546Sopenharmony_ci <array offset="0xae10" name="SP_PERFCTR_SP_SEL" stride="1" length="24"/> 3419bf215546Sopenharmony_ci <!-- TODO: there are 4 more percntr select registers (0xae28-0xae2b) --> 3420bf215546Sopenharmony_ci <!-- TODO: there are a few unknown registers in the 0xae30-0xae52 range --> 3421bf215546Sopenharmony_ci <reg32 offset="0xbe22" name="SP_CONTEXT_SWITCH_GFX_PREEMPTION_SAFE_MODE"/> 3422bf215546Sopenharmony_ci 3423bf215546Sopenharmony_ci <!-- 3424bf215546Sopenharmony_ci The downstream kernel calls the debug cluster of registers 3425bf215546Sopenharmony_ci "a6xx_sp_ps_tp_cluster" but this actually specifies the border 3426bf215546Sopenharmony_ci color base for compute shaders. 3427bf215546Sopenharmony_ci --> 3428bf215546Sopenharmony_ci <reg64 offset="0xb180" name="SP_PS_TP_BORDER_COLOR_BASE_ADDR" type="address" align="128"/> 3429bf215546Sopenharmony_ci <reg32 offset="0xb182" name="SP_UNKNOWN_B182" low="0" high="2"/> 3430bf215546Sopenharmony_ci <reg32 offset="0xb183" name="SP_UNKNOWN_B183" low="0" high="23"/> 3431bf215546Sopenharmony_ci 3432bf215546Sopenharmony_ci <reg32 offset="0xb190" name="SP_UNKNOWN_B190"/> 3433bf215546Sopenharmony_ci <reg32 offset="0xb191" name="SP_UNKNOWN_B191"/> 3434bf215546Sopenharmony_ci 3435bf215546Sopenharmony_ci <!-- could be all the stuff below here is actually TPL1?? --> 3436bf215546Sopenharmony_ci 3437bf215546Sopenharmony_ci <reg32 offset="0xb300" name="SP_TP_RAS_MSAA_CNTL"> 3438bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> 3439bf215546Sopenharmony_ci <bitfield name="UNK2" low="2" high="3"/> 3440bf215546Sopenharmony_ci </reg32> 3441bf215546Sopenharmony_ci <reg32 offset="0xb301" name="SP_TP_DEST_MSAA_CNTL"> 3442bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> 3443bf215546Sopenharmony_ci <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/> 3444bf215546Sopenharmony_ci </reg32> 3445bf215546Sopenharmony_ci 3446bf215546Sopenharmony_ci <!-- looks to work in the same way as a5xx: --> 3447bf215546Sopenharmony_ci <reg64 offset="0xb302" name="SP_TP_BORDER_COLOR_BASE_ADDR" type="address" align="128"/> 3448bf215546Sopenharmony_ci <reg32 offset="0xb304" name="SP_TP_SAMPLE_CONFIG" type="a6xx_sample_config"/> 3449bf215546Sopenharmony_ci <reg32 offset="0xb305" name="SP_TP_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/> 3450bf215546Sopenharmony_ci <reg32 offset="0xb306" name="SP_TP_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/> 3451bf215546Sopenharmony_ci <reg32 offset="0xb307" name="SP_TP_WINDOW_OFFSET" type="a6xx_reg_xy"/> 3452bf215546Sopenharmony_ci <reg32 offset="0xb309" name="SP_TP_MODE_CNTL"> 3453bf215546Sopenharmony_ci <bitfield name="ISAMMODE" low="0" high="1" type="a6xx_isam_mode"/> 3454bf215546Sopenharmony_ci <bitfield name="UNK3" low="2" high="7"/> 3455bf215546Sopenharmony_ci </reg32> 3456bf215546Sopenharmony_ci 3457bf215546Sopenharmony_ci <!-- 3458bf215546Sopenharmony_ci Equiv to corresponding RB_2D_SRC_* regs on a5xx.. which were either 3459bf215546Sopenharmony_ci badly named or the functionality moved in a6xx. But downstream kernel 3460bf215546Sopenharmony_ci calls this "a6xx_sp_ps_tp_2d_cluster" 3461bf215546Sopenharmony_ci --> 3462bf215546Sopenharmony_ci <reg32 offset="0xb4c0" name="SP_PS_2D_SRC_INFO" type="a6xx_2d_surf_info"/> 3463bf215546Sopenharmony_ci <reg32 offset="0xb4c1" name="SP_PS_2D_SRC_SIZE"> 3464bf215546Sopenharmony_ci <bitfield name="WIDTH" low="0" high="14" type="uint"/> 3465bf215546Sopenharmony_ci <bitfield name="HEIGHT" low="15" high="29" type="uint"/> 3466bf215546Sopenharmony_ci </reg32> 3467bf215546Sopenharmony_ci <reg64 offset="0xb4c2" name="SP_PS_2D_SRC" type="address" align="16"/> 3468bf215546Sopenharmony_ci <reg32 offset="0xb4c4" name="SP_PS_2D_SRC_PITCH"> 3469bf215546Sopenharmony_ci <bitfield name="UNK0" low="0" high="8"/> 3470bf215546Sopenharmony_ci <bitfield name="PITCH" low="9" high="23" shr="6" type="uint"/> 3471bf215546Sopenharmony_ci </reg32> 3472bf215546Sopenharmony_ci 3473bf215546Sopenharmony_ci <!-- planes for NV12, etc. (TODO: not tested) --> 3474bf215546Sopenharmony_ci <reg64 offset="0xb4c5" name="SP_PS_2D_SRC_PLANE1" type="address" align="16"/> 3475bf215546Sopenharmony_ci <reg32 offset="0xb4c7" name="SP_PS_2D_SRC_PLANE_PITCH" low="0" high="11" shr="6" type="uint"/> 3476bf215546Sopenharmony_ci <reg64 offset="0xb4c8" name="SP_PS_2D_SRC_PLANE2" type="address" align="16"/> 3477bf215546Sopenharmony_ci 3478bf215546Sopenharmony_ci <reg64 offset="0xb4ca" name="SP_PS_2D_SRC_FLAGS" type="address" align="16"/> 3479bf215546Sopenharmony_ci <reg32 offset="0xb4cc" name="SP_PS_2D_SRC_FLAGS_PITCH" low="0" high="7" shr="6" type="uint"/> 3480bf215546Sopenharmony_ci 3481bf215546Sopenharmony_ci <reg32 offset="0xb4cd" name="SP_PS_UNKNOWN_B4CD" low="6" high="31"/> 3482bf215546Sopenharmony_ci <reg32 offset="0xb4ce" name="SP_PS_UNKNOWN_B4CE" low="0" high="31"/> 3483bf215546Sopenharmony_ci <reg32 offset="0xb4cf" name="SP_PS_UNKNOWN_B4CF" low="0" high="30"/> 3484bf215546Sopenharmony_ci <reg32 offset="0xb4d0" name="SP_PS_UNKNOWN_B4D0" low="0" high="29"/> 3485bf215546Sopenharmony_ci <reg32 offset="0xb4d1" name="SP_WINDOW_OFFSET" type="a6xx_reg_xy"/> 3486bf215546Sopenharmony_ci 3487bf215546Sopenharmony_ci <!-- always 0x100000 or 0x1000000? --> 3488bf215546Sopenharmony_ci <reg32 offset="0xb600" name="TPL1_DBG_ECO_CNTL" low="0" high="25"/> 3489bf215546Sopenharmony_ci <reg32 offset="0xb601" name="TPL1_ADDR_MODE_CNTL" type="a5xx_address_mode"/> 3490bf215546Sopenharmony_ci <reg32 offset="0xb602" name="TPL1_UNKNOWN_B602" low="0" high="7" type="uint"/> 3491bf215546Sopenharmony_ci <reg32 offset="0xb604" name="TPL1_NC_MODE_CNTL"> 3492bf215546Sopenharmony_ci <bitfield name="MODE" pos="0" type="boolean"/> 3493bf215546Sopenharmony_ci <bitfield name="LOWER_BIT" low="1" high="2" type="uint"/> 3494bf215546Sopenharmony_ci <bitfield name="MIN_ACCESS_LENGTH" pos="3" type="boolean"/> <!-- true=64b false=32b --> 3495bf215546Sopenharmony_ci <bitfield name="UPPER_BIT" pos="4" type="uint"/> 3496bf215546Sopenharmony_ci <bitfield name="UNK6" low="6" high="7"/> 3497bf215546Sopenharmony_ci </reg32> 3498bf215546Sopenharmony_ci <reg32 offset="0xb605" name="TPL1_UNKNOWN_B605" low="0" high="7" type="uint"/> <!-- always 0x0 or 0x44 ? --> 3499bf215546Sopenharmony_ci <reg32 offset="0xb608" name="TPL1_BICUBIC_WEIGHTS_TABLE_0" low="0" high="29"/> 3500bf215546Sopenharmony_ci <reg32 offset="0xb609" name="TPL1_BICUBIC_WEIGHTS_TABLE_1" low="0" high="29"/> 3501bf215546Sopenharmony_ci <reg32 offset="0xb60a" name="TPL1_BICUBIC_WEIGHTS_TABLE_2" low="0" high="29"/> 3502bf215546Sopenharmony_ci <reg32 offset="0xb60b" name="TPL1_BICUBIC_WEIGHTS_TABLE_3" low="0" high="29"/> 3503bf215546Sopenharmony_ci <reg32 offset="0xb60c" name="TPL1_BICUBIC_WEIGHTS_TABLE_4" low="0" high="29"/> 3504bf215546Sopenharmony_ci <array offset="0xb610" name="TPL1_PERFCTR_TP_SEL" stride="1" length="12"/> 3505bf215546Sopenharmony_ci 3506bf215546Sopenharmony_ci <!-- TODO: 4 more perfcntr sel at 0xb620 ? --> 3507bf215546Sopenharmony_ci 3508bf215546Sopenharmony_ci <bitset name="a6xx_hlsq_xs_cntl" inline="yes"> 3509bf215546Sopenharmony_ci <bitfield name="CONSTLEN" low="0" high="7" shr="2" type="uint"/> 3510bf215546Sopenharmony_ci <bitfield name="ENABLED" pos="8" type="boolean"/> 3511bf215546Sopenharmony_ci </bitset> 3512bf215546Sopenharmony_ci 3513bf215546Sopenharmony_ci <reg32 offset="0xb800" name="HLSQ_VS_CNTL" type="a6xx_hlsq_xs_cntl"/> 3514bf215546Sopenharmony_ci <reg32 offset="0xb801" name="HLSQ_HS_CNTL" type="a6xx_hlsq_xs_cntl"/> 3515bf215546Sopenharmony_ci <reg32 offset="0xb802" name="HLSQ_DS_CNTL" type="a6xx_hlsq_xs_cntl"/> 3516bf215546Sopenharmony_ci <reg32 offset="0xb803" name="HLSQ_GS_CNTL" type="a6xx_hlsq_xs_cntl"/> 3517bf215546Sopenharmony_ci 3518bf215546Sopenharmony_ci <reg32 offset="0xb820" name="HLSQ_LOAD_STATE_GEOM_CMD"/> 3519bf215546Sopenharmony_ci <reg64 offset="0xb821" name="HLSQ_LOAD_STATE_GEOM_EXT_SRC_ADDR" align="16" type="address"/> 3520bf215546Sopenharmony_ci <reg32 offset="0xb823" name="HLSQ_LOAD_STATE_GEOM_DATA"/> 3521bf215546Sopenharmony_ci 3522bf215546Sopenharmony_ci <reg32 offset="0xb980" name="HLSQ_FS_CNTL_0"> 3523bf215546Sopenharmony_ci <!-- must match SP_FS_CTRL --> 3524bf215546Sopenharmony_ci <bitfield name="THREADSIZE" pos="0" type="a6xx_threadsize"/> 3525bf215546Sopenharmony_ci <bitfield name="VARYINGS" pos="1" type="boolean"/> 3526bf215546Sopenharmony_ci <bitfield name="UNK2" low="2" high="11"/> 3527bf215546Sopenharmony_ci </reg32> 3528bf215546Sopenharmony_ci <reg32 offset="0xb981" name="HLSQ_UNKNOWN_B981" pos="0" type="boolean"/> <!-- never used by blob --> 3529bf215546Sopenharmony_ci 3530bf215546Sopenharmony_ci <reg32 offset="0xb982" name="HLSQ_CONTROL_1_REG" low="0" high="2"> 3531bf215546Sopenharmony_ci <!-- TODO: have test cases with either 0x3 or 0x7 --> 3532bf215546Sopenharmony_ci </reg32> 3533bf215546Sopenharmony_ci <reg32 offset="0xb983" name="HLSQ_CONTROL_2_REG"> 3534bf215546Sopenharmony_ci <bitfield name="FACEREGID" low="0" high="7" type="a3xx_regid"/> 3535bf215546Sopenharmony_ci <!-- SAMPLEID is loaded into a half-precision register: --> 3536bf215546Sopenharmony_ci <bitfield name="SAMPLEID" low="8" high="15" type="a3xx_regid"/> 3537bf215546Sopenharmony_ci <bitfield name="SAMPLEMASK" low="16" high="23" type="a3xx_regid"/> 3538bf215546Sopenharmony_ci <bitfield name="CENTERRHW" low="24" high="31" type="a3xx_regid"/> 3539bf215546Sopenharmony_ci </reg32> 3540bf215546Sopenharmony_ci <reg32 offset="0xb984" name="HLSQ_CONTROL_3_REG"> 3541bf215546Sopenharmony_ci <!-- register loaded with position (bary.f) --> 3542bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_PIXEL" low="0" high="7" type="a3xx_regid"/> 3543bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_PIXEL" low="8" high="15" type="a3xx_regid"/> 3544bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_CENTROID" low="16" high="23" type="a3xx_regid"/> 3545bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_CENTROID" low="24" high="31" type="a3xx_regid"/> 3546bf215546Sopenharmony_ci </reg32> 3547bf215546Sopenharmony_ci <reg32 offset="0xb985" name="HLSQ_CONTROL_4_REG"> 3548bf215546Sopenharmony_ci <bitfield name="IJ_PERSP_SAMPLE" low="0" high="7" type="a3xx_regid"/> 3549bf215546Sopenharmony_ci <bitfield name="IJ_LINEAR_SAMPLE" low="8" high="15" type="a3xx_regid"/> 3550bf215546Sopenharmony_ci <bitfield name="XYCOORDREGID" low="16" high="23" type="a3xx_regid"/> 3551bf215546Sopenharmony_ci <bitfield name="ZWCOORDREGID" low="24" high="31" type="a3xx_regid"/> 3552bf215546Sopenharmony_ci </reg32> 3553bf215546Sopenharmony_ci <reg32 offset="0xb986" name="HLSQ_CONTROL_5_REG"> 3554bf215546Sopenharmony_ci <bitfield name="LINELENGTHREGID" low="0" high="7" type="a3xx_regid"/> 3555bf215546Sopenharmony_ci <bitfield name="FOVEATIONQUALITYREGID" low="8" high="15" type="a3xx_regid"/> 3556bf215546Sopenharmony_ci </reg32> 3557bf215546Sopenharmony_ci <reg32 offset="0xb987" name="HLSQ_CS_CNTL" type="a6xx_hlsq_xs_cntl"/> 3558bf215546Sopenharmony_ci 3559bf215546Sopenharmony_ci <!-- TODO: what does KERNELDIM do exactly (blob sets it differently from turnip) --> 3560bf215546Sopenharmony_ci <reg32 offset="0xb990" name="HLSQ_CS_NDRANGE_0"> 3561bf215546Sopenharmony_ci <bitfield name="KERNELDIM" low="0" high="1" type="uint"/> 3562bf215546Sopenharmony_ci <!-- localsize is value minus one: --> 3563bf215546Sopenharmony_ci <bitfield name="LOCALSIZEX" low="2" high="11" type="uint"/> 3564bf215546Sopenharmony_ci <bitfield name="LOCALSIZEY" low="12" high="21" type="uint"/> 3565bf215546Sopenharmony_ci <bitfield name="LOCALSIZEZ" low="22" high="31" type="uint"/> 3566bf215546Sopenharmony_ci </reg32> 3567bf215546Sopenharmony_ci <reg32 offset="0xb991" name="HLSQ_CS_NDRANGE_1"> 3568bf215546Sopenharmony_ci <bitfield name="GLOBALSIZE_X" low="0" high="31" type="uint"/> 3569bf215546Sopenharmony_ci </reg32> 3570bf215546Sopenharmony_ci <reg32 offset="0xb992" name="HLSQ_CS_NDRANGE_2"> 3571bf215546Sopenharmony_ci <bitfield name="GLOBALOFF_X" low="0" high="31" type="uint"/> 3572bf215546Sopenharmony_ci </reg32> 3573bf215546Sopenharmony_ci <reg32 offset="0xb993" name="HLSQ_CS_NDRANGE_3"> 3574bf215546Sopenharmony_ci <bitfield name="GLOBALSIZE_Y" low="0" high="31" type="uint"/> 3575bf215546Sopenharmony_ci </reg32> 3576bf215546Sopenharmony_ci <reg32 offset="0xb994" name="HLSQ_CS_NDRANGE_4"> 3577bf215546Sopenharmony_ci <bitfield name="GLOBALOFF_Y" low="0" high="31" type="uint"/> 3578bf215546Sopenharmony_ci </reg32> 3579bf215546Sopenharmony_ci <reg32 offset="0xb995" name="HLSQ_CS_NDRANGE_5"> 3580bf215546Sopenharmony_ci <bitfield name="GLOBALSIZE_Z" low="0" high="31" type="uint"/> 3581bf215546Sopenharmony_ci </reg32> 3582bf215546Sopenharmony_ci <reg32 offset="0xb996" name="HLSQ_CS_NDRANGE_6"> 3583bf215546Sopenharmony_ci <bitfield name="GLOBALOFF_Z" low="0" high="31" type="uint"/> 3584bf215546Sopenharmony_ci </reg32> 3585bf215546Sopenharmony_ci <reg32 offset="0xb997" name="HLSQ_CS_CNTL_0"> 3586bf215546Sopenharmony_ci <!-- these are all vec3. first 3 need to be high regs 3587bf215546Sopenharmony_ci WGSIZECONSTID is the local size (from HLSQ_CS_NDRANGE_0) 3588bf215546Sopenharmony_ci WGOFFSETCONSTID is WGIDCONSTID*WGSIZECONSTID 3589bf215546Sopenharmony_ci --> 3590bf215546Sopenharmony_ci <bitfield name="WGIDCONSTID" low="0" high="7" type="a3xx_regid"/> 3591bf215546Sopenharmony_ci <bitfield name="WGSIZECONSTID" low="8" high="15" type="a3xx_regid"/> 3592bf215546Sopenharmony_ci <bitfield name="WGOFFSETCONSTID" low="16" high="23" type="a3xx_regid"/> 3593bf215546Sopenharmony_ci <bitfield name="LOCALIDREGID" low="24" high="31" type="a3xx_regid"/> 3594bf215546Sopenharmony_ci </reg32> 3595bf215546Sopenharmony_ci <reg32 offset="0xb998" name="HLSQ_CS_CNTL_1"> 3596bf215546Sopenharmony_ci <!-- gl_LocalInvocationIndex --> 3597bf215546Sopenharmony_ci <bitfield name="LINEARLOCALIDREGID" low="0" high="7" type="a3xx_regid"/> 3598bf215546Sopenharmony_ci <!-- a650 has 6 "SP cores" (but 3 "SP"). this makes it use only 3599bf215546Sopenharmony_ci one of those 6 "SP cores" --> 3600bf215546Sopenharmony_ci <bitfield name="SINGLE_SP_CORE" pos="8" type="boolean"/> 3601bf215546Sopenharmony_ci <!-- Must match SP_CS_CTRL --> 3602bf215546Sopenharmony_ci <bitfield name="THREADSIZE" pos="9" type="a6xx_threadsize"/> 3603bf215546Sopenharmony_ci <!-- 1 thread per wave (ignored if bit9 set) --> 3604bf215546Sopenharmony_ci <bitfield name="THREADSIZE_SCALAR" pos="10" type="boolean"/> 3605bf215546Sopenharmony_ci </reg32> 3606bf215546Sopenharmony_ci <!--note: vulkan blob doesn't use these --> 3607bf215546Sopenharmony_ci <reg32 offset="0xb999" name="HLSQ_CS_KERNEL_GROUP_X"/> 3608bf215546Sopenharmony_ci <reg32 offset="0xb99a" name="HLSQ_CS_KERNEL_GROUP_Y"/> 3609bf215546Sopenharmony_ci <reg32 offset="0xb99b" name="HLSQ_CS_KERNEL_GROUP_Z"/> 3610bf215546Sopenharmony_ci 3611bf215546Sopenharmony_ci <reg32 offset="0xb9a0" name="HLSQ_LOAD_STATE_FRAG_CMD"/> 3612bf215546Sopenharmony_ci <reg64 offset="0xb9a1" name="HLSQ_LOAD_STATE_FRAG_EXT_SRC_ADDR" align="16" type="address"/> 3613bf215546Sopenharmony_ci <reg32 offset="0xb9a3" name="HLSQ_LOAD_STATE_FRAG_DATA"/> 3614bf215546Sopenharmony_ci 3615bf215546Sopenharmony_ci <!-- mirror of SP_CS_BINDLESS_BASE --> 3616bf215546Sopenharmony_ci <array offset="0xb9c0" name="HLSQ_CS_BINDLESS_BASE" stride="2" length="5"> 3617bf215546Sopenharmony_ci <!-- 64 alignment, 2 low bits for unknown flags (always 0x3 when enabled?) --> 3618bf215546Sopenharmony_ci <reg64 offset="0" name="ADDR" type="waddress"/> 3619bf215546Sopenharmony_ci </array> 3620bf215546Sopenharmony_ci 3621bf215546Sopenharmony_ci <!-- new in a6xx gen4, mirror of SP_CS_UNKNOWN_A9B1? --> 3622bf215546Sopenharmony_ci <reg32 offset="0xb9d0" name="HLSQ_CS_UNKNOWN_B9D0"> 3623bf215546Sopenharmony_ci <bitfield name="SHARED_SIZE" low="0" high="4" type="uint"/> 3624bf215546Sopenharmony_ci <bitfield name="UNK5" pos="5" type="boolean"/> 3625bf215546Sopenharmony_ci <!-- always 1 ? --> 3626bf215546Sopenharmony_ci <bitfield name="UNK6" pos="6" type="boolean"/> 3627bf215546Sopenharmony_ci </reg32> 3628bf215546Sopenharmony_ci 3629bf215546Sopenharmony_ci <reg32 offset="0xbb00" name="HLSQ_DRAW_CMD"> 3630bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="0" high="7"/> 3631bf215546Sopenharmony_ci </reg32> 3632bf215546Sopenharmony_ci 3633bf215546Sopenharmony_ci <reg32 offset="0xbb01" name="HLSQ_DISPATCH_CMD"> 3634bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="0" high="7"/> 3635bf215546Sopenharmony_ci </reg32> 3636bf215546Sopenharmony_ci 3637bf215546Sopenharmony_ci <reg32 offset="0xbb02" name="HLSQ_EVENT_CMD"> 3638bf215546Sopenharmony_ci <!-- I think only the low bit is actually used? --> 3639bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="16" high="23"/> 3640bf215546Sopenharmony_ci <bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/> 3641bf215546Sopenharmony_ci </reg32> 3642bf215546Sopenharmony_ci 3643bf215546Sopenharmony_ci <reg32 offset="0xbb08" name="HLSQ_INVALIDATE_CMD"> 3644bf215546Sopenharmony_ci <doc> 3645bf215546Sopenharmony_ci This register clears pending loads queued up by 3646bf215546Sopenharmony_ci CP_LOAD_STATE6. Each bit resets a particular kind(s) of 3647bf215546Sopenharmony_ci CP_LOAD_STATE6. 3648bf215546Sopenharmony_ci </doc> 3649bf215546Sopenharmony_ci 3650bf215546Sopenharmony_ci <!-- per-stage state: shader, non-bindless UBO, textures, and samplers --> 3651bf215546Sopenharmony_ci <bitfield name="VS_STATE" pos="0" type="boolean"/> 3652bf215546Sopenharmony_ci <bitfield name="HS_STATE" pos="1" type="boolean"/> 3653bf215546Sopenharmony_ci <bitfield name="DS_STATE" pos="2" type="boolean"/> 3654bf215546Sopenharmony_ci <bitfield name="GS_STATE" pos="3" type="boolean"/> 3655bf215546Sopenharmony_ci <bitfield name="FS_STATE" pos="4" type="boolean"/> 3656bf215546Sopenharmony_ci <bitfield name="CS_STATE" pos="5" type="boolean"/> 3657bf215546Sopenharmony_ci 3658bf215546Sopenharmony_ci <bitfield name="CS_IBO" pos="6" type="boolean"/> 3659bf215546Sopenharmony_ci <bitfield name="GFX_IBO" pos="7" type="boolean"/> 3660bf215546Sopenharmony_ci 3661bf215546Sopenharmony_ci <!-- Note: these only do something when HLSQ_SHARED_CONSTS is set to 1 --> 3662bf215546Sopenharmony_ci <bitfield name="CS_SHARED_CONST" pos="19" type="boolean"/> 3663bf215546Sopenharmony_ci <bitfield name="GFX_SHARED_CONST" pos="8" type="boolean"/> 3664bf215546Sopenharmony_ci 3665bf215546Sopenharmony_ci <!-- SS6_BINDLESS: one bit per bindless base --> 3666bf215546Sopenharmony_ci <bitfield name="CS_BINDLESS" low="9" high="13" type="hex"/> 3667bf215546Sopenharmony_ci <bitfield name="GFX_BINDLESS" low="14" high="18" type="hex"/> 3668bf215546Sopenharmony_ci </reg32> 3669bf215546Sopenharmony_ci 3670bf215546Sopenharmony_ci <reg32 offset="0xbb10" name="HLSQ_FS_CNTL" type="a6xx_hlsq_xs_cntl"/> 3671bf215546Sopenharmony_ci 3672bf215546Sopenharmony_ci <reg32 offset="0xbb11" name="HLSQ_SHARED_CONSTS"> 3673bf215546Sopenharmony_ci <doc> 3674bf215546Sopenharmony_ci Shared constants are intended to be used for Vulkan push 3675bf215546Sopenharmony_ci constants. When enabled, 8 vec4's are reserved in the FS 3676bf215546Sopenharmony_ci const pool and 16 in the geometry const pool although 3677bf215546Sopenharmony_ci only 8 are actually used (why?) and they are mapped to 3678bf215546Sopenharmony_ci c504-c511 in each stage. Both VS and FS shared consts 3679bf215546Sopenharmony_ci are written using ST6_CONSTANTS/SB6_IBO, so that both 3680bf215546Sopenharmony_ci the geometry and FS shared consts can be written at once 3681bf215546Sopenharmony_ci by using CP_LOAD_STATE6 rather than 3682bf215546Sopenharmony_ci CP_LOAD_STATE6_FRAG/CP_LOAD_STATE6_GEOM. In addition 3683bf215546Sopenharmony_ci DST_OFF and NUM_UNIT are in units of dwords instead of 3684bf215546Sopenharmony_ci vec4's. 3685bf215546Sopenharmony_ci 3686bf215546Sopenharmony_ci There is also a separate shared constant pool for CS, 3687bf215546Sopenharmony_ci which is loaded through CP_LOAD_STATE6_FRAG with 3688bf215546Sopenharmony_ci ST6_UBO/ST6_IBO. However the only real difference for CS 3689bf215546Sopenharmony_ci is the dword units. 3690bf215546Sopenharmony_ci </doc> 3691bf215546Sopenharmony_ci <bitfield name="ENABLE" pos="0" type="boolean"/> 3692bf215546Sopenharmony_ci </reg32> 3693bf215546Sopenharmony_ci 3694bf215546Sopenharmony_ci <!-- mirror of SP_BINDLESS_BASE --> 3695bf215546Sopenharmony_ci <array offset="0xbb20" name="HLSQ_BINDLESS_BASE" stride="2" length="5"> 3696bf215546Sopenharmony_ci <!-- align 64 with two LSB for unknown flags (always 0x3 enabled) --> 3697bf215546Sopenharmony_ci <reg64 offset="0" name="ADDR" type="address"/> 3698bf215546Sopenharmony_ci </array> 3699bf215546Sopenharmony_ci 3700bf215546Sopenharmony_ci <reg32 offset="0xbd80" name="HLSQ_2D_EVENT_CMD"> 3701bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="8" high="15"/> 3702bf215546Sopenharmony_ci <bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/> 3703bf215546Sopenharmony_ci </reg32> 3704bf215546Sopenharmony_ci 3705bf215546Sopenharmony_ci <reg32 offset="0xbe00" name="HLSQ_UNKNOWN_BE00"/> <!-- all bits valid except bit 29 --> 3706bf215546Sopenharmony_ci <reg32 offset="0xbe01" name="HLSQ_UNKNOWN_BE01" low="4" high="6"/> 3707bf215546Sopenharmony_ci <reg32 offset="0xbe04" name="HLSQ_UNKNOWN_BE04"/> 3708bf215546Sopenharmony_ci <reg32 offset="0xbe05" name="HLSQ_ADDR_MODE_CNTL" type="a5xx_address_mode"/> 3709bf215546Sopenharmony_ci <reg32 offset="0xbe08" name="HLSQ_UNKNOWN_BE08" low="0" high="15"/> 3710bf215546Sopenharmony_ci <array offset="0xbe10" name="HLSQ_PERFCTR_HLSQ_SEL" stride="1" length="6"/> 3711bf215546Sopenharmony_ci 3712bf215546Sopenharmony_ci <!-- TODO: some valid registers between 0xbe20 and 0xbe33 --> 3713bf215546Sopenharmony_ci <reg32 offset="0xbe22" name="HLSQ_CONTEXT_SWITCH_GFX_PREEMPTION_SAFE_MODE"/> 3714bf215546Sopenharmony_ci 3715bf215546Sopenharmony_ci <!-- 3716bf215546Sopenharmony_ci These special registers signal the beginning/end of an event 3717bf215546Sopenharmony_ci sequence. The sequence used internally for an event looks like: 3718bf215546Sopenharmony_ci - write EVENT_CMD pipe register 3719bf215546Sopenharmony_ci - write CP_EVENT_START 3720bf215546Sopenharmony_ci - write HLSQ_EVENT_CMD with event or HLSQ_DRAW_CMD 3721bf215546Sopenharmony_ci - write PC_EVENT_CMD with event or PC_DRAW_CMD 3722bf215546Sopenharmony_ci - write HLSQ_EVENT_CMD(CONTEXT_DONE) 3723bf215546Sopenharmony_ci - write PC_EVENT_CMD(CONTEXT_DONE) 3724bf215546Sopenharmony_ci - write CP_EVENT_END 3725bf215546Sopenharmony_ci Writing to CP_EVENT_END seems to actually trigger the context roll 3726bf215546Sopenharmony_ci --> 3727bf215546Sopenharmony_ci <reg32 offset="0xd600" name="CP_EVENT_START"> 3728bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="0" high="7"/> 3729bf215546Sopenharmony_ci </reg32> 3730bf215546Sopenharmony_ci <reg32 offset="0xd601" name="CP_EVENT_END"> 3731bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="0" high="7"/> 3732bf215546Sopenharmony_ci </reg32> 3733bf215546Sopenharmony_ci <reg32 offset="0xd700" name="CP_2D_EVENT_START"> 3734bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="0" high="7"/> 3735bf215546Sopenharmony_ci </reg32> 3736bf215546Sopenharmony_ci <reg32 offset="0xd701" name="CP_2D_EVENT_END"> 3737bf215546Sopenharmony_ci <bitfield name="STATE_ID" low="0" high="7"/> 3738bf215546Sopenharmony_ci </reg32> 3739bf215546Sopenharmony_ci</domain> 3740bf215546Sopenharmony_ci 3741bf215546Sopenharmony_ci<!-- Seems basically the same as a5xx, maybe move to common.xml.. --> 3742bf215546Sopenharmony_ci<domain name="A6XX_TEX_SAMP" width="32"> 3743bf215546Sopenharmony_ci <doc>Texture sampler dwords</doc> 3744bf215546Sopenharmony_ci <enum name="a6xx_tex_filter"> <!-- same as a4xx? --> 3745bf215546Sopenharmony_ci <value name="A6XX_TEX_NEAREST" value="0"/> 3746bf215546Sopenharmony_ci <value name="A6XX_TEX_LINEAR" value="1"/> 3747bf215546Sopenharmony_ci <value name="A6XX_TEX_ANISO" value="2"/> 3748bf215546Sopenharmony_ci <value name="A6XX_TEX_CUBIC" value="3"/> <!-- a650 only --> 3749bf215546Sopenharmony_ci </enum> 3750bf215546Sopenharmony_ci <enum name="a6xx_tex_clamp"> <!-- same as a4xx? --> 3751bf215546Sopenharmony_ci <value name="A6XX_TEX_REPEAT" value="0"/> 3752bf215546Sopenharmony_ci <value name="A6XX_TEX_CLAMP_TO_EDGE" value="1"/> 3753bf215546Sopenharmony_ci <value name="A6XX_TEX_MIRROR_REPEAT" value="2"/> 3754bf215546Sopenharmony_ci <value name="A6XX_TEX_CLAMP_TO_BORDER" value="3"/> 3755bf215546Sopenharmony_ci <value name="A6XX_TEX_MIRROR_CLAMP" value="4"/> 3756bf215546Sopenharmony_ci </enum> 3757bf215546Sopenharmony_ci <enum name="a6xx_tex_aniso"> <!-- same as a4xx? --> 3758bf215546Sopenharmony_ci <value name="A6XX_TEX_ANISO_1" value="0"/> 3759bf215546Sopenharmony_ci <value name="A6XX_TEX_ANISO_2" value="1"/> 3760bf215546Sopenharmony_ci <value name="A6XX_TEX_ANISO_4" value="2"/> 3761bf215546Sopenharmony_ci <value name="A6XX_TEX_ANISO_8" value="3"/> 3762bf215546Sopenharmony_ci <value name="A6XX_TEX_ANISO_16" value="4"/> 3763bf215546Sopenharmony_ci </enum> 3764bf215546Sopenharmony_ci <enum name="a6xx_reduction_mode"> 3765bf215546Sopenharmony_ci <value name="A6XX_REDUCTION_MODE_AVERAGE" value="0"/> 3766bf215546Sopenharmony_ci <value name="A6XX_REDUCTION_MODE_MIN" value="1"/> 3767bf215546Sopenharmony_ci <value name="A6XX_REDUCTION_MODE_MAX" value="2"/> 3768bf215546Sopenharmony_ci </enum> 3769bf215546Sopenharmony_ci 3770bf215546Sopenharmony_ci <reg32 offset="0" name="0"> 3771bf215546Sopenharmony_ci <bitfield name="MIPFILTER_LINEAR_NEAR" pos="0" type="boolean"/> 3772bf215546Sopenharmony_ci <bitfield name="XY_MAG" low="1" high="2" type="a6xx_tex_filter"/> 3773bf215546Sopenharmony_ci <bitfield name="XY_MIN" low="3" high="4" type="a6xx_tex_filter"/> 3774bf215546Sopenharmony_ci <bitfield name="WRAP_S" low="5" high="7" type="a6xx_tex_clamp"/> 3775bf215546Sopenharmony_ci <bitfield name="WRAP_T" low="8" high="10" type="a6xx_tex_clamp"/> 3776bf215546Sopenharmony_ci <bitfield name="WRAP_R" low="11" high="13" type="a6xx_tex_clamp"/> 3777bf215546Sopenharmony_ci <bitfield name="ANISO" low="14" high="16" type="a6xx_tex_aniso"/> 3778bf215546Sopenharmony_ci <bitfield name="LOD_BIAS" low="19" high="31" type="fixed" radix="8"/><!-- no idea how many bits for real --> 3779bf215546Sopenharmony_ci </reg32> 3780bf215546Sopenharmony_ci <reg32 offset="1" name="1"> 3781bf215546Sopenharmony_ci <bitfield name="CLAMPENABLE" pos="0" type="boolean"> 3782bf215546Sopenharmony_ci <doc> 3783bf215546Sopenharmony_ci clamp result to [0, 1] if the format is unorm or 3784bf215546Sopenharmony_ci [-1, 1] if the format is snorm, *after* 3785bf215546Sopenharmony_ci filtering. Has no effect for other formats. 3786bf215546Sopenharmony_ci </doc> 3787bf215546Sopenharmony_ci </bitfield> 3788bf215546Sopenharmony_ci <bitfield name="COMPARE_FUNC" low="1" high="3" type="adreno_compare_func"/> 3789bf215546Sopenharmony_ci <bitfield name="CUBEMAPSEAMLESSFILTOFF" pos="4" type="boolean"/> 3790bf215546Sopenharmony_ci <bitfield name="UNNORM_COORDS" pos="5" type="boolean"/> 3791bf215546Sopenharmony_ci <bitfield name="MIPFILTER_LINEAR_FAR" pos="6" type="boolean"/> 3792bf215546Sopenharmony_ci <bitfield name="MAX_LOD" low="8" high="19" type="ufixed" radix="8"/> 3793bf215546Sopenharmony_ci <bitfield name="MIN_LOD" low="20" high="31" type="ufixed" radix="8"/> 3794bf215546Sopenharmony_ci </reg32> 3795bf215546Sopenharmony_ci <reg32 offset="2" name="2"> 3796bf215546Sopenharmony_ci <bitfield name="REDUCTION_MODE" low="0" high="1" type="a6xx_reduction_mode"/> 3797bf215546Sopenharmony_ci <bitfield name="CHROMA_LINEAR" pos="5" type="boolean"/> 3798bf215546Sopenharmony_ci <bitfield name="BCOLOR" low="7" high="31"/> 3799bf215546Sopenharmony_ci </reg32> 3800bf215546Sopenharmony_ci <reg32 offset="3" name="3"/> 3801bf215546Sopenharmony_ci</domain> 3802bf215546Sopenharmony_ci 3803bf215546Sopenharmony_ci<domain name="A6XX_TEX_CONST" width="32"> 3804bf215546Sopenharmony_ci <doc>Texture constant dwords</doc> 3805bf215546Sopenharmony_ci <enum name="a6xx_tex_swiz"> <!-- same as a4xx? --> 3806bf215546Sopenharmony_ci <value name="A6XX_TEX_X" value="0"/> 3807bf215546Sopenharmony_ci <value name="A6XX_TEX_Y" value="1"/> 3808bf215546Sopenharmony_ci <value name="A6XX_TEX_Z" value="2"/> 3809bf215546Sopenharmony_ci <value name="A6XX_TEX_W" value="3"/> 3810bf215546Sopenharmony_ci <value name="A6XX_TEX_ZERO" value="4"/> 3811bf215546Sopenharmony_ci <value name="A6XX_TEX_ONE" value="5"/> 3812bf215546Sopenharmony_ci </enum> 3813bf215546Sopenharmony_ci <enum name="a6xx_tex_type"> <!-- same as a4xx? --> 3814bf215546Sopenharmony_ci <value name="A6XX_TEX_1D" value="0"/> 3815bf215546Sopenharmony_ci <value name="A6XX_TEX_2D" value="1"/> 3816bf215546Sopenharmony_ci <value name="A6XX_TEX_CUBE" value="2"/> 3817bf215546Sopenharmony_ci <value name="A6XX_TEX_3D" value="3"/> 3818bf215546Sopenharmony_ci <value name="A6XX_TEX_BUFFER" value="4"/> 3819bf215546Sopenharmony_ci </enum> 3820bf215546Sopenharmony_ci <reg32 offset="0" name="0"> 3821bf215546Sopenharmony_ci <bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/> 3822bf215546Sopenharmony_ci <bitfield name="SRGB" pos="2" type="boolean"/> 3823bf215546Sopenharmony_ci <bitfield name="SWIZ_X" low="4" high="6" type="a6xx_tex_swiz"/> 3824bf215546Sopenharmony_ci <bitfield name="SWIZ_Y" low="7" high="9" type="a6xx_tex_swiz"/> 3825bf215546Sopenharmony_ci <bitfield name="SWIZ_Z" low="10" high="12" type="a6xx_tex_swiz"/> 3826bf215546Sopenharmony_ci <bitfield name="SWIZ_W" low="13" high="15" type="a6xx_tex_swiz"/> 3827bf215546Sopenharmony_ci <bitfield name="MIPLVLS" low="16" high="19" type="uint"/> 3828bf215546Sopenharmony_ci <!-- overlaps with MIPLVLS --> 3829bf215546Sopenharmony_ci <bitfield name="CHROMA_MIDPOINT_X" pos="16" type="boolean"/> 3830bf215546Sopenharmony_ci <bitfield name="CHROMA_MIDPOINT_Y" pos="18" type="boolean"/> 3831bf215546Sopenharmony_ci <bitfield name="SAMPLES" low="20" high="21" type="a3xx_msaa_samples"/> 3832bf215546Sopenharmony_ci <bitfield name="FMT" low="22" high="29" type="a6xx_format"/> 3833bf215546Sopenharmony_ci <!-- 3834bf215546Sopenharmony_ci Why is the swap needed in addition to SWIZ_*? The swap 3835bf215546Sopenharmony_ci is performed before border color replacement, while the 3836bf215546Sopenharmony_ci swizzle is applied after after it. 3837bf215546Sopenharmony_ci --> 3838bf215546Sopenharmony_ci <bitfield name="SWAP" low="30" high="31" type="a3xx_color_swap"/> 3839bf215546Sopenharmony_ci </reg32> 3840bf215546Sopenharmony_ci <reg32 offset="1" name="1"> 3841bf215546Sopenharmony_ci <bitfield name="WIDTH" low="0" high="14" type="uint"/> 3842bf215546Sopenharmony_ci <bitfield name="HEIGHT" low="15" high="29" type="uint"/> 3843bf215546Sopenharmony_ci </reg32> 3844bf215546Sopenharmony_ci <reg32 offset="2" name="2"> 3845bf215546Sopenharmony_ci <!-- 3846bf215546Sopenharmony_ci b4 and b31 set for buffer/ssbo case, in which case low 15 bits 3847bf215546Sopenharmony_ci of size encoded in WIDTH, and high 15 bits encoded in HEIGHT 3848bf215546Sopenharmony_ci 3849bf215546Sopenharmony_ci b31 is probably the 'BUFFER' bit.. it is the one that changes 3850bf215546Sopenharmony_ci behavior of texture in dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture.buffer_size_131071 3851bf215546Sopenharmony_ci --> 3852bf215546Sopenharmony_ci <bitfield name="BUFFER" pos="4" type="boolean"/> 3853bf215546Sopenharmony_ci <!-- minimum pitch (for mipmap levels): log2(pitchalign / 64) --> 3854bf215546Sopenharmony_ci <bitfield name="PITCHALIGN" low="0" high="3" type="uint"/> 3855bf215546Sopenharmony_ci <doc>Pitch in bytes (so actually stride)</doc> 3856bf215546Sopenharmony_ci <bitfield name="PITCH" low="7" high="28" type="uint"/> 3857bf215546Sopenharmony_ci <bitfield name="TYPE" low="29" high="31" type="a6xx_tex_type"/> 3858bf215546Sopenharmony_ci </reg32> 3859bf215546Sopenharmony_ci <reg32 offset="3" name="3"> 3860bf215546Sopenharmony_ci <!-- 3861bf215546Sopenharmony_ci ARRAY_PITCH is basically LAYERSZ for the first mipmap level, and 3862bf215546Sopenharmony_ci for 3d textures (laid out mipmap level first) MIN_LAYERSZ is the 3863bf215546Sopenharmony_ci layer size at the point that it stops being reduced moving to 3864bf215546Sopenharmony_ci higher (smaller) mipmap levels 3865bf215546Sopenharmony_ci --> 3866bf215546Sopenharmony_ci <bitfield name="ARRAY_PITCH" low="0" high="13" shr="12" type="uint"/> 3867bf215546Sopenharmony_ci <bitfield name="MIN_LAYERSZ" low="23" high="26" shr="12"/> 3868bf215546Sopenharmony_ci <!-- 3869bf215546Sopenharmony_ci by default levels with w < 16 are linear 3870bf215546Sopenharmony_ci TILE_ALL makes all levels have tiling 3871bf215546Sopenharmony_ci seems required when using UBWC, since all levels have UBWC (can possibly be disabled?) 3872bf215546Sopenharmony_ci --> 3873bf215546Sopenharmony_ci <bitfield name="TILE_ALL" pos="27" type="boolean"/> 3874bf215546Sopenharmony_ci <bitfield name="FLAG" pos="28" type="boolean"/> 3875bf215546Sopenharmony_ci </reg32> 3876bf215546Sopenharmony_ci <!-- for 2-3 plane format, BASE is flag buffer address (if enabled) 3877bf215546Sopenharmony_ci the address of the non-flag base buffer is determined automatically, 3878bf215546Sopenharmony_ci and must follow the flag buffer 3879bf215546Sopenharmony_ci --> 3880bf215546Sopenharmony_ci <reg32 offset="4" name="4"> 3881bf215546Sopenharmony_ci <bitfield name="BASE_LO" low="5" high="31" shr="5"/> 3882bf215546Sopenharmony_ci </reg32> 3883bf215546Sopenharmony_ci <reg32 offset="5" name="5"> 3884bf215546Sopenharmony_ci <bitfield name="BASE_HI" low="0" high="16"/> 3885bf215546Sopenharmony_ci <bitfield name="DEPTH" low="17" high="29" type="uint"/> 3886bf215546Sopenharmony_ci </reg32> 3887bf215546Sopenharmony_ci <reg32 offset="6" name="6"> 3888bf215546Sopenharmony_ci <!-- overlaps with PLANE_PITCH --> 3889bf215546Sopenharmony_ci <bitfield name="MIN_LOD_CLAMP" low="0" high="11" type="ufixed" radix="8"/> 3890bf215546Sopenharmony_ci <!-- pitch for plane 2 / plane 3 --> 3891bf215546Sopenharmony_ci <bitfield name="PLANE_PITCH" low="8" high="31" type="uint"/> 3892bf215546Sopenharmony_ci </reg32> 3893bf215546Sopenharmony_ci <!-- 7/8 is plane 2 address for planar formats --> 3894bf215546Sopenharmony_ci <reg32 offset="7" name="7"> 3895bf215546Sopenharmony_ci <bitfield name="FLAG_LO" low="5" high="31" shr="5"/> 3896bf215546Sopenharmony_ci </reg32> 3897bf215546Sopenharmony_ci <reg32 offset="8" name="8"> 3898bf215546Sopenharmony_ci <bitfield name="FLAG_HI" low="0" high="16"/> 3899bf215546Sopenharmony_ci </reg32> 3900bf215546Sopenharmony_ci <!-- 9/10 is plane 3 address for planar formats --> 3901bf215546Sopenharmony_ci <reg32 offset="9" name="9"> 3902bf215546Sopenharmony_ci <bitfield name="FLAG_BUFFER_ARRAY_PITCH" low="0" high="16" shr="4" type="uint"/> 3903bf215546Sopenharmony_ci </reg32> 3904bf215546Sopenharmony_ci <reg32 offset="10" name="10"> 3905bf215546Sopenharmony_ci <bitfield name="FLAG_BUFFER_PITCH" low="0" high="6" shr="6" type="uint"/> 3906bf215546Sopenharmony_ci <!-- log2 size of the first level, required for mipmapping --> 3907bf215546Sopenharmony_ci <bitfield name="FLAG_BUFFER_LOGW" low="8" high="11" type="uint"/> 3908bf215546Sopenharmony_ci <bitfield name="FLAG_BUFFER_LOGH" low="12" high="15" type="uint"/> 3909bf215546Sopenharmony_ci </reg32> 3910bf215546Sopenharmony_ci <reg32 offset="11" name="11"/> 3911bf215546Sopenharmony_ci <reg32 offset="12" name="12"/> 3912bf215546Sopenharmony_ci <reg32 offset="13" name="13"/> 3913bf215546Sopenharmony_ci <reg32 offset="14" name="14"/> 3914bf215546Sopenharmony_ci <reg32 offset="15" name="15"/> 3915bf215546Sopenharmony_ci</domain> 3916bf215546Sopenharmony_ci 3917bf215546Sopenharmony_ci<domain name="A6XX_UBO" width="32"> 3918bf215546Sopenharmony_ci <reg32 offset="0" name="0"> 3919bf215546Sopenharmony_ci <bitfield name="BASE_LO" low="0" high="31"/> 3920bf215546Sopenharmony_ci </reg32> 3921bf215546Sopenharmony_ci <reg32 offset="1" name="1"> 3922bf215546Sopenharmony_ci <bitfield name="BASE_HI" low="0" high="16"/> 3923bf215546Sopenharmony_ci <bitfield name="SIZE" low="17" high="31"/> <!-- size in vec4 (4xDWORD) units --> 3924bf215546Sopenharmony_ci </reg32> 3925bf215546Sopenharmony_ci</domain> 3926bf215546Sopenharmony_ci 3927bf215546Sopenharmony_ci<domain name="A6XX_PDC" width="32"> 3928bf215546Sopenharmony_ci <reg32 offset="0x1140" name="GPU_ENABLE_PDC"/> 3929bf215546Sopenharmony_ci <reg32 offset="0x1148" name="GPU_SEQ_START_ADDR"/> 3930bf215546Sopenharmony_ci <reg32 offset="0x1540" name="GPU_TCS0_CONTROL"/> 3931bf215546Sopenharmony_ci <reg32 offset="0x1541" name="GPU_TCS0_CMD_ENABLE_BANK"/> 3932bf215546Sopenharmony_ci <reg32 offset="0x1542" name="GPU_TCS0_CMD_WAIT_FOR_CMPL_BANK"/> 3933bf215546Sopenharmony_ci <reg32 offset="0x1543" name="GPU_TCS0_CMD0_MSGID"/> 3934bf215546Sopenharmony_ci <reg32 offset="0x1544" name="GPU_TCS0_CMD0_ADDR"/> 3935bf215546Sopenharmony_ci <reg32 offset="0x1545" name="GPU_TCS0_CMD0_DATA"/> 3936bf215546Sopenharmony_ci <reg32 offset="0x1572" name="GPU_TCS1_CONTROL"/> 3937bf215546Sopenharmony_ci <reg32 offset="0x1573" name="GPU_TCS1_CMD_ENABLE_BANK"/> 3938bf215546Sopenharmony_ci <reg32 offset="0x1574" name="GPU_TCS1_CMD_WAIT_FOR_CMPL_BANK"/> 3939bf215546Sopenharmony_ci <reg32 offset="0x1575" name="GPU_TCS1_CMD0_MSGID"/> 3940bf215546Sopenharmony_ci <reg32 offset="0x1576" name="GPU_TCS1_CMD0_ADDR"/> 3941bf215546Sopenharmony_ci <reg32 offset="0x1577" name="GPU_TCS1_CMD0_DATA"/> 3942bf215546Sopenharmony_ci <reg32 offset="0x15A4" name="GPU_TCS2_CONTROL"/> 3943bf215546Sopenharmony_ci <reg32 offset="0x15A5" name="GPU_TCS2_CMD_ENABLE_BANK"/> 3944bf215546Sopenharmony_ci <reg32 offset="0x15A6" name="GPU_TCS2_CMD_WAIT_FOR_CMPL_BANK"/> 3945bf215546Sopenharmony_ci <reg32 offset="0x15A7" name="GPU_TCS2_CMD0_MSGID"/> 3946bf215546Sopenharmony_ci <reg32 offset="0x15A8" name="GPU_TCS2_CMD0_ADDR"/> 3947bf215546Sopenharmony_ci <reg32 offset="0x15A9" name="GPU_TCS2_CMD0_DATA"/> 3948bf215546Sopenharmony_ci <reg32 offset="0x15D6" name="GPU_TCS3_CONTROL"/> 3949bf215546Sopenharmony_ci <reg32 offset="0x15D7" name="GPU_TCS3_CMD_ENABLE_BANK"/> 3950bf215546Sopenharmony_ci <reg32 offset="0x15D8" name="GPU_TCS3_CMD_WAIT_FOR_CMPL_BANK"/> 3951bf215546Sopenharmony_ci <reg32 offset="0x15D9" name="GPU_TCS3_CMD0_MSGID"/> 3952bf215546Sopenharmony_ci <reg32 offset="0x15DA" name="GPU_TCS3_CMD0_ADDR"/> 3953bf215546Sopenharmony_ci <reg32 offset="0x15DB" name="GPU_TCS3_CMD0_DATA"/> 3954bf215546Sopenharmony_ci</domain> 3955bf215546Sopenharmony_ci 3956bf215546Sopenharmony_ci<domain name="A6XX_PDC_GPU_SEQ" width="32"> 3957bf215546Sopenharmony_ci <reg32 offset="0x0" name="MEM_0"/> 3958bf215546Sopenharmony_ci</domain> 3959bf215546Sopenharmony_ci 3960bf215546Sopenharmony_ci<domain name="A6XX_CX_DBGC" width="32"> 3961bf215546Sopenharmony_ci <reg32 offset="0x0000" name="CFG_DBGBUS_SEL_A"> 3962bf215546Sopenharmony_ci <bitfield high="7" low="0" name="PING_INDEX"/> 3963bf215546Sopenharmony_ci <bitfield high="15" low="8" name="PING_BLK_SEL"/> 3964bf215546Sopenharmony_ci </reg32> 3965bf215546Sopenharmony_ci <reg32 offset="0x0001" name="CFG_DBGBUS_SEL_B"/> 3966bf215546Sopenharmony_ci <reg32 offset="0x0002" name="CFG_DBGBUS_SEL_C"/> 3967bf215546Sopenharmony_ci <reg32 offset="0x0003" name="CFG_DBGBUS_SEL_D"/> 3968bf215546Sopenharmony_ci <reg32 offset="0x0004" name="CFG_DBGBUS_CNTLT"> 3969bf215546Sopenharmony_ci <bitfield high="5" low="0" name="TRACEEN"/> 3970bf215546Sopenharmony_ci <bitfield high="14" low="12" name="GRANU"/> 3971bf215546Sopenharmony_ci <bitfield high="31" low="28" name="SEGT"/> 3972bf215546Sopenharmony_ci </reg32> 3973bf215546Sopenharmony_ci <reg32 offset="0x0005" name="CFG_DBGBUS_CNTLM"> 3974bf215546Sopenharmony_ci <bitfield high="27" low="24" name="ENABLE"/> 3975bf215546Sopenharmony_ci </reg32> 3976bf215546Sopenharmony_ci <reg32 offset="0x0008" name="CFG_DBGBUS_IVTL_0"/> 3977bf215546Sopenharmony_ci <reg32 offset="0x0009" name="CFG_DBGBUS_IVTL_1"/> 3978bf215546Sopenharmony_ci <reg32 offset="0x000a" name="CFG_DBGBUS_IVTL_2"/> 3979bf215546Sopenharmony_ci <reg32 offset="0x000b" name="CFG_DBGBUS_IVTL_3"/> 3980bf215546Sopenharmony_ci <reg32 offset="0x000c" name="CFG_DBGBUS_MASKL_0"/> 3981bf215546Sopenharmony_ci <reg32 offset="0x000d" name="CFG_DBGBUS_MASKL_1"/> 3982bf215546Sopenharmony_ci <reg32 offset="0x000e" name="CFG_DBGBUS_MASKL_2"/> 3983bf215546Sopenharmony_ci <reg32 offset="0x000f" name="CFG_DBGBUS_MASKL_3"/> 3984bf215546Sopenharmony_ci <reg32 offset="0x0010" name="CFG_DBGBUS_BYTEL_0"> 3985bf215546Sopenharmony_ci <bitfield high="3" low="0" name="BYTEL0"/> 3986bf215546Sopenharmony_ci <bitfield high="7" low="4" name="BYTEL1"/> 3987bf215546Sopenharmony_ci <bitfield high="11" low="8" name="BYTEL2"/> 3988bf215546Sopenharmony_ci <bitfield high="15" low="12" name="BYTEL3"/> 3989bf215546Sopenharmony_ci <bitfield high="19" low="16" name="BYTEL4"/> 3990bf215546Sopenharmony_ci <bitfield high="23" low="20" name="BYTEL5"/> 3991bf215546Sopenharmony_ci <bitfield high="27" low="24" name="BYTEL6"/> 3992bf215546Sopenharmony_ci <bitfield high="31" low="28" name="BYTEL7"/> 3993bf215546Sopenharmony_ci </reg32> 3994bf215546Sopenharmony_ci <reg32 offset="0x0011" name="CFG_DBGBUS_BYTEL_1"> 3995bf215546Sopenharmony_ci <bitfield high="3" low="0" name="BYTEL8"/> 3996bf215546Sopenharmony_ci <bitfield high="7" low="4" name="BYTEL9"/> 3997bf215546Sopenharmony_ci <bitfield high="11" low="8" name="BYTEL10"/> 3998bf215546Sopenharmony_ci <bitfield high="15" low="12" name="BYTEL11"/> 3999bf215546Sopenharmony_ci <bitfield high="19" low="16" name="BYTEL12"/> 4000bf215546Sopenharmony_ci <bitfield high="23" low="20" name="BYTEL13"/> 4001bf215546Sopenharmony_ci <bitfield high="27" low="24" name="BYTEL14"/> 4002bf215546Sopenharmony_ci <bitfield high="31" low="28" name="BYTEL15"/> 4003bf215546Sopenharmony_ci </reg32> 4004bf215546Sopenharmony_ci 4005bf215546Sopenharmony_ci <reg32 offset="0x002f" name="CFG_DBGBUS_TRACE_BUF1"/> 4006bf215546Sopenharmony_ci <reg32 offset="0x0030" name="CFG_DBGBUS_TRACE_BUF2"/> 4007bf215546Sopenharmony_ci</domain> 4008bf215546Sopenharmony_ci 4009bf215546Sopenharmony_ci<domain name="A6XX_CX_MISC" width="32"> 4010bf215546Sopenharmony_ci <reg32 offset="0x0001" name="SYSTEM_CACHE_CNTL_0"/> 4011bf215546Sopenharmony_ci <reg32 offset="0x0002" name="SYSTEM_CACHE_CNTL_1"/> 4012bf215546Sopenharmony_ci</domain> 4013bf215546Sopenharmony_ci 4014bf215546Sopenharmony_ci</database> 4015