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