1*ae22a949SDmitry Baryshkov<?xml version="1.0" encoding="UTF-8"?> 2*ae22a949SDmitry Baryshkov<database xmlns="http://nouveau.freedesktop.org/" 3*ae22a949SDmitry Baryshkovxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4*ae22a949SDmitry Baryshkovxsi:schemaLocation="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd"> 5*ae22a949SDmitry Baryshkov<import file="freedreno_copyright.xml"/> 6*ae22a949SDmitry Baryshkov<import file="adreno/adreno_common.xml"/> 7*ae22a949SDmitry Baryshkov<import file="adreno/adreno_pm4.xml"/> 8*ae22a949SDmitry Baryshkov 9*ae22a949SDmitry Baryshkov<enum name="a3xx_tile_mode"> 10*ae22a949SDmitry Baryshkov <value name="LINEAR" value="0"/> 11*ae22a949SDmitry Baryshkov <value name="TILE_4X4" value="1"/> <!-- "normal" case for textures --> 12*ae22a949SDmitry Baryshkov <value name="TILE_32X32" value="2"/> <!-- only used in GMEM --> 13*ae22a949SDmitry Baryshkov <value name="TILE_4X2" value="3"/> <!-- only used for CrCb --> 14*ae22a949SDmitry Baryshkov</enum> 15*ae22a949SDmitry Baryshkov 16*ae22a949SDmitry Baryshkov<enum name="a3xx_state_block_id"> 17*ae22a949SDmitry Baryshkov <value name="HLSQ_BLOCK_ID_TP_TEX" value="2"/> 18*ae22a949SDmitry Baryshkov <value name="HLSQ_BLOCK_ID_TP_MIPMAP" value="3"/> 19*ae22a949SDmitry Baryshkov <value name="HLSQ_BLOCK_ID_SP_VS" value="4"/> 20*ae22a949SDmitry Baryshkov <value name="HLSQ_BLOCK_ID_SP_FS" value="6"/> 21*ae22a949SDmitry Baryshkov</enum> 22*ae22a949SDmitry Baryshkov 23*ae22a949SDmitry Baryshkov<enum name="a3xx_cache_opcode"> 24*ae22a949SDmitry Baryshkov <value name="INVALIDATE" value="1"/> 25*ae22a949SDmitry Baryshkov</enum> 26*ae22a949SDmitry Baryshkov 27*ae22a949SDmitry Baryshkov<enum name="a3xx_vtx_fmt"> 28*ae22a949SDmitry Baryshkov <value name="VFMT_32_FLOAT" value="0x0"/> 29*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_FLOAT" value="0x1"/> 30*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_32_FLOAT" value="0x2"/> 31*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_32_32_FLOAT" value="0x3"/> 32*ae22a949SDmitry Baryshkov 33*ae22a949SDmitry Baryshkov <value name="VFMT_16_FLOAT" value="0x4"/> 34*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_FLOAT" value="0x5"/> 35*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_FLOAT" value="0x6"/> 36*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_16_FLOAT" value="0x7"/> 37*ae22a949SDmitry Baryshkov 38*ae22a949SDmitry Baryshkov <value name="VFMT_32_FIXED" value="0x8"/> 39*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_FIXED" value="0x9"/> 40*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_32_FIXED" value="0xa"/> 41*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_32_32_FIXED" value="0xb"/> 42*ae22a949SDmitry Baryshkov 43*ae22a949SDmitry Baryshkov <value name="VFMT_16_SINT" value="0x10"/> 44*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_SINT" value="0x11"/> 45*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_SINT" value="0x12"/> 46*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_16_SINT" value="0x13"/> 47*ae22a949SDmitry Baryshkov <value name="VFMT_16_UINT" value="0x14"/> 48*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_UINT" value="0x15"/> 49*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_UINT" value="0x16"/> 50*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_16_UINT" value="0x17"/> 51*ae22a949SDmitry Baryshkov <value name="VFMT_16_SNORM" value="0x18"/> 52*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_SNORM" value="0x19"/> 53*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_SNORM" value="0x1a"/> 54*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_16_SNORM" value="0x1b"/> 55*ae22a949SDmitry Baryshkov <value name="VFMT_16_UNORM" value="0x1c"/> 56*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_UNORM" value="0x1d"/> 57*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_UNORM" value="0x1e"/> 58*ae22a949SDmitry Baryshkov <value name="VFMT_16_16_16_16_UNORM" value="0x1f"/> 59*ae22a949SDmitry Baryshkov 60*ae22a949SDmitry Baryshkov <!-- seems to be no NORM variants for 32bit.. --> 61*ae22a949SDmitry Baryshkov <value name="VFMT_32_UINT" value="0x20"/> 62*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_UINT" value="0x21"/> 63*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_32_UINT" value="0x22"/> 64*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_32_32_UINT" value="0x23"/> 65*ae22a949SDmitry Baryshkov <value name="VFMT_32_SINT" value="0x24"/> 66*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_SINT" value="0x25"/> 67*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_32_SINT" value="0x26"/> 68*ae22a949SDmitry Baryshkov <value name="VFMT_32_32_32_32_SINT" value="0x27"/> 69*ae22a949SDmitry Baryshkov 70*ae22a949SDmitry Baryshkov <value name="VFMT_8_UINT" value="0x28"/> 71*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_UINT" value="0x29"/> 72*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_8_UINT" value="0x2a"/> 73*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_8_8_UINT" value="0x2b"/> 74*ae22a949SDmitry Baryshkov <value name="VFMT_8_UNORM" value="0x2c"/> 75*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_UNORM" value="0x2d"/> 76*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_8_UNORM" value="0x2e"/> 77*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_8_8_UNORM" value="0x2f"/> 78*ae22a949SDmitry Baryshkov <value name="VFMT_8_SINT" value="0x30"/> 79*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_SINT" value="0x31"/> 80*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_8_SINT" value="0x32"/> 81*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_8_8_SINT" value="0x33"/> 82*ae22a949SDmitry Baryshkov <value name="VFMT_8_SNORM" value="0x34"/> 83*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_SNORM" value="0x35"/> 84*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_8_SNORM" value="0x36"/> 85*ae22a949SDmitry Baryshkov <value name="VFMT_8_8_8_8_SNORM" value="0x37"/> 86*ae22a949SDmitry Baryshkov <value name="VFMT_10_10_10_2_UINT" value="0x38"/> 87*ae22a949SDmitry Baryshkov <value name="VFMT_10_10_10_2_UNORM" value="0x39"/> 88*ae22a949SDmitry Baryshkov <value name="VFMT_10_10_10_2_SINT" value="0x3a"/> 89*ae22a949SDmitry Baryshkov <value name="VFMT_10_10_10_2_SNORM" value="0x3b"/> 90*ae22a949SDmitry Baryshkov <value name="VFMT_2_10_10_10_UINT" value="0x3c"/> 91*ae22a949SDmitry Baryshkov <value name="VFMT_2_10_10_10_UNORM" value="0x3d"/> 92*ae22a949SDmitry Baryshkov <value name="VFMT_2_10_10_10_SINT" value="0x3e"/> 93*ae22a949SDmitry Baryshkov <value name="VFMT_2_10_10_10_SNORM" value="0x3f"/> 94*ae22a949SDmitry Baryshkov 95*ae22a949SDmitry Baryshkov <value name="VFMT_NONE" value="0xff"/> 96*ae22a949SDmitry Baryshkov</enum> 97*ae22a949SDmitry Baryshkov 98*ae22a949SDmitry Baryshkov<enum name="a3xx_tex_fmt"> 99*ae22a949SDmitry Baryshkov <value name="TFMT_5_6_5_UNORM" value="0x4"/> 100*ae22a949SDmitry Baryshkov <value name="TFMT_5_5_5_1_UNORM" value="0x5"/> 101*ae22a949SDmitry Baryshkov <value name="TFMT_4_4_4_4_UNORM" value="0x7"/> 102*ae22a949SDmitry Baryshkov <value name="TFMT_Z16_UNORM" value="0x9"/> 103*ae22a949SDmitry Baryshkov <value name="TFMT_X8Z24_UNORM" value="0xa"/> 104*ae22a949SDmitry Baryshkov <value name="TFMT_Z32_FLOAT" value="0xb"/> 105*ae22a949SDmitry Baryshkov 106*ae22a949SDmitry Baryshkov <!-- 107*ae22a949SDmitry Baryshkov The NV12 tiled/linear formats seem to require gang'd sampler 108*ae22a949SDmitry Baryshkov slots (ie. sampler state N plus N+1) for Y and UV planes. 109*ae22a949SDmitry Baryshkov They fetch yuv in single sam instruction, but still require 110*ae22a949SDmitry Baryshkov colorspace conversion in the shader. 111*ae22a949SDmitry Baryshkov --> 112*ae22a949SDmitry Baryshkov <value name="TFMT_UV_64X32" value="0x10"/> 113*ae22a949SDmitry Baryshkov <value name="TFMT_VU_64X32" value="0x11"/> 114*ae22a949SDmitry Baryshkov <value name="TFMT_Y_64X32" value="0x12"/> 115*ae22a949SDmitry Baryshkov <value name="TFMT_NV12_64X32" value="0x13"/> 116*ae22a949SDmitry Baryshkov <value name="TFMT_UV_LINEAR" value="0x14"/> 117*ae22a949SDmitry Baryshkov <value name="TFMT_VU_LINEAR" value="0x15"/> 118*ae22a949SDmitry Baryshkov <value name="TFMT_Y_LINEAR" value="0x16"/> 119*ae22a949SDmitry Baryshkov <value name="TFMT_NV12_LINEAR" value="0x17"/> 120*ae22a949SDmitry Baryshkov <value name="TFMT_I420_Y" value="0x18"/> 121*ae22a949SDmitry Baryshkov <value name="TFMT_I420_U" value="0x1a"/> 122*ae22a949SDmitry Baryshkov <value name="TFMT_I420_V" value="0x1b"/> 123*ae22a949SDmitry Baryshkov 124*ae22a949SDmitry Baryshkov <value name="TFMT_ATC_RGB" value="0x20"/> 125*ae22a949SDmitry Baryshkov <value name="TFMT_ATC_RGBA_EXPLICIT" value="0x21"/> 126*ae22a949SDmitry Baryshkov <value name="TFMT_ETC1" value="0x22"/> 127*ae22a949SDmitry Baryshkov <value name="TFMT_ATC_RGBA_INTERPOLATED" value="0x23"/> 128*ae22a949SDmitry Baryshkov 129*ae22a949SDmitry Baryshkov <value name="TFMT_DXT1" value="0x24"/> 130*ae22a949SDmitry Baryshkov <value name="TFMT_DXT3" value="0x25"/> 131*ae22a949SDmitry Baryshkov <value name="TFMT_DXT5" value="0x26"/> 132*ae22a949SDmitry Baryshkov 133*ae22a949SDmitry Baryshkov <value name="TFMT_2_10_10_10_UNORM" value="0x28"/> 134*ae22a949SDmitry Baryshkov <value name="TFMT_10_10_10_2_UNORM" value="0x29"/> 135*ae22a949SDmitry Baryshkov <value name="TFMT_9_9_9_E5_FLOAT" value="0x2a"/> 136*ae22a949SDmitry Baryshkov <value name="TFMT_11_11_10_FLOAT" value="0x2b"/> 137*ae22a949SDmitry Baryshkov <value name="TFMT_A8_UNORM" value="0x2c"/> <!-- GL_ALPHA --> 138*ae22a949SDmitry Baryshkov <value name="TFMT_L8_UNORM" value="0x2d"/> 139*ae22a949SDmitry Baryshkov <value name="TFMT_L8_A8_UNORM" value="0x2f"/> <!-- GL_LUMINANCE_ALPHA --> 140*ae22a949SDmitry Baryshkov 141*ae22a949SDmitry Baryshkov <!-- 142*ae22a949SDmitry Baryshkov NOTE: GL_ALPHA and GL_LUMINANCE_ALPHA aren't handled in a similar way 143*ae22a949SDmitry Baryshkov to float16, float32.. but they seem to use non-standard swizzle too.. 144*ae22a949SDmitry Baryshkov perhaps we can ditch that if the pattern follows of 0xn0, 0xn1, 0xn2, 145*ae22a949SDmitry Baryshkov 0xn3 for 1, 2, 3, 4 components respectively.. 146*ae22a949SDmitry Baryshkov 147*ae22a949SDmitry Baryshkov Only formats filled in below are the ones that have been observed by 148*ae22a949SDmitry Baryshkov the blob or tested.. you can guess what the missing ones are.. 149*ae22a949SDmitry Baryshkov --> 150*ae22a949SDmitry Baryshkov 151*ae22a949SDmitry Baryshkov <value name="TFMT_8_UNORM" value="0x30"/> <!-- GL_LUMINANCE --> 152*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_UNORM" value="0x31"/> 153*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_8_UNORM" value="0x32"/> 154*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_8_8_UNORM" value="0x33"/> 155*ae22a949SDmitry Baryshkov 156*ae22a949SDmitry Baryshkov <value name="TFMT_8_SNORM" value="0x34"/> 157*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_SNORM" value="0x35"/> 158*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_8_SNORM" value="0x36"/> 159*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_8_8_SNORM" value="0x37"/> 160*ae22a949SDmitry Baryshkov 161*ae22a949SDmitry Baryshkov <value name="TFMT_8_UINT" value="0x38"/> 162*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_UINT" value="0x39"/> 163*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_8_UINT" value="0x3a"/> 164*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_8_8_UINT" value="0x3b"/> 165*ae22a949SDmitry Baryshkov 166*ae22a949SDmitry Baryshkov <value name="TFMT_8_SINT" value="0x3c"/> 167*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_SINT" value="0x3d"/> 168*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_8_SINT" value="0x3e"/> 169*ae22a949SDmitry Baryshkov <value name="TFMT_8_8_8_8_SINT" value="0x3f"/> 170*ae22a949SDmitry Baryshkov 171*ae22a949SDmitry Baryshkov <value name="TFMT_16_FLOAT" value="0x40"/> 172*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_FLOAT" value="0x41"/> 173*ae22a949SDmitry Baryshkov <!-- TFMT_FLOAT_16_16_16 --> 174*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_16_16_FLOAT" value="0x43"/> 175*ae22a949SDmitry Baryshkov 176*ae22a949SDmitry Baryshkov <value name="TFMT_16_UINT" value="0x44"/> 177*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_UINT" value="0x45"/> 178*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_16_16_UINT" value="0x47"/> 179*ae22a949SDmitry Baryshkov 180*ae22a949SDmitry Baryshkov <value name="TFMT_16_SINT" value="0x48"/> 181*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_SINT" value="0x49"/> 182*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_16_16_SINT" value="0x4b"/> 183*ae22a949SDmitry Baryshkov 184*ae22a949SDmitry Baryshkov <value name="TFMT_16_UNORM" value="0x4c"/> 185*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_UNORM" value="0x4d"/> 186*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_16_16_UNORM" value="0x4f"/> 187*ae22a949SDmitry Baryshkov 188*ae22a949SDmitry Baryshkov <value name="TFMT_16_SNORM" value="0x50"/> 189*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_SNORM" value="0x51"/> 190*ae22a949SDmitry Baryshkov <value name="TFMT_16_16_16_16_SNORM" value="0x53"/> 191*ae22a949SDmitry Baryshkov 192*ae22a949SDmitry Baryshkov <value name="TFMT_32_FLOAT" value="0x54"/> 193*ae22a949SDmitry Baryshkov <value name="TFMT_32_32_FLOAT" value="0x55"/> 194*ae22a949SDmitry Baryshkov <!-- TFMT_32_32_32_FLOAT --> 195*ae22a949SDmitry Baryshkov <value name="TFMT_32_32_32_32_FLOAT" value="0x57"/> 196*ae22a949SDmitry Baryshkov 197*ae22a949SDmitry Baryshkov <value name="TFMT_32_UINT" value="0x58"/> 198*ae22a949SDmitry Baryshkov <value name="TFMT_32_32_UINT" value="0x59"/> 199*ae22a949SDmitry Baryshkov <value name="TFMT_32_32_32_32_UINT" value="0x5b"/> 200*ae22a949SDmitry Baryshkov 201*ae22a949SDmitry Baryshkov <value name="TFMT_32_SINT" value="0x5c"/> 202*ae22a949SDmitry Baryshkov <value name="TFMT_32_32_SINT" value="0x5d"/> 203*ae22a949SDmitry Baryshkov <value name="TFMT_32_32_32_32_SINT" value="0x5f"/> 204*ae22a949SDmitry Baryshkov 205*ae22a949SDmitry Baryshkov <value name="TFMT_2_10_10_10_UINT" value="0x60"/> 206*ae22a949SDmitry Baryshkov <value name="TFMT_10_10_10_2_UINT" value="0x61"/> 207*ae22a949SDmitry Baryshkov 208*ae22a949SDmitry Baryshkov <value name="TFMT_ETC2_RG11_SNORM" value="0x70"/> 209*ae22a949SDmitry Baryshkov <value name="TFMT_ETC2_RG11_UNORM" value="0x71"/> 210*ae22a949SDmitry Baryshkov <value name="TFMT_ETC2_R11_SNORM" value="0x72"/> 211*ae22a949SDmitry Baryshkov <value name="TFMT_ETC2_R11_UNORM" value="0x73"/> 212*ae22a949SDmitry Baryshkov <value name="TFMT_ETC2_RGBA8" value="0x74"/> 213*ae22a949SDmitry Baryshkov <value name="TFMT_ETC2_RGB8A1" value="0x75"/> 214*ae22a949SDmitry Baryshkov <value name="TFMT_ETC2_RGB8" value="0x76"/> 215*ae22a949SDmitry Baryshkov 216*ae22a949SDmitry Baryshkov <value name="TFMT_NONE" value="0xff"/> 217*ae22a949SDmitry Baryshkov</enum> 218*ae22a949SDmitry Baryshkov 219*ae22a949SDmitry Baryshkov<enum name="a3xx_color_fmt"> 220*ae22a949SDmitry Baryshkov <value name="RB_R5G6B5_UNORM" value="0x00"/> 221*ae22a949SDmitry Baryshkov <value name="RB_R5G5B5A1_UNORM" value="0x01"/> 222*ae22a949SDmitry Baryshkov <value name="RB_R4G4B4A4_UNORM" value="0x03"/> 223*ae22a949SDmitry Baryshkov <value name="RB_R8G8B8_UNORM" value="0x04"/> 224*ae22a949SDmitry Baryshkov <value name="RB_R8G8B8A8_UNORM" value="0x08"/> 225*ae22a949SDmitry Baryshkov <value name="RB_R8G8B8A8_SNORM" value="0x09"/> 226*ae22a949SDmitry Baryshkov <value name="RB_R8G8B8A8_UINT" value="0x0a"/> 227*ae22a949SDmitry Baryshkov <value name="RB_R8G8B8A8_SINT" value="0x0b"/> 228*ae22a949SDmitry Baryshkov <value name="RB_R8G8_UNORM" value="0x0c"/> 229*ae22a949SDmitry Baryshkov <value name="RB_R8G8_SNORM" value="0x0d"/> 230*ae22a949SDmitry Baryshkov <value name="RB_R8G8_UINT" value="0x0e"/> 231*ae22a949SDmitry Baryshkov <value name="RB_R8G8_SINT" value="0x0f"/> 232*ae22a949SDmitry Baryshkov <value name="RB_R10G10B10A2_UNORM" value="0x10"/> 233*ae22a949SDmitry Baryshkov <value name="RB_A2R10G10B10_UNORM" value="0x11"/> 234*ae22a949SDmitry Baryshkov <value name="RB_R10G10B10A2_UINT" value="0x12"/> 235*ae22a949SDmitry Baryshkov <value name="RB_A2R10G10B10_UINT" value="0x13"/> 236*ae22a949SDmitry Baryshkov 237*ae22a949SDmitry Baryshkov <value name="RB_A8_UNORM" value="0x14"/> 238*ae22a949SDmitry Baryshkov <value name="RB_R8_UNORM" value="0x15"/> 239*ae22a949SDmitry Baryshkov 240*ae22a949SDmitry Baryshkov <value name="RB_R16_FLOAT" value="0x18"/> 241*ae22a949SDmitry Baryshkov <value name="RB_R16G16_FLOAT" value="0x19"/> 242*ae22a949SDmitry Baryshkov <value name="RB_R16G16B16A16_FLOAT" value="0x1b"/> <!-- GL_HALF_FLOAT_OES --> 243*ae22a949SDmitry Baryshkov <value name="RB_R11G11B10_FLOAT" value="0x1c"/> 244*ae22a949SDmitry Baryshkov 245*ae22a949SDmitry Baryshkov <value name="RB_R16_SNORM" value="0x20"/> 246*ae22a949SDmitry Baryshkov <value name="RB_R16G16_SNORM" value="0x21"/> 247*ae22a949SDmitry Baryshkov <value name="RB_R16G16B16A16_SNORM" value="0x23"/> 248*ae22a949SDmitry Baryshkov 249*ae22a949SDmitry Baryshkov <value name="RB_R16_UNORM" value="0x24"/> 250*ae22a949SDmitry Baryshkov <value name="RB_R16G16_UNORM" value="0x25"/> 251*ae22a949SDmitry Baryshkov <value name="RB_R16G16B16A16_UNORM" value="0x27"/> 252*ae22a949SDmitry Baryshkov 253*ae22a949SDmitry Baryshkov <value name="RB_R16_SINT" value="0x28"/> 254*ae22a949SDmitry Baryshkov <value name="RB_R16G16_SINT" value="0x29"/> 255*ae22a949SDmitry Baryshkov <value name="RB_R16G16B16A16_SINT" value="0x2b"/> 256*ae22a949SDmitry Baryshkov 257*ae22a949SDmitry Baryshkov <value name="RB_R16_UINT" value="0x2c"/> 258*ae22a949SDmitry Baryshkov <value name="RB_R16G16_UINT" value="0x2d"/> 259*ae22a949SDmitry Baryshkov <value name="RB_R16G16B16A16_UINT" value="0x2f"/> 260*ae22a949SDmitry Baryshkov 261*ae22a949SDmitry Baryshkov <value name="RB_R32_FLOAT" value="0x30"/> 262*ae22a949SDmitry Baryshkov <value name="RB_R32G32_FLOAT" value="0x31"/> 263*ae22a949SDmitry Baryshkov <value name="RB_R32G32B32A32_FLOAT" value="0x33"/> <!-- GL_FLOAT --> 264*ae22a949SDmitry Baryshkov 265*ae22a949SDmitry Baryshkov <value name="RB_R32_SINT" value="0x34"/> 266*ae22a949SDmitry Baryshkov <value name="RB_R32G32_SINT" value="0x35"/> 267*ae22a949SDmitry Baryshkov <value name="RB_R32G32B32A32_SINT" value="0x37"/> 268*ae22a949SDmitry Baryshkov 269*ae22a949SDmitry Baryshkov <value name="RB_R32_UINT" value="0x38"/> 270*ae22a949SDmitry Baryshkov <value name="RB_R32G32_UINT" value="0x39"/> 271*ae22a949SDmitry Baryshkov <value name="RB_R32G32B32A32_UINT" value="0x3b"/> 272*ae22a949SDmitry Baryshkov 273*ae22a949SDmitry Baryshkov <value name="RB_NONE" value="0xff"/> 274*ae22a949SDmitry Baryshkov</enum> 275*ae22a949SDmitry Baryshkov 276*ae22a949SDmitry Baryshkov<enum name="a3xx_cp_perfcounter_select"> 277*ae22a949SDmitry Baryshkov <value value="0x00" name="CP_ALWAYS_COUNT"/> 278*ae22a949SDmitry Baryshkov <value value="0x03" name="CP_AHB_PFPTRANS_WAIT"/> 279*ae22a949SDmitry Baryshkov <value value="0x06" name="CP_AHB_NRTTRANS_WAIT"/> 280*ae22a949SDmitry Baryshkov <value value="0x08" name="CP_CSF_NRT_READ_WAIT"/> 281*ae22a949SDmitry Baryshkov <value value="0x09" name="CP_CSF_I1_FIFO_FULL"/> 282*ae22a949SDmitry Baryshkov <value value="0x0a" name="CP_CSF_I2_FIFO_FULL"/> 283*ae22a949SDmitry Baryshkov <value value="0x0b" name="CP_CSF_ST_FIFO_FULL"/> 284*ae22a949SDmitry Baryshkov <value value="0x0c" name="CP_RESERVED_12"/> 285*ae22a949SDmitry Baryshkov <value value="0x0d" name="CP_CSF_RING_ROQ_FULL"/> 286*ae22a949SDmitry Baryshkov <value value="0x0e" name="CP_CSF_I1_ROQ_FULL"/> 287*ae22a949SDmitry Baryshkov <value value="0x0f" name="CP_CSF_I2_ROQ_FULL"/> 288*ae22a949SDmitry Baryshkov <value value="0x10" name="CP_CSF_ST_ROQ_FULL"/> 289*ae22a949SDmitry Baryshkov <value value="0x11" name="CP_RESERVED_17"/> 290*ae22a949SDmitry Baryshkov <value value="0x12" name="CP_MIU_TAG_MEM_FULL"/> 291*ae22a949SDmitry Baryshkov <value value="0x16" name="CP_MIU_NRT_WRITE_STALLED"/> 292*ae22a949SDmitry Baryshkov <value value="0x17" name="CP_MIU_NRT_READ_STALLED"/> 293*ae22a949SDmitry Baryshkov <value value="0x1a" name="CP_ME_REGS_RB_DONE_FIFO_FULL"/> 294*ae22a949SDmitry Baryshkov <value value="0x1b" name="CP_ME_REGS_VS_EVENT_FIFO_FULL"/> 295*ae22a949SDmitry Baryshkov <value value="0x1c" name="CP_ME_REGS_PS_EVENT_FIFO_FULL"/> 296*ae22a949SDmitry Baryshkov <value value="0x1d" name="CP_ME_REGS_CF_EVENT_FIFO_FULL"/> 297*ae22a949SDmitry Baryshkov <value value="0x1e" name="CP_ME_MICRO_RB_STARVED"/> 298*ae22a949SDmitry Baryshkov <value value="0x28" name="CP_AHB_RBBM_DWORD_SENT"/> 299*ae22a949SDmitry Baryshkov <value value="0x29" name="CP_ME_BUSY_CLOCKS"/> 300*ae22a949SDmitry Baryshkov <value value="0x2a" name="CP_ME_WAIT_CONTEXT_AVAIL"/> 301*ae22a949SDmitry Baryshkov <value value="0x2b" name="CP_PFP_TYPE0_PACKET"/> 302*ae22a949SDmitry Baryshkov <value value="0x2c" name="CP_PFP_TYPE3_PACKET"/> 303*ae22a949SDmitry Baryshkov <value value="0x2d" name="CP_CSF_RB_WPTR_NEQ_RPTR"/> 304*ae22a949SDmitry Baryshkov <value value="0x2e" name="CP_CSF_I1_SIZE_NEQ_ZERO"/> 305*ae22a949SDmitry Baryshkov <value value="0x2f" name="CP_CSF_I2_SIZE_NEQ_ZERO"/> 306*ae22a949SDmitry Baryshkov <value value="0x30" name="CP_CSF_RBI1I2_FETCHING"/> 307*ae22a949SDmitry Baryshkov</enum> 308*ae22a949SDmitry Baryshkov 309*ae22a949SDmitry Baryshkov<enum name="a3xx_gras_tse_perfcounter_select"> 310*ae22a949SDmitry Baryshkov <value value="0x00" name="GRAS_TSEPERF_INPUT_PRIM"/> 311*ae22a949SDmitry Baryshkov <value value="0x01" name="GRAS_TSEPERF_INPUT_NULL_PRIM"/> 312*ae22a949SDmitry Baryshkov <value value="0x02" name="GRAS_TSEPERF_TRIVAL_REJ_PRIM"/> 313*ae22a949SDmitry Baryshkov <value value="0x03" name="GRAS_TSEPERF_CLIPPED_PRIM"/> 314*ae22a949SDmitry Baryshkov <value value="0x04" name="GRAS_TSEPERF_NEW_PRIM"/> 315*ae22a949SDmitry Baryshkov <value value="0x05" name="GRAS_TSEPERF_ZERO_AREA_PRIM"/> 316*ae22a949SDmitry Baryshkov <value value="0x06" name="GRAS_TSEPERF_FACENESS_CULLED_PRIM"/> 317*ae22a949SDmitry Baryshkov <value value="0x07" name="GRAS_TSEPERF_ZERO_PIXEL_PRIM"/> 318*ae22a949SDmitry Baryshkov <value value="0x08" name="GRAS_TSEPERF_OUTPUT_NULL_PRIM"/> 319*ae22a949SDmitry Baryshkov <value value="0x09" name="GRAS_TSEPERF_OUTPUT_VISIBLE_PRIM"/> 320*ae22a949SDmitry Baryshkov <value value="0x0a" name="GRAS_TSEPERF_PRE_CLIP_PRIM"/> 321*ae22a949SDmitry Baryshkov <value value="0x0b" name="GRAS_TSEPERF_POST_CLIP_PRIM"/> 322*ae22a949SDmitry Baryshkov <value value="0x0c" name="GRAS_TSEPERF_WORKING_CYCLES"/> 323*ae22a949SDmitry Baryshkov <value value="0x0d" name="GRAS_TSEPERF_PC_STARVE"/> 324*ae22a949SDmitry Baryshkov <value value="0x0e" name="GRAS_TSERASPERF_STALL"/> 325*ae22a949SDmitry Baryshkov</enum> 326*ae22a949SDmitry Baryshkov 327*ae22a949SDmitry Baryshkov<enum name="a3xx_gras_ras_perfcounter_select"> 328*ae22a949SDmitry Baryshkov <value value="0x00" name="GRAS_RASPERF_16X16_TILES"/> 329*ae22a949SDmitry Baryshkov <value value="0x01" name="GRAS_RASPERF_8X8_TILES"/> 330*ae22a949SDmitry Baryshkov <value value="0x02" name="GRAS_RASPERF_4X4_TILES"/> 331*ae22a949SDmitry Baryshkov <value value="0x03" name="GRAS_RASPERF_WORKING_CYCLES"/> 332*ae22a949SDmitry Baryshkov <value value="0x04" name="GRAS_RASPERF_STALL_CYCLES_BY_RB"/> 333*ae22a949SDmitry Baryshkov <value value="0x05" name="GRAS_RASPERF_STALL_CYCLES_BY_VSC"/> 334*ae22a949SDmitry Baryshkov <value value="0x06" name="GRAS_RASPERF_STARVE_CYCLES_BY_TSE"/> 335*ae22a949SDmitry Baryshkov</enum> 336*ae22a949SDmitry Baryshkov 337*ae22a949SDmitry Baryshkov<enum name="a3xx_hlsq_perfcounter_select"> 338*ae22a949SDmitry Baryshkov <value value="0x00" name="HLSQ_PERF_SP_VS_CONSTANT"/> 339*ae22a949SDmitry Baryshkov <value value="0x01" name="HLSQ_PERF_SP_VS_INSTRUCTIONS"/> 340*ae22a949SDmitry Baryshkov <value value="0x02" name="HLSQ_PERF_SP_FS_CONSTANT"/> 341*ae22a949SDmitry Baryshkov <value value="0x03" name="HLSQ_PERF_SP_FS_INSTRUCTIONS"/> 342*ae22a949SDmitry Baryshkov <value value="0x04" name="HLSQ_PERF_TP_STATE"/> 343*ae22a949SDmitry Baryshkov <value value="0x05" name="HLSQ_PERF_QUADS"/> 344*ae22a949SDmitry Baryshkov <value value="0x06" name="HLSQ_PERF_PIXELS"/> 345*ae22a949SDmitry Baryshkov <value value="0x07" name="HLSQ_PERF_VERTICES"/> 346*ae22a949SDmitry Baryshkov <value value="0x08" name="HLSQ_PERF_FS8_THREADS"/> 347*ae22a949SDmitry Baryshkov <value value="0x09" name="HLSQ_PERF_FS16_THREADS"/> 348*ae22a949SDmitry Baryshkov <value value="0x0a" name="HLSQ_PERF_FS32_THREADS"/> 349*ae22a949SDmitry Baryshkov <value value="0x0b" name="HLSQ_PERF_VS8_THREADS"/> 350*ae22a949SDmitry Baryshkov <value value="0x0c" name="HLSQ_PERF_VS16_THREADS"/> 351*ae22a949SDmitry Baryshkov <value value="0x0d" name="HLSQ_PERF_SP_VS_DATA_BYTES"/> 352*ae22a949SDmitry Baryshkov <value value="0x0e" name="HLSQ_PERF_SP_FS_DATA_BYTES"/> 353*ae22a949SDmitry Baryshkov <value value="0x0f" name="HLSQ_PERF_ACTIVE_CYCLES"/> 354*ae22a949SDmitry Baryshkov <value value="0x10" name="HLSQ_PERF_STALL_CYCLES_SP_STATE"/> 355*ae22a949SDmitry Baryshkov <value value="0x11" name="HLSQ_PERF_STALL_CYCLES_SP_VS"/> 356*ae22a949SDmitry Baryshkov <value value="0x12" name="HLSQ_PERF_STALL_CYCLES_SP_FS"/> 357*ae22a949SDmitry Baryshkov <value value="0x13" name="HLSQ_PERF_STALL_CYCLES_UCHE"/> 358*ae22a949SDmitry Baryshkov <value value="0x14" name="HLSQ_PERF_RBBM_LOAD_CYCLES"/> 359*ae22a949SDmitry Baryshkov <value value="0x15" name="HLSQ_PERF_DI_TO_VS_START_SP0"/> 360*ae22a949SDmitry Baryshkov <value value="0x16" name="HLSQ_PERF_DI_TO_FS_START_SP0"/> 361*ae22a949SDmitry Baryshkov <value value="0x17" name="HLSQ_PERF_VS_START_TO_DONE_SP0"/> 362*ae22a949SDmitry Baryshkov <value value="0x18" name="HLSQ_PERF_FS_START_TO_DONE_SP0"/> 363*ae22a949SDmitry Baryshkov <value value="0x19" name="HLSQ_PERF_SP_STATE_COPY_CYCLES_VS"/> 364*ae22a949SDmitry Baryshkov <value value="0x1a" name="HLSQ_PERF_SP_STATE_COPY_CYCLES_FS"/> 365*ae22a949SDmitry Baryshkov <value value="0x1b" name="HLSQ_PERF_UCHE_LATENCY_CYCLES"/> 366*ae22a949SDmitry Baryshkov <value value="0x1c" name="HLSQ_PERF_UCHE_LATENCY_COUNT"/> 367*ae22a949SDmitry Baryshkov</enum> 368*ae22a949SDmitry Baryshkov 369*ae22a949SDmitry Baryshkov<enum name="a3xx_pc_perfcounter_select"> 370*ae22a949SDmitry Baryshkov <value value="0x00" name="PC_PCPERF_VISIBILITY_STREAMS"/> 371*ae22a949SDmitry Baryshkov <value value="0x01" name="PC_PCPERF_TOTAL_INSTANCES"/> 372*ae22a949SDmitry Baryshkov <value value="0x02" name="PC_PCPERF_PRIMITIVES_PC_VPC"/> 373*ae22a949SDmitry Baryshkov <value value="0x03" name="PC_PCPERF_PRIMITIVES_KILLED_BY_VS"/> 374*ae22a949SDmitry Baryshkov <value value="0x04" name="PC_PCPERF_PRIMITIVES_VISIBLE_BY_VS"/> 375*ae22a949SDmitry Baryshkov <value value="0x05" name="PC_PCPERF_DRAWCALLS_KILLED_BY_VS"/> 376*ae22a949SDmitry Baryshkov <value value="0x06" name="PC_PCPERF_DRAWCALLS_VISIBLE_BY_VS"/> 377*ae22a949SDmitry Baryshkov <value value="0x07" name="PC_PCPERF_VERTICES_TO_VFD"/> 378*ae22a949SDmitry Baryshkov <value value="0x08" name="PC_PCPERF_REUSED_VERTICES"/> 379*ae22a949SDmitry Baryshkov <value value="0x09" name="PC_PCPERF_CYCLES_STALLED_BY_VFD"/> 380*ae22a949SDmitry Baryshkov <value value="0x0a" name="PC_PCPERF_CYCLES_STALLED_BY_TSE"/> 381*ae22a949SDmitry Baryshkov <value value="0x0b" name="PC_PCPERF_CYCLES_STALLED_BY_VBIF"/> 382*ae22a949SDmitry Baryshkov <value value="0x0c" name="PC_PCPERF_CYCLES_IS_WORKING"/> 383*ae22a949SDmitry Baryshkov</enum> 384*ae22a949SDmitry Baryshkov 385*ae22a949SDmitry Baryshkov<enum name="a3xx_rb_perfcounter_select"> 386*ae22a949SDmitry Baryshkov <value value="0x00" name="RB_RBPERF_ACTIVE_CYCLES_ANY"/> 387*ae22a949SDmitry Baryshkov <value value="0x01" name="RB_RBPERF_ACTIVE_CYCLES_ALL"/> 388*ae22a949SDmitry Baryshkov <value value="0x02" name="RB_RBPERF_STARVE_CYCLES_BY_SP"/> 389*ae22a949SDmitry Baryshkov <value value="0x03" name="RB_RBPERF_STARVE_CYCLES_BY_RAS"/> 390*ae22a949SDmitry Baryshkov <value value="0x04" name="RB_RBPERF_STARVE_CYCLES_BY_MARB"/> 391*ae22a949SDmitry Baryshkov <value value="0x05" name="RB_RBPERF_STALL_CYCLES_BY_MARB"/> 392*ae22a949SDmitry Baryshkov <value value="0x06" name="RB_RBPERF_STALL_CYCLES_BY_HLSQ"/> 393*ae22a949SDmitry Baryshkov <value value="0x07" name="RB_RBPERF_RB_MARB_DATA"/> 394*ae22a949SDmitry Baryshkov <value value="0x08" name="RB_RBPERF_SP_RB_QUAD"/> 395*ae22a949SDmitry Baryshkov <value value="0x09" name="RB_RBPERF_RAS_EARLY_Z_QUADS"/> 396*ae22a949SDmitry Baryshkov <value value="0x0a" name="RB_RBPERF_GMEM_CH0_READ"/> 397*ae22a949SDmitry Baryshkov <value value="0x0b" name="RB_RBPERF_GMEM_CH1_READ"/> 398*ae22a949SDmitry Baryshkov <value value="0x0c" name="RB_RBPERF_GMEM_CH0_WRITE"/> 399*ae22a949SDmitry Baryshkov <value value="0x0d" name="RB_RBPERF_GMEM_CH1_WRITE"/> 400*ae22a949SDmitry Baryshkov <value value="0x0e" name="RB_RBPERF_CP_CONTEXT_DONE"/> 401*ae22a949SDmitry Baryshkov <value value="0x0f" name="RB_RBPERF_CP_CACHE_FLUSH"/> 402*ae22a949SDmitry Baryshkov <value value="0x10" name="RB_RBPERF_CP_ZPASS_DONE"/> 403*ae22a949SDmitry Baryshkov</enum> 404*ae22a949SDmitry Baryshkov 405*ae22a949SDmitry Baryshkov<enum name="a3xx_rbbm_perfcounter_select"> 406*ae22a949SDmitry Baryshkov <value value="0" name="RBBM_ALAWYS_ON"/> 407*ae22a949SDmitry Baryshkov <value value="1" name="RBBM_VBIF_BUSY"/> 408*ae22a949SDmitry Baryshkov <value value="2" name="RBBM_TSE_BUSY"/> 409*ae22a949SDmitry Baryshkov <value value="3" name="RBBM_RAS_BUSY"/> 410*ae22a949SDmitry Baryshkov <value value="4" name="RBBM_PC_DCALL_BUSY"/> 411*ae22a949SDmitry Baryshkov <value value="5" name="RBBM_PC_VSD_BUSY"/> 412*ae22a949SDmitry Baryshkov <value value="6" name="RBBM_VFD_BUSY"/> 413*ae22a949SDmitry Baryshkov <value value="7" name="RBBM_VPC_BUSY"/> 414*ae22a949SDmitry Baryshkov <value value="8" name="RBBM_UCHE_BUSY"/> 415*ae22a949SDmitry Baryshkov <value value="9" name="RBBM_VSC_BUSY"/> 416*ae22a949SDmitry Baryshkov <value value="10" name="RBBM_HLSQ_BUSY"/> 417*ae22a949SDmitry Baryshkov <value value="11" name="RBBM_ANY_RB_BUSY"/> 418*ae22a949SDmitry Baryshkov <value value="12" name="RBBM_ANY_TEX_BUSY"/> 419*ae22a949SDmitry Baryshkov <value value="13" name="RBBM_ANY_USP_BUSY"/> 420*ae22a949SDmitry Baryshkov <value value="14" name="RBBM_ANY_MARB_BUSY"/> 421*ae22a949SDmitry Baryshkov <value value="15" name="RBBM_ANY_ARB_BUSY"/> 422*ae22a949SDmitry Baryshkov <value value="16" name="RBBM_AHB_STATUS_BUSY"/> 423*ae22a949SDmitry Baryshkov <value value="17" name="RBBM_AHB_STATUS_STALLED"/> 424*ae22a949SDmitry Baryshkov <value value="18" name="RBBM_AHB_STATUS_TXFR"/> 425*ae22a949SDmitry Baryshkov <value value="19" name="RBBM_AHB_STATUS_TXFR_SPLIT"/> 426*ae22a949SDmitry Baryshkov <value value="20" name="RBBM_AHB_STATUS_TXFR_ERROR"/> 427*ae22a949SDmitry Baryshkov <value value="21" name="RBBM_AHB_STATUS_LONG_STALL"/> 428*ae22a949SDmitry Baryshkov <value value="22" name="RBBM_RBBM_STATUS_MASKED"/> 429*ae22a949SDmitry Baryshkov</enum> 430*ae22a949SDmitry Baryshkov 431*ae22a949SDmitry Baryshkov<enum name="a3xx_sp_perfcounter_select"> 432*ae22a949SDmitry Baryshkov <value value="0x00" name="SP_LM_LOAD_INSTRUCTIONS"/> 433*ae22a949SDmitry Baryshkov <value value="0x01" name="SP_LM_STORE_INSTRUCTIONS"/> 434*ae22a949SDmitry Baryshkov <value value="0x02" name="SP_LM_ATOMICS"/> 435*ae22a949SDmitry Baryshkov <value value="0x03" name="SP_UCHE_LOAD_INSTRUCTIONS"/> 436*ae22a949SDmitry Baryshkov <value value="0x04" name="SP_UCHE_STORE_INSTRUCTIONS"/> 437*ae22a949SDmitry Baryshkov <value value="0x05" name="SP_UCHE_ATOMICS"/> 438*ae22a949SDmitry Baryshkov <value value="0x06" name="SP_VS_TEX_INSTRUCTIONS"/> 439*ae22a949SDmitry Baryshkov <value value="0x07" name="SP_VS_CFLOW_INSTRUCTIONS"/> 440*ae22a949SDmitry Baryshkov <value value="0x08" name="SP_VS_EFU_INSTRUCTIONS"/> 441*ae22a949SDmitry Baryshkov <value value="0x09" name="SP_VS_FULL_ALU_INSTRUCTIONS"/> 442*ae22a949SDmitry Baryshkov <value value="0x0a" name="SP_VS_HALF_ALU_INSTRUCTIONS"/> 443*ae22a949SDmitry Baryshkov <value value="0x0b" name="SP_FS_TEX_INSTRUCTIONS"/> 444*ae22a949SDmitry Baryshkov <value value="0x0c" name="SP_FS_CFLOW_INSTRUCTIONS"/> 445*ae22a949SDmitry Baryshkov <value value="0x0d" name="SP_FS_EFU_INSTRUCTIONS"/> 446*ae22a949SDmitry Baryshkov <value value="0x0e" name="SP_FS_FULL_ALU_INSTRUCTIONS"/> 447*ae22a949SDmitry Baryshkov <value value="0x0f" name="SP_FS_HALF_ALU_INSTRUCTIONS"/> 448*ae22a949SDmitry Baryshkov <value value="0x10" name="SP_FS_BARY_INSTRUCTIONS"/> 449*ae22a949SDmitry Baryshkov <value value="0x11" name="SP_VS_INSTRUCTIONS"/> 450*ae22a949SDmitry Baryshkov <value value="0x12" name="SP_FS_INSTRUCTIONS"/> 451*ae22a949SDmitry Baryshkov <value value="0x13" name="SP_ADDR_LOCK_COUNT"/> 452*ae22a949SDmitry Baryshkov <value value="0x14" name="SP_UCHE_READ_TRANS"/> 453*ae22a949SDmitry Baryshkov <value value="0x15" name="SP_UCHE_WRITE_TRANS"/> 454*ae22a949SDmitry Baryshkov <value value="0x16" name="SP_EXPORT_VPC_TRANS"/> 455*ae22a949SDmitry Baryshkov <value value="0x17" name="SP_EXPORT_RB_TRANS"/> 456*ae22a949SDmitry Baryshkov <value value="0x18" name="SP_PIXELS_KILLED"/> 457*ae22a949SDmitry Baryshkov <value value="0x19" name="SP_ICL1_REQUESTS"/> 458*ae22a949SDmitry Baryshkov <value value="0x1a" name="SP_ICL1_MISSES"/> 459*ae22a949SDmitry Baryshkov <value value="0x1b" name="SP_ICL0_REQUESTS"/> 460*ae22a949SDmitry Baryshkov <value value="0x1c" name="SP_ICL0_MISSES"/> 461*ae22a949SDmitry Baryshkov <value value="0x1d" name="SP_ALU_ACTIVE_CYCLES"/> 462*ae22a949SDmitry Baryshkov <value value="0x1e" name="SP_EFU_ACTIVE_CYCLES"/> 463*ae22a949SDmitry Baryshkov <value value="0x1f" name="SP_STALL_CYCLES_BY_VPC"/> 464*ae22a949SDmitry Baryshkov <value value="0x20" name="SP_STALL_CYCLES_BY_TP"/> 465*ae22a949SDmitry Baryshkov <value value="0x21" name="SP_STALL_CYCLES_BY_UCHE"/> 466*ae22a949SDmitry Baryshkov <value value="0x22" name="SP_STALL_CYCLES_BY_RB"/> 467*ae22a949SDmitry Baryshkov <value value="0x23" name="SP_ACTIVE_CYCLES_ANY"/> 468*ae22a949SDmitry Baryshkov <value value="0x24" name="SP_ACTIVE_CYCLES_ALL"/> 469*ae22a949SDmitry Baryshkov</enum> 470*ae22a949SDmitry Baryshkov 471*ae22a949SDmitry Baryshkov<enum name="a3xx_tp_perfcounter_select"> 472*ae22a949SDmitry Baryshkov <value value="0x00" name="TPL1_TPPERF_L1_REQUESTS"/> 473*ae22a949SDmitry Baryshkov <value value="0x01" name="TPL1_TPPERF_TP0_L1_REQUESTS"/> 474*ae22a949SDmitry Baryshkov <value value="0x02" name="TPL1_TPPERF_TP0_L1_MISSES"/> 475*ae22a949SDmitry Baryshkov <value value="0x03" name="TPL1_TPPERF_TP1_L1_REQUESTS"/> 476*ae22a949SDmitry Baryshkov <value value="0x04" name="TPL1_TPPERF_TP1_L1_MISSES"/> 477*ae22a949SDmitry Baryshkov <value value="0x05" name="TPL1_TPPERF_TP2_L1_REQUESTS"/> 478*ae22a949SDmitry Baryshkov <value value="0x06" name="TPL1_TPPERF_TP2_L1_MISSES"/> 479*ae22a949SDmitry Baryshkov <value value="0x07" name="TPL1_TPPERF_TP3_L1_REQUESTS"/> 480*ae22a949SDmitry Baryshkov <value value="0x08" name="TPL1_TPPERF_TP3_L1_MISSES"/> 481*ae22a949SDmitry Baryshkov <value value="0x09" name="TPL1_TPPERF_OUTPUT_TEXELS_POINT"/> 482*ae22a949SDmitry Baryshkov <value value="0x0a" name="TPL1_TPPERF_OUTPUT_TEXELS_BILINEAR"/> 483*ae22a949SDmitry Baryshkov <value value="0x0b" name="TPL1_TPPERF_OUTPUT_TEXELS_MIP"/> 484*ae22a949SDmitry Baryshkov <value value="0x0c" name="TPL1_TPPERF_OUTPUT_TEXELS_ANISO"/> 485*ae22a949SDmitry Baryshkov <value value="0x0d" name="TPL1_TPPERF_BILINEAR_OPS"/> 486*ae22a949SDmitry Baryshkov <value value="0x0e" name="TPL1_TPPERF_QUADSQUADS_OFFSET"/> 487*ae22a949SDmitry Baryshkov <value value="0x0f" name="TPL1_TPPERF_QUADQUADS_SHADOW"/> 488*ae22a949SDmitry Baryshkov <value value="0x10" name="TPL1_TPPERF_QUADS_ARRAY"/> 489*ae22a949SDmitry Baryshkov <value value="0x11" name="TPL1_TPPERF_QUADS_PROJECTION"/> 490*ae22a949SDmitry Baryshkov <value value="0x12" name="TPL1_TPPERF_QUADS_GRADIENT"/> 491*ae22a949SDmitry Baryshkov <value value="0x13" name="TPL1_TPPERF_QUADS_1D2D"/> 492*ae22a949SDmitry Baryshkov <value value="0x14" name="TPL1_TPPERF_QUADS_3DCUBE"/> 493*ae22a949SDmitry Baryshkov <value value="0x15" name="TPL1_TPPERF_ZERO_LOD"/> 494*ae22a949SDmitry Baryshkov <value value="0x16" name="TPL1_TPPERF_OUTPUT_TEXELS"/> 495*ae22a949SDmitry Baryshkov <value value="0x17" name="TPL1_TPPERF_ACTIVE_CYCLES_ANY"/> 496*ae22a949SDmitry Baryshkov <value value="0x18" name="TPL1_TPPERF_ACTIVE_CYCLES_ALL"/> 497*ae22a949SDmitry Baryshkov <value value="0x19" name="TPL1_TPPERF_STALL_CYCLES_BY_ARB"/> 498*ae22a949SDmitry Baryshkov <value value="0x1a" name="TPL1_TPPERF_LATENCY"/> 499*ae22a949SDmitry Baryshkov <value value="0x1b" name="TPL1_TPPERF_LATENCY_TRANS"/> 500*ae22a949SDmitry Baryshkov</enum> 501*ae22a949SDmitry Baryshkov 502*ae22a949SDmitry Baryshkov<enum name="a3xx_vfd_perfcounter_select"> 503*ae22a949SDmitry Baryshkov <value value="0" name="VFD_PERF_UCHE_BYTE_FETCHED"/> 504*ae22a949SDmitry Baryshkov <value value="1" name="VFD_PERF_UCHE_TRANS"/> 505*ae22a949SDmitry Baryshkov <value value="2" name="VFD_PERF_VPC_BYPASS_COMPONENTS"/> 506*ae22a949SDmitry Baryshkov <value value="3" name="VFD_PERF_FETCH_INSTRUCTIONS"/> 507*ae22a949SDmitry Baryshkov <value value="4" name="VFD_PERF_DECODE_INSTRUCTIONS"/> 508*ae22a949SDmitry Baryshkov <value value="5" name="VFD_PERF_ACTIVE_CYCLES"/> 509*ae22a949SDmitry Baryshkov <value value="6" name="VFD_PERF_STALL_CYCLES_UCHE"/> 510*ae22a949SDmitry Baryshkov <value value="7" name="VFD_PERF_STALL_CYCLES_HLSQ"/> 511*ae22a949SDmitry Baryshkov <value value="8" name="VFD_PERF_STALL_CYCLES_VPC_BYPASS"/> 512*ae22a949SDmitry Baryshkov <value value="9" name="VFD_PERF_STALL_CYCLES_VPC_ALLOC"/> 513*ae22a949SDmitry Baryshkov</enum> 514*ae22a949SDmitry Baryshkov 515*ae22a949SDmitry Baryshkov<enum name="a3xx_vpc_perfcounter_select"> 516*ae22a949SDmitry Baryshkov <value value="0" name="VPC_PERF_SP_LM_PRIMITIVES"/> 517*ae22a949SDmitry Baryshkov <value value="1" name="VPC_PERF_COMPONENTS_FROM_SP"/> 518*ae22a949SDmitry Baryshkov <value value="2" name="VPC_PERF_SP_LM_COMPONENTS"/> 519*ae22a949SDmitry Baryshkov <value value="3" name="VPC_PERF_ACTIVE_CYCLES"/> 520*ae22a949SDmitry Baryshkov <value value="4" name="VPC_PERF_STALL_CYCLES_LM"/> 521*ae22a949SDmitry Baryshkov <value value="5" name="VPC_PERF_STALL_CYCLES_RAS"/> 522*ae22a949SDmitry Baryshkov</enum> 523*ae22a949SDmitry Baryshkov 524*ae22a949SDmitry Baryshkov<enum name="a3xx_uche_perfcounter_select"> 525*ae22a949SDmitry Baryshkov <value value="0x00" name="UCHE_UCHEPERF_VBIF_READ_BEATS_TP"/> 526*ae22a949SDmitry Baryshkov <value value="0x01" name="UCHE_UCHEPERF_VBIF_READ_BEATS_VFD"/> 527*ae22a949SDmitry Baryshkov <value value="0x02" name="UCHE_UCHEPERF_VBIF_READ_BEATS_HLSQ"/> 528*ae22a949SDmitry Baryshkov <value value="0x03" name="UCHE_UCHEPERF_VBIF_READ_BEATS_MARB"/> 529*ae22a949SDmitry Baryshkov <value value="0x04" name="UCHE_UCHEPERF_VBIF_READ_BEATS_SP"/> 530*ae22a949SDmitry Baryshkov <value value="0x08" name="UCHE_UCHEPERF_READ_REQUESTS_TP"/> 531*ae22a949SDmitry Baryshkov <value value="0x09" name="UCHE_UCHEPERF_READ_REQUESTS_VFD"/> 532*ae22a949SDmitry Baryshkov <value value="0x0a" name="UCHE_UCHEPERF_READ_REQUESTS_HLSQ"/> 533*ae22a949SDmitry Baryshkov <value value="0x0b" name="UCHE_UCHEPERF_READ_REQUESTS_MARB"/> 534*ae22a949SDmitry Baryshkov <value value="0x0c" name="UCHE_UCHEPERF_READ_REQUESTS_SP"/> 535*ae22a949SDmitry Baryshkov <value value="0x0d" name="UCHE_UCHEPERF_WRITE_REQUESTS_MARB"/> 536*ae22a949SDmitry Baryshkov <value value="0x0e" name="UCHE_UCHEPERF_WRITE_REQUESTS_SP"/> 537*ae22a949SDmitry Baryshkov <value value="0x0f" name="UCHE_UCHEPERF_TAG_CHECK_FAILS"/> 538*ae22a949SDmitry Baryshkov <value value="0x10" name="UCHE_UCHEPERF_EVICTS"/> 539*ae22a949SDmitry Baryshkov <value value="0x11" name="UCHE_UCHEPERF_FLUSHES"/> 540*ae22a949SDmitry Baryshkov <value value="0x12" name="UCHE_UCHEPERF_VBIF_LATENCY_CYCLES"/> 541*ae22a949SDmitry Baryshkov <value value="0x13" name="UCHE_UCHEPERF_VBIF_LATENCY_SAMPLES"/> 542*ae22a949SDmitry Baryshkov <value value="0x14" name="UCHE_UCHEPERF_ACTIVE_CYCLES"/> 543*ae22a949SDmitry Baryshkov</enum> 544*ae22a949SDmitry Baryshkov 545*ae22a949SDmitry Baryshkov<enum name="a3xx_intp_mode"> 546*ae22a949SDmitry Baryshkov <value name="SMOOTH" value="0"/> 547*ae22a949SDmitry Baryshkov <value name="FLAT" value="1"/> 548*ae22a949SDmitry Baryshkov <value name="ZERO" value="2"/> 549*ae22a949SDmitry Baryshkov <value name="ONE" value="3"/> 550*ae22a949SDmitry Baryshkov</enum> 551*ae22a949SDmitry Baryshkov 552*ae22a949SDmitry Baryshkov<enum name="a3xx_repl_mode"> 553*ae22a949SDmitry Baryshkov <value name="S" value="1"/> 554*ae22a949SDmitry Baryshkov <value name="T" value="2"/> 555*ae22a949SDmitry Baryshkov <value name="ONE_T" value="3"/> 556*ae22a949SDmitry Baryshkov</enum> 557*ae22a949SDmitry Baryshkov 558*ae22a949SDmitry Baryshkov<domain name="A3XX" width="32"> 559*ae22a949SDmitry Baryshkov <!-- RBBM registers --> 560*ae22a949SDmitry Baryshkov <reg32 offset="0x0000" name="RBBM_HW_VERSION"/> 561*ae22a949SDmitry Baryshkov <reg32 offset="0x0001" name="RBBM_HW_RELEASE"/> 562*ae22a949SDmitry Baryshkov <reg32 offset="0x0002" name="RBBM_HW_CONFIGURATION"/> 563*ae22a949SDmitry Baryshkov <reg32 offset="0x0010" name="RBBM_CLOCK_CTL"/> 564*ae22a949SDmitry Baryshkov <reg32 offset="0x0012" name="RBBM_SP_HYST_CNT"/> 565*ae22a949SDmitry Baryshkov <reg32 offset="0x0018" name="RBBM_SW_RESET_CMD"/> 566*ae22a949SDmitry Baryshkov <reg32 offset="0x0020" name="RBBM_AHB_CTL0"/> 567*ae22a949SDmitry Baryshkov <reg32 offset="0x0021" name="RBBM_AHB_CTL1"/> 568*ae22a949SDmitry Baryshkov <reg32 offset="0x0022" name="RBBM_AHB_CMD"/> 569*ae22a949SDmitry Baryshkov <reg32 offset="0x0027" name="RBBM_AHB_ERROR_STATUS"/> 570*ae22a949SDmitry Baryshkov <reg32 offset="0x002e" name="RBBM_GPR0_CTL"/> 571*ae22a949SDmitry Baryshkov <reg32 offset="0x0030" name="RBBM_STATUS"> 572*ae22a949SDmitry Baryshkov <bitfield name="HI_BUSY" pos="0" type="boolean"/> 573*ae22a949SDmitry Baryshkov <bitfield name="CP_ME_BUSY" pos="1" type="boolean"/> 574*ae22a949SDmitry Baryshkov <bitfield name="CP_PFP_BUSY" pos="2" type="boolean"/> 575*ae22a949SDmitry Baryshkov <bitfield name="CP_NRT_BUSY" pos="14" type="boolean"/> 576*ae22a949SDmitry Baryshkov <bitfield name="VBIF_BUSY" pos="15" type="boolean"/> 577*ae22a949SDmitry Baryshkov <bitfield name="TSE_BUSY" pos="16" type="boolean"/> 578*ae22a949SDmitry Baryshkov <bitfield name="RAS_BUSY" pos="17" type="boolean"/> 579*ae22a949SDmitry Baryshkov <bitfield name="RB_BUSY" pos="18" type="boolean"/> 580*ae22a949SDmitry Baryshkov <bitfield name="PC_DCALL_BUSY" pos="19" type="boolean"/> 581*ae22a949SDmitry Baryshkov <bitfield name="PC_VSD_BUSY" pos="20" type="boolean"/> 582*ae22a949SDmitry Baryshkov <bitfield name="VFD_BUSY" pos="21" type="boolean"/> 583*ae22a949SDmitry Baryshkov <bitfield name="VPC_BUSY" pos="22" type="boolean"/> 584*ae22a949SDmitry Baryshkov <bitfield name="UCHE_BUSY" pos="23" type="boolean"/> 585*ae22a949SDmitry Baryshkov <bitfield name="SP_BUSY" pos="24" type="boolean"/> 586*ae22a949SDmitry Baryshkov <bitfield name="TPL1_BUSY" pos="25" type="boolean"/> 587*ae22a949SDmitry Baryshkov <bitfield name="MARB_BUSY" pos="26" type="boolean"/> 588*ae22a949SDmitry Baryshkov <bitfield name="VSC_BUSY" pos="27" type="boolean"/> 589*ae22a949SDmitry Baryshkov <bitfield name="ARB_BUSY" pos="28" type="boolean"/> 590*ae22a949SDmitry Baryshkov <bitfield name="HLSQ_BUSY" pos="29" type="boolean"/> 591*ae22a949SDmitry Baryshkov <bitfield name="GPU_BUSY_NOHC" pos="30" type="boolean"/> 592*ae22a949SDmitry Baryshkov <bitfield name="GPU_BUSY" pos="31" type="boolean"/> 593*ae22a949SDmitry Baryshkov </reg32> 594*ae22a949SDmitry Baryshkov <!-- used in fw CP_WAIT_FOR_IDLE, similar to NQWAIT_UNTIL on a2xx: --> 595*ae22a949SDmitry Baryshkov <reg32 offset="0x0040" name="RBBM_NQWAIT_UNTIL"/> 596*ae22a949SDmitry Baryshkov <reg32 offset="0x0033" name="RBBM_WAIT_IDLE_CLOCKS_CTL"/> 597*ae22a949SDmitry Baryshkov <reg32 offset="0x0050" name="RBBM_INTERFACE_HANG_INT_CTL"/> 598*ae22a949SDmitry Baryshkov <reg32 offset="0x0051" name="RBBM_INTERFACE_HANG_MASK_CTL0"/> 599*ae22a949SDmitry Baryshkov <reg32 offset="0x0054" name="RBBM_INTERFACE_HANG_MASK_CTL1"/> 600*ae22a949SDmitry Baryshkov <reg32 offset="0x0057" name="RBBM_INTERFACE_HANG_MASK_CTL2"/> 601*ae22a949SDmitry Baryshkov <reg32 offset="0x005a" name="RBBM_INTERFACE_HANG_MASK_CTL3"/> 602*ae22a949SDmitry Baryshkov 603*ae22a949SDmitry Baryshkov <bitset name="A3XX_INT0"> 604*ae22a949SDmitry Baryshkov <bitfield name="RBBM_GPU_IDLE" pos="0" type="boolean"/> 605*ae22a949SDmitry Baryshkov <bitfield name="RBBM_AHB_ERROR" pos="1" type="boolean"/> 606*ae22a949SDmitry Baryshkov <bitfield name="RBBM_REG_TIMEOUT" pos="2" type="boolean"/> 607*ae22a949SDmitry Baryshkov <bitfield name="RBBM_ME_MS_TIMEOUT" pos="3" type="boolean"/> 608*ae22a949SDmitry Baryshkov <bitfield name="RBBM_PFP_MS_TIMEOUT" pos="4" type="boolean"/> 609*ae22a949SDmitry Baryshkov <bitfield name="RBBM_ATB_BUS_OVERFLOW" pos="5" type="boolean"/> 610*ae22a949SDmitry Baryshkov <bitfield name="VFD_ERROR" pos="6" type="boolean"/> 611*ae22a949SDmitry Baryshkov <bitfield name="CP_SW_INT" pos="7" type="boolean"/> 612*ae22a949SDmitry Baryshkov <bitfield name="CP_T0_PACKET_IN_IB" pos="8" type="boolean"/> 613*ae22a949SDmitry Baryshkov <bitfield name="CP_OPCODE_ERROR" pos="9" type="boolean"/> 614*ae22a949SDmitry Baryshkov <bitfield name="CP_RESERVED_BIT_ERROR" pos="10" type="boolean"/> 615*ae22a949SDmitry Baryshkov <bitfield name="CP_HW_FAULT" pos="11" type="boolean"/> 616*ae22a949SDmitry Baryshkov <bitfield name="CP_DMA" pos="12" type="boolean"/> 617*ae22a949SDmitry Baryshkov <bitfield name="CP_IB2_INT" pos="13" type="boolean"/> 618*ae22a949SDmitry Baryshkov <bitfield name="CP_IB1_INT" pos="14" type="boolean"/> 619*ae22a949SDmitry Baryshkov <bitfield name="CP_RB_INT" pos="15" type="boolean"/> 620*ae22a949SDmitry Baryshkov <bitfield name="CP_REG_PROTECT_FAULT" pos="16" type="boolean"/> 621*ae22a949SDmitry Baryshkov <bitfield name="CP_RB_DONE_TS" pos="17" type="boolean"/> 622*ae22a949SDmitry Baryshkov <bitfield name="CP_VS_DONE_TS" pos="18" type="boolean"/> 623*ae22a949SDmitry Baryshkov <bitfield name="CP_PS_DONE_TS" pos="19" type="boolean"/> 624*ae22a949SDmitry Baryshkov <bitfield name="CACHE_FLUSH_TS" pos="20" type="boolean"/> 625*ae22a949SDmitry Baryshkov <bitfield name="CP_AHB_ERROR_HALT" pos="21" type="boolean"/> 626*ae22a949SDmitry Baryshkov <bitfield name="MISC_HANG_DETECT" pos="24" type="boolean"/> 627*ae22a949SDmitry Baryshkov <bitfield name="UCHE_OOB_ACCESS" pos="25" type="boolean"/> 628*ae22a949SDmitry Baryshkov </bitset> 629*ae22a949SDmitry Baryshkov 630*ae22a949SDmitry Baryshkov 631*ae22a949SDmitry Baryshkov <!-- 632*ae22a949SDmitry Baryshkov set in pm4 fw INVALID_JUMP_TABLE_ENTRY and CP_INTERRUPT (compare 633*ae22a949SDmitry Baryshkov to CP_INT_STATUS in a2xx firmware), so this seems to be the a3xx 634*ae22a949SDmitry Baryshkov way for fw to raise and irq: 635*ae22a949SDmitry Baryshkov --> 636*ae22a949SDmitry Baryshkov <reg32 offset="0x0060" name="RBBM_INT_SET_CMD" type="A3XX_INT0"/> 637*ae22a949SDmitry Baryshkov <reg32 offset="0x0061" name="RBBM_INT_CLEAR_CMD" type="A3XX_INT0"/> 638*ae22a949SDmitry Baryshkov <reg32 offset="0x0063" name="RBBM_INT_0_MASK" type="A3XX_INT0"/> 639*ae22a949SDmitry Baryshkov <reg32 offset="0x0064" name="RBBM_INT_0_STATUS" type="A3XX_INT0"/> 640*ae22a949SDmitry Baryshkov <reg32 offset="0x0080" name="RBBM_PERFCTR_CTL"> 641*ae22a949SDmitry Baryshkov <bitfield name="ENABLE" pos="0" type="boolean"/> 642*ae22a949SDmitry Baryshkov </reg32> 643*ae22a949SDmitry Baryshkov <reg32 offset="0x0081" name="RBBM_PERFCTR_LOAD_CMD0"/> 644*ae22a949SDmitry Baryshkov <reg32 offset="0x0082" name="RBBM_PERFCTR_LOAD_CMD1"/> 645*ae22a949SDmitry Baryshkov <reg32 offset="0x0084" name="RBBM_PERFCTR_LOAD_VALUE_LO"/> 646*ae22a949SDmitry Baryshkov <reg32 offset="0x0085" name="RBBM_PERFCTR_LOAD_VALUE_HI"/> 647*ae22a949SDmitry Baryshkov <reg32 offset="0x0086" name="RBBM_PERFCOUNTER0_SELECT" type="a3xx_rbbm_perfcounter_select"/> 648*ae22a949SDmitry Baryshkov <reg32 offset="0x0087" name="RBBM_PERFCOUNTER1_SELECT" type="a3xx_rbbm_perfcounter_select"/> 649*ae22a949SDmitry Baryshkov <reg32 offset="0x0088" name="RBBM_GPU_BUSY_MASKED"/> 650*ae22a949SDmitry Baryshkov <reg32 offset="0x0090" name="RBBM_PERFCTR_CP_0_LO"/> 651*ae22a949SDmitry Baryshkov <reg32 offset="0x0091" name="RBBM_PERFCTR_CP_0_HI"/> 652*ae22a949SDmitry Baryshkov <reg32 offset="0x0092" name="RBBM_PERFCTR_RBBM_0_LO"/> 653*ae22a949SDmitry Baryshkov <reg32 offset="0x0093" name="RBBM_PERFCTR_RBBM_0_HI"/> 654*ae22a949SDmitry Baryshkov <reg32 offset="0x0094" name="RBBM_PERFCTR_RBBM_1_LO"/> 655*ae22a949SDmitry Baryshkov <reg32 offset="0x0095" name="RBBM_PERFCTR_RBBM_1_HI"/> 656*ae22a949SDmitry Baryshkov <reg32 offset="0x0096" name="RBBM_PERFCTR_PC_0_LO"/> 657*ae22a949SDmitry Baryshkov <reg32 offset="0x0097" name="RBBM_PERFCTR_PC_0_HI"/> 658*ae22a949SDmitry Baryshkov <reg32 offset="0x0098" name="RBBM_PERFCTR_PC_1_LO"/> 659*ae22a949SDmitry Baryshkov <reg32 offset="0x0099" name="RBBM_PERFCTR_PC_1_HI"/> 660*ae22a949SDmitry Baryshkov <reg32 offset="0x009a" name="RBBM_PERFCTR_PC_2_LO"/> 661*ae22a949SDmitry Baryshkov <reg32 offset="0x009b" name="RBBM_PERFCTR_PC_2_HI"/> 662*ae22a949SDmitry Baryshkov <reg32 offset="0x009c" name="RBBM_PERFCTR_PC_3_LO"/> 663*ae22a949SDmitry Baryshkov <reg32 offset="0x009d" name="RBBM_PERFCTR_PC_3_HI"/> 664*ae22a949SDmitry Baryshkov <reg32 offset="0x009e" name="RBBM_PERFCTR_VFD_0_LO"/> 665*ae22a949SDmitry Baryshkov <reg32 offset="0x009f" name="RBBM_PERFCTR_VFD_0_HI"/> 666*ae22a949SDmitry Baryshkov <reg32 offset="0x00a0" name="RBBM_PERFCTR_VFD_1_LO"/> 667*ae22a949SDmitry Baryshkov <reg32 offset="0x00a1" name="RBBM_PERFCTR_VFD_1_HI"/> 668*ae22a949SDmitry Baryshkov <reg32 offset="0x00a2" name="RBBM_PERFCTR_HLSQ_0_LO"/> 669*ae22a949SDmitry Baryshkov <reg32 offset="0x00a3" name="RBBM_PERFCTR_HLSQ_0_HI"/> 670*ae22a949SDmitry Baryshkov <reg32 offset="0x00a4" name="RBBM_PERFCTR_HLSQ_1_LO"/> 671*ae22a949SDmitry Baryshkov <reg32 offset="0x00a5" name="RBBM_PERFCTR_HLSQ_1_HI"/> 672*ae22a949SDmitry Baryshkov <reg32 offset="0x00a6" name="RBBM_PERFCTR_HLSQ_2_LO"/> 673*ae22a949SDmitry Baryshkov <reg32 offset="0x00a7" name="RBBM_PERFCTR_HLSQ_2_HI"/> 674*ae22a949SDmitry Baryshkov <reg32 offset="0x00a8" name="RBBM_PERFCTR_HLSQ_3_LO"/> 675*ae22a949SDmitry Baryshkov <reg32 offset="0x00a9" name="RBBM_PERFCTR_HLSQ_3_HI"/> 676*ae22a949SDmitry Baryshkov <reg32 offset="0x00aa" name="RBBM_PERFCTR_HLSQ_4_LO"/> 677*ae22a949SDmitry Baryshkov <reg32 offset="0x00ab" name="RBBM_PERFCTR_HLSQ_4_HI"/> 678*ae22a949SDmitry Baryshkov <reg32 offset="0x00ac" name="RBBM_PERFCTR_HLSQ_5_LO"/> 679*ae22a949SDmitry Baryshkov <reg32 offset="0x00ad" name="RBBM_PERFCTR_HLSQ_5_HI"/> 680*ae22a949SDmitry Baryshkov <reg32 offset="0x00ae" name="RBBM_PERFCTR_VPC_0_LO"/> 681*ae22a949SDmitry Baryshkov <reg32 offset="0x00af" name="RBBM_PERFCTR_VPC_0_HI"/> 682*ae22a949SDmitry Baryshkov <reg32 offset="0x00b0" name="RBBM_PERFCTR_VPC_1_LO"/> 683*ae22a949SDmitry Baryshkov <reg32 offset="0x00b1" name="RBBM_PERFCTR_VPC_1_HI"/> 684*ae22a949SDmitry Baryshkov <reg32 offset="0x00b2" name="RBBM_PERFCTR_TSE_0_LO"/> 685*ae22a949SDmitry Baryshkov <reg32 offset="0x00b3" name="RBBM_PERFCTR_TSE_0_HI"/> 686*ae22a949SDmitry Baryshkov <reg32 offset="0x00b4" name="RBBM_PERFCTR_TSE_1_LO"/> 687*ae22a949SDmitry Baryshkov <reg32 offset="0x00b5" name="RBBM_PERFCTR_TSE_1_HI"/> 688*ae22a949SDmitry Baryshkov <reg32 offset="0x00b6" name="RBBM_PERFCTR_RAS_0_LO"/> 689*ae22a949SDmitry Baryshkov <reg32 offset="0x00b7" name="RBBM_PERFCTR_RAS_0_HI"/> 690*ae22a949SDmitry Baryshkov <reg32 offset="0x00b8" name="RBBM_PERFCTR_RAS_1_LO"/> 691*ae22a949SDmitry Baryshkov <reg32 offset="0x00b9" name="RBBM_PERFCTR_RAS_1_HI"/> 692*ae22a949SDmitry Baryshkov <reg32 offset="0x00ba" name="RBBM_PERFCTR_UCHE_0_LO"/> 693*ae22a949SDmitry Baryshkov <reg32 offset="0x00bb" name="RBBM_PERFCTR_UCHE_0_HI"/> 694*ae22a949SDmitry Baryshkov <reg32 offset="0x00bc" name="RBBM_PERFCTR_UCHE_1_LO"/> 695*ae22a949SDmitry Baryshkov <reg32 offset="0x00bd" name="RBBM_PERFCTR_UCHE_1_HI"/> 696*ae22a949SDmitry Baryshkov <reg32 offset="0x00be" name="RBBM_PERFCTR_UCHE_2_LO"/> 697*ae22a949SDmitry Baryshkov <reg32 offset="0x00bf" name="RBBM_PERFCTR_UCHE_2_HI"/> 698*ae22a949SDmitry Baryshkov <reg32 offset="0x00c0" name="RBBM_PERFCTR_UCHE_3_LO"/> 699*ae22a949SDmitry Baryshkov <reg32 offset="0x00c1" name="RBBM_PERFCTR_UCHE_3_HI"/> 700*ae22a949SDmitry Baryshkov <reg32 offset="0x00c2" name="RBBM_PERFCTR_UCHE_4_LO"/> 701*ae22a949SDmitry Baryshkov <reg32 offset="0x00c3" name="RBBM_PERFCTR_UCHE_4_HI"/> 702*ae22a949SDmitry Baryshkov <reg32 offset="0x00c4" name="RBBM_PERFCTR_UCHE_5_LO"/> 703*ae22a949SDmitry Baryshkov <reg32 offset="0x00c5" name="RBBM_PERFCTR_UCHE_5_HI"/> 704*ae22a949SDmitry Baryshkov <reg32 offset="0x00c6" name="RBBM_PERFCTR_TP_0_LO"/> 705*ae22a949SDmitry Baryshkov <reg32 offset="0x00c7" name="RBBM_PERFCTR_TP_0_HI"/> 706*ae22a949SDmitry Baryshkov <reg32 offset="0x00c8" name="RBBM_PERFCTR_TP_1_LO"/> 707*ae22a949SDmitry Baryshkov <reg32 offset="0x00c9" name="RBBM_PERFCTR_TP_1_HI"/> 708*ae22a949SDmitry Baryshkov <reg32 offset="0x00ca" name="RBBM_PERFCTR_TP_2_LO"/> 709*ae22a949SDmitry Baryshkov <reg32 offset="0x00cb" name="RBBM_PERFCTR_TP_2_HI"/> 710*ae22a949SDmitry Baryshkov <reg32 offset="0x00cc" name="RBBM_PERFCTR_TP_3_LO"/> 711*ae22a949SDmitry Baryshkov <reg32 offset="0x00cd" name="RBBM_PERFCTR_TP_3_HI"/> 712*ae22a949SDmitry Baryshkov <reg32 offset="0x00ce" name="RBBM_PERFCTR_TP_4_LO"/> 713*ae22a949SDmitry Baryshkov <reg32 offset="0x00cf" name="RBBM_PERFCTR_TP_4_HI"/> 714*ae22a949SDmitry Baryshkov <reg32 offset="0x00d0" name="RBBM_PERFCTR_TP_5_LO"/> 715*ae22a949SDmitry Baryshkov <reg32 offset="0x00d1" name="RBBM_PERFCTR_TP_5_HI"/> 716*ae22a949SDmitry Baryshkov <reg32 offset="0x00d2" name="RBBM_PERFCTR_SP_0_LO"/> 717*ae22a949SDmitry Baryshkov <reg32 offset="0x00d3" name="RBBM_PERFCTR_SP_0_HI"/> 718*ae22a949SDmitry Baryshkov <reg32 offset="0x00d4" name="RBBM_PERFCTR_SP_1_LO"/> 719*ae22a949SDmitry Baryshkov <reg32 offset="0x00d5" name="RBBM_PERFCTR_SP_1_HI"/> 720*ae22a949SDmitry Baryshkov <reg32 offset="0x00d6" name="RBBM_PERFCTR_SP_2_LO"/> 721*ae22a949SDmitry Baryshkov <reg32 offset="0x00d7" name="RBBM_PERFCTR_SP_2_HI"/> 722*ae22a949SDmitry Baryshkov <reg32 offset="0x00d8" name="RBBM_PERFCTR_SP_3_LO"/> 723*ae22a949SDmitry Baryshkov <reg32 offset="0x00d9" name="RBBM_PERFCTR_SP_3_HI"/> 724*ae22a949SDmitry Baryshkov <reg32 offset="0x00da" name="RBBM_PERFCTR_SP_4_LO"/> 725*ae22a949SDmitry Baryshkov <reg32 offset="0x00db" name="RBBM_PERFCTR_SP_4_HI"/> 726*ae22a949SDmitry Baryshkov <reg32 offset="0x00dc" name="RBBM_PERFCTR_SP_5_LO"/> 727*ae22a949SDmitry Baryshkov <reg32 offset="0x00dd" name="RBBM_PERFCTR_SP_5_HI"/> 728*ae22a949SDmitry Baryshkov <reg32 offset="0x00de" name="RBBM_PERFCTR_SP_6_LO"/> 729*ae22a949SDmitry Baryshkov <reg32 offset="0x00df" name="RBBM_PERFCTR_SP_6_HI"/> 730*ae22a949SDmitry Baryshkov <reg32 offset="0x00e0" name="RBBM_PERFCTR_SP_7_LO"/> 731*ae22a949SDmitry Baryshkov <reg32 offset="0x00e1" name="RBBM_PERFCTR_SP_7_HI"/> 732*ae22a949SDmitry Baryshkov <reg32 offset="0x00e2" name="RBBM_PERFCTR_RB_0_LO"/> 733*ae22a949SDmitry Baryshkov <reg32 offset="0x00e3" name="RBBM_PERFCTR_RB_0_HI"/> 734*ae22a949SDmitry Baryshkov <reg32 offset="0x00e4" name="RBBM_PERFCTR_RB_1_LO"/> 735*ae22a949SDmitry Baryshkov <reg32 offset="0x00e5" name="RBBM_PERFCTR_RB_1_HI"/> 736*ae22a949SDmitry Baryshkov <reg32 offset="0x00ea" name="RBBM_PERFCTR_PWR_0_LO"/> 737*ae22a949SDmitry Baryshkov <reg32 offset="0x00eb" name="RBBM_PERFCTR_PWR_0_HI"/> 738*ae22a949SDmitry Baryshkov <reg32 offset="0x00ec" name="RBBM_PERFCTR_PWR_1_LO"/> 739*ae22a949SDmitry Baryshkov <reg32 offset="0x00ed" name="RBBM_PERFCTR_PWR_1_HI"/> 740*ae22a949SDmitry Baryshkov <reg32 offset="0x0100" name="RBBM_RBBM_CTL"/> 741*ae22a949SDmitry Baryshkov <reg32 offset="0x0111" name="RBBM_DEBUG_BUS_CTL"/> 742*ae22a949SDmitry Baryshkov <reg32 offset="0x0112" name="RBBM_DEBUG_BUS_DATA_STATUS"/> 743*ae22a949SDmitry Baryshkov 744*ae22a949SDmitry Baryshkov <!-- CP registers --> 745*ae22a949SDmitry Baryshkov <reg32 offset="0x01c9" name="CP_PFP_UCODE_ADDR"/> 746*ae22a949SDmitry Baryshkov <reg32 offset="0x01ca" name="CP_PFP_UCODE_DATA"/> 747*ae22a949SDmitry Baryshkov <reg32 offset="0x01cc" name="CP_ROQ_ADDR"/> 748*ae22a949SDmitry Baryshkov <reg32 offset="0x01cd" name="CP_ROQ_DATA"/> 749*ae22a949SDmitry Baryshkov <reg32 offset="0x01d1" name="CP_MERCIU_ADDR"/> 750*ae22a949SDmitry Baryshkov <reg32 offset="0x01d2" name="CP_MERCIU_DATA"/> 751*ae22a949SDmitry Baryshkov <reg32 offset="0x01d3" name="CP_MERCIU_DATA2"/> 752*ae22a949SDmitry Baryshkov <!-- see a3xx_snapshot_cp_meq().. looks like the way to dump queue between pfp and pm4 --> 753*ae22a949SDmitry Baryshkov <reg32 offset="0x01da" name="CP_MEQ_ADDR"/> 754*ae22a949SDmitry Baryshkov <reg32 offset="0x01db" name="CP_MEQ_DATA"/> 755*ae22a949SDmitry Baryshkov <reg32 offset="0x01f5" name="CP_WFI_PEND_CTR"/> 756*ae22a949SDmitry Baryshkov <reg32 offset="0x039d" name="RBBM_PM_OVERRIDE2"/> 757*ae22a949SDmitry Baryshkov 758*ae22a949SDmitry Baryshkov <reg32 offset="0x0445" name="CP_PERFCOUNTER_SELECT" type="a3xx_cp_perfcounter_select"/> 759*ae22a949SDmitry Baryshkov <reg32 offset="0x045c" name="CP_HW_FAULT"/> 760*ae22a949SDmitry Baryshkov <reg32 offset="0x045e" name="CP_PROTECT_CTRL"/> 761*ae22a949SDmitry Baryshkov <reg32 offset="0x045f" name="CP_PROTECT_STATUS"/> 762*ae22a949SDmitry Baryshkov <array offset="0x0460" name="CP_PROTECT" stride="1" length="16"> 763*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="REG"/> 764*ae22a949SDmitry Baryshkov </array> 765*ae22a949SDmitry Baryshkov <reg32 offset="0x054d" name="CP_AHB_FAULT"/> 766*ae22a949SDmitry Baryshkov 767*ae22a949SDmitry Baryshkov <reg32 offset="0x0d00" name="SQ_GPR_MANAGEMENT"/> 768*ae22a949SDmitry Baryshkov <reg32 offset="0x0d02" name="SQ_INST_STORE_MANAGMENT"/> 769*ae22a949SDmitry Baryshkov <reg32 offset="0x0e1e" name="TP0_CHICKEN"/> 770*ae22a949SDmitry Baryshkov 771*ae22a949SDmitry Baryshkov <!-- these I guess or either SP or HLSQ since related to shader core setup: --> 772*ae22a949SDmitry Baryshkov <reg32 offset="0x0e22" name="SP_GLOBAL_MEM_SIZE" type="uint"> 773*ae22a949SDmitry Baryshkov <doc> 774*ae22a949SDmitry Baryshkov The pair of MEM_SIZE/ADDR registers get programmed 775*ae22a949SDmitry Baryshkov in sequence with the size/addr of each buffer. 776*ae22a949SDmitry Baryshkov </doc> 777*ae22a949SDmitry Baryshkov </reg32> 778*ae22a949SDmitry Baryshkov <reg32 offset="0x0e23" name="SP_GLOBAL_MEM_ADDR"/> 779*ae22a949SDmitry Baryshkov 780*ae22a949SDmitry Baryshkov <!-- GRAS registers --> 781*ae22a949SDmitry Baryshkov <reg32 offset="0x2040" name="GRAS_CL_CLIP_CNTL"> 782*ae22a949SDmitry Baryshkov <bitfield name="IJ_PERSP_CENTER" pos="12" type="boolean"/> 783*ae22a949SDmitry Baryshkov <bitfield name="IJ_NON_PERSP_CENTER" pos="13" type="boolean"/> 784*ae22a949SDmitry Baryshkov <bitfield name="IJ_PERSP_CENTROID" pos="14" type="boolean"/> 785*ae22a949SDmitry Baryshkov <bitfield name="IJ_NON_PERSP_CENTROID" pos="15" type="boolean"/> 786*ae22a949SDmitry Baryshkov <bitfield name="CLIP_DISABLE" pos="16" type="boolean"/> 787*ae22a949SDmitry Baryshkov <bitfield name="ZFAR_CLIP_DISABLE" pos="17" type="boolean"/> 788*ae22a949SDmitry Baryshkov <bitfield name="VP_CLIP_CODE_IGNORE" pos="19" type="boolean"/> 789*ae22a949SDmitry Baryshkov <bitfield name="VP_XFORM_DISABLE" pos="20" type="boolean"/> 790*ae22a949SDmitry Baryshkov <bitfield name="PERSP_DIVISION_DISABLE" pos="21" type="boolean"/> 791*ae22a949SDmitry Baryshkov <bitfield name="ZERO_GB_SCALE_Z" pos="22" type="boolean"> 792*ae22a949SDmitry Baryshkov <doc>aka clip_halfz</doc> 793*ae22a949SDmitry Baryshkov </bitfield> 794*ae22a949SDmitry Baryshkov <!-- set when gl_FragCoord.z is enabled in frag shader: --> 795*ae22a949SDmitry Baryshkov <bitfield name="ZCOORD" pos="23" type="boolean"/> 796*ae22a949SDmitry Baryshkov <bitfield name="WCOORD" pos="24" type="boolean"/> 797*ae22a949SDmitry Baryshkov <!-- set when frag shader writes z (so early z test disabled: --> 798*ae22a949SDmitry Baryshkov <bitfield name="ZCLIP_DISABLE" pos="25" type="boolean"/> 799*ae22a949SDmitry Baryshkov <bitfield name="NUM_USER_CLIP_PLANES" low="26" high="28" type="uint"/> 800*ae22a949SDmitry Baryshkov </reg32> 801*ae22a949SDmitry Baryshkov <reg32 offset="0x2044" name="GRAS_CL_GB_CLIP_ADJ"> 802*ae22a949SDmitry Baryshkov <bitfield name="HORZ" low="0" high="9" type="uint"/> 803*ae22a949SDmitry Baryshkov <bitfield name="VERT" low="10" high="19" type="uint"/> 804*ae22a949SDmitry Baryshkov </reg32> 805*ae22a949SDmitry Baryshkov <reg32 offset="0x2048" name="GRAS_CL_VPORT_XOFFSET" type="float"/> 806*ae22a949SDmitry Baryshkov <reg32 offset="0x2049" name="GRAS_CL_VPORT_XSCALE" type="float"/> 807*ae22a949SDmitry Baryshkov <reg32 offset="0x204a" name="GRAS_CL_VPORT_YOFFSET" type="float"/> 808*ae22a949SDmitry Baryshkov <reg32 offset="0x204b" name="GRAS_CL_VPORT_YSCALE" type="float"/> 809*ae22a949SDmitry Baryshkov <reg32 offset="0x204c" name="GRAS_CL_VPORT_ZOFFSET" type="float"/> 810*ae22a949SDmitry Baryshkov <reg32 offset="0x204d" name="GRAS_CL_VPORT_ZSCALE" type="float"/> 811*ae22a949SDmitry Baryshkov <reg32 offset="0x2068" name="GRAS_SU_POINT_MINMAX"> 812*ae22a949SDmitry Baryshkov <bitfield name="MIN" low="0" high="15" type="ufixed" radix="4"/> 813*ae22a949SDmitry Baryshkov <bitfield name="MAX" low="16" high="31" type="ufixed" radix="4"/> 814*ae22a949SDmitry Baryshkov </reg32> 815*ae22a949SDmitry Baryshkov <reg32 offset="0x2069" name="GRAS_SU_POINT_SIZE" type="fixed" radix="4"/> 816*ae22a949SDmitry Baryshkov <reg32 offset="0x206c" name="GRAS_SU_POLY_OFFSET_SCALE"> 817*ae22a949SDmitry Baryshkov <bitfield name="VAL" low="0" high="23" type="fixed" radix="20"/> 818*ae22a949SDmitry Baryshkov <doc>range of -8.0 to 8.0</doc> 819*ae22a949SDmitry Baryshkov </reg32> 820*ae22a949SDmitry Baryshkov <reg32 offset="0x206d" name="GRAS_SU_POLY_OFFSET_OFFSET" radix="6" type="fixed"> 821*ae22a949SDmitry Baryshkov <doc>range of -512.0 to 512.0</doc> 822*ae22a949SDmitry Baryshkov </reg32> 823*ae22a949SDmitry Baryshkov <reg32 offset="0x2070" name="GRAS_SU_MODE_CONTROL"> 824*ae22a949SDmitry Baryshkov <bitfield name="CULL_FRONT" pos="0" type="boolean"/> 825*ae22a949SDmitry Baryshkov <bitfield name="CULL_BACK" pos="1" type="boolean"/> 826*ae22a949SDmitry Baryshkov <bitfield name="FRONT_CW" pos="2" type="boolean"/> 827*ae22a949SDmitry Baryshkov <bitfield name="LINEHALFWIDTH" low="3" high="10" radix="2" type="fixed"/> 828*ae22a949SDmitry Baryshkov <bitfield name="POLY_OFFSET" pos="11" type="boolean"/> 829*ae22a949SDmitry Baryshkov </reg32> 830*ae22a949SDmitry Baryshkov <reg32 offset="0x2072" name="GRAS_SC_CONTROL"> 831*ae22a949SDmitry Baryshkov <!-- complete wild-ass-guess for sizes of these bitfields.. --> 832*ae22a949SDmitry Baryshkov <bitfield name="RENDER_MODE" low="4" high="7" type="a3xx_render_mode"/> 833*ae22a949SDmitry Baryshkov <bitfield name="MSAA_SAMPLES" low="8" high="11" type="a3xx_msaa_samples"/> 834*ae22a949SDmitry Baryshkov <bitfield name="RASTER_MODE" low="12" high="15"/> 835*ae22a949SDmitry Baryshkov </reg32> 836*ae22a949SDmitry Baryshkov 837*ae22a949SDmitry Baryshkov <reg32 offset="0x2074" name="GRAS_SC_SCREEN_SCISSOR_TL" type="adreno_reg_xy"/> 838*ae22a949SDmitry Baryshkov <reg32 offset="0x2075" name="GRAS_SC_SCREEN_SCISSOR_BR" type="adreno_reg_xy"/> 839*ae22a949SDmitry Baryshkov <reg32 offset="0x2079" name="GRAS_SC_WINDOW_SCISSOR_TL" type="adreno_reg_xy"/> 840*ae22a949SDmitry Baryshkov <reg32 offset="0x207a" name="GRAS_SC_WINDOW_SCISSOR_BR" type="adreno_reg_xy"/> 841*ae22a949SDmitry Baryshkov 842*ae22a949SDmitry Baryshkov <!-- RB registers --> 843*ae22a949SDmitry Baryshkov <reg32 offset="0x20c0" name="RB_MODE_CONTROL"> 844*ae22a949SDmitry Baryshkov <!-- guess on the # of bits here.. --> 845*ae22a949SDmitry Baryshkov <bitfield name="GMEM_BYPASS" pos="7" type="boolean"/> 846*ae22a949SDmitry Baryshkov <doc> 847*ae22a949SDmitry Baryshkov RENDER_MODE is RB_RESOLVE_PASS for gmem->mem, otherwise RB_RENDER_PASS 848*ae22a949SDmitry Baryshkov </doc> 849*ae22a949SDmitry Baryshkov <bitfield name="RENDER_MODE" low="8" high="10" type="a3xx_render_mode"/> 850*ae22a949SDmitry Baryshkov <bitfield name="MRT" low="12" high="13" type="uint"> 851*ae22a949SDmitry Baryshkov <doc>render targets - 1</doc> 852*ae22a949SDmitry Baryshkov </bitfield> 853*ae22a949SDmitry Baryshkov <bitfield name="MARB_CACHE_SPLIT_MODE" pos="15" type="boolean"/> 854*ae22a949SDmitry Baryshkov <bitfield name="PACKER_TIMER_ENABLE" pos="16" type="boolean"/> 855*ae22a949SDmitry Baryshkov </reg32> 856*ae22a949SDmitry Baryshkov <reg32 offset="0x20c1" name="RB_RENDER_CONTROL"> 857*ae22a949SDmitry Baryshkov <bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/> 858*ae22a949SDmitry Baryshkov <bitfield name="YUV_IN_ENABLE" pos="1" type="boolean"/> 859*ae22a949SDmitry Baryshkov <bitfield name="COV_VALUE_INPUT_ENABLE" pos="2" type="boolean"/> 860*ae22a949SDmitry Baryshkov <!-- set when gl_FrontFacing is accessed in frag shader: --> 861*ae22a949SDmitry Baryshkov <bitfield name="FACENESS" pos="3" type="boolean"/> 862*ae22a949SDmitry Baryshkov <bitfield name="BIN_WIDTH" low="4" high="11" shr="5" type="uint"/> 863*ae22a949SDmitry Baryshkov <bitfield name="DISABLE_COLOR_PIPE" pos="12" type="boolean"/> 864*ae22a949SDmitry Baryshkov <!-- 865*ae22a949SDmitry Baryshkov ENABLE_GMEM not set on mem2gmem.. so possibly it is actually 866*ae22a949SDmitry Baryshkov controlling blend or readback from GMEM?? 867*ae22a949SDmitry Baryshkov --> 868*ae22a949SDmitry Baryshkov <bitfield name="ENABLE_GMEM" pos="13" type="boolean"/> 869*ae22a949SDmitry Baryshkov <bitfield name="COORD_MASK" low="14" high="17" type="hex"/> 870*ae22a949SDmitry Baryshkov <bitfield name="I_CLAMP_ENABLE" pos="19" type="boolean"/> 871*ae22a949SDmitry Baryshkov <bitfield name="COV_VALUE_OUTPUT_ENABLE" pos="20" type="boolean"/> 872*ae22a949SDmitry Baryshkov <bitfield name="ALPHA_TEST" pos="22" type="boolean"/> 873*ae22a949SDmitry Baryshkov <bitfield name="ALPHA_TEST_FUNC" low="24" high="26" type="adreno_compare_func"/> 874*ae22a949SDmitry Baryshkov <bitfield name="ALPHA_TO_COVERAGE" pos="30" type="boolean"/> 875*ae22a949SDmitry Baryshkov <bitfield name="ALPHA_TO_ONE" pos="31" type="boolean"/> 876*ae22a949SDmitry Baryshkov </reg32> 877*ae22a949SDmitry Baryshkov <reg32 offset="0x20c2" name="RB_MSAA_CONTROL"> 878*ae22a949SDmitry Baryshkov <bitfield name="DISABLE" pos="10" type="boolean"/> 879*ae22a949SDmitry Baryshkov <bitfield name="SAMPLES" low="12" high="15" type="a3xx_msaa_samples"/> 880*ae22a949SDmitry Baryshkov <bitfield name="SAMPLE_MASK" low="16" high="31" type="hex"/> 881*ae22a949SDmitry Baryshkov </reg32> 882*ae22a949SDmitry Baryshkov <reg32 offset="0x20c3" name="RB_ALPHA_REF"> 883*ae22a949SDmitry Baryshkov <bitfield name="UINT" low="8" high="15" type="hex"/> 884*ae22a949SDmitry Baryshkov <bitfield name="FLOAT" low="16" high="31" type="float"/> 885*ae22a949SDmitry Baryshkov </reg32> 886*ae22a949SDmitry Baryshkov <array offset="0x20c4" name="RB_MRT" stride="4" length="4"> 887*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="CONTROL"> 888*ae22a949SDmitry Baryshkov <bitfield name="READ_DEST_ENABLE" pos="3" type="boolean"/> 889*ae22a949SDmitry Baryshkov <!-- both these bits seem to get set when enabling GL_BLEND.. --> 890*ae22a949SDmitry Baryshkov <bitfield name="BLEND" pos="4" type="boolean"/> 891*ae22a949SDmitry Baryshkov <bitfield name="BLEND2" pos="5" type="boolean"/> 892*ae22a949SDmitry Baryshkov <bitfield name="ROP_CODE" low="8" high="11" type="a3xx_rop_code"/> 893*ae22a949SDmitry Baryshkov <bitfield name="DITHER_MODE" low="12" high="13" type="adreno_rb_dither_mode"/> 894*ae22a949SDmitry Baryshkov <bitfield name="COMPONENT_ENABLE" low="24" high="27" type="hex"/> 895*ae22a949SDmitry Baryshkov </reg32> 896*ae22a949SDmitry Baryshkov <reg32 offset="0x1" name="BUF_INFO"> 897*ae22a949SDmitry Baryshkov <bitfield name="COLOR_FORMAT" low="0" high="5" type="a3xx_color_fmt"/> 898*ae22a949SDmitry Baryshkov <bitfield name="COLOR_TILE_MODE" low="6" high="7" type="a3xx_tile_mode"/> 899*ae22a949SDmitry Baryshkov <bitfield name="COLOR_SWAP" low="10" high="11" type="a3xx_color_swap"/> 900*ae22a949SDmitry Baryshkov <bitfield name="COLOR_SRGB" pos="14" type="boolean"/> 901*ae22a949SDmitry Baryshkov <doc> 902*ae22a949SDmitry Baryshkov Pitch (actually, appears to be pitch in bytes, so really is a stride) 903*ae22a949SDmitry Baryshkov in GMEM, so pitch of the current tile. 904*ae22a949SDmitry Baryshkov </doc> 905*ae22a949SDmitry Baryshkov <bitfield name="COLOR_BUF_PITCH" low="17" high="31" shr="5" type="uint"/> 906*ae22a949SDmitry Baryshkov </reg32> 907*ae22a949SDmitry Baryshkov <reg32 offset="0x2" name="BUF_BASE"> 908*ae22a949SDmitry Baryshkov <doc>offset into GMEM (or system memory address in bypass mode)</doc> 909*ae22a949SDmitry Baryshkov <bitfield name="COLOR_BUF_BASE" low="4" high="31" shr="5" type="hex"/> 910*ae22a949SDmitry Baryshkov </reg32> 911*ae22a949SDmitry Baryshkov <reg32 offset="0x3" name="BLEND_CONTROL"> 912*ae22a949SDmitry Baryshkov <bitfield name="RGB_SRC_FACTOR" low="0" high="4" type="adreno_rb_blend_factor"/> 913*ae22a949SDmitry Baryshkov <bitfield name="RGB_BLEND_OPCODE" low="5" high="7" type="a3xx_rb_blend_opcode"/> 914*ae22a949SDmitry Baryshkov <bitfield name="RGB_DEST_FACTOR" low="8" high="12" type="adreno_rb_blend_factor"/> 915*ae22a949SDmitry Baryshkov <bitfield name="ALPHA_SRC_FACTOR" low="16" high="20" type="adreno_rb_blend_factor"/> 916*ae22a949SDmitry Baryshkov <bitfield name="ALPHA_BLEND_OPCODE" low="21" high="23" type="a3xx_rb_blend_opcode"/> 917*ae22a949SDmitry Baryshkov <bitfield name="ALPHA_DEST_FACTOR" low="24" high="28" type="adreno_rb_blend_factor"/> 918*ae22a949SDmitry Baryshkov <bitfield name="CLAMP_ENABLE" pos="29" type="boolean"/> 919*ae22a949SDmitry Baryshkov </reg32> 920*ae22a949SDmitry Baryshkov </array> 921*ae22a949SDmitry Baryshkov 922*ae22a949SDmitry Baryshkov <reg32 offset="0x20e4" name="RB_BLEND_RED"> 923*ae22a949SDmitry Baryshkov <bitfield name="UINT" low="0" high="7" type="hex"/> 924*ae22a949SDmitry Baryshkov <bitfield name="FLOAT" low="16" high="31" type="float"/> 925*ae22a949SDmitry Baryshkov </reg32> 926*ae22a949SDmitry Baryshkov <reg32 offset="0x20e5" name="RB_BLEND_GREEN"> 927*ae22a949SDmitry Baryshkov <bitfield name="UINT" low="0" high="7" type="hex"/> 928*ae22a949SDmitry Baryshkov <bitfield name="FLOAT" low="16" high="31" type="float"/> 929*ae22a949SDmitry Baryshkov </reg32> 930*ae22a949SDmitry Baryshkov <reg32 offset="0x20e6" name="RB_BLEND_BLUE"> 931*ae22a949SDmitry Baryshkov <bitfield name="UINT" low="0" high="7" type="hex"/> 932*ae22a949SDmitry Baryshkov <bitfield name="FLOAT" low="16" high="31" type="float"/> 933*ae22a949SDmitry Baryshkov </reg32> 934*ae22a949SDmitry Baryshkov <reg32 offset="0x20e7" name="RB_BLEND_ALPHA"> 935*ae22a949SDmitry Baryshkov <bitfield name="UINT" low="0" high="7" type="hex"/> 936*ae22a949SDmitry Baryshkov <bitfield name="FLOAT" low="16" high="31" type="float"/> 937*ae22a949SDmitry Baryshkov </reg32> 938*ae22a949SDmitry Baryshkov 939*ae22a949SDmitry Baryshkov <reg32 offset="0x20e8" name="RB_CLEAR_COLOR_DW0"/> 940*ae22a949SDmitry Baryshkov <reg32 offset="0x20e9" name="RB_CLEAR_COLOR_DW1"/> 941*ae22a949SDmitry Baryshkov <reg32 offset="0x20ea" name="RB_CLEAR_COLOR_DW2"/> 942*ae22a949SDmitry Baryshkov <reg32 offset="0x20eb" name="RB_CLEAR_COLOR_DW3"/> 943*ae22a949SDmitry Baryshkov <reg32 offset="0x20ec" name="RB_COPY_CONTROL"> 944*ae22a949SDmitry Baryshkov <!-- not sure # of bits --> 945*ae22a949SDmitry Baryshkov <bitfield name="MSAA_RESOLVE" low="0" high="1" type="a3xx_msaa_samples"/> 946*ae22a949SDmitry Baryshkov <bitfield name="DEPTHCLEAR" pos="3" type="boolean"/> 947*ae22a949SDmitry Baryshkov <bitfield name="MODE" low="4" high="6" type="adreno_rb_copy_control_mode"/> 948*ae22a949SDmitry Baryshkov <bitfield name="MSAA_SRGB_DOWNSAMPLE" pos="7" type="boolean"/> 949*ae22a949SDmitry Baryshkov <bitfield name="FASTCLEAR" low="8" high="11" type="hex"/> 950*ae22a949SDmitry Baryshkov <bitfield name="DEPTH32_RESOLVE" pos="12" type="boolean"/> <!-- enabled on a Z32F copy --> 951*ae22a949SDmitry Baryshkov <bitfield name="GMEM_BASE" low="14" high="31" shr="14" type="hex"/> 952*ae22a949SDmitry Baryshkov </reg32> 953*ae22a949SDmitry Baryshkov <reg32 offset="0x20ed" name="RB_COPY_DEST_BASE"> 954*ae22a949SDmitry Baryshkov <bitfield name="BASE" low="4" high="31" shr="5" type="hex"/> 955*ae22a949SDmitry Baryshkov </reg32> 956*ae22a949SDmitry Baryshkov <reg32 offset="0x20ee" name="RB_COPY_DEST_PITCH"> 957*ae22a949SDmitry Baryshkov <doc>actually, appears to be pitch in bytes, so really is a stride</doc> 958*ae22a949SDmitry Baryshkov <!-- not actually sure about max pitch... --> 959*ae22a949SDmitry Baryshkov <bitfield name="PITCH" low="0" high="31" shr="5" type="uint"/> 960*ae22a949SDmitry Baryshkov </reg32> 961*ae22a949SDmitry Baryshkov <reg32 offset="0x20ef" name="RB_COPY_DEST_INFO"> 962*ae22a949SDmitry Baryshkov <bitfield name="TILE" low="0" high="1" type="a3xx_tile_mode"/> 963*ae22a949SDmitry Baryshkov <bitfield name="FORMAT" low="2" high="7" type="a3xx_color_fmt"/> 964*ae22a949SDmitry Baryshkov <bitfield name="SWAP" low="8" high="9" type="a3xx_color_swap"/> 965*ae22a949SDmitry Baryshkov <bitfield name="DITHER_MODE" low="10" high="11" type="adreno_rb_dither_mode"/> 966*ae22a949SDmitry Baryshkov <bitfield name="COMPONENT_ENABLE" low="14" high="17" type="hex"/> 967*ae22a949SDmitry Baryshkov <bitfield name="ENDIAN" low="18" high="20" type="adreno_rb_surface_endian"/> 968*ae22a949SDmitry Baryshkov </reg32> 969*ae22a949SDmitry Baryshkov <reg32 offset="0x2100" name="RB_DEPTH_CONTROL"> 970*ae22a949SDmitry Baryshkov <!-- 971*ae22a949SDmitry Baryshkov guessing that this matches a2xx with the stencil fields 972*ae22a949SDmitry Baryshkov moved out into RB_STENCIL_CONTROL? 973*ae22a949SDmitry Baryshkov --> 974*ae22a949SDmitry Baryshkov <bitfield name="FRAG_WRITES_Z" pos="0" type="boolean"/> 975*ae22a949SDmitry Baryshkov <bitfield name="Z_TEST_ENABLE" pos="1" type="boolean"/> 976*ae22a949SDmitry Baryshkov <bitfield name="Z_WRITE_ENABLE" pos="2" type="boolean"/> 977*ae22a949SDmitry Baryshkov <bitfield name="EARLY_Z_DISABLE" pos="3" type="boolean"/> 978*ae22a949SDmitry Baryshkov <bitfield name="ZFUNC" low="4" high="6" type="adreno_compare_func"/> 979*ae22a949SDmitry Baryshkov <bitfield name="Z_CLAMP_ENABLE" pos="7" type="boolean"/> 980*ae22a949SDmitry Baryshkov <doc>Z_READ_ENABLE bit is set for zfunc other than GL_ALWAYS or GL_NEVER</doc> 981*ae22a949SDmitry Baryshkov <bitfield name="Z_READ_ENABLE" pos="31" type="boolean"/> 982*ae22a949SDmitry Baryshkov </reg32> 983*ae22a949SDmitry Baryshkov <reg32 offset="0x2101" name="RB_DEPTH_CLEAR"> 984*ae22a949SDmitry Baryshkov <doc>seems to be always set to 0x00000000</doc> 985*ae22a949SDmitry Baryshkov </reg32> 986*ae22a949SDmitry Baryshkov <reg32 offset="0x2102" name="RB_DEPTH_INFO"> 987*ae22a949SDmitry Baryshkov <bitfield name="DEPTH_FORMAT" low="0" high="1" type="adreno_rb_depth_format"/> 988*ae22a949SDmitry Baryshkov <doc> 989*ae22a949SDmitry Baryshkov DEPTH_BASE is offset in GMEM to depth/stencil buffer, ie 990*ae22a949SDmitry Baryshkov bin_w * bin_h / 1024 (possible rounded up to multiple of 991*ae22a949SDmitry Baryshkov something?? ie. 39 becomes 40, 78 becomes 80.. 75 becomes 992*ae22a949SDmitry Baryshkov 80.. so maybe it needs to be multiple of 8?? 993*ae22a949SDmitry Baryshkov </doc> 994*ae22a949SDmitry Baryshkov <bitfield name="DEPTH_BASE" low="11" high="31" shr="12" type="hex"/> 995*ae22a949SDmitry Baryshkov </reg32> 996*ae22a949SDmitry Baryshkov <reg32 offset="0x2103" name="RB_DEPTH_PITCH" shr="3" type="uint"> 997*ae22a949SDmitry Baryshkov <doc> 998*ae22a949SDmitry Baryshkov Pitch of depth buffer or combined depth+stencil buffer 999*ae22a949SDmitry Baryshkov in z24s8 cases. 1000*ae22a949SDmitry Baryshkov </doc> 1001*ae22a949SDmitry Baryshkov </reg32> 1002*ae22a949SDmitry Baryshkov <reg32 offset="0x2104" name="RB_STENCIL_CONTROL"> 1003*ae22a949SDmitry Baryshkov <bitfield name="STENCIL_ENABLE" pos="0" type="boolean"/> 1004*ae22a949SDmitry Baryshkov <bitfield name="STENCIL_ENABLE_BF" pos="1" type="boolean"/> 1005*ae22a949SDmitry Baryshkov <!-- 1006*ae22a949SDmitry Baryshkov set for stencil operations that require read from stencil 1007*ae22a949SDmitry Baryshkov buffer, but not for example for stencil clear (which does 1008*ae22a949SDmitry Baryshkov not require read).. so guessing this is analogous to 1009*ae22a949SDmitry Baryshkov READ_DEST_ENABLE for color buffer.. 1010*ae22a949SDmitry Baryshkov --> 1011*ae22a949SDmitry Baryshkov <bitfield name="STENCIL_READ" pos="2" type="boolean"/> 1012*ae22a949SDmitry Baryshkov <bitfield name="FUNC" low="8" high="10" type="adreno_compare_func"/> 1013*ae22a949SDmitry Baryshkov <bitfield name="FAIL" low="11" high="13" type="adreno_stencil_op"/> 1014*ae22a949SDmitry Baryshkov <bitfield name="ZPASS" low="14" high="16" type="adreno_stencil_op"/> 1015*ae22a949SDmitry Baryshkov <bitfield name="ZFAIL" low="17" high="19" type="adreno_stencil_op"/> 1016*ae22a949SDmitry Baryshkov <bitfield name="FUNC_BF" low="20" high="22" type="adreno_compare_func"/> 1017*ae22a949SDmitry Baryshkov <bitfield name="FAIL_BF" low="23" high="25" type="adreno_stencil_op"/> 1018*ae22a949SDmitry Baryshkov <bitfield name="ZPASS_BF" low="26" high="28" type="adreno_stencil_op"/> 1019*ae22a949SDmitry Baryshkov <bitfield name="ZFAIL_BF" low="29" high="31" type="adreno_stencil_op"/> 1020*ae22a949SDmitry Baryshkov </reg32> 1021*ae22a949SDmitry Baryshkov <reg32 offset="0x2105" name="RB_STENCIL_CLEAR"> 1022*ae22a949SDmitry Baryshkov <doc>seems to be always set to 0x00000000</doc> 1023*ae22a949SDmitry Baryshkov </reg32> 1024*ae22a949SDmitry Baryshkov <reg32 offset="0x2106" name="RB_STENCIL_INFO"> 1025*ae22a949SDmitry Baryshkov <doc>Base address for stencil when not using interleaved depth/stencil</doc> 1026*ae22a949SDmitry Baryshkov <bitfield name="STENCIL_BASE" low="11" high="31" shr="12" type="hex"/> 1027*ae22a949SDmitry Baryshkov </reg32> 1028*ae22a949SDmitry Baryshkov <reg32 offset="0x2107" name="RB_STENCIL_PITCH" shr="3" type="uint"> 1029*ae22a949SDmitry Baryshkov <doc>pitch of stencil buffer when not using interleaved depth/stencil</doc> 1030*ae22a949SDmitry Baryshkov </reg32> 1031*ae22a949SDmitry Baryshkov <reg32 offset="0x2108" name="RB_STENCILREFMASK" type="adreno_rb_stencilrefmask"/> 1032*ae22a949SDmitry Baryshkov <reg32 offset="0x2109" name="RB_STENCILREFMASK_BF" type="adreno_rb_stencilrefmask"/> 1033*ae22a949SDmitry Baryshkov <!-- VSC == visibility stream c?? --> 1034*ae22a949SDmitry Baryshkov <reg32 offset="0x210c" name="RB_LRZ_VSC_CONTROL"> 1035*ae22a949SDmitry Baryshkov <doc>seems to be set to 0x00000002 during binning pass</doc> 1036*ae22a949SDmitry Baryshkov <bitfield name="BINNING_ENABLE" pos="1" type="boolean"/> 1037*ae22a949SDmitry Baryshkov </reg32> 1038*ae22a949SDmitry Baryshkov <reg32 offset="0x210e" name="RB_WINDOW_OFFSET"> 1039*ae22a949SDmitry Baryshkov <doc>X/Y offset of current bin</doc> 1040*ae22a949SDmitry Baryshkov <bitfield name="X" low="0" high="15" type="uint"/> 1041*ae22a949SDmitry Baryshkov <bitfield name="Y" low="16" high="31" type="uint"/> 1042*ae22a949SDmitry Baryshkov </reg32> 1043*ae22a949SDmitry Baryshkov <reg32 offset="0x2110" name="RB_SAMPLE_COUNT_CONTROL"> 1044*ae22a949SDmitry Baryshkov <bitfield name="RESET" pos="0" type="boolean"/> 1045*ae22a949SDmitry Baryshkov <bitfield name="COPY" pos="1" type="boolean"/> 1046*ae22a949SDmitry Baryshkov </reg32> 1047*ae22a949SDmitry Baryshkov <reg32 offset="0x2111" name="RB_SAMPLE_COUNT_ADDR"/> 1048*ae22a949SDmitry Baryshkov <reg32 offset="0x2114" name="RB_Z_CLAMP_MIN"/> 1049*ae22a949SDmitry Baryshkov <reg32 offset="0x2115" name="RB_Z_CLAMP_MAX"/> 1050*ae22a949SDmitry Baryshkov 1051*ae22a949SDmitry Baryshkov <!-- PC registers --> 1052*ae22a949SDmitry Baryshkov <reg32 offset="0x21e1" name="VGT_BIN_BASE"> 1053*ae22a949SDmitry Baryshkov <doc> 1054*ae22a949SDmitry Baryshkov seems to be where firmware writes BIN_DATA_ADDR from 1055*ae22a949SDmitry Baryshkov CP_SET_BIN_DATA packet.. probably should be called 1056*ae22a949SDmitry Baryshkov PC_BIN_BASE (just using name from yamato for now) 1057*ae22a949SDmitry Baryshkov </doc> 1058*ae22a949SDmitry Baryshkov </reg32> 1059*ae22a949SDmitry Baryshkov <reg32 offset="0x21e2" name="VGT_BIN_SIZE"> 1060*ae22a949SDmitry Baryshkov <doc>probably should be PC_BIN_SIZE</doc> 1061*ae22a949SDmitry Baryshkov </reg32> 1062*ae22a949SDmitry Baryshkov <reg32 offset="0x21e4" name="PC_VSTREAM_CONTROL"> 1063*ae22a949SDmitry Baryshkov <doc>SIZE is current pipe width * height (in tiles)</doc> 1064*ae22a949SDmitry Baryshkov <bitfield name="SIZE" low="16" high="21" type="uint"/> 1065*ae22a949SDmitry Baryshkov <doc> 1066*ae22a949SDmitry Baryshkov N is some sort of slot # between 0..(SIZE-1). In case 1067*ae22a949SDmitry Baryshkov multiple tiles use same pipe, each tile gets unique slot # 1068*ae22a949SDmitry Baryshkov </doc> 1069*ae22a949SDmitry Baryshkov <bitfield name="N" low="22" high="26" type="uint"/> 1070*ae22a949SDmitry Baryshkov </reg32> 1071*ae22a949SDmitry Baryshkov <reg32 offset="0x21ea" name="PC_VERTEX_REUSE_BLOCK_CNTL"/> 1072*ae22a949SDmitry Baryshkov <reg32 offset="0x21ec" name="PC_PRIM_VTX_CNTL"> 1073*ae22a949SDmitry Baryshkov <doc> 1074*ae22a949SDmitry Baryshkov STRIDE_IN_VPC: ALIGN(next_outloc - 8, 4) / 4 1075*ae22a949SDmitry Baryshkov (but, in cases where you'd expect 1, the blob driver uses 1076*ae22a949SDmitry Baryshkov 2, so possibly 0 (no varying) or minimum of 2) 1077*ae22a949SDmitry Baryshkov </doc> 1078*ae22a949SDmitry Baryshkov <bitfield name="STRIDE_IN_VPC" low="0" high="4" type="uint"/> 1079*ae22a949SDmitry Baryshkov <bitfield name="POLYMODE_FRONT_PTYPE" low="5" high="7" type="adreno_pa_su_sc_draw"/> 1080*ae22a949SDmitry Baryshkov <bitfield name="POLYMODE_BACK_PTYPE" low="8" high="10" type="adreno_pa_su_sc_draw"/> 1081*ae22a949SDmitry Baryshkov <bitfield name="POLYMODE_ENABLE" pos="12" type="boolean"/> 1082*ae22a949SDmitry Baryshkov <bitfield name="PRIMITIVE_RESTART" pos="20" type="boolean"/> 1083*ae22a949SDmitry Baryshkov <bitfield name="PROVOKING_VTX_LAST" pos="25" type="boolean"/> 1084*ae22a949SDmitry Baryshkov <!-- PSIZE bit set if gl_PointSize written: --> 1085*ae22a949SDmitry Baryshkov <bitfield name="PSIZE" pos="26" type="boolean"/> 1086*ae22a949SDmitry Baryshkov </reg32> 1087*ae22a949SDmitry Baryshkov <reg32 offset="0x21ed" name="PC_RESTART_INDEX"/> 1088*ae22a949SDmitry Baryshkov 1089*ae22a949SDmitry Baryshkov <!-- HLSQ registers --> 1090*ae22a949SDmitry Baryshkov <bitset name="a3xx_hlsq_vs_fs_control_reg" inline="yes"> 1091*ae22a949SDmitry Baryshkov <bitfield name="CONSTLENGTH" low="0" high="9" type="uint"/> 1092*ae22a949SDmitry Baryshkov <bitfield name="CONSTSTARTOFFSET" low="12" high="20" type="uint"/> 1093*ae22a949SDmitry Baryshkov <bitfield name="INSTRLENGTH" low="24" high="31" type="uint"/> 1094*ae22a949SDmitry Baryshkov </bitset> 1095*ae22a949SDmitry Baryshkov <bitset name="a3xx_hlsq_const_vs_fs_presv_range_reg" inline="yes"> 1096*ae22a949SDmitry Baryshkov <!-- are these a3xx_regid?? --> 1097*ae22a949SDmitry Baryshkov <bitfield name="STARTENTRY" low="0" high="8"/> 1098*ae22a949SDmitry Baryshkov <bitfield name="ENDENTRY" low="16" high="24"/> 1099*ae22a949SDmitry Baryshkov </bitset> 1100*ae22a949SDmitry Baryshkov 1101*ae22a949SDmitry Baryshkov <reg32 offset="0x2200" name="HLSQ_CONTROL_0_REG"> 1102*ae22a949SDmitry Baryshkov <bitfield name="FSTHREADSIZE" low="4" high="5" type="a3xx_threadsize"/> 1103*ae22a949SDmitry Baryshkov <bitfield name="FSSUPERTHREADENABLE" pos="6" type="boolean"/> 1104*ae22a949SDmitry Baryshkov <bitfield name="COMPUTEMODE" pos="8" type="boolean"/> 1105*ae22a949SDmitry Baryshkov <bitfield name="SPSHADERRESTART" pos="9" type="boolean"/> 1106*ae22a949SDmitry Baryshkov <bitfield name="RESERVED2" pos="10" type="boolean"/> 1107*ae22a949SDmitry Baryshkov <bitfield name="CYCLETIMEOUTLIMITVPC" low="12" high="23" type="uint"/> 1108*ae22a949SDmitry Baryshkov <bitfield name="FSONLYTEX" pos="25" type="boolean"/> 1109*ae22a949SDmitry Baryshkov <bitfield name="CHUNKDISABLE" pos="26" type="boolean"/> 1110*ae22a949SDmitry Baryshkov <bitfield name="CONSTMODE" pos="27" type="uint"/> 1111*ae22a949SDmitry Baryshkov <bitfield name="LAZYUPDATEDISABLE" pos="28" type="boolean"/> 1112*ae22a949SDmitry Baryshkov <bitfield name="SPCONSTFULLUPDATE" pos="29" type="boolean"/> 1113*ae22a949SDmitry Baryshkov <bitfield name="TPFULLUPDATE" pos="30" type="boolean"/> 1114*ae22a949SDmitry Baryshkov <bitfield name="SINGLECONTEXT" pos="31" type="boolean"/> 1115*ae22a949SDmitry Baryshkov </reg32> 1116*ae22a949SDmitry Baryshkov <reg32 offset="0x2201" name="HLSQ_CONTROL_1_REG"> 1117*ae22a949SDmitry Baryshkov <bitfield name="VSTHREADSIZE" low="6" high="7" type="a3xx_threadsize"/> 1118*ae22a949SDmitry Baryshkov <bitfield name="VSSUPERTHREADENABLE" pos="8" type="boolean"/> 1119*ae22a949SDmitry Baryshkov <bitfield name="FRAGCOORDXYREGID" low="16" high="23" type="a3xx_regid"/> 1120*ae22a949SDmitry Baryshkov <bitfield name="FRAGCOORDZWREGID" low="24" high="31" type="a3xx_regid"/> 1121*ae22a949SDmitry Baryshkov </reg32> 1122*ae22a949SDmitry Baryshkov <reg32 offset="0x2202" name="HLSQ_CONTROL_2_REG"> 1123*ae22a949SDmitry Baryshkov <bitfield name="FACENESSREGID" low="2" high="9" type="a3xx_regid"/> 1124*ae22a949SDmitry Baryshkov <bitfield name="COVVALUEREGID" low="18" high="25" type="a3xx_regid"/> 1125*ae22a949SDmitry Baryshkov <bitfield name="PRIMALLOCTHRESHOLD" low="26" high="31" type="uint"/> 1126*ae22a949SDmitry Baryshkov </reg32> 1127*ae22a949SDmitry Baryshkov <reg32 offset="0x2203" name="HLSQ_CONTROL_3_REG"> 1128*ae22a949SDmitry Baryshkov <bitfield name="IJPERSPCENTERREGID" low="0" high="7" type="a3xx_regid"/> 1129*ae22a949SDmitry Baryshkov <bitfield name="IJNONPERSPCENTERREGID" low="8" high="15" type="a3xx_regid"/> 1130*ae22a949SDmitry Baryshkov <bitfield name="IJPERSPCENTROIDREGID" low="16" high="23" type="a3xx_regid"/> 1131*ae22a949SDmitry Baryshkov <bitfield name="IJNONPERSPCENTROIDREGID" low="24" high="31" type="a3xx_regid"/> 1132*ae22a949SDmitry Baryshkov </reg32> 1133*ae22a949SDmitry Baryshkov <reg32 offset="0x2204" name="HLSQ_VS_CONTROL_REG" type="a3xx_hlsq_vs_fs_control_reg"/> 1134*ae22a949SDmitry Baryshkov <reg32 offset="0x2205" name="HLSQ_FS_CONTROL_REG" type="a3xx_hlsq_vs_fs_control_reg"/> 1135*ae22a949SDmitry Baryshkov <reg32 offset="0x2206" name="HLSQ_CONST_VSPRESV_RANGE_REG" type="a3xx_hlsq_const_vs_fs_presv_range_reg"/> 1136*ae22a949SDmitry Baryshkov <reg32 offset="0x2207" name="HLSQ_CONST_FSPRESV_RANGE_REG" type="a3xx_hlsq_const_vs_fs_presv_range_reg"/> 1137*ae22a949SDmitry Baryshkov <reg32 offset="0x220a" name="HLSQ_CL_NDRANGE_0_REG"> 1138*ae22a949SDmitry Baryshkov <bitfield name="WORKDIM" low="0" high="1" type="uint"/> 1139*ae22a949SDmitry Baryshkov <bitfield name="LOCALSIZE0" low="2" high="11" type="uint"/> 1140*ae22a949SDmitry Baryshkov <bitfield name="LOCALSIZE1" low="12" high="21" type="uint"/> 1141*ae22a949SDmitry Baryshkov <bitfield name="LOCALSIZE2" low="22" high="31" type="uint"/> 1142*ae22a949SDmitry Baryshkov </reg32> 1143*ae22a949SDmitry Baryshkov <array offset="0x220b" name="HLSQ_CL_GLOBAL_WORK" stride="2" length="3"> 1144*ae22a949SDmitry Baryshkov <doc>indexed by dimension</doc> 1145*ae22a949SDmitry Baryshkov <reg32 offset="0" name="SIZE" type="uint"/> 1146*ae22a949SDmitry Baryshkov <reg32 offset="1" name="OFFSET" type="uint"/> 1147*ae22a949SDmitry Baryshkov </array> 1148*ae22a949SDmitry Baryshkov <reg32 offset="0x2211" name="HLSQ_CL_CONTROL_0_REG"/> 1149*ae22a949SDmitry Baryshkov <reg32 offset="0x2212" name="HLSQ_CL_CONTROL_1_REG"/> 1150*ae22a949SDmitry Baryshkov <reg32 offset="0x2214" name="HLSQ_CL_KERNEL_CONST_REG"/> 1151*ae22a949SDmitry Baryshkov <array offset="0x2215" name="HLSQ_CL_KERNEL_GROUP" stride="1" length="3"> 1152*ae22a949SDmitry Baryshkov <doc>indexed by dimension, global_size / local_size</doc> 1153*ae22a949SDmitry Baryshkov <reg32 offset="0" name="RATIO" type="uint"/> 1154*ae22a949SDmitry Baryshkov </array> 1155*ae22a949SDmitry Baryshkov <reg32 offset="0x2216" name="HLSQ_CL_KERNEL_GROUP_Y_REG" type="uint"/> 1156*ae22a949SDmitry Baryshkov <reg32 offset="0x2217" name="HLSQ_CL_KERNEL_GROUP_Z_REG" type="uint"/> 1157*ae22a949SDmitry Baryshkov <reg32 offset="0x221a" name="HLSQ_CL_WG_OFFSET_REG"/> 1158*ae22a949SDmitry Baryshkov 1159*ae22a949SDmitry Baryshkov <!-- VFD registers --> 1160*ae22a949SDmitry Baryshkov <reg32 offset="0x2240" name="VFD_CONTROL_0"> 1161*ae22a949SDmitry Baryshkov <doc> 1162*ae22a949SDmitry Baryshkov TOTALATTRTOVS is # of attributes to vertex shader, in register 1163*ae22a949SDmitry Baryshkov slots (ie. vec4+vec3 -> 7) 1164*ae22a949SDmitry Baryshkov </doc> 1165*ae22a949SDmitry Baryshkov <bitfield name="TOTALATTRTOVS" low="0" high="17" type="uint"/> 1166*ae22a949SDmitry Baryshkov <bitfield name="PACKETSIZE" low="18" high="21" type="uint"/> 1167*ae22a949SDmitry Baryshkov <doc>STRMDECINSTRCNT is # of VFD_DECODE_INSTR registers valid</doc> 1168*ae22a949SDmitry Baryshkov <bitfield name="STRMDECINSTRCNT" low="22" high="26" type="uint"/> 1169*ae22a949SDmitry Baryshkov <doc>STRMFETCHINSTRCNT is # of VFD_FETCH_INSTR registers valid</doc> 1170*ae22a949SDmitry Baryshkov <bitfield name="STRMFETCHINSTRCNT" low="27" high="31" type="uint"/> 1171*ae22a949SDmitry Baryshkov </reg32> 1172*ae22a949SDmitry Baryshkov <reg32 offset="0x2241" name="VFD_CONTROL_1"> 1173*ae22a949SDmitry Baryshkov <doc>MAXSTORAGE could be # of attributes/vbo's</doc> 1174*ae22a949SDmitry Baryshkov <bitfield name="MAXSTORAGE" low="0" high="3" type="uint"/> 1175*ae22a949SDmitry Baryshkov <bitfield name="MAXTHRESHOLD" low="4" high="7" type="uint"/> 1176*ae22a949SDmitry Baryshkov <bitfield name="MINTHRESHOLD" low="8" high="11" type="uint"/> 1177*ae22a949SDmitry Baryshkov <bitfield name="REGID4VTX" low="16" high="23" type="a3xx_regid"/> 1178*ae22a949SDmitry Baryshkov <bitfield name="REGID4INST" low="24" high="31" type="a3xx_regid"/> 1179*ae22a949SDmitry Baryshkov </reg32> 1180*ae22a949SDmitry Baryshkov <reg32 offset="0x2242" name="VFD_INDEX_MIN" type="uint"/> 1181*ae22a949SDmitry Baryshkov <reg32 offset="0x2243" name="VFD_INDEX_MAX" type="uint"/> 1182*ae22a949SDmitry Baryshkov <reg32 offset="0x2244" name="VFD_INSTANCEID_OFFSET" type="uint"/> 1183*ae22a949SDmitry Baryshkov <reg32 offset="0x2245" name="VFD_INDEX_OFFSET" type="uint"/> 1184*ae22a949SDmitry Baryshkov <array offset="0x2246" name="VFD_FETCH" stride="2" length="16"> 1185*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="INSTR_0"> 1186*ae22a949SDmitry Baryshkov <bitfield name="FETCHSIZE" low="0" high="6" type="uint"/> 1187*ae22a949SDmitry Baryshkov <bitfield name="BUFSTRIDE" low="7" high="15" type="uint"/> 1188*ae22a949SDmitry Baryshkov <bitfield name="INSTANCED" pos="16" type="boolean"/> 1189*ae22a949SDmitry Baryshkov <bitfield name="SWITCHNEXT" pos="17" type="boolean"/> 1190*ae22a949SDmitry Baryshkov <bitfield name="INDEXCODE" low="18" high="23" type="uint"/> 1191*ae22a949SDmitry Baryshkov <bitfield name="STEPRATE" low="24" high="31" type="uint"/> 1192*ae22a949SDmitry Baryshkov </reg32> 1193*ae22a949SDmitry Baryshkov <reg32 offset="0x1" name="INSTR_1"/> 1194*ae22a949SDmitry Baryshkov </array> 1195*ae22a949SDmitry Baryshkov <array offset="0x2266" name="VFD_DECODE" stride="1" length="16"> 1196*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="INSTR"> 1197*ae22a949SDmitry Baryshkov <bitfield name="WRITEMASK" low="0" high="3" type="hex"/> 1198*ae22a949SDmitry Baryshkov <!-- not sure if this is a bit flag and another flag above it, or?? --> 1199*ae22a949SDmitry Baryshkov <bitfield name="CONSTFILL" pos="4" type="boolean"/> 1200*ae22a949SDmitry Baryshkov <bitfield name="FORMAT" low="6" high="11" type="a3xx_vtx_fmt"/> 1201*ae22a949SDmitry Baryshkov <bitfield name="REGID" low="12" high="19" type="a3xx_regid"/> 1202*ae22a949SDmitry Baryshkov <bitfield name="INT" pos="20" type="boolean"/> 1203*ae22a949SDmitry Baryshkov <doc>SHIFTCNT appears to be size, ie. FLOAT_32_32_32 is 12, and BYTE_8 is 1</doc> 1204*ae22a949SDmitry Baryshkov <bitfield name="SWAP" low="22" high="23" type="a3xx_color_swap"/> 1205*ae22a949SDmitry Baryshkov <bitfield name="SHIFTCNT" low="24" high="28" type="uint"/> 1206*ae22a949SDmitry Baryshkov <bitfield name="LASTCOMPVALID" pos="29" type="boolean"/> 1207*ae22a949SDmitry Baryshkov <bitfield name="SWITCHNEXT" pos="30" type="boolean"/> 1208*ae22a949SDmitry Baryshkov </reg32> 1209*ae22a949SDmitry Baryshkov </array> 1210*ae22a949SDmitry Baryshkov <reg32 offset="0x227e" name="VFD_VS_THREADING_THRESHOLD"> 1211*ae22a949SDmitry Baryshkov <bitfield name="REGID_THRESHOLD" low="0" high="3" type="uint"/> 1212*ae22a949SDmitry Baryshkov <!-- <bitfield name="RESERVED6" low="4" high="7" type="uint"/> --> 1213*ae22a949SDmitry Baryshkov <bitfield name="REGID_VTXCNT" low="8" high="15" type="a3xx_regid"/> 1214*ae22a949SDmitry Baryshkov </reg32> 1215*ae22a949SDmitry Baryshkov 1216*ae22a949SDmitry Baryshkov <!-- VPC registers --> 1217*ae22a949SDmitry Baryshkov <reg32 offset="0x2280" name="VPC_ATTR"> 1218*ae22a949SDmitry Baryshkov <bitfield name="TOTALATTR" low="0" high="8" type="uint"/> 1219*ae22a949SDmitry Baryshkov <!-- PSIZE bit set if gl_PointSize written: --> 1220*ae22a949SDmitry Baryshkov <bitfield name="PSIZE" pos="9" type="boolean"/> 1221*ae22a949SDmitry Baryshkov <bitfield name="THRDASSIGN" low="12" high="27" type="uint"/> 1222*ae22a949SDmitry Baryshkov <bitfield name="LMSIZE" low="28" high="31" type="uint"/> 1223*ae22a949SDmitry Baryshkov </reg32> 1224*ae22a949SDmitry Baryshkov <reg32 offset="0x2281" name="VPC_PACK"> 1225*ae22a949SDmitry Baryshkov <!-- these are always seem to be set to same as TOTALATTR --> 1226*ae22a949SDmitry Baryshkov <bitfield name="NUMFPNONPOSVAR" low="8" high="15" type="uint"/> 1227*ae22a949SDmitry Baryshkov <bitfield name="NUMNONPOSVSVAR" low="16" high="23" type="uint"/> 1228*ae22a949SDmitry Baryshkov </reg32> 1229*ae22a949SDmitry Baryshkov <!-- 1230*ae22a949SDmitry Baryshkov varying interpolate mode. One field per scalar/component 1231*ae22a949SDmitry Baryshkov (since varying slots are scalar, so things don't have to 1232*ae22a949SDmitry Baryshkov be aligned to vec4). 1233*ae22a949SDmitry Baryshkov 4 regs * 16 scalar components each => 16 vec4 1234*ae22a949SDmitry Baryshkov --> 1235*ae22a949SDmitry Baryshkov <array offset="0x2282" name="VPC_VARYING_INTERP" stride="1" length="4"> 1236*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="MODE"> 1237*ae22a949SDmitry Baryshkov <bitfield name="C0" low="0" high="1" type="a3xx_intp_mode"/> 1238*ae22a949SDmitry Baryshkov <bitfield name="C1" low="2" high="3" type="a3xx_intp_mode"/> 1239*ae22a949SDmitry Baryshkov <bitfield name="C2" low="4" high="5" type="a3xx_intp_mode"/> 1240*ae22a949SDmitry Baryshkov <bitfield name="C3" low="6" high="7" type="a3xx_intp_mode"/> 1241*ae22a949SDmitry Baryshkov <bitfield name="C4" low="8" high="9" type="a3xx_intp_mode"/> 1242*ae22a949SDmitry Baryshkov <bitfield name="C5" low="10" high="11" type="a3xx_intp_mode"/> 1243*ae22a949SDmitry Baryshkov <bitfield name="C6" low="12" high="13" type="a3xx_intp_mode"/> 1244*ae22a949SDmitry Baryshkov <bitfield name="C7" low="14" high="15" type="a3xx_intp_mode"/> 1245*ae22a949SDmitry Baryshkov <bitfield name="C8" low="16" high="17" type="a3xx_intp_mode"/> 1246*ae22a949SDmitry Baryshkov <bitfield name="C9" low="18" high="19" type="a3xx_intp_mode"/> 1247*ae22a949SDmitry Baryshkov <bitfield name="CA" low="20" high="21" type="a3xx_intp_mode"/> 1248*ae22a949SDmitry Baryshkov <bitfield name="CB" low="22" high="23" type="a3xx_intp_mode"/> 1249*ae22a949SDmitry Baryshkov <bitfield name="CC" low="24" high="25" type="a3xx_intp_mode"/> 1250*ae22a949SDmitry Baryshkov <bitfield name="CD" low="26" high="27" type="a3xx_intp_mode"/> 1251*ae22a949SDmitry Baryshkov <bitfield name="CE" low="28" high="29" type="a3xx_intp_mode"/> 1252*ae22a949SDmitry Baryshkov <bitfield name="CF" low="30" high="31" type="a3xx_intp_mode"/> 1253*ae22a949SDmitry Baryshkov </reg32> 1254*ae22a949SDmitry Baryshkov </array> 1255*ae22a949SDmitry Baryshkov <array offset="0x2286" name="VPC_VARYING_PS_REPL" stride="1" length="4"> 1256*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="MODE"> 1257*ae22a949SDmitry Baryshkov <bitfield name="C0" low="0" high="1" type="a3xx_repl_mode"/> 1258*ae22a949SDmitry Baryshkov <bitfield name="C1" low="2" high="3" type="a3xx_repl_mode"/> 1259*ae22a949SDmitry Baryshkov <bitfield name="C2" low="4" high="5" type="a3xx_repl_mode"/> 1260*ae22a949SDmitry Baryshkov <bitfield name="C3" low="6" high="7" type="a3xx_repl_mode"/> 1261*ae22a949SDmitry Baryshkov <bitfield name="C4" low="8" high="9" type="a3xx_repl_mode"/> 1262*ae22a949SDmitry Baryshkov <bitfield name="C5" low="10" high="11" type="a3xx_repl_mode"/> 1263*ae22a949SDmitry Baryshkov <bitfield name="C6" low="12" high="13" type="a3xx_repl_mode"/> 1264*ae22a949SDmitry Baryshkov <bitfield name="C7" low="14" high="15" type="a3xx_repl_mode"/> 1265*ae22a949SDmitry Baryshkov <bitfield name="C8" low="16" high="17" type="a3xx_repl_mode"/> 1266*ae22a949SDmitry Baryshkov <bitfield name="C9" low="18" high="19" type="a3xx_repl_mode"/> 1267*ae22a949SDmitry Baryshkov <bitfield name="CA" low="20" high="21" type="a3xx_repl_mode"/> 1268*ae22a949SDmitry Baryshkov <bitfield name="CB" low="22" high="23" type="a3xx_repl_mode"/> 1269*ae22a949SDmitry Baryshkov <bitfield name="CC" low="24" high="25" type="a3xx_repl_mode"/> 1270*ae22a949SDmitry Baryshkov <bitfield name="CD" low="26" high="27" type="a3xx_repl_mode"/> 1271*ae22a949SDmitry Baryshkov <bitfield name="CE" low="28" high="29" type="a3xx_repl_mode"/> 1272*ae22a949SDmitry Baryshkov <bitfield name="CF" low="30" high="31" type="a3xx_repl_mode"/> 1273*ae22a949SDmitry Baryshkov </reg32> 1274*ae22a949SDmitry Baryshkov </array> 1275*ae22a949SDmitry Baryshkov <reg32 offset="0x228a" name="VPC_VARY_CYLWRAP_ENABLE_0"/> 1276*ae22a949SDmitry Baryshkov <reg32 offset="0x228b" name="VPC_VARY_CYLWRAP_ENABLE_1"/> 1277*ae22a949SDmitry Baryshkov 1278*ae22a949SDmitry Baryshkov <!-- SP registers --> 1279*ae22a949SDmitry Baryshkov <bitset name="a3xx_vs_fs_length_reg" inline="yes"> 1280*ae22a949SDmitry Baryshkov <bitfield name="SHADERLENGTH" low="0" high="31" type="uint"/> 1281*ae22a949SDmitry Baryshkov </bitset> 1282*ae22a949SDmitry Baryshkov 1283*ae22a949SDmitry Baryshkov <bitset name="sp_vs_fs_obj_offset_reg" inline="yes"> 1284*ae22a949SDmitry Baryshkov <bitfield name="FIRSTEXECINSTROFFSET" low="0" high="15" type="uint"/> 1285*ae22a949SDmitry Baryshkov <doc> 1286*ae22a949SDmitry Baryshkov From register spec: 1287*ae22a949SDmitry Baryshkov SP_FS_OBJ_OFFSET_REG.CONSTOBJECTSTARTOFFSET [16:24]: Constant object 1288*ae22a949SDmitry Baryshkov start offset in on chip RAM, 1289*ae22a949SDmitry Baryshkov 128bit aligned 1290*ae22a949SDmitry Baryshkov </doc> 1291*ae22a949SDmitry Baryshkov <bitfield name="CONSTOBJECTOFFSET" low="16" high="24" type="uint"/> 1292*ae22a949SDmitry Baryshkov <bitfield name="SHADEROBJOFFSET" low="25" high="31" type="uint"/> 1293*ae22a949SDmitry Baryshkov </bitset> 1294*ae22a949SDmitry Baryshkov 1295*ae22a949SDmitry Baryshkov <reg32 offset="0x22c0" name="SP_SP_CTRL_REG"> 1296*ae22a949SDmitry Baryshkov <!-- this bit is set during resolve pass: --> 1297*ae22a949SDmitry Baryshkov <bitfield name="RESOLVE" pos="16" type="boolean"/> 1298*ae22a949SDmitry Baryshkov <bitfield name="CONSTMODE" pos="18" type="uint"/> 1299*ae22a949SDmitry Baryshkov <bitfield name="BINNING" pos="19" type="boolean"/> 1300*ae22a949SDmitry Baryshkov <bitfield name="SLEEPMODE" low="20" high="21" type="uint"/> 1301*ae22a949SDmitry Baryshkov <!-- L0MODE==1 when oxiliForceSpL0ModeBuffer=1 --> 1302*ae22a949SDmitry Baryshkov <bitfield name="L0MODE" low="22" high="23" type="uint"/> 1303*ae22a949SDmitry Baryshkov </reg32> 1304*ae22a949SDmitry Baryshkov <reg32 offset="0x22c4" name="SP_VS_CTRL_REG0"> 1305*ae22a949SDmitry Baryshkov <bitfield name="THREADMODE" pos="0" type="a3xx_threadmode"/> 1306*ae22a949SDmitry Baryshkov <bitfield name="INSTRBUFFERMODE" pos="1" type="a3xx_instrbuffermode"/> 1307*ae22a949SDmitry Baryshkov <!-- maybe CACHEINVALID is two bits?? --> 1308*ae22a949SDmitry Baryshkov <bitfield name="CACHEINVALID" pos="2" type="boolean"/> 1309*ae22a949SDmitry Baryshkov <bitfield name="ALUSCHMODE" pos="3" type="boolean"/> 1310*ae22a949SDmitry Baryshkov <doc> 1311*ae22a949SDmitry Baryshkov The full/half register footprint is in units of four components, 1312*ae22a949SDmitry Baryshkov so if r0.x is used, that counts as all of r0.[xyzw] as used. 1313*ae22a949SDmitry Baryshkov There are separate full/half register footprint values as the 1314*ae22a949SDmitry Baryshkov full and half registers are independent (not overlapping). 1315*ae22a949SDmitry Baryshkov Presumably the thread scheduler hardware allocates the full/half 1316*ae22a949SDmitry Baryshkov register names from the actual physical register file and 1317*ae22a949SDmitry Baryshkov handles the register renaming. 1318*ae22a949SDmitry Baryshkov </doc> 1319*ae22a949SDmitry Baryshkov <bitfield name="HALFREGFOOTPRINT" low="4" high="9" type="uint"/> 1320*ae22a949SDmitry Baryshkov <bitfield name="FULLREGFOOTPRINT" low="10" high="15" type="uint"/> 1321*ae22a949SDmitry Baryshkov <bitfield name="THREADSIZE" pos="20" type="a3xx_threadsize"/> 1322*ae22a949SDmitry Baryshkov <bitfield name="SUPERTHREADMODE" pos="21" type="boolean"/> 1323*ae22a949SDmitry Baryshkov <doc> 1324*ae22a949SDmitry Baryshkov From regspec: 1325*ae22a949SDmitry Baryshkov SP_FS_CTRL_REG0.FS_LENGTH [31:24]: FS length, unit = 256bits. 1326*ae22a949SDmitry Baryshkov If bit31 is 1, it means overflow 1327*ae22a949SDmitry Baryshkov or any long shader. 1328*ae22a949SDmitry Baryshkov </doc> 1329*ae22a949SDmitry Baryshkov <bitfield name="LENGTH" low="24" high="31" type="uint"/> 1330*ae22a949SDmitry Baryshkov </reg32> 1331*ae22a949SDmitry Baryshkov <reg32 offset="0x22c5" name="SP_VS_CTRL_REG1"> 1332*ae22a949SDmitry Baryshkov <bitfield name="CONSTLENGTH" low="0" high="9" type="uint"/> 1333*ae22a949SDmitry Baryshkov <!-- 1334*ae22a949SDmitry Baryshkov not sure about full vs half const.. I can't get blob generate 1335*ae22a949SDmitry Baryshkov something with a mediump/lowp uniform. 1336*ae22a949SDmitry Baryshkov --> 1337*ae22a949SDmitry Baryshkov <bitfield name="CONSTFOOTPRINT" low="10" high="19" type="uint"/> 1338*ae22a949SDmitry Baryshkov <bitfield name="INITIALOUTSTANDING" low="24" high="30" type="uint"/> 1339*ae22a949SDmitry Baryshkov </reg32> 1340*ae22a949SDmitry Baryshkov <reg32 offset="0x22c6" name="SP_VS_PARAM_REG"> 1341*ae22a949SDmitry Baryshkov <bitfield name="POSREGID" low="0" high="7" type="a3xx_regid"/> 1342*ae22a949SDmitry Baryshkov <bitfield name="PSIZEREGID" low="8" high="15" type="a3xx_regid"/> 1343*ae22a949SDmitry Baryshkov <bitfield name="POS2DMODE" pos="16" type="boolean"/> 1344*ae22a949SDmitry Baryshkov <bitfield name="TOTALVSOUTVAR" low="20" high="24" type="uint"/> 1345*ae22a949SDmitry Baryshkov </reg32> 1346*ae22a949SDmitry Baryshkov <array offset="0x22c7" name="SP_VS_OUT" stride="1" length="8"> 1347*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="REG"> 1348*ae22a949SDmitry Baryshkov <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/> 1349*ae22a949SDmitry Baryshkov <bitfield name="A_HALF" pos="8" type="boolean"/> 1350*ae22a949SDmitry Baryshkov <bitfield name="A_COMPMASK" low="9" high="12" type="hex"/> 1351*ae22a949SDmitry Baryshkov <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/> 1352*ae22a949SDmitry Baryshkov <bitfield name="B_HALF" pos="24" type="boolean"/> 1353*ae22a949SDmitry Baryshkov <bitfield name="B_COMPMASK" low="25" high="28" type="hex"/> 1354*ae22a949SDmitry Baryshkov </reg32> 1355*ae22a949SDmitry Baryshkov </array> 1356*ae22a949SDmitry Baryshkov <array offset="0x22d0" name="SP_VS_VPC_DST" stride="1" length="4"> 1357*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="REG"> 1358*ae22a949SDmitry Baryshkov <doc> 1359*ae22a949SDmitry Baryshkov These seem to be offsets for storage of the varyings. 1360*ae22a949SDmitry Baryshkov Always seems to start from 8, possibly loc 0 and 4 1361*ae22a949SDmitry Baryshkov are for gl_Position and gl_PointSize? 1362*ae22a949SDmitry Baryshkov </doc> 1363*ae22a949SDmitry Baryshkov <bitfield name="OUTLOC0" low="0" high="6" type="uint"/> 1364*ae22a949SDmitry Baryshkov <bitfield name="OUTLOC1" low="8" high="14" type="uint"/> 1365*ae22a949SDmitry Baryshkov <bitfield name="OUTLOC2" low="16" high="22" type="uint"/> 1366*ae22a949SDmitry Baryshkov <bitfield name="OUTLOC3" low="24" high="30" type="uint"/> 1367*ae22a949SDmitry Baryshkov </reg32> 1368*ae22a949SDmitry Baryshkov </array> 1369*ae22a949SDmitry Baryshkov <reg32 offset="0x22d4" name="SP_VS_OBJ_OFFSET_REG" type="sp_vs_fs_obj_offset_reg"/> 1370*ae22a949SDmitry Baryshkov <doc> 1371*ae22a949SDmitry Baryshkov SP_VS_OBJ_START_REG contains pointer to the vertex shader program, 1372*ae22a949SDmitry Baryshkov immediately followed by the binning shader program (although I 1373*ae22a949SDmitry Baryshkov guess that is probably just re-using the same gpu buffer) 1374*ae22a949SDmitry Baryshkov </doc> 1375*ae22a949SDmitry Baryshkov <reg32 offset="0x22d5" name="SP_VS_OBJ_START_REG"/> 1376*ae22a949SDmitry Baryshkov <reg32 offset="0x22d6" name="SP_VS_PVT_MEM_PARAM_REG"> 1377*ae22a949SDmitry Baryshkov <bitfield name="MEMSIZEPERITEM" low="0" high="7" shr="7"> 1378*ae22a949SDmitry Baryshkov <doc>The size of memory that ldp/stp can address, in 128 byte increments.</doc> 1379*ae22a949SDmitry Baryshkov </bitfield> 1380*ae22a949SDmitry Baryshkov <bitfield name="HWSTACKOFFSET" low="8" high="23" type="uint"/> 1381*ae22a949SDmitry Baryshkov <bitfield name="HWSTACKSIZEPERTHREAD" low="24" high="31" type="uint"/> 1382*ae22a949SDmitry Baryshkov </reg32> 1383*ae22a949SDmitry Baryshkov <reg32 offset="0x22d7" name="SP_VS_PVT_MEM_ADDR_REG"> 1384*ae22a949SDmitry Baryshkov <bitfield name="BURSTLEN" low="0" high="4"/> 1385*ae22a949SDmitry Baryshkov <bitfield name="SHADERSTARTADDRESS" shr="5" low="5" high="31"/> 1386*ae22a949SDmitry Baryshkov </reg32> 1387*ae22a949SDmitry Baryshkov <reg32 offset="0x22d8" name="SP_VS_PVT_MEM_SIZE_REG"/> 1388*ae22a949SDmitry Baryshkov <reg32 offset="0x22df" name="SP_VS_LENGTH_REG" type="a3xx_vs_fs_length_reg"/> 1389*ae22a949SDmitry Baryshkov <reg32 offset="0x22e0" name="SP_FS_CTRL_REG0"> 1390*ae22a949SDmitry Baryshkov <bitfield name="THREADMODE" pos="0" type="a3xx_threadmode"/> 1391*ae22a949SDmitry Baryshkov <bitfield name="INSTRBUFFERMODE" pos="1" type="a3xx_instrbuffermode"/> 1392*ae22a949SDmitry Baryshkov <!-- maybe CACHEINVALID is two bits?? --> 1393*ae22a949SDmitry Baryshkov <bitfield name="CACHEINVALID" pos="2" type="boolean"/> 1394*ae22a949SDmitry Baryshkov <bitfield name="ALUSCHMODE" pos="3" type="boolean"/> 1395*ae22a949SDmitry Baryshkov <doc> 1396*ae22a949SDmitry Baryshkov The full/half register footprint is in units of four components, 1397*ae22a949SDmitry Baryshkov so if r0.x is used, that counts as all of r0.[xyzw] as used. 1398*ae22a949SDmitry Baryshkov There are separate full/half register footprint values as the 1399*ae22a949SDmitry Baryshkov full and half registers are independent (not overlapping). 1400*ae22a949SDmitry Baryshkov Presumably the thread scheduler hardware allocates the full/half 1401*ae22a949SDmitry Baryshkov register names from the actual physical register file and 1402*ae22a949SDmitry Baryshkov handles the register renaming. 1403*ae22a949SDmitry Baryshkov </doc> 1404*ae22a949SDmitry Baryshkov <bitfield name="HALFREGFOOTPRINT" low="4" high="9" type="uint"/> 1405*ae22a949SDmitry Baryshkov <bitfield name="FULLREGFOOTPRINT" low="10" high="15" type="uint"/> 1406*ae22a949SDmitry Baryshkov <bitfield name="FSBYPASSENABLE" pos="17" type="boolean"/> 1407*ae22a949SDmitry Baryshkov <bitfield name="INOUTREGOVERLAP" pos="18" type="boolean"/> 1408*ae22a949SDmitry Baryshkov <bitfield name="OUTORDERED" pos="19" type="boolean"/> 1409*ae22a949SDmitry Baryshkov <bitfield name="THREADSIZE" pos="20" type="a3xx_threadsize"/> 1410*ae22a949SDmitry Baryshkov <bitfield name="SUPERTHREADMODE" pos="21" type="boolean"/> 1411*ae22a949SDmitry Baryshkov <bitfield name="PIXLODENABLE" pos="22" type="boolean"/> 1412*ae22a949SDmitry Baryshkov <bitfield name="COMPUTEMODE" pos="23" type="boolean"/> 1413*ae22a949SDmitry Baryshkov <doc> 1414*ae22a949SDmitry Baryshkov From regspec: 1415*ae22a949SDmitry Baryshkov SP_FS_CTRL_REG0.FS_LENGTH [31:24]: FS length, unit = 256bits. 1416*ae22a949SDmitry Baryshkov If bit31 is 1, it means overflow 1417*ae22a949SDmitry Baryshkov or any long shader. 1418*ae22a949SDmitry Baryshkov </doc> 1419*ae22a949SDmitry Baryshkov <bitfield name="LENGTH" low="24" high="31" type="uint"/> 1420*ae22a949SDmitry Baryshkov </reg32> 1421*ae22a949SDmitry Baryshkov <reg32 offset="0x22e1" name="SP_FS_CTRL_REG1"> 1422*ae22a949SDmitry Baryshkov <bitfield name="CONSTLENGTH" low="0" high="9" type="uint"/> 1423*ae22a949SDmitry Baryshkov <bitfield name="CONSTFOOTPRINT" low="10" high="19" type="uint"/> 1424*ae22a949SDmitry Baryshkov <bitfield name="INITIALOUTSTANDING" low="20" high="23" type="uint"/> 1425*ae22a949SDmitry Baryshkov <bitfield name="HALFPRECVAROFFSET" low="24" high="30" type="uint"/> 1426*ae22a949SDmitry Baryshkov </reg32> 1427*ae22a949SDmitry Baryshkov <reg32 offset="0x22e2" name="SP_FS_OBJ_OFFSET_REG" type="sp_vs_fs_obj_offset_reg"/> 1428*ae22a949SDmitry Baryshkov <doc>SP_FS_OBJ_START_REG contains pointer to fragment shader program</doc> 1429*ae22a949SDmitry Baryshkov <reg32 offset="0x22e3" name="SP_FS_OBJ_START_REG"/> 1430*ae22a949SDmitry Baryshkov <reg32 offset="0x22e4" name="SP_FS_PVT_MEM_PARAM_REG"> 1431*ae22a949SDmitry Baryshkov <bitfield name="MEMSIZEPERITEM" low="0" high="7" type="uint"/> 1432*ae22a949SDmitry Baryshkov <bitfield name="HWSTACKOFFSET" low="8" high="23" type="uint"/> 1433*ae22a949SDmitry Baryshkov <bitfield name="HWSTACKSIZEPERTHREAD" low="24" high="31" type="uint"/> 1434*ae22a949SDmitry Baryshkov </reg32> 1435*ae22a949SDmitry Baryshkov <reg32 offset="0x22e5" name="SP_FS_PVT_MEM_ADDR_REG"> 1436*ae22a949SDmitry Baryshkov <bitfield name="BURSTLEN" low="0" high="4"/> 1437*ae22a949SDmitry Baryshkov <bitfield name="SHADERSTARTADDRESS" shr="5" low="5" high="31"/> 1438*ae22a949SDmitry Baryshkov </reg32> 1439*ae22a949SDmitry Baryshkov <reg32 offset="0x22e6" name="SP_FS_PVT_MEM_SIZE_REG"/> 1440*ae22a949SDmitry Baryshkov <reg32 offset="0x22e8" name="SP_FS_FLAT_SHAD_MODE_REG_0"> 1441*ae22a949SDmitry Baryshkov <doc>seems to be one bit per scalar, '1' for flat, '0' for smooth</doc> 1442*ae22a949SDmitry Baryshkov </reg32> 1443*ae22a949SDmitry Baryshkov <reg32 offset="0x22e9" name="SP_FS_FLAT_SHAD_MODE_REG_1"> 1444*ae22a949SDmitry Baryshkov <doc>seems to be one bit per scalar, '1' for flat, '0' for smooth</doc> 1445*ae22a949SDmitry Baryshkov </reg32> 1446*ae22a949SDmitry Baryshkov <reg32 offset="0x22ec" name="SP_FS_OUTPUT_REG"> 1447*ae22a949SDmitry Baryshkov <bitfield name="MRT" low="0" high="1" type="uint"> 1448*ae22a949SDmitry Baryshkov <doc>render targets - 1</doc> 1449*ae22a949SDmitry Baryshkov </bitfield> 1450*ae22a949SDmitry Baryshkov <bitfield name="DEPTH_ENABLE" pos="7" type="boolean"/> 1451*ae22a949SDmitry Baryshkov <bitfield name="DEPTH_REGID" low="8" high="15" type="a3xx_regid"/> 1452*ae22a949SDmitry Baryshkov </reg32> 1453*ae22a949SDmitry Baryshkov <array offset="0x22f0" name="SP_FS_MRT" stride="1" length="4"> 1454*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="REG"> 1455*ae22a949SDmitry Baryshkov <bitfield name="REGID" low="0" high="7" type="a3xx_regid"/> 1456*ae22a949SDmitry Baryshkov <bitfield name="HALF_PRECISION" pos="8" type="boolean"/> 1457*ae22a949SDmitry Baryshkov <bitfield name="SINT" pos="10" type="boolean"/> 1458*ae22a949SDmitry Baryshkov <bitfield name="UINT" pos="11" type="boolean"/> 1459*ae22a949SDmitry Baryshkov </reg32> 1460*ae22a949SDmitry Baryshkov </array> 1461*ae22a949SDmitry Baryshkov <array offset="0x22f4" name="SP_FS_IMAGE_OUTPUT" stride="1" length="4"> 1462*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="REG"> 1463*ae22a949SDmitry Baryshkov <bitfield name="MRTFORMAT" low="0" high="5" type="a3xx_color_fmt"/> 1464*ae22a949SDmitry Baryshkov </reg32> 1465*ae22a949SDmitry Baryshkov </array> 1466*ae22a949SDmitry Baryshkov <reg32 offset="0x22ff" name="SP_FS_LENGTH_REG" type="a3xx_vs_fs_length_reg"/> 1467*ae22a949SDmitry Baryshkov 1468*ae22a949SDmitry Baryshkov <reg32 offset="0x2301" name="PA_SC_AA_CONFIG"/> 1469*ae22a949SDmitry Baryshkov <!-- TPL1 registers --> 1470*ae22a949SDmitry Baryshkov <!-- assume VS/FS_TEX_OFFSET is same --> 1471*ae22a949SDmitry Baryshkov <bitset name="a3xx_tpl1_tp_vs_fs_tex_offset" inline="yes"> 1472*ae22a949SDmitry Baryshkov <bitfield name="SAMPLEROFFSET" low="0" high="7" type="uint"/> 1473*ae22a949SDmitry Baryshkov <bitfield name="MEMOBJOFFSET" low="8" high="15" type="uint"/> 1474*ae22a949SDmitry Baryshkov <!-- not sure the size of this: --> 1475*ae22a949SDmitry Baryshkov <bitfield name="BASETABLEPTR" low="16" high="31" type="uint"/> 1476*ae22a949SDmitry Baryshkov </bitset> 1477*ae22a949SDmitry Baryshkov <reg32 offset="0x2340" name="TPL1_TP_VS_TEX_OFFSET" type="a3xx_tpl1_tp_vs_fs_tex_offset"/> 1478*ae22a949SDmitry Baryshkov <reg32 offset="0x2341" name="TPL1_TP_VS_BORDER_COLOR_BASE_ADDR"/> 1479*ae22a949SDmitry Baryshkov <reg32 offset="0x2342" name="TPL1_TP_FS_TEX_OFFSET" type="a3xx_tpl1_tp_vs_fs_tex_offset"/> 1480*ae22a949SDmitry Baryshkov <reg32 offset="0x2343" name="TPL1_TP_FS_BORDER_COLOR_BASE_ADDR"/> 1481*ae22a949SDmitry Baryshkov 1482*ae22a949SDmitry Baryshkov <!-- VBIF registers --> 1483*ae22a949SDmitry Baryshkov <reg32 offset="0x3001" name="VBIF_CLKON"/> 1484*ae22a949SDmitry Baryshkov <reg32 offset="0x300c" name="VBIF_FIXED_SORT_EN"/> 1485*ae22a949SDmitry Baryshkov <reg32 offset="0x300d" name="VBIF_FIXED_SORT_SEL0"/> 1486*ae22a949SDmitry Baryshkov <reg32 offset="0x300e" name="VBIF_FIXED_SORT_SEL1"/> 1487*ae22a949SDmitry Baryshkov <reg32 offset="0x301c" name="VBIF_ABIT_SORT"/> 1488*ae22a949SDmitry Baryshkov <reg32 offset="0x301d" name="VBIF_ABIT_SORT_CONF"/> 1489*ae22a949SDmitry Baryshkov <reg32 offset="0x302a" name="VBIF_GATE_OFF_WRREQ_EN"/> 1490*ae22a949SDmitry Baryshkov <reg32 offset="0x302c" name="VBIF_IN_RD_LIM_CONF0"/> 1491*ae22a949SDmitry Baryshkov <reg32 offset="0x302d" name="VBIF_IN_RD_LIM_CONF1"/> 1492*ae22a949SDmitry Baryshkov <reg32 offset="0x3030" name="VBIF_IN_WR_LIM_CONF0"/> 1493*ae22a949SDmitry Baryshkov <reg32 offset="0x3031" name="VBIF_IN_WR_LIM_CONF1"/> 1494*ae22a949SDmitry Baryshkov <reg32 offset="0x3034" name="VBIF_OUT_RD_LIM_CONF0"/> 1495*ae22a949SDmitry Baryshkov <reg32 offset="0x3035" name="VBIF_OUT_WR_LIM_CONF0"/> 1496*ae22a949SDmitry Baryshkov <reg32 offset="0x3036" name="VBIF_DDR_OUT_MAX_BURST"/> 1497*ae22a949SDmitry Baryshkov <reg32 offset="0x303c" name="VBIF_ARB_CTL"/> 1498*ae22a949SDmitry Baryshkov <reg32 offset="0x3049" name="VBIF_ROUND_ROBIN_QOS_ARB"/> 1499*ae22a949SDmitry Baryshkov <reg32 offset="0x3058" name="VBIF_OUT_AXI_AMEMTYPE_CONF0"/> 1500*ae22a949SDmitry Baryshkov <reg32 offset="0x305e" name="VBIF_OUT_AXI_AOOO_EN"/> 1501*ae22a949SDmitry Baryshkov <reg32 offset="0x305f" name="VBIF_OUT_AXI_AOOO"/> 1502*ae22a949SDmitry Baryshkov 1503*ae22a949SDmitry Baryshkov <bitset name="a3xx_vbif_perf_cnt" inline="yes"> 1504*ae22a949SDmitry Baryshkov <bitfield name="CNT0" pos="0" type="boolean"/> 1505*ae22a949SDmitry Baryshkov <bitfield name="CNT1" pos="1" type="boolean"/> 1506*ae22a949SDmitry Baryshkov <bitfield name="PWRCNT0" pos="2" type="boolean"/> 1507*ae22a949SDmitry Baryshkov <bitfield name="PWRCNT1" pos="3" type="boolean"/> 1508*ae22a949SDmitry Baryshkov <bitfield name="PWRCNT2" pos="4" type="boolean"/> 1509*ae22a949SDmitry Baryshkov </bitset> 1510*ae22a949SDmitry Baryshkov 1511*ae22a949SDmitry Baryshkov <reg32 offset="0x3070" name="VBIF_PERF_CNT_EN" type="a3xx_vbif_perf_cnt"/> 1512*ae22a949SDmitry Baryshkov <reg32 offset="0x3071" name="VBIF_PERF_CNT_CLR" type="a3xx_vbif_perf_cnt"/> 1513*ae22a949SDmitry Baryshkov <reg32 offset="0x3072" name="VBIF_PERF_CNT_SEL"/> 1514*ae22a949SDmitry Baryshkov <reg32 offset="0x3073" name="VBIF_PERF_CNT0_LO"/> 1515*ae22a949SDmitry Baryshkov <reg32 offset="0x3074" name="VBIF_PERF_CNT0_HI"/> 1516*ae22a949SDmitry Baryshkov <reg32 offset="0x3075" name="VBIF_PERF_CNT1_LO"/> 1517*ae22a949SDmitry Baryshkov <reg32 offset="0x3076" name="VBIF_PERF_CNT1_HI"/> 1518*ae22a949SDmitry Baryshkov <reg32 offset="0x3077" name="VBIF_PERF_PWR_CNT0_LO"/> 1519*ae22a949SDmitry Baryshkov <reg32 offset="0x3078" name="VBIF_PERF_PWR_CNT0_HI"/> 1520*ae22a949SDmitry Baryshkov <reg32 offset="0x3079" name="VBIF_PERF_PWR_CNT1_LO"/> 1521*ae22a949SDmitry Baryshkov <reg32 offset="0x307a" name="VBIF_PERF_PWR_CNT1_HI"/> 1522*ae22a949SDmitry Baryshkov <reg32 offset="0x307b" name="VBIF_PERF_PWR_CNT2_LO"/> 1523*ae22a949SDmitry Baryshkov <reg32 offset="0x307c" name="VBIF_PERF_PWR_CNT2_HI"/> 1524*ae22a949SDmitry Baryshkov 1525*ae22a949SDmitry Baryshkov 1526*ae22a949SDmitry Baryshkov <reg32 offset="0x0c01" name="VSC_BIN_SIZE"> 1527*ae22a949SDmitry Baryshkov <bitfield name="WIDTH" low="0" high="4" shr="5" type="uint"/> 1528*ae22a949SDmitry Baryshkov <bitfield name="HEIGHT" low="5" high="9" shr="5" type="uint"/> 1529*ae22a949SDmitry Baryshkov </reg32> 1530*ae22a949SDmitry Baryshkov 1531*ae22a949SDmitry Baryshkov <reg32 offset="0x0c02" name="VSC_SIZE_ADDRESS"/> 1532*ae22a949SDmitry Baryshkov <array offset="0x0c06" name="VSC_PIPE" stride="3" length="8"> 1533*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="CONFIG"> 1534*ae22a949SDmitry Baryshkov <doc> 1535*ae22a949SDmitry Baryshkov Configures the mapping between VSC_PIPE buffer and 1536*ae22a949SDmitry Baryshkov bin, X/Y specify the bin index in the horiz/vert 1537*ae22a949SDmitry Baryshkov direction (0,0 is upper left, 0,1 is leftmost bin 1538*ae22a949SDmitry Baryshkov on second row, and so on). W/H specify the number 1539*ae22a949SDmitry Baryshkov of bins assigned to this VSC_PIPE in the horiz/vert 1540*ae22a949SDmitry Baryshkov dimension. 1541*ae22a949SDmitry Baryshkov </doc> 1542*ae22a949SDmitry Baryshkov <bitfield name="X" low="0" high="9" type="uint"/> 1543*ae22a949SDmitry Baryshkov <bitfield name="Y" low="10" high="19" type="uint"/> 1544*ae22a949SDmitry Baryshkov <bitfield name="W" low="20" high="23" type="uint"/> 1545*ae22a949SDmitry Baryshkov <bitfield name="H" low="24" high="27" type="uint"/> 1546*ae22a949SDmitry Baryshkov </reg32> 1547*ae22a949SDmitry Baryshkov <reg32 offset="0x1" name="DATA_ADDRESS"/> 1548*ae22a949SDmitry Baryshkov <reg32 offset="0x2" name="DATA_LENGTH"/> 1549*ae22a949SDmitry Baryshkov </array> 1550*ae22a949SDmitry Baryshkov <reg32 offset="0x0c3c" name="VSC_BIN_CONTROL"> 1551*ae22a949SDmitry Baryshkov <doc>seems to be set to 0x00000001 during binning pass</doc> 1552*ae22a949SDmitry Baryshkov <bitfield name="BINNING_ENABLE" pos="0" type="boolean"/> 1553*ae22a949SDmitry Baryshkov </reg32> 1554*ae22a949SDmitry Baryshkov <reg32 offset="0x0c3d" name="UNKNOWN_0C3D"> 1555*ae22a949SDmitry Baryshkov <doc>seems to be always set to 0x00000001</doc> 1556*ae22a949SDmitry Baryshkov </reg32> 1557*ae22a949SDmitry Baryshkov <reg32 offset="0x0c48" name="PC_PERFCOUNTER0_SELECT" type="a3xx_pc_perfcounter_select"/> 1558*ae22a949SDmitry Baryshkov <reg32 offset="0x0c49" name="PC_PERFCOUNTER1_SELECT" type="a3xx_pc_perfcounter_select"/> 1559*ae22a949SDmitry Baryshkov <reg32 offset="0x0c4a" name="PC_PERFCOUNTER2_SELECT" type="a3xx_pc_perfcounter_select"/> 1560*ae22a949SDmitry Baryshkov <reg32 offset="0x0c4b" name="PC_PERFCOUNTER3_SELECT" type="a3xx_pc_perfcounter_select"/> 1561*ae22a949SDmitry Baryshkov <reg32 offset="0x0c81" name="GRAS_TSE_DEBUG_ECO"> 1562*ae22a949SDmitry Baryshkov <doc>seems to be always set to 0x00000001</doc> 1563*ae22a949SDmitry Baryshkov </reg32> 1564*ae22a949SDmitry Baryshkov 1565*ae22a949SDmitry Baryshkov <reg32 offset="0x0c88" name="GRAS_PERFCOUNTER0_SELECT" type="a3xx_gras_tse_perfcounter_select"/> 1566*ae22a949SDmitry Baryshkov <reg32 offset="0x0c89" name="GRAS_PERFCOUNTER1_SELECT" type="a3xx_gras_tse_perfcounter_select"/> 1567*ae22a949SDmitry Baryshkov <reg32 offset="0x0c8a" name="GRAS_PERFCOUNTER2_SELECT" type="a3xx_gras_ras_perfcounter_select"/> 1568*ae22a949SDmitry Baryshkov <reg32 offset="0x0c8b" name="GRAS_PERFCOUNTER3_SELECT" type="a3xx_gras_ras_perfcounter_select"/> 1569*ae22a949SDmitry Baryshkov <array offset="0x0ca0" name="GRAS_CL_USER_PLANE" stride="4" length="6"> 1570*ae22a949SDmitry Baryshkov <reg32 offset="0x0" name="X"/> 1571*ae22a949SDmitry Baryshkov <reg32 offset="0x1" name="Y"/> 1572*ae22a949SDmitry Baryshkov <reg32 offset="0x2" name="Z"/> 1573*ae22a949SDmitry Baryshkov <reg32 offset="0x3" name="W"/> 1574*ae22a949SDmitry Baryshkov </array> 1575*ae22a949SDmitry Baryshkov <reg32 offset="0x0cc0" name="RB_GMEM_BASE_ADDR"/> 1576*ae22a949SDmitry Baryshkov <reg32 offset="0x0cc1" name="RB_DEBUG_ECO_CONTROLS_ADDR"/> 1577*ae22a949SDmitry Baryshkov <reg32 offset="0x0cc6" name="RB_PERFCOUNTER0_SELECT" type="a3xx_rb_perfcounter_select"/> 1578*ae22a949SDmitry Baryshkov <reg32 offset="0x0cc7" name="RB_PERFCOUNTER1_SELECT" type="a3xx_rb_perfcounter_select"/> 1579*ae22a949SDmitry Baryshkov <reg32 offset="0x0ce0" name="RB_FRAME_BUFFER_DIMENSION"> 1580*ae22a949SDmitry Baryshkov <bitfield name="WIDTH" low="0" high="13" type="uint"/> 1581*ae22a949SDmitry Baryshkov <bitfield name="HEIGHT" low="14" high="27" type="uint"/> 1582*ae22a949SDmitry Baryshkov </reg32> 1583*ae22a949SDmitry Baryshkov <reg32 offset="0x0e00" name="HLSQ_PERFCOUNTER0_SELECT" type="a3xx_hlsq_perfcounter_select"/> 1584*ae22a949SDmitry Baryshkov <reg32 offset="0x0e01" name="HLSQ_PERFCOUNTER1_SELECT" type="a3xx_hlsq_perfcounter_select"/> 1585*ae22a949SDmitry Baryshkov <reg32 offset="0x0e02" name="HLSQ_PERFCOUNTER2_SELECT" type="a3xx_hlsq_perfcounter_select"/> 1586*ae22a949SDmitry Baryshkov <reg32 offset="0x0e03" name="HLSQ_PERFCOUNTER3_SELECT" type="a3xx_hlsq_perfcounter_select"/> 1587*ae22a949SDmitry Baryshkov <reg32 offset="0x0e04" name="HLSQ_PERFCOUNTER4_SELECT" type="a3xx_hlsq_perfcounter_select"/> 1588*ae22a949SDmitry Baryshkov <reg32 offset="0x0e05" name="HLSQ_PERFCOUNTER5_SELECT" type="a3xx_hlsq_perfcounter_select"/> 1589*ae22a949SDmitry Baryshkov <reg32 offset="0x0e43" name="UNKNOWN_0E43"> 1590*ae22a949SDmitry Baryshkov <doc>seems to be always set to 0x00000001</doc> 1591*ae22a949SDmitry Baryshkov </reg32> 1592*ae22a949SDmitry Baryshkov <reg32 offset="0x0e44" name="VFD_PERFCOUNTER0_SELECT" type="a3xx_vfd_perfcounter_select"/> 1593*ae22a949SDmitry Baryshkov <reg32 offset="0x0e45" name="VFD_PERFCOUNTER1_SELECT" type="a3xx_vfd_perfcounter_select"/> 1594*ae22a949SDmitry Baryshkov <reg32 offset="0x0e61" name="VPC_VPC_DEBUG_RAM_SEL"/> 1595*ae22a949SDmitry Baryshkov <reg32 offset="0x0e62" name="VPC_VPC_DEBUG_RAM_READ"/> 1596*ae22a949SDmitry Baryshkov <reg32 offset="0x0e64" name="VPC_PERFCOUNTER0_SELECT" type="a3xx_vpc_perfcounter_select"/> 1597*ae22a949SDmitry Baryshkov <reg32 offset="0x0e65" name="VPC_PERFCOUNTER1_SELECT" type="a3xx_vpc_perfcounter_select"/> 1598*ae22a949SDmitry Baryshkov <reg32 offset="0x0e82" name="UCHE_CACHE_MODE_CONTROL_REG"/> 1599*ae22a949SDmitry Baryshkov <reg32 offset="0x0e84" name="UCHE_PERFCOUNTER0_SELECT" type="a3xx_uche_perfcounter_select"/> 1600*ae22a949SDmitry Baryshkov <reg32 offset="0x0e85" name="UCHE_PERFCOUNTER1_SELECT" type="a3xx_uche_perfcounter_select"/> 1601*ae22a949SDmitry Baryshkov <reg32 offset="0x0e86" name="UCHE_PERFCOUNTER2_SELECT" type="a3xx_uche_perfcounter_select"/> 1602*ae22a949SDmitry Baryshkov <reg32 offset="0x0e87" name="UCHE_PERFCOUNTER3_SELECT" type="a3xx_uche_perfcounter_select"/> 1603*ae22a949SDmitry Baryshkov <reg32 offset="0x0e88" name="UCHE_PERFCOUNTER4_SELECT" type="a3xx_uche_perfcounter_select"/> 1604*ae22a949SDmitry Baryshkov <reg32 offset="0x0e89" name="UCHE_PERFCOUNTER5_SELECT" type="a3xx_uche_perfcounter_select"/> 1605*ae22a949SDmitry Baryshkov <reg32 offset="0x0ea0" name="UCHE_CACHE_INVALIDATE0_REG"> 1606*ae22a949SDmitry Baryshkov <!-- might be shifted right by 5, assuming 32byte cache line size.. --> 1607*ae22a949SDmitry Baryshkov <bitfield name="ADDR" low="0" high="27" type="hex"/> 1608*ae22a949SDmitry Baryshkov </reg32> 1609*ae22a949SDmitry Baryshkov <reg32 offset="0x0ea1" name="UCHE_CACHE_INVALIDATE1_REG"> 1610*ae22a949SDmitry Baryshkov <!-- might be shifted right by 5, assuming 32byte cache line size.. --> 1611*ae22a949SDmitry Baryshkov <bitfield name="ADDR" low="0" high="27" type="hex"/> 1612*ae22a949SDmitry Baryshkov <!-- I'd assume 2 bits, for FLUSH/INVALIDATE/CLEAN? --> 1613*ae22a949SDmitry Baryshkov <bitfield name="OPCODE" low="28" high="29" type="a3xx_cache_opcode"/> 1614*ae22a949SDmitry Baryshkov <bitfield name="ENTIRE_CACHE" pos="31" type="boolean"/> 1615*ae22a949SDmitry Baryshkov </reg32> 1616*ae22a949SDmitry Baryshkov <reg32 offset="0x0ea6" name="UNKNOWN_0EA6"/> 1617*ae22a949SDmitry Baryshkov <reg32 offset="0x0ec4" name="SP_PERFCOUNTER0_SELECT" type="a3xx_sp_perfcounter_select"/> 1618*ae22a949SDmitry Baryshkov <reg32 offset="0x0ec5" name="SP_PERFCOUNTER1_SELECT" type="a3xx_sp_perfcounter_select"/> 1619*ae22a949SDmitry Baryshkov <reg32 offset="0x0ec6" name="SP_PERFCOUNTER2_SELECT" type="a3xx_sp_perfcounter_select"/> 1620*ae22a949SDmitry Baryshkov <reg32 offset="0x0ec7" name="SP_PERFCOUNTER3_SELECT" type="a3xx_sp_perfcounter_select"/> 1621*ae22a949SDmitry Baryshkov <reg32 offset="0x0ec8" name="SP_PERFCOUNTER4_SELECT" type="a3xx_sp_perfcounter_select"/> 1622*ae22a949SDmitry Baryshkov <reg32 offset="0x0ec9" name="SP_PERFCOUNTER5_SELECT" type="a3xx_sp_perfcounter_select"/> 1623*ae22a949SDmitry Baryshkov <reg32 offset="0x0eca" name="SP_PERFCOUNTER6_SELECT" type="a3xx_sp_perfcounter_select"/> 1624*ae22a949SDmitry Baryshkov <reg32 offset="0x0ecb" name="SP_PERFCOUNTER7_SELECT" type="a3xx_sp_perfcounter_select"/> 1625*ae22a949SDmitry Baryshkov <reg32 offset="0x0ee0" name="UNKNOWN_0EE0"> 1626*ae22a949SDmitry Baryshkov <doc>seems to be always set to 0x00000003</doc> 1627*ae22a949SDmitry Baryshkov </reg32> 1628*ae22a949SDmitry Baryshkov <reg32 offset="0x0f03" name="UNKNOWN_0F03"> 1629*ae22a949SDmitry Baryshkov <doc>seems to be always set to 0x00000001</doc> 1630*ae22a949SDmitry Baryshkov </reg32> 1631*ae22a949SDmitry Baryshkov <reg32 offset="0x0f04" name="TP_PERFCOUNTER0_SELECT" type="a3xx_tp_perfcounter_select"/> 1632*ae22a949SDmitry Baryshkov <reg32 offset="0x0f05" name="TP_PERFCOUNTER1_SELECT" type="a3xx_tp_perfcounter_select"/> 1633*ae22a949SDmitry Baryshkov <reg32 offset="0x0f06" name="TP_PERFCOUNTER2_SELECT" type="a3xx_tp_perfcounter_select"/> 1634*ae22a949SDmitry Baryshkov <reg32 offset="0x0f07" name="TP_PERFCOUNTER3_SELECT" type="a3xx_tp_perfcounter_select"/> 1635*ae22a949SDmitry Baryshkov <reg32 offset="0x0f08" name="TP_PERFCOUNTER4_SELECT" type="a3xx_tp_perfcounter_select"/> 1636*ae22a949SDmitry Baryshkov <reg32 offset="0x0f09" name="TP_PERFCOUNTER5_SELECT" type="a3xx_tp_perfcounter_select"/> 1637*ae22a949SDmitry Baryshkov 1638*ae22a949SDmitry Baryshkov <!-- this seems to be the register that CP_RUN_OPENCL writes: --> 1639*ae22a949SDmitry Baryshkov <reg32 offset="0x21f0" name="VGT_CL_INITIATOR"/> 1640*ae22a949SDmitry Baryshkov 1641*ae22a949SDmitry Baryshkov <!-- seems to be same as a2xx according to fwdump.. --> 1642*ae22a949SDmitry Baryshkov <reg32 offset="0x21f9" name="VGT_EVENT_INITIATOR"/> 1643*ae22a949SDmitry Baryshkov <reg32 offset="0x21fc" name="VGT_DRAW_INITIATOR" type="vgt_draw_initiator"/> 1644*ae22a949SDmitry Baryshkov <reg32 offset="0x21fd" name="VGT_IMMED_DATA"/> 1645*ae22a949SDmitry Baryshkov</domain> 1646*ae22a949SDmitry Baryshkov 1647*ae22a949SDmitry Baryshkov<domain name="A3XX_TEX_SAMP" width="32"> 1648*ae22a949SDmitry Baryshkov <doc>Texture sampler dwords</doc> 1649*ae22a949SDmitry Baryshkov <enum name="a3xx_tex_filter"> 1650*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_NEAREST" value="0"/> 1651*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_LINEAR" value="1"/> 1652*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_ANISO" value="2"/> 1653*ae22a949SDmitry Baryshkov </enum> 1654*ae22a949SDmitry Baryshkov <enum name="a3xx_tex_clamp"> 1655*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_REPEAT" value="0"/> 1656*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_CLAMP_TO_EDGE" value="1"/> 1657*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_MIRROR_REPEAT" value="2"/> 1658*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_CLAMP_TO_BORDER" value="3"/> 1659*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_MIRROR_CLAMP" value="4"/> 1660*ae22a949SDmitry Baryshkov </enum> 1661*ae22a949SDmitry Baryshkov <enum name="a3xx_tex_aniso"> 1662*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_ANISO_1" value="0"/> 1663*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_ANISO_2" value="1"/> 1664*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_ANISO_4" value="2"/> 1665*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_ANISO_8" value="3"/> 1666*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_ANISO_16" value="4"/> 1667*ae22a949SDmitry Baryshkov </enum> 1668*ae22a949SDmitry Baryshkov <reg32 offset="0" name="0"> 1669*ae22a949SDmitry Baryshkov <bitfield name="CLAMPENABLE" pos="0" type="boolean"/> 1670*ae22a949SDmitry Baryshkov <bitfield name="MIPFILTER_LINEAR" pos="1" type="boolean"/> 1671*ae22a949SDmitry Baryshkov <bitfield name="XY_MAG" low="2" high="3" type="a3xx_tex_filter"/> 1672*ae22a949SDmitry Baryshkov <bitfield name="XY_MIN" low="4" high="5" type="a3xx_tex_filter"/> 1673*ae22a949SDmitry Baryshkov <bitfield name="WRAP_S" low="6" high="8" type="a3xx_tex_clamp"/> 1674*ae22a949SDmitry Baryshkov <bitfield name="WRAP_T" low="9" high="11" type="a3xx_tex_clamp"/> 1675*ae22a949SDmitry Baryshkov <bitfield name="WRAP_R" low="12" high="14" type="a3xx_tex_clamp"/> 1676*ae22a949SDmitry Baryshkov <bitfield name="ANISO" low="15" high="17" type="a3xx_tex_aniso"/> 1677*ae22a949SDmitry Baryshkov <bitfield name="COMPARE_FUNC" low="20" high="22" type="adreno_compare_func"/> 1678*ae22a949SDmitry Baryshkov <bitfield name="CUBEMAPSEAMLESSFILTOFF" pos="24" type="boolean"/> 1679*ae22a949SDmitry Baryshkov <!-- UNNORM_COORDS == CLK_NORMALIZED_COORDS_FALSE --> 1680*ae22a949SDmitry Baryshkov <bitfield name="UNNORM_COORDS" pos="31" type="boolean"/> 1681*ae22a949SDmitry Baryshkov </reg32> 1682*ae22a949SDmitry Baryshkov <reg32 offset="1" name="1"> 1683*ae22a949SDmitry Baryshkov <bitfield name="LOD_BIAS" low="0" high="10" type="fixed" radix="6"/> 1684*ae22a949SDmitry Baryshkov <bitfield name="MAX_LOD" low="12" high="21" type="ufixed" radix="6"/> 1685*ae22a949SDmitry Baryshkov <bitfield name="MIN_LOD" low="22" high="31" type="ufixed" radix="6"/> 1686*ae22a949SDmitry Baryshkov </reg32> 1687*ae22a949SDmitry Baryshkov</domain> 1688*ae22a949SDmitry Baryshkov 1689*ae22a949SDmitry Baryshkov<domain name="A3XX_TEX_CONST" width="32"> 1690*ae22a949SDmitry Baryshkov <doc>Texture constant dwords</doc> 1691*ae22a949SDmitry Baryshkov <enum name="a3xx_tex_swiz"> 1692*ae22a949SDmitry Baryshkov <!-- same as a2xx? --> 1693*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_X" value="0"/> 1694*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_Y" value="1"/> 1695*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_Z" value="2"/> 1696*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_W" value="3"/> 1697*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_ZERO" value="4"/> 1698*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_ONE" value="5"/> 1699*ae22a949SDmitry Baryshkov </enum> 1700*ae22a949SDmitry Baryshkov <enum name="a3xx_tex_type"> 1701*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_1D" value="0"/> 1702*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_2D" value="1"/> 1703*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_CUBE" value="2"/> 1704*ae22a949SDmitry Baryshkov <value name="A3XX_TEX_3D" value="3"/> 1705*ae22a949SDmitry Baryshkov </enum> 1706*ae22a949SDmitry Baryshkov <enum name="a3xx_tex_msaa"> 1707*ae22a949SDmitry Baryshkov <value name="A3XX_TPL1_MSAA1X" value="0"/> 1708*ae22a949SDmitry Baryshkov <value name="A3XX_TPL1_MSAA2X" value="1"/> 1709*ae22a949SDmitry Baryshkov <value name="A3XX_TPL1_MSAA4X" value="2"/> 1710*ae22a949SDmitry Baryshkov <value name="A3XX_TPL1_MSAA8X" value="3"/> 1711*ae22a949SDmitry Baryshkov </enum> 1712*ae22a949SDmitry Baryshkov <reg32 offset="0" name="0"> 1713*ae22a949SDmitry Baryshkov <bitfield name="TILE_MODE" low="0" high="1" type="a3xx_tile_mode"/> 1714*ae22a949SDmitry Baryshkov <bitfield name="SRGB" pos="2" type="boolean"/> 1715*ae22a949SDmitry Baryshkov <bitfield name="SWIZ_X" low="4" high="6" type="a3xx_tex_swiz"/> 1716*ae22a949SDmitry Baryshkov <bitfield name="SWIZ_Y" low="7" high="9" type="a3xx_tex_swiz"/> 1717*ae22a949SDmitry Baryshkov <bitfield name="SWIZ_Z" low="10" high="12" type="a3xx_tex_swiz"/> 1718*ae22a949SDmitry Baryshkov <bitfield name="SWIZ_W" low="13" high="15" type="a3xx_tex_swiz"/> 1719*ae22a949SDmitry Baryshkov <bitfield name="MIPLVLS" low="16" high="19" type="uint"/> 1720*ae22a949SDmitry Baryshkov <bitfield name="MSAATEX" low="20" high="21" type="a3xx_tex_msaa"/> 1721*ae22a949SDmitry Baryshkov <bitfield name="FMT" low="22" high="28" type="a3xx_tex_fmt"/> 1722*ae22a949SDmitry Baryshkov <bitfield name="NOCONVERT" pos="29" type="boolean"/> 1723*ae22a949SDmitry Baryshkov <bitfield name="TYPE" low="30" high="31" type="a3xx_tex_type"/> 1724*ae22a949SDmitry Baryshkov </reg32> 1725*ae22a949SDmitry Baryshkov <reg32 offset="1" name="1"> 1726*ae22a949SDmitry Baryshkov <bitfield name="HEIGHT" low="0" high="13" type="uint"/> 1727*ae22a949SDmitry Baryshkov <bitfield name="WIDTH" low="14" high="27" type="uint"/> 1728*ae22a949SDmitry Baryshkov <!-- minimum pitch (for mipmap levels): log2(pitchalign / 16) --> 1729*ae22a949SDmitry Baryshkov <bitfield name="PITCHALIGN" low="28" high="31" type="uint"/> 1730*ae22a949SDmitry Baryshkov </reg32> 1731*ae22a949SDmitry Baryshkov <reg32 offset="2" name="2"> 1732*ae22a949SDmitry Baryshkov <doc>INDX is index of texture address(es) in MIPMAP state block</doc> 1733*ae22a949SDmitry Baryshkov <bitfield name="INDX" low="0" high="8" type="uint"/> 1734*ae22a949SDmitry Baryshkov <doc>Pitch in bytes (so actually stride)</doc> 1735*ae22a949SDmitry Baryshkov <bitfield name="PITCH" low="12" high="29" type="uint"/> 1736*ae22a949SDmitry Baryshkov <doc>SWAP bit is set for BGRA instead of RGBA</doc> 1737*ae22a949SDmitry Baryshkov <bitfield name="SWAP" low="30" high="31" type="a3xx_color_swap"/> 1738*ae22a949SDmitry Baryshkov </reg32> 1739*ae22a949SDmitry Baryshkov <reg32 offset="3" name="3"> 1740*ae22a949SDmitry Baryshkov <!-- 1741*ae22a949SDmitry Baryshkov Update: the two LAYERSZn seem not to be the same thing. 1742*ae22a949SDmitry Baryshkov According to Ilia's experimentation the first one goes up 1743*ae22a949SDmitry Baryshkov to at *least* bit 14.. 1744*ae22a949SDmitry Baryshkov --> 1745*ae22a949SDmitry Baryshkov <bitfield name="LAYERSZ1" low="0" high="16" shr="12" type="uint"/> 1746*ae22a949SDmitry Baryshkov <bitfield name="DEPTH" low="17" high="27" type="uint"/> 1747*ae22a949SDmitry Baryshkov <bitfield name="LAYERSZ2" low="28" high="31" shr="12" type="uint"/> 1748*ae22a949SDmitry Baryshkov </reg32> 1749*ae22a949SDmitry Baryshkov</domain> 1750*ae22a949SDmitry Baryshkov 1751*ae22a949SDmitry Baryshkov</database> 1752