| <?xml version="1.0" encoding="UTF-8"?> |
| <database xmlns="http://nouveau.freedesktop.org/" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd"> |
| <import file="freedreno_copyright.xml"/> |
| <import file="adreno/adreno_common.xml"/> |
| <import file="adreno/adreno_pm4.xml"/> |
| |
| <!-- these might be same as a5xx --> |
| <enum name="a6xx_tile_mode"> |
| <value name="TILE6_LINEAR" value="0"/> |
| <value name="TILE6_2" value="2"/> |
| <value name="TILE6_3" value="3"/> |
| </enum> |
| |
| <enum name="a6xx_format"> |
| <value value="0x02" name="FMT6_A8_UNORM"/> |
| <value value="0x03" name="FMT6_8_UNORM"/> |
| <value value="0x04" name="FMT6_8_SNORM"/> |
| <value value="0x05" name="FMT6_8_UINT"/> |
| <value value="0x06" name="FMT6_8_SINT"/> |
| |
| <value value="0x08" name="FMT6_4_4_4_4_UNORM"/> |
| <value value="0x0a" name="FMT6_5_5_5_1_UNORM"/> |
| <value value="0x0c" name="FMT6_1_5_5_5_UNORM"/> <!-- read only --> |
| <value value="0x0e" name="FMT6_5_6_5_UNORM"/> |
| |
| <value value="0x0f" name="FMT6_8_8_UNORM"/> |
| <value value="0x10" name="FMT6_8_8_SNORM"/> |
| <value value="0x11" name="FMT6_8_8_UINT"/> |
| <value value="0x12" name="FMT6_8_8_SINT"/> |
| <value value="0x13" name="FMT6_L8_A8_UNORM"/> |
| |
| <value value="0x15" name="FMT6_16_UNORM"/> |
| <value value="0x16" name="FMT6_16_SNORM"/> |
| <value value="0x17" name="FMT6_16_FLOAT"/> |
| <value value="0x18" name="FMT6_16_UINT"/> |
| <value value="0x19" name="FMT6_16_SINT"/> |
| |
| <value value="0x21" name="FMT6_8_8_8_UNORM"/> |
| <value value="0x22" name="FMT6_8_8_8_SNORM"/> |
| <value value="0x23" name="FMT6_8_8_8_UINT"/> |
| <value value="0x24" name="FMT6_8_8_8_SINT"/> |
| |
| <value value="0x30" name="FMT6_8_8_8_8_UNORM"/> |
| <value value="0x31" name="FMT6_8_8_8_X8_UNORM"/> <!-- samples 1 for alpha --> |
| <value value="0x32" name="FMT6_8_8_8_8_SNORM"/> |
| <value value="0x33" name="FMT6_8_8_8_8_UINT"/> |
| <value value="0x34" name="FMT6_8_8_8_8_SINT"/> |
| |
| <value value="0x35" name="FMT6_9_9_9_E5_FLOAT"/> |
| |
| <value value="0x36" name="FMT6_10_10_10_2_UNORM"/> |
| <value value="0x37" name="FMT6_10_10_10_2_UNORM_DEST"/> |
| <value value="0x39" name="FMT6_10_10_10_2_SNORM"/> |
| <value value="0x3a" name="FMT6_10_10_10_2_UINT"/> |
| <value value="0x3b" name="FMT6_10_10_10_2_SINT"/> |
| |
| <value value="0x42" name="FMT6_11_11_10_FLOAT"/> |
| |
| <value value="0x43" name="FMT6_16_16_UNORM"/> |
| <value value="0x44" name="FMT6_16_16_SNORM"/> |
| <value value="0x45" name="FMT6_16_16_FLOAT"/> |
| <value value="0x46" name="FMT6_16_16_UINT"/> |
| <value value="0x47" name="FMT6_16_16_SINT"/> |
| |
| <value value="0x48" name="FMT6_32_UNORM"/> |
| <value value="0x49" name="FMT6_32_SNORM"/> |
| <value value="0x4a" name="FMT6_32_FLOAT"/> |
| <value value="0x4b" name="FMT6_32_UINT"/> |
| <value value="0x4c" name="FMT6_32_SINT"/> |
| <value value="0x4d" name="FMT6_32_FIXED"/> |
| |
| <value value="0x58" name="FMT6_16_16_16_UNORM"/> |
| <value value="0x59" name="FMT6_16_16_16_SNORM"/> |
| <value value="0x5a" name="FMT6_16_16_16_FLOAT"/> |
| <value value="0x5b" name="FMT6_16_16_16_UINT"/> |
| <value value="0x5c" name="FMT6_16_16_16_SINT"/> |
| |
| <value value="0x60" name="FMT6_16_16_16_16_UNORM"/> |
| <value value="0x61" name="FMT6_16_16_16_16_SNORM"/> |
| <value value="0x62" name="FMT6_16_16_16_16_FLOAT"/> |
| <value value="0x63" name="FMT6_16_16_16_16_UINT"/> |
| <value value="0x64" name="FMT6_16_16_16_16_SINT"/> |
| |
| <value value="0x65" name="FMT6_32_32_UNORM"/> |
| <value value="0x66" name="FMT6_32_32_SNORM"/> |
| <value value="0x67" name="FMT6_32_32_FLOAT"/> |
| <value value="0x68" name="FMT6_32_32_UINT"/> |
| <value value="0x69" name="FMT6_32_32_SINT"/> |
| <value value="0x6a" name="FMT6_32_32_FIXED"/> |
| |
| <value value="0x70" name="FMT6_32_32_32_UNORM"/> |
| <value value="0x71" name="FMT6_32_32_32_SNORM"/> |
| <value value="0x72" name="FMT6_32_32_32_UINT"/> |
| <value value="0x73" name="FMT6_32_32_32_SINT"/> |
| <value value="0x74" name="FMT6_32_32_32_FLOAT"/> |
| <value value="0x75" name="FMT6_32_32_32_FIXED"/> |
| |
| <value value="0x80" name="FMT6_32_32_32_32_UNORM"/> |
| <value value="0x81" name="FMT6_32_32_32_32_SNORM"/> |
| <value value="0x82" name="FMT6_32_32_32_32_FLOAT"/> |
| <value value="0x83" name="FMT6_32_32_32_32_UINT"/> |
| <value value="0x84" name="FMT6_32_32_32_32_SINT"/> |
| <value value="0x85" name="FMT6_32_32_32_32_FIXED"/> |
| |
| <value value="0x8c" name="FMT6_G8R8B8R8_422_UNORM"/> |
| <value value="0x8d" name="FMT6_R8G8R8B8_422_UNORM"/> |
| <value value="0x8e" name="FMT6_R8_G8B8_2PLANE_420_UNORM"/> |
| <value value="0x90" name="FMT6_R8_G8_B8_3PLANE_420_UNORM"/> |
| |
| <value value="0x91" name="FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8"/> |
| |
| <!-- used with the Y plane of FMT6_R8_G8B8_2PLANE_420_UNORM |
| which has different UBWC compression from regular 8_UNORM format --> |
| <value value="0x94" name="FMT6_8_PLANE_UNORM"/> |
| |
| <value value="0xa0" name="FMT6_Z24_UNORM_S8_UINT"/> |
| |
| <value value="0xab" name="FMT6_ETC2_RG11_UNORM"/> |
| <value value="0xac" name="FMT6_ETC2_RG11_SNORM"/> |
| <value value="0xad" name="FMT6_ETC2_R11_UNORM"/> |
| <value value="0xae" name="FMT6_ETC2_R11_SNORM"/> |
| <value value="0xaf" name="FMT6_ETC1"/> |
| <value value="0xb0" name="FMT6_ETC2_RGB8"/> |
| <value value="0xb1" name="FMT6_ETC2_RGBA8"/> |
| <value value="0xb2" name="FMT6_ETC2_RGB8A1"/> |
| <value value="0xb3" name="FMT6_DXT1"/> |
| <value value="0xb4" name="FMT6_DXT3"/> |
| <value value="0xb5" name="FMT6_DXT5"/> |
| <value value="0xb7" name="FMT6_RGTC1_UNORM"/> |
| <value value="0xb8" name="FMT6_RGTC1_SNORM"/> |
| <value value="0xbb" name="FMT6_RGTC2_UNORM"/> |
| <value value="0xbc" name="FMT6_RGTC2_SNORM"/> |
| <value value="0xbe" name="FMT6_BPTC_UFLOAT"/> |
| <value value="0xbf" name="FMT6_BPTC_FLOAT"/> |
| <value value="0xc0" name="FMT6_BPTC"/> |
| <value value="0xc1" name="FMT6_ASTC_4x4"/> |
| <value value="0xc2" name="FMT6_ASTC_5x4"/> |
| <value value="0xc3" name="FMT6_ASTC_5x5"/> |
| <value value="0xc4" name="FMT6_ASTC_6x5"/> |
| <value value="0xc5" name="FMT6_ASTC_6x6"/> |
| <value value="0xc6" name="FMT6_ASTC_8x5"/> |
| <value value="0xc7" name="FMT6_ASTC_8x6"/> |
| <value value="0xc8" name="FMT6_ASTC_8x8"/> |
| <value value="0xc9" name="FMT6_ASTC_10x5"/> |
| <value value="0xca" name="FMT6_ASTC_10x6"/> |
| <value value="0xcb" name="FMT6_ASTC_10x8"/> |
| <value value="0xcc" name="FMT6_ASTC_10x10"/> |
| <value value="0xcd" name="FMT6_ASTC_12x10"/> |
| <value value="0xce" name="FMT6_ASTC_12x12"/> |
| |
| <!-- same as X8Z24_UNORM but for sampling stencil (integer, 2nd channel) --> |
| <value value="0xea" name="FMT6_S8Z24_UINT"/> |
| |
| <!-- Not a hw enum, used internally in driver --> |
| <value value="0xff" name="FMT6_NONE"/> |
| |
| </enum> |
| |
| <!-- probably same as a5xx --> |
| <enum name="a6xx_polygon_mode"> |
| <value name="POLYMODE6_POINTS" value="1"/> |
| <value name="POLYMODE6_LINES" value="2"/> |
| <value name="POLYMODE6_TRIANGLES" value="3"/> |
| </enum> |
| |
| <enum name="a6xx_depth_format"> |
| <value name="DEPTH6_NONE" value="0"/> |
| <value name="DEPTH6_16" value="1"/> |
| <value name="DEPTH6_24_8" value="2"/> |
| <value name="DEPTH6_32" value="4"/> |
| </enum> |
| |
| <bitset name="a6x_cp_protect" inline="yes"> |
| <bitfield name="BASE_ADDR" low="0" high="17"/> |
| <bitfield name="MASK_LEN" low="18" high="30"/> |
| <bitfield name="READ" pos="31"/> |
| </bitset> |
| |
| <enum name="a6xx_shader_id"> |
| <value value="0x9" name="A6XX_TP0_TMO_DATA"/> |
| <value value="0xa" name="A6XX_TP0_SMO_DATA"/> |
| <value value="0xb" name="A6XX_TP0_MIPMAP_BASE_DATA"/> |
| <value value="0x19" name="A6XX_TP1_TMO_DATA"/> |
| <value value="0x1a" name="A6XX_TP1_SMO_DATA"/> |
| <value value="0x1b" name="A6XX_TP1_MIPMAP_BASE_DATA"/> |
| <value value="0x29" name="A6XX_SP_INST_DATA"/> |
| <value value="0x2a" name="A6XX_SP_LB_0_DATA"/> |
| <value value="0x2b" name="A6XX_SP_LB_1_DATA"/> |
| <value value="0x2c" name="A6XX_SP_LB_2_DATA"/> |
| <value value="0x2d" name="A6XX_SP_LB_3_DATA"/> |
| <value value="0x2e" name="A6XX_SP_LB_4_DATA"/> |
| <value value="0x2f" name="A6XX_SP_LB_5_DATA"/> |
| <value value="0x30" name="A6XX_SP_CB_BINDLESS_DATA"/> |
| <value value="0x31" name="A6XX_SP_CB_LEGACY_DATA"/> |
| <value value="0x32" name="A6XX_SP_UAV_DATA"/> |
| <value value="0x33" name="A6XX_SP_INST_TAG"/> |
| <value value="0x34" name="A6XX_SP_CB_BINDLESS_TAG"/> |
| <value value="0x35" name="A6XX_SP_TMO_UMO_TAG"/> |
| <value value="0x36" name="A6XX_SP_SMO_TAG"/> |
| <value value="0x37" name="A6XX_SP_STATE_DATA"/> |
| <value value="0x49" name="A6XX_HLSQ_CHUNK_CVS_RAM"/> |
| <value value="0x4a" name="A6XX_HLSQ_CHUNK_CPS_RAM"/> |
| <value value="0x4b" name="A6XX_HLSQ_CHUNK_CVS_RAM_TAG"/> |
| <value value="0x4c" name="A6XX_HLSQ_CHUNK_CPS_RAM_TAG"/> |
| <value value="0x4d" name="A6XX_HLSQ_ICB_CVS_CB_BASE_TAG"/> |
| <value value="0x4e" name="A6XX_HLSQ_ICB_CPS_CB_BASE_TAG"/> |
| <value value="0x50" name="A6XX_HLSQ_CVS_MISC_RAM"/> |
| <value value="0x51" name="A6XX_HLSQ_CPS_MISC_RAM"/> |
| <value value="0x52" name="A6XX_HLSQ_INST_RAM"/> |
| <value value="0x53" name="A6XX_HLSQ_GFX_CVS_CONST_RAM"/> |
| <value value="0x54" name="A6XX_HLSQ_GFX_CPS_CONST_RAM"/> |
| <value value="0x55" name="A6XX_HLSQ_CVS_MISC_RAM_TAG"/> |
| <value value="0x56" name="A6XX_HLSQ_CPS_MISC_RAM_TAG"/> |
| <value value="0x57" name="A6XX_HLSQ_INST_RAM_TAG"/> |
| <value value="0x58" name="A6XX_HLSQ_GFX_CVS_CONST_RAM_TAG"/> |
| <value value="0x59" name="A6XX_HLSQ_GFX_CPS_CONST_RAM_TAG"/> |
| <value value="0x5a" name="A6XX_HLSQ_PWR_REST_RAM"/> |
| <value value="0x5b" name="A6XX_HLSQ_PWR_REST_TAG"/> |
| <value value="0x60" name="A6XX_HLSQ_DATAPATH_META"/> |
| <value value="0x61" name="A6XX_HLSQ_FRONTEND_META"/> |
| <value value="0x62" name="A6XX_HLSQ_INDIRECT_META"/> |
| <value value="0x63" name="A6XX_HLSQ_BACKEND_META"/> |
| </enum> |
| |
| <enum name="a6xx_debugbus_id"> |
| <value value="0x1" name="A6XX_DBGBUS_CP"/> |
| <value value="0x2" name="A6XX_DBGBUS_RBBM"/> |
| <value value="0x3" name="A6XX_DBGBUS_VBIF"/> |
| <value value="0x4" name="A6XX_DBGBUS_HLSQ"/> |
| <value value="0x5" name="A6XX_DBGBUS_UCHE"/> |
| <value value="0x6" name="A6XX_DBGBUS_DPM"/> |
| <value value="0x7" name="A6XX_DBGBUS_TESS"/> |
| <value value="0x8" name="A6XX_DBGBUS_PC"/> |
| <value value="0x9" name="A6XX_DBGBUS_VFDP"/> |
| <value value="0xa" name="A6XX_DBGBUS_VPC"/> |
| <value value="0xb" name="A6XX_DBGBUS_TSE"/> |
| <value value="0xc" name="A6XX_DBGBUS_RAS"/> |
| <value value="0xd" name="A6XX_DBGBUS_VSC"/> |
| <value value="0xe" name="A6XX_DBGBUS_COM"/> |
| <value value="0x10" name="A6XX_DBGBUS_LRZ"/> |
| <value value="0x11" name="A6XX_DBGBUS_A2D"/> |
| <value value="0x12" name="A6XX_DBGBUS_CCUFCHE"/> |
| <value value="0x13" name="A6XX_DBGBUS_GMU_CX"/> |
| <value value="0x14" name="A6XX_DBGBUS_RBP"/> |
| <value value="0x15" name="A6XX_DBGBUS_DCS"/> |
| <value value="0x16" name="A6XX_DBGBUS_DBGC"/> |
| <value value="0x17" name="A6XX_DBGBUS_CX"/> |
| <value value="0x18" name="A6XX_DBGBUS_GMU_GX"/> |
| <value value="0x19" name="A6XX_DBGBUS_TPFCHE"/> |
| <value value="0x1a" name="A6XX_DBGBUS_GBIF_GX"/> |
| <value value="0x1d" name="A6XX_DBGBUS_GPC"/> |
| <value value="0x1e" name="A6XX_DBGBUS_LARC"/> |
| <value value="0x1f" name="A6XX_DBGBUS_HLSQ_SPTP"/> |
| <value value="0x20" name="A6XX_DBGBUS_RB_0"/> |
| <value value="0x21" name="A6XX_DBGBUS_RB_1"/> |
| <value value="0x24" name="A6XX_DBGBUS_UCHE_WRAPPER"/> |
| <value value="0x28" name="A6XX_DBGBUS_CCU_0"/> |
| <value value="0x29" name="A6XX_DBGBUS_CCU_1"/> |
| <value value="0x38" name="A6XX_DBGBUS_VFD_0"/> |
| <value value="0x39" name="A6XX_DBGBUS_VFD_1"/> |
| <value value="0x3a" name="A6XX_DBGBUS_VFD_2"/> |
| <value value="0x3b" name="A6XX_DBGBUS_VFD_3"/> |
| <value value="0x40" name="A6XX_DBGBUS_SP_0"/> |
| <value value="0x41" name="A6XX_DBGBUS_SP_1"/> |
| <value value="0x48" name="A6XX_DBGBUS_TPL1_0"/> |
| <value value="0x49" name="A6XX_DBGBUS_TPL1_1"/> |
| <value value="0x4a" name="A6XX_DBGBUS_TPL1_2"/> |
| <value value="0x4b" name="A6XX_DBGBUS_TPL1_3"/> |
| </enum> |
| |
| <enum name="a6xx_cp_perfcounter_select"> |
| <value value="0" name="PERF_CP_ALWAYS_COUNT"/> |
| <value value="1" name="PERF_CP_BUSY_GFX_CORE_IDLE"/> |
| <value value="2" name="PERF_CP_BUSY_CYCLES"/> |
| <value value="3" name="PERF_CP_NUM_PREEMPTIONS"/> |
| <value value="4" name="PERF_CP_PREEMPTION_REACTION_DELAY"/> |
| <value value="5" name="PERF_CP_PREEMPTION_SWITCH_OUT_TIME"/> |
| <value value="6" name="PERF_CP_PREEMPTION_SWITCH_IN_TIME"/> |
| <value value="7" name="PERF_CP_DEAD_DRAWS_IN_BIN_RENDER"/> |
| <value value="8" name="PERF_CP_PREDICATED_DRAWS_KILLED"/> |
| <value value="9" name="PERF_CP_MODE_SWITCH"/> |
| <value value="10" name="PERF_CP_ZPASS_DONE"/> |
| <value value="11" name="PERF_CP_CONTEXT_DONE"/> |
| <value value="12" name="PERF_CP_CACHE_FLUSH"/> |
| <value value="13" name="PERF_CP_LONG_PREEMPTIONS"/> |
| <value value="14" name="PERF_CP_SQE_I_CACHE_STARVE"/> |
| <value value="15" name="PERF_CP_SQE_IDLE"/> |
| <value value="16" name="PERF_CP_SQE_PM4_STARVE_RB_IB"/> |
| <value value="17" name="PERF_CP_SQE_PM4_STARVE_SDS"/> |
| <value value="18" name="PERF_CP_SQE_MRB_STARVE"/> |
| <value value="19" name="PERF_CP_SQE_RRB_STARVE"/> |
| <value value="20" name="PERF_CP_SQE_VSD_STARVE"/> |
| <value value="21" name="PERF_CP_VSD_DECODE_STARVE"/> |
| <value value="22" name="PERF_CP_SQE_PIPE_OUT_STALL"/> |
| <value value="23" name="PERF_CP_SQE_SYNC_STALL"/> |
| <value value="24" name="PERF_CP_SQE_PM4_WFI_STALL"/> |
| <value value="25" name="PERF_CP_SQE_SYS_WFI_STALL"/> |
| <value value="26" name="PERF_CP_SQE_T4_EXEC"/> |
| <value value="27" name="PERF_CP_SQE_LOAD_STATE_EXEC"/> |
| <value value="28" name="PERF_CP_SQE_SAVE_SDS_STATE"/> |
| <value value="29" name="PERF_CP_SQE_DRAW_EXEC"/> |
| <value value="30" name="PERF_CP_SQE_CTXT_REG_BUNCH_EXEC"/> |
| <value value="31" name="PERF_CP_SQE_EXEC_PROFILED"/> |
| <value value="32" name="PERF_CP_MEMORY_POOL_EMPTY"/> |
| <value value="33" name="PERF_CP_MEMORY_POOL_SYNC_STALL"/> |
| <value value="34" name="PERF_CP_MEMORY_POOL_ABOVE_THRESH"/> |
| <value value="35" name="PERF_CP_AHB_WR_STALL_PRE_DRAWS"/> |
| <value value="36" name="PERF_CP_AHB_STALL_SQE_GMU"/> |
| <value value="37" name="PERF_CP_AHB_STALL_SQE_WR_OTHER"/> |
| <value value="38" name="PERF_CP_AHB_STALL_SQE_RD_OTHER"/> |
| <value value="39" name="PERF_CP_CLUSTER0_EMPTY"/> |
| <value value="40" name="PERF_CP_CLUSTER1_EMPTY"/> |
| <value value="41" name="PERF_CP_CLUSTER2_EMPTY"/> |
| <value value="42" name="PERF_CP_CLUSTER3_EMPTY"/> |
| <value value="43" name="PERF_CP_CLUSTER4_EMPTY"/> |
| <value value="44" name="PERF_CP_CLUSTER5_EMPTY"/> |
| <value value="45" name="PERF_CP_PM4_DATA"/> |
| <value value="46" name="PERF_CP_PM4_HEADERS"/> |
| <value value="47" name="PERF_CP_VBIF_READ_BEATS"/> |
| <value value="48" name="PERF_CP_VBIF_WRITE_BEATS"/> |
| <value value="49" name="PERF_CP_SQE_INSTR_COUNTER"/> |
| </enum> |
| |
| <enum name="a6xx_rbbm_perfcounter_select"> |
| <value value="0" name="PERF_RBBM_ALWAYS_COUNT"/> |
| <value value="1" name="PERF_RBBM_ALWAYS_ON"/> |
| <value value="2" name="PERF_RBBM_TSE_BUSY"/> |
| <value value="3" name="PERF_RBBM_RAS_BUSY"/> |
| <value value="4" name="PERF_RBBM_PC_DCALL_BUSY"/> |
| <value value="5" name="PERF_RBBM_PC_VSD_BUSY"/> |
| <value value="6" name="PERF_RBBM_STATUS_MASKED"/> |
| <value value="7" name="PERF_RBBM_COM_BUSY"/> |
| <value value="8" name="PERF_RBBM_DCOM_BUSY"/> |
| <value value="9" name="PERF_RBBM_VBIF_BUSY"/> |
| <value value="10" name="PERF_RBBM_VSC_BUSY"/> |
| <value value="11" name="PERF_RBBM_TESS_BUSY"/> |
| <value value="12" name="PERF_RBBM_UCHE_BUSY"/> |
| <value value="13" name="PERF_RBBM_HLSQ_BUSY"/> |
| </enum> |
| |
| <enum name="a6xx_pc_perfcounter_select"> |
| <value value="0" name="PERF_PC_BUSY_CYCLES"/> |
| <value value="1" name="PERF_PC_WORKING_CYCLES"/> |
| <value value="2" name="PERF_PC_STALL_CYCLES_VFD"/> |
| <value value="3" name="PERF_PC_STALL_CYCLES_TSE"/> |
| <value value="4" name="PERF_PC_STALL_CYCLES_VPC"/> |
| <value value="5" name="PERF_PC_STALL_CYCLES_UCHE"/> |
| <value value="6" name="PERF_PC_STALL_CYCLES_TESS"/> |
| <value value="7" name="PERF_PC_STALL_CYCLES_TSE_ONLY"/> |
| <value value="8" name="PERF_PC_STALL_CYCLES_VPC_ONLY"/> |
| <value value="9" name="PERF_PC_PASS1_TF_STALL_CYCLES"/> |
| <value value="10" name="PERF_PC_STARVE_CYCLES_FOR_INDEX"/> |
| <value value="11" name="PERF_PC_STARVE_CYCLES_FOR_TESS_FACTOR"/> |
| <value value="12" name="PERF_PC_STARVE_CYCLES_FOR_VIZ_STREAM"/> |
| <value value="13" name="PERF_PC_STARVE_CYCLES_FOR_POSITION"/> |
| <value value="14" name="PERF_PC_STARVE_CYCLES_DI"/> |
| <value value="15" name="PERF_PC_VIS_STREAMS_LOADED"/> |
| <value value="16" name="PERF_PC_INSTANCES"/> |
| <value value="17" name="PERF_PC_VPC_PRIMITIVES"/> |
| <value value="18" name="PERF_PC_DEAD_PRIM"/> |
| <value value="19" name="PERF_PC_LIVE_PRIM"/> |
| <value value="20" name="PERF_PC_VERTEX_HITS"/> |
| <value value="21" name="PERF_PC_IA_VERTICES"/> |
| <value value="22" name="PERF_PC_IA_PRIMITIVES"/> |
| <value value="23" name="PERF_PC_GS_PRIMITIVES"/> |
| <value value="24" name="PERF_PC_HS_INVOCATIONS"/> |
| <value value="25" name="PERF_PC_DS_INVOCATIONS"/> |
| <value value="26" name="PERF_PC_VS_INVOCATIONS"/> |
| <value value="27" name="PERF_PC_GS_INVOCATIONS"/> |
| <value value="28" name="PERF_PC_DS_PRIMITIVES"/> |
| <value value="29" name="PERF_PC_VPC_POS_DATA_TRANSACTION"/> |
| <value value="30" name="PERF_PC_3D_DRAWCALLS"/> |
| <value value="31" name="PERF_PC_2D_DRAWCALLS"/> |
| <value value="32" name="PERF_PC_NON_DRAWCALL_GLOBAL_EVENTS"/> |
| <value value="33" name="PERF_TESS_BUSY_CYCLES"/> |
| <value value="34" name="PERF_TESS_WORKING_CYCLES"/> |
| <value value="35" name="PERF_TESS_STALL_CYCLES_PC"/> |
| <value value="36" name="PERF_TESS_STARVE_CYCLES_PC"/> |
| <value value="37" name="PERF_PC_TSE_TRANSACTION"/> |
| <value value="38" name="PERF_PC_TSE_VERTEX"/> |
| <value value="39" name="PERF_PC_TESS_PC_UV_TRANS"/> |
| <value value="40" name="PERF_PC_TESS_PC_UV_PATCHES"/> |
| <value value="41" name="PERF_PC_TESS_FACTOR_TRANS"/> |
| </enum> |
| |
| <enum name="a6xx_vfd_perfcounter_select"> |
| <value value="0" name="PERF_VFD_BUSY_CYCLES"/> |
| <value value="1" name="PERF_VFD_STALL_CYCLES_UCHE"/> |
| <value value="2" name="PERF_VFD_STALL_CYCLES_VPC_ALLOC"/> |
| <value value="3" name="PERF_VFD_STALL_CYCLES_SP_INFO"/> |
| <value value="4" name="PERF_VFD_STALL_CYCLES_SP_ATTR"/> |
| <value value="5" name="PERF_VFD_STARVE_CYCLES_UCHE"/> |
| <value value="6" name="PERF_VFD_RBUFFER_FULL"/> |
| <value value="7" name="PERF_VFD_ATTR_INFO_FIFO_FULL"/> |
| <value value="8" name="PERF_VFD_DECODED_ATTRIBUTE_BYTES"/> |
| <value value="9" name="PERF_VFD_NUM_ATTRIBUTES"/> |
| <value value="10" name="PERF_VFD_UPPER_SHADER_FIBERS"/> |
| <value value="11" name="PERF_VFD_LOWER_SHADER_FIBERS"/> |
| <value value="12" name="PERF_VFD_MODE_0_FIBERS"/> |
| <value value="13" name="PERF_VFD_MODE_1_FIBERS"/> |
| <value value="14" name="PERF_VFD_MODE_2_FIBERS"/> |
| <value value="15" name="PERF_VFD_MODE_3_FIBERS"/> |
| <value value="16" name="PERF_VFD_MODE_4_FIBERS"/> |
| <value value="17" name="PERF_VFD_TOTAL_VERTICES"/> |
| <value value="18" name="PERF_VFDP_STALL_CYCLES_VFD"/> |
| <value value="19" name="PERF_VFDP_STALL_CYCLES_VFD_INDEX"/> |
| <value value="20" name="PERF_VFDP_STALL_CYCLES_VFD_PROG"/> |
| <value value="21" name="PERF_VFDP_STARVE_CYCLES_PC"/> |
| <value value="22" name="PERF_VFDP_VS_STAGE_WAVES"/> |
| </enum> |
| |
| <enum name="a6xx_hlsq_perfcounter_select"> |
| <value value="0" name="PERF_HLSQ_BUSY_CYCLES"/> |
| <value value="1" name="PERF_HLSQ_STALL_CYCLES_UCHE"/> |
| <value value="2" name="PERF_HLSQ_STALL_CYCLES_SP_STATE"/> |
| <value value="3" name="PERF_HLSQ_STALL_CYCLES_SP_FS_STAGE"/> |
| <value value="4" name="PERF_HLSQ_UCHE_LATENCY_CYCLES"/> |
| <value value="5" name="PERF_HLSQ_UCHE_LATENCY_COUNT"/> |
| <value value="6" name="PERF_HLSQ_FS_STAGE_1X_WAVES"/> |
| <value value="7" name="PERF_HLSQ_FS_STAGE_2X_WAVES"/> |
| <value value="8" name="PERF_HLSQ_QUADS"/> |
| <value value="9" name="PERF_HLSQ_CS_INVOCATIONS"/> |
| <value value="10" name="PERF_HLSQ_COMPUTE_DRAWCALLS"/> |
| <value value="11" name="PERF_HLSQ_FS_DATA_WAIT_PROGRAMMING"/> |
| <value value="12" name="PERF_HLSQ_DUAL_FS_PROG_ACTIVE"/> |
| <value value="13" name="PERF_HLSQ_DUAL_VS_PROG_ACTIVE"/> |
| <value value="14" name="PERF_HLSQ_FS_BATCH_COUNT_ZERO"/> |
| <value value="15" name="PERF_HLSQ_VS_BATCH_COUNT_ZERO"/> |
| <value value="16" name="PERF_HLSQ_WAVE_PENDING_NO_QUAD"/> |
| <value value="17" name="PERF_HLSQ_WAVE_PENDING_NO_PRIM_BASE"/> |
| <value value="18" name="PERF_HLSQ_STALL_CYCLES_VPC"/> |
| <value value="19" name="PERF_HLSQ_PIXELS"/> |
| <value value="20" name="PERF_HLSQ_DRAW_MODE_SWITCH_VSFS_SYNC"/> |
| </enum> |
| |
| <enum name="a6xx_vpc_perfcounter_select"> |
| <value value="0" name="PERF_VPC_BUSY_CYCLES"/> |
| <value value="1" name="PERF_VPC_WORKING_CYCLES"/> |
| <value value="2" name="PERF_VPC_STALL_CYCLES_UCHE"/> |
| <value value="3" name="PERF_VPC_STALL_CYCLES_VFD_WACK"/> |
| <value value="4" name="PERF_VPC_STALL_CYCLES_HLSQ_PRIM_ALLOC"/> |
| <value value="5" name="PERF_VPC_STALL_CYCLES_PC"/> |
| <value value="6" name="PERF_VPC_STALL_CYCLES_SP_LM"/> |
| <value value="7" name="PERF_VPC_STARVE_CYCLES_SP"/> |
| <value value="8" name="PERF_VPC_STARVE_CYCLES_LRZ"/> |
| <value value="9" name="PERF_VPC_PC_PRIMITIVES"/> |
| <value value="10" name="PERF_VPC_SP_COMPONENTS"/> |
| <value value="11" name="PERF_VPC_STALL_CYCLES_VPCRAM_POS"/> |
| <value value="12" name="PERF_VPC_LRZ_ASSIGN_PRIMITIVES"/> |
| <value value="13" name="PERF_VPC_RB_VISIBLE_PRIMITIVES"/> |
| <value value="14" name="PERF_VPC_LM_TRANSACTION"/> |
| <value value="15" name="PERF_VPC_STREAMOUT_TRANSACTION"/> |
| <value value="16" name="PERF_VPC_VS_BUSY_CYCLES"/> |
| <value value="17" name="PERF_VPC_PS_BUSY_CYCLES"/> |
| <value value="18" name="PERF_VPC_VS_WORKING_CYCLES"/> |
| <value value="19" name="PERF_VPC_PS_WORKING_CYCLES"/> |
| <value value="20" name="PERF_VPC_STARVE_CYCLES_RB"/> |
| <value value="21" name="PERF_VPC_NUM_VPCRAM_READ_POS"/> |
| <value value="22" name="PERF_VPC_WIT_FULL_CYCLES"/> |
| <value value="23" name="PERF_VPC_VPCRAM_FULL_CYCLES"/> |
| <value value="24" name="PERF_VPC_LM_FULL_WAIT_FOR_INTP_END"/> |
| <value value="25" name="PERF_VPC_NUM_VPCRAM_WRITE"/> |
| <value value="26" name="PERF_VPC_NUM_VPCRAM_READ_SO"/> |
| <value value="27" name="PERF_VPC_NUM_ATTR_REQ_LM"/> |
| </enum> |
| |
| <enum name="a6xx_tse_perfcounter_select"> |
| <value value="0" name="PERF_TSE_BUSY_CYCLES"/> |
| <value value="1" name="PERF_TSE_CLIPPING_CYCLES"/> |
| <value value="2" name="PERF_TSE_STALL_CYCLES_RAS"/> |
| <value value="3" name="PERF_TSE_STALL_CYCLES_LRZ_BARYPLANE"/> |
| <value value="4" name="PERF_TSE_STALL_CYCLES_LRZ_ZPLANE"/> |
| <value value="5" name="PERF_TSE_STARVE_CYCLES_PC"/> |
| <value value="6" name="PERF_TSE_INPUT_PRIM"/> |
| <value value="7" name="PERF_TSE_INPUT_NULL_PRIM"/> |
| <value value="8" name="PERF_TSE_TRIVAL_REJ_PRIM"/> |
| <value value="9" name="PERF_TSE_CLIPPED_PRIM"/> |
| <value value="10" name="PERF_TSE_ZERO_AREA_PRIM"/> |
| <value value="11" name="PERF_TSE_FACENESS_CULLED_PRIM"/> |
| <value value="12" name="PERF_TSE_ZERO_PIXEL_PRIM"/> |
| <value value="13" name="PERF_TSE_OUTPUT_NULL_PRIM"/> |
| <value value="14" name="PERF_TSE_OUTPUT_VISIBLE_PRIM"/> |
| <value value="15" name="PERF_TSE_CINVOCATION"/> |
| <value value="16" name="PERF_TSE_CPRIMITIVES"/> |
| <value value="17" name="PERF_TSE_2D_INPUT_PRIM"/> |
| <value value="18" name="PERF_TSE_2D_ALIVE_CYCLES"/> |
| <value value="19" name="PERF_TSE_CLIP_PLANES"/> |
| </enum> |
| |
| <enum name="a6xx_ras_perfcounter_select"> |
| <value value="0" name="PERF_RAS_BUSY_CYCLES"/> |
| <value value="1" name="PERF_RAS_SUPERTILE_ACTIVE_CYCLES"/> |
| <value value="2" name="PERF_RAS_STALL_CYCLES_LRZ"/> |
| <value value="3" name="PERF_RAS_STARVE_CYCLES_TSE"/> |
| <value value="4" name="PERF_RAS_SUPER_TILES"/> |
| <value value="5" name="PERF_RAS_8X4_TILES"/> |
| <value value="6" name="PERF_RAS_MASKGEN_ACTIVE"/> |
| <value value="7" name="PERF_RAS_FULLY_COVERED_SUPER_TILES"/> |
| <value value="8" name="PERF_RAS_FULLY_COVERED_8X4_TILES"/> |
| <value value="9" name="PERF_RAS_PRIM_KILLED_INVISILBE"/> |
| <value value="10" name="PERF_RAS_SUPERTILE_GEN_ACTIVE_CYCLES"/> |
| <value value="11" name="PERF_RAS_LRZ_INTF_WORKING_CYCLES"/> |
| <value value="12" name="PERF_RAS_BLOCKS"/> |
| </enum> |
| |
| <enum name="a6xx_uche_perfcounter_select"> |
| <value value="0" name="PERF_UCHE_BUSY_CYCLES"/> |
| <value value="1" name="PERF_UCHE_STALL_CYCLES_ARBITER"/> |
| <value value="2" name="PERF_UCHE_VBIF_LATENCY_CYCLES"/> |
| <value value="3" name="PERF_UCHE_VBIF_LATENCY_SAMPLES"/> |
| <value value="4" name="PERF_UCHE_VBIF_READ_BEATS_TP"/> |
| <value value="5" name="PERF_UCHE_VBIF_READ_BEATS_VFD"/> |
| <value value="6" name="PERF_UCHE_VBIF_READ_BEATS_HLSQ"/> |
| <value value="7" name="PERF_UCHE_VBIF_READ_BEATS_LRZ"/> |
| <value value="8" name="PERF_UCHE_VBIF_READ_BEATS_SP"/> |
| <value value="9" name="PERF_UCHE_READ_REQUESTS_TP"/> |
| <value value="10" name="PERF_UCHE_READ_REQUESTS_VFD"/> |
| <value value="11" name="PERF_UCHE_READ_REQUESTS_HLSQ"/> |
| <value value="12" name="PERF_UCHE_READ_REQUESTS_LRZ"/> |
| <value value="13" name="PERF_UCHE_READ_REQUESTS_SP"/> |
| <value value="14" name="PERF_UCHE_WRITE_REQUESTS_LRZ"/> |
| <value value="15" name="PERF_UCHE_WRITE_REQUESTS_SP"/> |
| <value value="16" name="PERF_UCHE_WRITE_REQUESTS_VPC"/> |
| <value value="17" name="PERF_UCHE_WRITE_REQUESTS_VSC"/> |
| <value value="18" name="PERF_UCHE_EVICTS"/> |
| <value value="19" name="PERF_UCHE_BANK_REQ0"/> |
| <value value="20" name="PERF_UCHE_BANK_REQ1"/> |
| <value value="21" name="PERF_UCHE_BANK_REQ2"/> |
| <value value="22" name="PERF_UCHE_BANK_REQ3"/> |
| <value value="23" name="PERF_UCHE_BANK_REQ4"/> |
| <value value="24" name="PERF_UCHE_BANK_REQ5"/> |
| <value value="25" name="PERF_UCHE_BANK_REQ6"/> |
| <value value="26" name="PERF_UCHE_BANK_REQ7"/> |
| <value value="27" name="PERF_UCHE_VBIF_READ_BEATS_CH0"/> |
| <value value="28" name="PERF_UCHE_VBIF_READ_BEATS_CH1"/> |
| <value value="29" name="PERF_UCHE_GMEM_READ_BEATS"/> |
| <value value="30" name="PERF_UCHE_TPH_REF_FULL"/> |
| <value value="31" name="PERF_UCHE_TPH_VICTIM_FULL"/> |
| <value value="32" name="PERF_UCHE_TPH_EXT_FULL"/> |
| <value value="33" name="PERF_UCHE_VBIF_STALL_WRITE_DATA"/> |
| <value value="34" name="PERF_UCHE_DCMP_LATENCY_SAMPLES"/> |
| <value value="35" name="PERF_UCHE_DCMP_LATENCY_CYCLES"/> |
| <value value="36" name="PERF_UCHE_VBIF_READ_BEATS_PC"/> |
| <value value="37" name="PERF_UCHE_READ_REQUESTS_PC"/> |
| <value value="38" name="PERF_UCHE_RAM_READ_REQ"/> |
| <value value="39" name="PERF_UCHE_RAM_WRITE_REQ"/> |
| </enum> |
| |
| <enum name="a6xx_tp_perfcounter_select"> |
| <value value="0" name="PERF_TP_BUSY_CYCLES"/> |
| <value value="1" name="PERF_TP_STALL_CYCLES_UCHE"/> |
| <value value="2" name="PERF_TP_LATENCY_CYCLES"/> |
| <value value="3" name="PERF_TP_LATENCY_TRANS"/> |
| <value value="4" name="PERF_TP_FLAG_CACHE_REQUEST_SAMPLES"/> |
| <value value="5" name="PERF_TP_FLAG_CACHE_REQUEST_LATENCY"/> |
| <value value="6" name="PERF_TP_L1_CACHELINE_REQUESTS"/> |
| <value value="7" name="PERF_TP_L1_CACHELINE_MISSES"/> |
| <value value="8" name="PERF_TP_SP_TP_TRANS"/> |
| <value value="9" name="PERF_TP_TP_SP_TRANS"/> |
| <value value="10" name="PERF_TP_OUTPUT_PIXELS"/> |
| <value value="11" name="PERF_TP_FILTER_WORKLOAD_16BIT"/> |
| <value value="12" name="PERF_TP_FILTER_WORKLOAD_32BIT"/> |
| <value value="13" name="PERF_TP_QUADS_RECEIVED"/> |
| <value value="14" name="PERF_TP_QUADS_OFFSET"/> |
| <value value="15" name="PERF_TP_QUADS_SHADOW"/> |
| <value value="16" name="PERF_TP_QUADS_ARRAY"/> |
| <value value="17" name="PERF_TP_QUADS_GRADIENT"/> |
| <value value="18" name="PERF_TP_QUADS_1D"/> |
| <value value="19" name="PERF_TP_QUADS_2D"/> |
| <value value="20" name="PERF_TP_QUADS_BUFFER"/> |
| <value value="21" name="PERF_TP_QUADS_3D"/> |
| <value value="22" name="PERF_TP_QUADS_CUBE"/> |
| <value value="23" name="PERF_TP_DIVERGENT_QUADS_RECEIVED"/> |
| <value value="24" name="PERF_TP_PRT_NON_RESIDENT_EVENTS"/> |
| <value value="25" name="PERF_TP_OUTPUT_PIXELS_POINT"/> |
| <value value="26" name="PERF_TP_OUTPUT_PIXELS_BILINEAR"/> |
| <value value="27" name="PERF_TP_OUTPUT_PIXELS_MIP"/> |
| <value value="28" name="PERF_TP_OUTPUT_PIXELS_ANISO"/> |
| <value value="29" name="PERF_TP_OUTPUT_PIXELS_ZERO_LOD"/> |
| <value value="30" name="PERF_TP_FLAG_CACHE_REQUESTS"/> |
| <value value="31" name="PERF_TP_FLAG_CACHE_MISSES"/> |
| <value value="32" name="PERF_TP_L1_5_L2_REQUESTS"/> |
| <value value="33" name="PERF_TP_2D_OUTPUT_PIXELS"/> |
| <value value="34" name="PERF_TP_2D_OUTPUT_PIXELS_POINT"/> |
| <value value="35" name="PERF_TP_2D_OUTPUT_PIXELS_BILINEAR"/> |
| <value value="36" name="PERF_TP_2D_FILTER_WORKLOAD_16BIT"/> |
| <value value="37" name="PERF_TP_2D_FILTER_WORKLOAD_32BIT"/> |
| <value value="38" name="PERF_TP_TPA2TPC_TRANS"/> |
| <value value="39" name="PERF_TP_L1_MISSES_ASTC_1TILE"/> |
| <value value="40" name="PERF_TP_L1_MISSES_ASTC_2TILE"/> |
| <value value="41" name="PERF_TP_L1_MISSES_ASTC_4TILE"/> |
| <value value="42" name="PERF_TP_L1_5_L2_COMPRESS_REQS"/> |
| <value value="43" name="PERF_TP_L1_5_L2_COMPRESS_MISS"/> |
| <value value="44" name="PERF_TP_L1_BANK_CONFLICT"/> |
| <value value="45" name="PERF_TP_L1_5_MISS_LATENCY_CYCLES"/> |
| <value value="46" name="PERF_TP_L1_5_MISS_LATENCY_TRANS"/> |
| <value value="47" name="PERF_TP_QUADS_CONSTANT_MULTIPLIED"/> |
| <value value="48" name="PERF_TP_FRONTEND_WORKING_CYCLES"/> |
| <value value="49" name="PERF_TP_L1_TAG_WORKING_CYCLES"/> |
| <value value="50" name="PERF_TP_L1_DATA_WRITE_WORKING_CYCLES"/> |
| <value value="51" name="PERF_TP_PRE_L1_DECOM_WORKING_CYCLES"/> |
| <value value="52" name="PERF_TP_BACKEND_WORKING_CYCLES"/> |
| <value value="53" name="PERF_TP_FLAG_CACHE_WORKING_CYCLES"/> |
| <value value="54" name="PERF_TP_L1_5_CACHE_WORKING_CYCLES"/> |
| <value value="55" name="PERF_TP_STARVE_CYCLES_SP"/> |
| <value value="56" name="PERF_TP_STARVE_CYCLES_UCHE"/> |
| </enum> |
| |
| <enum name="a6xx_sp_perfcounter_select"> |
| <value value="0" name="PERF_SP_BUSY_CYCLES"/> |
| <value value="1" name="PERF_SP_ALU_WORKING_CYCLES"/> |
| <value value="2" name="PERF_SP_EFU_WORKING_CYCLES"/> |
| <value value="3" name="PERF_SP_STALL_CYCLES_VPC"/> |
| <value value="4" name="PERF_SP_STALL_CYCLES_TP"/> |
| <value value="5" name="PERF_SP_STALL_CYCLES_UCHE"/> |
| <value value="6" name="PERF_SP_STALL_CYCLES_RB"/> |
| <value value="7" name="PERF_SP_NON_EXECUTION_CYCLES"/> |
| <value value="8" name="PERF_SP_WAVE_CONTEXTS"/> |
| <value value="9" name="PERF_SP_WAVE_CONTEXT_CYCLES"/> |
| <value value="10" name="PERF_SP_FS_STAGE_WAVE_CYCLES"/> |
| <value value="11" name="PERF_SP_FS_STAGE_WAVE_SAMPLES"/> |
| <value value="12" name="PERF_SP_VS_STAGE_WAVE_CYCLES"/> |
| <value value="13" name="PERF_SP_VS_STAGE_WAVE_SAMPLES"/> |
| <value value="14" name="PERF_SP_FS_STAGE_DURATION_CYCLES"/> |
| <value value="15" name="PERF_SP_VS_STAGE_DURATION_CYCLES"/> |
| <value value="16" name="PERF_SP_WAVE_CTRL_CYCLES"/> |
| <value value="17" name="PERF_SP_WAVE_LOAD_CYCLES"/> |
| <value value="18" name="PERF_SP_WAVE_EMIT_CYCLES"/> |
| <value value="19" name="PERF_SP_WAVE_NOP_CYCLES"/> |
| <value value="20" name="PERF_SP_WAVE_WAIT_CYCLES"/> |
| <value value="21" name="PERF_SP_WAVE_FETCH_CYCLES"/> |
| <value value="22" name="PERF_SP_WAVE_IDLE_CYCLES"/> |
| <value value="23" name="PERF_SP_WAVE_END_CYCLES"/> |
| <value value="24" name="PERF_SP_WAVE_LONG_SYNC_CYCLES"/> |
| <value value="25" name="PERF_SP_WAVE_SHORT_SYNC_CYCLES"/> |
| <value value="26" name="PERF_SP_WAVE_JOIN_CYCLES"/> |
| <value value="27" name="PERF_SP_LM_LOAD_INSTRUCTIONS"/> |
| <value value="28" name="PERF_SP_LM_STORE_INSTRUCTIONS"/> |
| <value value="29" name="PERF_SP_LM_ATOMICS"/> |
| <value value="30" name="PERF_SP_GM_LOAD_INSTRUCTIONS"/> |
| <value value="31" name="PERF_SP_GM_STORE_INSTRUCTIONS"/> |
| <value value="32" name="PERF_SP_GM_ATOMICS"/> |
| <value value="33" name="PERF_SP_VS_STAGE_TEX_INSTRUCTIONS"/> |
| <value value="34" name="PERF_SP_VS_STAGE_EFU_INSTRUCTIONS"/> |
| <value value="35" name="PERF_SP_VS_STAGE_FULL_ALU_INSTRUCTIONS"/> |
| <value value="36" name="PERF_SP_VS_STAGE_HALF_ALU_INSTRUCTIONS"/> |
| <value value="37" name="PERF_SP_FS_STAGE_TEX_INSTRUCTIONS"/> |
| <value value="38" name="PERF_SP_FS_STAGE_CFLOW_INSTRUCTIONS"/> |
| <value value="39" name="PERF_SP_FS_STAGE_EFU_INSTRUCTIONS"/> |
| <value value="40" name="PERF_SP_FS_STAGE_FULL_ALU_INSTRUCTIONS"/> |
| <value value="41" name="PERF_SP_FS_STAGE_HALF_ALU_INSTRUCTIONS"/> |
| <value value="42" name="PERF_SP_FS_STAGE_BARY_INSTRUCTIONS"/> |
| <value value="43" name="PERF_SP_VS_INSTRUCTIONS"/> |
| <value value="44" name="PERF_SP_FS_INSTRUCTIONS"/> |
| <value value="45" name="PERF_SP_ADDR_LOCK_COUNT"/> |
| <value value="46" name="PERF_SP_UCHE_READ_TRANS"/> |
| <value value="47" name="PERF_SP_UCHE_WRITE_TRANS"/> |
| <value value="48" name="PERF_SP_EXPORT_VPC_TRANS"/> |
| <value value="49" name="PERF_SP_EXPORT_RB_TRANS"/> |
| <value value="50" name="PERF_SP_PIXELS_KILLED"/> |
| <value value="51" name="PERF_SP_ICL1_REQUESTS"/> |
| <value value="52" name="PERF_SP_ICL1_MISSES"/> |
| <value value="53" name="PERF_SP_HS_INSTRUCTIONS"/> |
| <value value="54" name="PERF_SP_DS_INSTRUCTIONS"/> |
| <value value="55" name="PERF_SP_GS_INSTRUCTIONS"/> |
| <value value="56" name="PERF_SP_CS_INSTRUCTIONS"/> |
| <value value="57" name="PERF_SP_GPR_READ"/> |
| <value value="58" name="PERF_SP_GPR_WRITE"/> |
| <value value="59" name="PERF_SP_FS_STAGE_HALF_EFU_INSTRUCTIONS"/> |
| <value value="60" name="PERF_SP_VS_STAGE_HALF_EFU_INSTRUCTIONS"/> |
| <value value="61" name="PERF_SP_LM_BANK_CONFLICTS"/> |
| <value value="62" name="PERF_SP_TEX_CONTROL_WORKING_CYCLES"/> |
| <value value="63" name="PERF_SP_LOAD_CONTROL_WORKING_CYCLES"/> |
| <value value="64" name="PERF_SP_FLOW_CONTROL_WORKING_CYCLES"/> |
| <value value="65" name="PERF_SP_LM_WORKING_CYCLES"/> |
| <value value="66" name="PERF_SP_DISPATCHER_WORKING_CYCLES"/> |
| <value value="67" name="PERF_SP_SEQUENCER_WORKING_CYCLES"/> |
| <value value="68" name="PERF_SP_LOW_EFFICIENCY_STARVED_BY_TP"/> |
| <value value="69" name="PERF_SP_STARVE_CYCLES_HLSQ"/> |
| <value value="70" name="PERF_SP_NON_EXECUTION_LS_CYCLES"/> |
| <value value="71" name="PERF_SP_WORKING_EU"/> |
| <value value="72" name="PERF_SP_ANY_EU_WORKING"/> |
| <value value="73" name="PERF_SP_WORKING_EU_FS_STAGE"/> |
| <value value="74" name="PERF_SP_ANY_EU_WORKING_FS_STAGE"/> |
| <value value="75" name="PERF_SP_WORKING_EU_VS_STAGE"/> |
| <value value="76" name="PERF_SP_ANY_EU_WORKING_VS_STAGE"/> |
| <value value="77" name="PERF_SP_WORKING_EU_CS_STAGE"/> |
| <value value="78" name="PERF_SP_ANY_EU_WORKING_CS_STAGE"/> |
| <value value="79" name="PERF_SP_GPR_READ_PREFETCH"/> |
| <value value="80" name="PERF_SP_GPR_READ_CONFLICT"/> |
| <value value="81" name="PERF_SP_GPR_WRITE_CONFLICT"/> |
| <value value="82" name="PERF_SP_GM_LOAD_LATENCY_CYCLES"/> |
| <value value="83" name="PERF_SP_GM_LOAD_LATENCY_SAMPLES"/> |
| <value value="84" name="PERF_SP_EXECUTABLE_WAVES"/> |
| </enum> |
| |
| <enum name="a6xx_rb_perfcounter_select"> |
| <value value="0" name="PERF_RB_BUSY_CYCLES"/> |
| <value value="1" name="PERF_RB_STALL_CYCLES_HLSQ"/> |
| <value value="2" name="PERF_RB_STALL_CYCLES_FIFO0_FULL"/> |
| <value value="3" name="PERF_RB_STALL_CYCLES_FIFO1_FULL"/> |
| <value value="4" name="PERF_RB_STALL_CYCLES_FIFO2_FULL"/> |
| <value value="5" name="PERF_RB_STARVE_CYCLES_SP"/> |
| <value value="6" name="PERF_RB_STARVE_CYCLES_LRZ_TILE"/> |
| <value value="7" name="PERF_RB_STARVE_CYCLES_CCU"/> |
| <value value="8" name="PERF_RB_STARVE_CYCLES_Z_PLANE"/> |
| <value value="9" name="PERF_RB_STARVE_CYCLES_BARY_PLANE"/> |
| <value value="10" name="PERF_RB_Z_WORKLOAD"/> |
| <value value="11" name="PERF_RB_HLSQ_ACTIVE"/> |
| <value value="12" name="PERF_RB_Z_READ"/> |
| <value value="13" name="PERF_RB_Z_WRITE"/> |
| <value value="14" name="PERF_RB_C_READ"/> |
| <value value="15" name="PERF_RB_C_WRITE"/> |
| <value value="16" name="PERF_RB_TOTAL_PASS"/> |
| <value value="17" name="PERF_RB_Z_PASS"/> |
| <value value="18" name="PERF_RB_Z_FAIL"/> |
| <value value="19" name="PERF_RB_S_FAIL"/> |
| <value value="20" name="PERF_RB_BLENDED_FXP_COMPONENTS"/> |
| <value value="21" name="PERF_RB_BLENDED_FP16_COMPONENTS"/> |
| <value value="22" name="PERF_RB_PS_INVOCATIONS"/> |
| <value value="23" name="PERF_RB_2D_ALIVE_CYCLES"/> |
| <value value="24" name="PERF_RB_2D_STALL_CYCLES_A2D"/> |
| <value value="25" name="PERF_RB_2D_STARVE_CYCLES_SRC"/> |
| <value value="26" name="PERF_RB_2D_STARVE_CYCLES_SP"/> |
| <value value="27" name="PERF_RB_2D_STARVE_CYCLES_DST"/> |
| <value value="28" name="PERF_RB_2D_VALID_PIXELS"/> |
| <value value="29" name="PERF_RB_3D_PIXELS"/> |
| <value value="30" name="PERF_RB_BLENDER_WORKING_CYCLES"/> |
| <value value="31" name="PERF_RB_ZPROC_WORKING_CYCLES"/> |
| <value value="32" name="PERF_RB_CPROC_WORKING_CYCLES"/> |
| <value value="33" name="PERF_RB_SAMPLER_WORKING_CYCLES"/> |
| <value value="34" name="PERF_RB_STALL_CYCLES_CCU_COLOR_READ"/> |
| <value value="35" name="PERF_RB_STALL_CYCLES_CCU_COLOR_WRITE"/> |
| <value value="36" name="PERF_RB_STALL_CYCLES_CCU_DEPTH_READ"/> |
| <value value="37" name="PERF_RB_STALL_CYCLES_CCU_DEPTH_WRITE"/> |
| <value value="38" name="PERF_RB_STALL_CYCLES_VPC"/> |
| <value value="39" name="PERF_RB_2D_INPUT_TRANS"/> |
| <value value="40" name="PERF_RB_2D_OUTPUT_RB_DST_TRANS"/> |
| <value value="41" name="PERF_RB_2D_OUTPUT_RB_SRC_TRANS"/> |
| <value value="42" name="PERF_RB_BLENDED_FP32_COMPONENTS"/> |
| <value value="43" name="PERF_RB_COLOR_PIX_TILES"/> |
| <value value="44" name="PERF_RB_STALL_CYCLES_CCU"/> |
| <value value="45" name="PERF_RB_EARLY_Z_ARB3_GRANT"/> |
| <value value="46" name="PERF_RB_LATE_Z_ARB3_GRANT"/> |
| <value value="47" name="PERF_RB_EARLY_Z_SKIP_GRANT"/> |
| </enum> |
| |
| <enum name="a6xx_vsc_perfcounter_select"> |
| <value value="0" name="PERF_VSC_BUSY_CYCLES"/> |
| <value value="1" name="PERF_VSC_WORKING_CYCLES"/> |
| <value value="2" name="PERF_VSC_STALL_CYCLES_UCHE"/> |
| <value value="3" name="PERF_VSC_EOT_NUM"/> |
| <value value="4" name="PERF_VSC_INPUT_TILES"/> |
| </enum> |
| |
| <enum name="a6xx_ccu_perfcounter_select"> |
| <value value="0" name="PERF_CCU_BUSY_CYCLES"/> |
| <value value="1" name="PERF_CCU_STALL_CYCLES_RB_DEPTH_RETURN"/> |
| <value value="2" name="PERF_CCU_STALL_CYCLES_RB_COLOR_RETURN"/> |
| <value value="3" name="PERF_CCU_STARVE_CYCLES_FLAG_RETURN"/> |
| <value value="4" name="PERF_CCU_DEPTH_BLOCKS"/> |
| <value value="5" name="PERF_CCU_COLOR_BLOCKS"/> |
| <value value="6" name="PERF_CCU_DEPTH_BLOCK_HIT"/> |
| <value value="7" name="PERF_CCU_COLOR_BLOCK_HIT"/> |
| <value value="8" name="PERF_CCU_PARTIAL_BLOCK_READ"/> |
| <value value="9" name="PERF_CCU_GMEM_READ"/> |
| <value value="10" name="PERF_CCU_GMEM_WRITE"/> |
| <value value="11" name="PERF_CCU_DEPTH_READ_FLAG0_COUNT"/> |
| <value value="12" name="PERF_CCU_DEPTH_READ_FLAG1_COUNT"/> |
| <value value="13" name="PERF_CCU_DEPTH_READ_FLAG2_COUNT"/> |
| <value value="14" name="PERF_CCU_DEPTH_READ_FLAG3_COUNT"/> |
| <value value="15" name="PERF_CCU_DEPTH_READ_FLAG4_COUNT"/> |
| <value value="16" name="PERF_CCU_DEPTH_READ_FLAG5_COUNT"/> |
| <value value="17" name="PERF_CCU_DEPTH_READ_FLAG6_COUNT"/> |
| <value value="18" name="PERF_CCU_DEPTH_READ_FLAG8_COUNT"/> |
| <value value="19" name="PERF_CCU_COLOR_READ_FLAG0_COUNT"/> |
| <value value="20" name="PERF_CCU_COLOR_READ_FLAG1_COUNT"/> |
| <value value="21" name="PERF_CCU_COLOR_READ_FLAG2_COUNT"/> |
| <value value="22" name="PERF_CCU_COLOR_READ_FLAG3_COUNT"/> |
| <value value="23" name="PERF_CCU_COLOR_READ_FLAG4_COUNT"/> |
| <value value="24" name="PERF_CCU_COLOR_READ_FLAG5_COUNT"/> |
| <value value="25" name="PERF_CCU_COLOR_READ_FLAG6_COUNT"/> |
| <value value="26" name="PERF_CCU_COLOR_READ_FLAG8_COUNT"/> |
| <value value="27" name="PERF_CCU_2D_RD_REQ"/> |
| <value value="28" name="PERF_CCU_2D_WR_REQ"/> |
| </enum> |
| |
| <enum name="a6xx_lrz_perfcounter_select"> |
| <value value="0" name="PERF_LRZ_BUSY_CYCLES"/> |
| <value value="1" name="PERF_LRZ_STARVE_CYCLES_RAS"/> |
| <value value="2" name="PERF_LRZ_STALL_CYCLES_RB"/> |
| <value value="3" name="PERF_LRZ_STALL_CYCLES_VSC"/> |
| <value value="4" name="PERF_LRZ_STALL_CYCLES_VPC"/> |
| <value value="5" name="PERF_LRZ_STALL_CYCLES_FLAG_PREFETCH"/> |
| <value value="6" name="PERF_LRZ_STALL_CYCLES_UCHE"/> |
| <value value="7" name="PERF_LRZ_LRZ_READ"/> |
| <value value="8" name="PERF_LRZ_LRZ_WRITE"/> |
| <value value="9" name="PERF_LRZ_READ_LATENCY"/> |
| <value value="10" name="PERF_LRZ_MERGE_CACHE_UPDATING"/> |
| <value value="11" name="PERF_LRZ_PRIM_KILLED_BY_MASKGEN"/> |
| <value value="12" name="PERF_LRZ_PRIM_KILLED_BY_LRZ"/> |
| <value value="13" name="PERF_LRZ_VISIBLE_PRIM_AFTER_LRZ"/> |
| <value value="14" name="PERF_LRZ_FULL_8X8_TILES"/> |
| <value value="15" name="PERF_LRZ_PARTIAL_8X8_TILES"/> |
| <value value="16" name="PERF_LRZ_TILE_KILLED"/> |
| <value value="17" name="PERF_LRZ_TOTAL_PIXEL"/> |
| <value value="18" name="PERF_LRZ_VISIBLE_PIXEL_AFTER_LRZ"/> |
| <value value="19" name="PERF_LRZ_FULLY_COVERED_TILES"/> |
| <value value="20" name="PERF_LRZ_PARTIAL_COVERED_TILES"/> |
| <value value="21" name="PERF_LRZ_FEEDBACK_ACCEPT"/> |
| <value value="22" name="PERF_LRZ_FEEDBACK_DISCARD"/> |
| <value value="23" name="PERF_LRZ_FEEDBACK_STALL"/> |
| <value value="24" name="PERF_LRZ_STALL_CYCLES_RB_ZPLANE"/> |
| <value value="25" name="PERF_LRZ_STALL_CYCLES_RB_BPLANE"/> |
| <value value="26" name="PERF_LRZ_STALL_CYCLES_VC"/> |
| <value value="27" name="PERF_LRZ_RAS_MASK_TRANS"/> |
| </enum> |
| |
| <enum name="a6xx_cmp_perfcounter_select"> |
| <value value="0" name="PERF_CMPDECMP_STALL_CYCLES_ARB"/> |
| <value value="1" name="PERF_CMPDECMP_VBIF_LATENCY_CYCLES"/> |
| <value value="2" name="PERF_CMPDECMP_VBIF_LATENCY_SAMPLES"/> |
| <value value="3" name="PERF_CMPDECMP_VBIF_READ_DATA_CCU"/> |
| <value value="4" name="PERF_CMPDECMP_VBIF_WRITE_DATA_CCU"/> |
| <value value="5" name="PERF_CMPDECMP_VBIF_READ_REQUEST"/> |
| <value value="6" name="PERF_CMPDECMP_VBIF_WRITE_REQUEST"/> |
| <value value="7" name="PERF_CMPDECMP_VBIF_READ_DATA"/> |
| <value value="8" name="PERF_CMPDECMP_VBIF_WRITE_DATA"/> |
| <value value="9" name="PERF_CMPDECMP_FLAG_FETCH_CYCLES"/> |
| <value value="10" name="PERF_CMPDECMP_FLAG_FETCH_SAMPLES"/> |
| <value value="11" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG1_COUNT"/> |
| <value value="12" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG2_COUNT"/> |
| <value value="13" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG3_COUNT"/> |
| <value value="14" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG4_COUNT"/> |
| <value value="15" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG5_COUNT"/> |
| <value value="16" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG6_COUNT"/> |
| <value value="17" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG8_COUNT"/> |
| <value value="18" name="PERF_CMPDECMP_COLOR_WRITE_FLAG1_COUNT"/> |
| <value value="19" name="PERF_CMPDECMP_COLOR_WRITE_FLAG2_COUNT"/> |
| <value value="20" name="PERF_CMPDECMP_COLOR_WRITE_FLAG3_COUNT"/> |
| <value value="21" name="PERF_CMPDECMP_COLOR_WRITE_FLAG4_COUNT"/> |
| <value value="22" name="PERF_CMPDECMP_COLOR_WRITE_FLAG5_COUNT"/> |
| <value value="23" name="PERF_CMPDECMP_COLOR_WRITE_FLAG6_COUNT"/> |
| <value value="24" name="PERF_CMPDECMP_COLOR_WRITE_FLAG8_COUNT"/> |
| <value value="25" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_REQ"/> |
| <value value="26" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_WR"/> |
| <value value="27" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_RETURN"/> |
| <value value="28" name="PERF_CMPDECMP_2D_RD_DATA"/> |
| <value value="29" name="PERF_CMPDECMP_2D_WR_DATA"/> |
| <value value="30" name="PERF_CMPDECMP_VBIF_READ_DATA_UCHE_CH0"/> |
| <value value="31" name="PERF_CMPDECMP_VBIF_READ_DATA_UCHE_CH1"/> |
| <value value="32" name="PERF_CMPDECMP_2D_OUTPUT_TRANS"/> |
| <value value="33" name="PERF_CMPDECMP_VBIF_WRITE_DATA_UCHE"/> |
| <value value="34" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG0_COUNT"/> |
| <value value="35" name="PERF_CMPDECMP_COLOR_WRITE_FLAG0_COUNT"/> |
| <value value="36" name="PERF_CMPDECMP_COLOR_WRITE_FLAGALPHA_COUNT"/> |
| <value value="37" name="PERF_CMPDECMP_2D_BUSY_CYCLES"/> |
| <value value="38" name="PERF_CMPDECMP_2D_REORDER_STARVE_CYCLES"/> |
| <value value="39" name="PERF_CMPDECMP_2D_PIXELS"/> |
| </enum> |
| |
| <!-- |
| Used in a6xx_2d_blit_cntl.. the value mostly seems to correlate to the |
| component type/size, so I think it relates to internal format used for |
| blending? The one exception is that 16b unorm and 32b float use the |
| same value... maybe 16b unorm is uncommon enough that it was just easier |
| to upconvert to 32b float internally? |
| |
| 8b unorm: 10 (sometimes 0, is the high bit part of something else?) |
| 16b unorm: 4 |
| |
| 32b int: 7 |
| 16b int: 6 |
| 8b int: 5 |
| |
| 32b float: 4 |
| 16b float: 3 |
| --> |
| <enum name="a6xx_2d_ifmt"> |
| <value value="0x10" name="R2D_UNORM8"/> |
| <value value="0x7" name="R2D_INT32"/> |
| <value value="0x6" name="R2D_INT16"/> |
| <value value="0x5" name="R2D_INT8"/> |
| <value value="0x4" name="R2D_FLOAT32"/> |
| <value value="0x3" name="R2D_FLOAT16"/> |
| <value value="0x1" name="R2D_UNORM8_SRGB"/> |
| <value value="0x0" name="R2D_RAW"/> |
| </enum> |
| |
| <enum name="a6xx_ztest_mode"> |
| <doc>Allow early z-test and early-lrz (if applicable)</doc> |
| <value value="0x0" name="A6XX_EARLY_Z"/> |
| <doc>Disable early z-test and early-lrz test (if applicable)</doc> |
| <value value="0x1" name="A6XX_LATE_Z"/> |
| <doc> |
| A special mode that allows early-lrz test but disables |
| early-z test. Which might sound a bit funny, since |
| lrz-test happens before z-test. But as long as a couple |
| conditions are maintained this allows using lrz-test in |
| cases where fragment shader has kill/discard: |
| |
| 1) Disable lrz-write in cases where it is uncertain during |
| binning pass that a fragment will pass. Ie. if frag |
| shader has-kill, writes-z, or alpha/stencil test is |
| enabled. (For correctness, lrz-write must be disabled |
| when blend is enabled.) This is analogous to how a |
| z-prepass works. |
| |
| 2) Disable lrz-write and test if a depth-test direction |
| reversal is detected. Due to condition (1), the contents |
| of the lrz buffer are a conservative estimation of the |
| depth buffer during the draw pass. Meaning that geometry |
| that we know for certain will not be visible will not pass |
| lrz-test. But geometry which may be (or contributes to |
| blend) will pass the lrz-test. |
| |
| This allows us to keep early-lrz-test in cases where the frag |
| shader does not write-z (ie. we know the z-value before FS) |
| and does not have side-effects (image/ssbo writes, etc), but |
| does have kill/discard. Which turns out to be a common |
| enough case that it is useful to keep early-lrz test against |
| the conservative lrz buffer to discard fragments that we |
| know will definitely not be visible. |
| </doc> |
| <value value="0x2" name="A6XX_EARLY_LRZ_LATE_Z"/> |
| </enum> |
| |
| <domain name="A6XX" width="32"> |
| <bitset name="A6XX_RBBM_INT_0_MASK" inline="no"> |
| <bitfield name="RBBM_GPU_IDLE" pos="0"/> |
| <bitfield name="CP_AHB_ERROR" pos="1"/> |
| <bitfield name="RBBM_ATB_ASYNCFIFO_OVERFLOW" pos="6"/> |
| <bitfield name="RBBM_GPC_ERROR" pos="7"/> |
| <bitfield name="CP_SW" pos="8"/> |
| <bitfield name="CP_HW_ERROR" pos="9"/> |
| <bitfield name="CP_CCU_FLUSH_DEPTH_TS" pos="10"/> |
| <bitfield name="CP_CCU_FLUSH_COLOR_TS" pos="11"/> |
| <bitfield name="CP_CCU_RESOLVE_TS" pos="12"/> |
| <bitfield name="CP_IB2" pos="13"/> |
| <bitfield name="CP_IB1" pos="14"/> |
| <bitfield name="CP_RB" pos="15"/> |
| <bitfield name="CP_RB_DONE_TS" pos="17"/> |
| <bitfield name="CP_WT_DONE_TS" pos="18"/> |
| <bitfield name="CP_CACHE_FLUSH_TS" pos="20"/> |
| <bitfield name="RBBM_ATB_BUS_OVERFLOW" pos="22"/> |
| <bitfield name="RBBM_HANG_DETECT" pos="23"/> |
| <bitfield name="UCHE_OOB_ACCESS" pos="24"/> |
| <bitfield name="UCHE_TRAP_INTR" pos="25"/> |
| <bitfield name="DEBBUS_INTR_0" pos="26"/> |
| <bitfield name="DEBBUS_INTR_1" pos="27"/> |
| <bitfield name="ISDB_CPU_IRQ" pos="30"/> |
| <bitfield name="ISDB_UNDER_DEBUG" pos="31"/> |
| </bitset> |
| |
| <bitset name="A6XX_CP_INT"> |
| <bitfield name="CP_OPCODE_ERROR" pos="0"/> |
| <bitfield name="CP_UCODE_ERROR" pos="1"/> |
| <bitfield name="CP_HW_FAULT_ERROR" pos="2"/> |
| <bitfield name="CP_REGISTER_PROTECTION_ERROR" pos="4"/> |
| <bitfield name="CP_AHB_ERROR" pos="5"/> |
| <bitfield name="CP_VSD_PARITY_ERROR" pos="6"/> |
| <bitfield name="CP_ILLEGAL_INSTR_ERROR" pos="7"/> |
| </bitset> |
| |
| <reg32 offset="0x0800" name="CP_RB_BASE"/> |
| <reg32 offset="0x0801" name="CP_RB_BASE_HI"/> |
| <reg32 offset="0x0802" name="CP_RB_CNTL"/> |
| <reg32 offset="0x0804" name="CP_RB_RPTR_ADDR_LO"/> |
| <reg32 offset="0x0805" name="CP_RB_RPTR_ADDR_HI"/> |
| <reg32 offset="0x0806" name="CP_RB_RPTR"/> |
| <reg32 offset="0x0807" name="CP_RB_WPTR"/> |
| <reg32 offset="0x0808" name="CP_SQE_CNTL"/> |
| <reg32 offset="0x0812" name="CP_CP2GMU_STATUS"> |
| <bitfield name="IFPC" pos="0" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x0821" name="CP_HW_FAULT"/> |
| <reg32 offset="0x0823" name="CP_INTERRUPT_STATUS"/> |
| <reg32 offset="0x0824" name="CP_PROTECT_STATUS"/> |
| <reg32 offset="0x0830" name="CP_SQE_INSTR_BASE_LO"/> |
| <reg32 offset="0x0831" name="CP_SQE_INSTR_BASE_HI"/> |
| <reg32 offset="0x0840" name="CP_MISC_CNTL"/> |
| <reg32 offset="0x0844" name="CP_APRIV_CNTL"/> |
| <!-- all the threshold values seem to be in units of quad-dwords: --> |
| <reg32 offset="0x08C1" name="CP_ROQ_THRESHOLDS_1"> |
| <doc> |
| b0..7 seems to contain the size of buffered by not yet processed |
| RB level cmdstream.. it's possible that it is a low threshold |
| and b8..15 is a high threshold? |
| |
| b16..23 identifies where IB1 data starts (and RB data ends?) |
| |
| b24..31 identifies where IB2 data starts (and IB1 data ends) |
| </doc> |
| <bitfield name="RB_LO" low="0" high="7" shr="2"/> |
| <bitfield name="RB_HI" low="8" high="15" shr="2"/> |
| <bitfield name="IB1_START" low="16" high="23" shr="2"/> |
| <bitfield name="IB2_START" low="24" high="31" shr="2"/> |
| </reg32> |
| <reg32 offset="0x08C2" name="CP_ROQ_THRESHOLDS_2"> |
| <doc> |
| low bits identify where CP_SET_DRAW_STATE stateobj |
| processing starts (and IB2 data ends). I'm guessing |
| b8 is part of this since (from downstream kgsl): |
| |
| /* ROQ sizes are twice as big on a640/a680 than on a630 */ |
| if (adreno_is_a640(adreno_dev) || adreno_is_a680(adreno_dev)) { |
| kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_2, 0x02000140); |
| kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_1, 0x8040362C); |
| } ... |
| </doc> |
| <bitfield name="SDS_START" low="0" high="8" shr="2"/> |
| <!-- total ROQ size: --> |
| <bitfield name="ROQ_SIZE" low="16" high="31" shr="2"/> |
| </reg32> |
| <reg32 offset="0x08C3" name="CP_MEM_POOL_SIZE"/> |
| <reg32 offset="0x0841" name="CP_CHICKEN_DBG"/> |
| <reg32 offset="0x0842" name="CP_ADDR_MODE_CNTL"/> |
| <reg32 offset="0x0843" name="CP_DBG_ECO_CNTL"/> |
| <reg32 offset="0x084F" name="CP_PROTECT_CNTL"/> |
| |
| <array offset="0x0883" name="CP_SCRATCH" stride="1" length="8"> |
| <reg32 offset="0x0" name="REG" type="uint"/> |
| </array> |
| <array offset="0x0850" name="CP_PROTECT" stride="1" length="32"> |
| <reg32 offset="0x0" name="REG" type="a6x_cp_protect"/> |
| </array> |
| |
| <reg32 offset="0x08A0" name="CP_CONTEXT_SWITCH_CNTL"/> |
| <reg32 offset="0x08A1" name="CP_CONTEXT_SWITCH_SMMU_INFO_LO"/> |
| <reg32 offset="0x08A2" name="CP_CONTEXT_SWITCH_SMMU_INFO_HI"/> |
| <reg32 offset="0x08A3" name="CP_CONTEXT_SWITCH_PRIV_NON_SECURE_RESTORE_ADDR_LO"/> |
| <reg32 offset="0x08A4" name="CP_CONTEXT_SWITCH_PRIV_NON_SECURE_RESTORE_ADDR_HI"/> |
| <reg32 offset="0x08A5" name="CP_CONTEXT_SWITCH_PRIV_SECURE_RESTORE_ADDR_LO"/> |
| <reg32 offset="0x08A6" name="CP_CONTEXT_SWITCH_PRIV_SECURE_RESTORE_ADDR_HI"/> |
| <reg32 offset="0x08A7" name="CP_CONTEXT_SWITCH_NON_PRIV_RESTORE_ADDR_LO"/> |
| <reg32 offset="0x08A8" name="CP_CONTEXT_SWITCH_NON_PRIV_RESTORE_ADDR_HI"/> |
| <reg32 offset="0x08D0" name="CP_PERFCTR_CP_SEL_0"/> |
| <reg32 offset="0x08D1" name="CP_PERFCTR_CP_SEL_1"/> |
| <reg32 offset="0x08D2" name="CP_PERFCTR_CP_SEL_2"/> |
| <reg32 offset="0x08D3" name="CP_PERFCTR_CP_SEL_3"/> |
| <reg32 offset="0x08D4" name="CP_PERFCTR_CP_SEL_4"/> |
| <reg32 offset="0x08D5" name="CP_PERFCTR_CP_SEL_5"/> |
| <reg32 offset="0x08D6" name="CP_PERFCTR_CP_SEL_6"/> |
| <reg32 offset="0x08D7" name="CP_PERFCTR_CP_SEL_7"/> |
| <reg32 offset="0x08D8" name="CP_PERFCTR_CP_SEL_8"/> |
| <reg32 offset="0x08D9" name="CP_PERFCTR_CP_SEL_9"/> |
| <reg32 offset="0x08DA" name="CP_PERFCTR_CP_SEL_10"/> |
| <reg32 offset="0x08DB" name="CP_PERFCTR_CP_SEL_11"/> |
| <reg32 offset="0x08DC" name="CP_PERFCTR_CP_SEL_12"/> |
| <reg32 offset="0x08DD" name="CP_PERFCTR_CP_SEL_13"/> |
| <reg32 offset="0x0900" name="CP_CRASH_SCRIPT_BASE_LO"/> |
| <reg32 offset="0x0901" name="CP_CRASH_SCRIPT_BASE_HI"/> |
| <reg32 offset="0x0902" name="CP_CRASH_DUMP_CNTL"/> |
| <reg32 offset="0x0903" name="CP_CRASH_DUMP_STATUS"/> |
| <reg32 offset="0x0908" name="CP_SQE_STAT_ADDR"/> |
| <reg32 offset="0x0909" name="CP_SQE_STAT_DATA"/> |
| <reg32 offset="0x090A" name="CP_DRAW_STATE_ADDR"/> |
| <reg32 offset="0x090B" name="CP_DRAW_STATE_DATA"/> |
| <reg32 offset="0x090C" name="CP_ROQ_DBG_ADDR"/> |
| <reg32 offset="0x090D" name="CP_ROQ_DBG_DATA"/> |
| <reg32 offset="0x090E" name="CP_MEM_POOL_DBG_ADDR"/> |
| <reg32 offset="0x090F" name="CP_MEM_POOL_DBG_DATA"/> |
| <reg32 offset="0x0910" name="CP_SQE_UCODE_DBG_ADDR"/> |
| <reg32 offset="0x0911" name="CP_SQE_UCODE_DBG_DATA"/> |
| <reg32 offset="0x0928" name="CP_IB1_BASE"/> |
| <reg32 offset="0x0929" name="CP_IB1_BASE_HI"/> |
| <reg32 offset="0x092A" name="CP_IB1_REM_SIZE"/> |
| <reg32 offset="0x092B" name="CP_IB2_BASE"/> |
| <reg32 offset="0x092C" name="CP_IB2_BASE_HI"/> |
| <reg32 offset="0x092D" name="CP_IB2_REM_SIZE"/> |
| <!-- SDS == CP_SET_DRAW_STATE: --> |
| <reg32 offset="0x092e" name="CP_SDS_BASE"/> |
| <reg32 offset="0x092f" name="CP_SDS_BASE_HI"/> |
| <reg32 offset="0x092e" name="CP_SDS_REM_SIZE"/> |
| <reg32 offset="0x0931" name="CP_BIN_SIZE_ADDRESS"/> |
| <reg32 offset="0x0932" name="CP_BIN_SIZE_ADDRESS_HI"/> |
| <reg32 offset="0x0934" name="CP_BIN_DATA_ADDR"/> |
| <reg32 offset="0x0935" name="CP_BIN_DATA_ADDR_HI"/> |
| <!-- |
| There are probably similar registers for RB and SDS, teasing out SDS will |
| take a slightly better test case.. |
| --> |
| <reg32 offset="0x0949" name="CP_CSQ_IB1_STAT"> |
| <doc>number of remaining dwords incl current dword being consumed?</doc> |
| <bitfield name="REM" low="16" high="31"/> |
| </reg32> |
| <reg32 offset="0x094a" name="CP_CSQ_IB2_STAT"> |
| <doc>number of remaining dwords incl current dword being consumed?</doc> |
| <bitfield name="REM" low="16" high="31"/> |
| </reg32> |
| <reg32 offset="0x0980" name="CP_ALWAYS_ON_COUNTER_LO"/> |
| <reg32 offset="0x0981" name="CP_ALWAYS_ON_COUNTER_HI"/> |
| <reg32 offset="0x098D" name="CP_AHB_CNTL"/> |
| <reg32 offset="0x0A00" name="CP_APERTURE_CNTL_HOST"/> |
| <reg32 offset="0x0A03" name="CP_APERTURE_CNTL_CD"/> |
| <reg32 offset="0x0C01" name="VSC_ADDR_MODE_CNTL"/> |
| <reg32 offset="0x0201" name="RBBM_INT_0_STATUS" type="A6XX_RBBM_INT_0_MASK"/> |
| <reg32 offset="0x0210" name="RBBM_STATUS"> |
| <bitfield high="23" low="23" name="GPU_BUSY_IGN_AHB" /> |
| <bitfield high="22" low="22" name="GPU_BUSY_IGN_AHB_CP" /> |
| <bitfield high="21" low="21" name="HLSQ_BUSY" /> |
| <bitfield high="20" low="20" name="VSC_BUSY" /> |
| <bitfield high="19" low="19" name="TPL1_BUSY" /> |
| <bitfield high="18" low="18" name="SP_BUSY" /> |
| <bitfield high="17" low="17" name="UCHE_BUSY" /> |
| <bitfield high="16" low="16" name="VPC_BUSY" /> |
| <bitfield high="15" low="15" name="VFD_BUSY" /> |
| <bitfield high="14" low="14" name="TESS_BUSY" /> |
| <bitfield high="13" low="13" name="PC_VSD_BUSY" /> |
| <bitfield high="12" low="12" name="PC_DCALL_BUSY" /> |
| <bitfield high="11" low="11" name="COM_DCOM_BUSY" /> |
| <bitfield high="10" low="10" name="LRZ_BUSY" /> |
| <bitfield high="9" low="9" name="A2D_BUSY" /> |
| <bitfield high="8" low="8" name="CCU_BUSY" /> |
| <bitfield high="7" low="7" name="RB_BUSY" /> |
| <bitfield high="6" low="6" name="RAS_BUSY" /> |
| <bitfield high="5" low="5" name="TSE_BUSY" /> |
| <bitfield high="4" low="4" name="VBIF_BUSY" /> |
| <bitfield high="3" low="3" name="GFX_DBGC_BUSY" /> |
| <bitfield high="2" low="2" name="CP_BUSY" /> |
| <bitfield high="1" low="1" name="CP_AHB_BUSY_CP_MASTER" /> |
| <bitfield high="0" low="0" name="CP_AHB_BUSY_CX_MASTER"/> |
| </reg32> |
| <reg32 offset="0x0213" name="RBBM_STATUS3"> |
| <bitfield pos="24" name="SMMU_STALLED_ON_FAULT" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x0215" name="RBBM_VBIF_GX_RESET_STATUS"/> |
| <reg32 offset="0x0400" name="RBBM_PERFCTR_CP_0_LO"/> |
| <reg32 offset="0x0401" name="RBBM_PERFCTR_CP_0_HI"/> |
| <reg32 offset="0x0402" name="RBBM_PERFCTR_CP_1_LO"/> |
| <reg32 offset="0x0403" name="RBBM_PERFCTR_CP_1_HI"/> |
| <reg32 offset="0x0404" name="RBBM_PERFCTR_CP_2_LO"/> |
| <reg32 offset="0x0405" name="RBBM_PERFCTR_CP_2_HI"/> |
| <reg32 offset="0x0406" name="RBBM_PERFCTR_CP_3_LO"/> |
| <reg32 offset="0x0407" name="RBBM_PERFCTR_CP_3_HI"/> |
| <reg32 offset="0x0408" name="RBBM_PERFCTR_CP_4_LO"/> |
| <reg32 offset="0x0409" name="RBBM_PERFCTR_CP_4_HI"/> |
| <reg32 offset="0x040a" name="RBBM_PERFCTR_CP_5_LO"/> |
| <reg32 offset="0x040b" name="RBBM_PERFCTR_CP_5_HI"/> |
| <reg32 offset="0x040c" name="RBBM_PERFCTR_CP_6_LO"/> |
| <reg32 offset="0x040d" name="RBBM_PERFCTR_CP_6_HI"/> |
| <reg32 offset="0x040e" name="RBBM_PERFCTR_CP_7_LO"/> |
| <reg32 offset="0x040f" name="RBBM_PERFCTR_CP_7_HI"/> |
| <reg32 offset="0x0410" name="RBBM_PERFCTR_CP_8_LO"/> |
| <reg32 offset="0x0411" name="RBBM_PERFCTR_CP_8_HI"/> |
| <reg32 offset="0x0412" name="RBBM_PERFCTR_CP_9_LO"/> |
| <reg32 offset="0x0413" name="RBBM_PERFCTR_CP_9_HI"/> |
| <reg32 offset="0x0414" name="RBBM_PERFCTR_CP_10_LO"/> |
| <reg32 offset="0x0415" name="RBBM_PERFCTR_CP_10_HI"/> |
| <reg32 offset="0x0416" name="RBBM_PERFCTR_CP_11_LO"/> |
| <reg32 offset="0x0417" name="RBBM_PERFCTR_CP_11_HI"/> |
| <reg32 offset="0x0418" name="RBBM_PERFCTR_CP_12_LO"/> |
| <reg32 offset="0x0419" name="RBBM_PERFCTR_CP_12_HI"/> |
| <reg32 offset="0x041a" name="RBBM_PERFCTR_CP_13_LO"/> |
| <reg32 offset="0x041b" name="RBBM_PERFCTR_CP_13_HI"/> |
| <reg32 offset="0x041c" name="RBBM_PERFCTR_RBBM_0_LO"/> |
| <reg32 offset="0x041d" name="RBBM_PERFCTR_RBBM_0_HI"/> |
| <reg32 offset="0x041e" name="RBBM_PERFCTR_RBBM_1_LO"/> |
| <reg32 offset="0x041f" name="RBBM_PERFCTR_RBBM_1_HI"/> |
| <reg32 offset="0x0420" name="RBBM_PERFCTR_RBBM_2_LO"/> |
| <reg32 offset="0x0421" name="RBBM_PERFCTR_RBBM_2_HI"/> |
| <reg32 offset="0x0422" name="RBBM_PERFCTR_RBBM_3_LO"/> |
| <reg32 offset="0x0423" name="RBBM_PERFCTR_RBBM_3_HI"/> |
| <reg32 offset="0x0424" name="RBBM_PERFCTR_PC_0_LO"/> |
| <reg32 offset="0x0425" name="RBBM_PERFCTR_PC_0_HI"/> |
| <reg32 offset="0x0426" name="RBBM_PERFCTR_PC_1_LO"/> |
| <reg32 offset="0x0427" name="RBBM_PERFCTR_PC_1_HI"/> |
| <reg32 offset="0x0428" name="RBBM_PERFCTR_PC_2_LO"/> |
| <reg32 offset="0x0429" name="RBBM_PERFCTR_PC_2_HI"/> |
| <reg32 offset="0x042a" name="RBBM_PERFCTR_PC_3_LO"/> |
| <reg32 offset="0x042b" name="RBBM_PERFCTR_PC_3_HI"/> |
| <reg32 offset="0x042c" name="RBBM_PERFCTR_PC_4_LO"/> |
| <reg32 offset="0x042d" name="RBBM_PERFCTR_PC_4_HI"/> |
| <reg32 offset="0x042e" name="RBBM_PERFCTR_PC_5_LO"/> |
| <reg32 offset="0x042f" name="RBBM_PERFCTR_PC_5_HI"/> |
| <reg32 offset="0x0430" name="RBBM_PERFCTR_PC_6_LO"/> |
| <reg32 offset="0x0431" name="RBBM_PERFCTR_PC_6_HI"/> |
| <reg32 offset="0x0432" name="RBBM_PERFCTR_PC_7_LO"/> |
| <reg32 offset="0x0433" name="RBBM_PERFCTR_PC_7_HI"/> |
| <reg32 offset="0x0434" name="RBBM_PERFCTR_VFD_0_LO"/> |
| <reg32 offset="0x0435" name="RBBM_PERFCTR_VFD_0_HI"/> |
| <reg32 offset="0x0436" name="RBBM_PERFCTR_VFD_1_LO"/> |
| <reg32 offset="0x0437" name="RBBM_PERFCTR_VFD_1_HI"/> |
| <reg32 offset="0x0438" name="RBBM_PERFCTR_VFD_2_LO"/> |
| <reg32 offset="0x0439" name="RBBM_PERFCTR_VFD_2_HI"/> |
| <reg32 offset="0x043a" name="RBBM_PERFCTR_VFD_3_LO"/> |
| <reg32 offset="0x043b" name="RBBM_PERFCTR_VFD_3_HI"/> |
| <reg32 offset="0x043c" name="RBBM_PERFCTR_VFD_4_LO"/> |
| <reg32 offset="0x043d" name="RBBM_PERFCTR_VFD_4_HI"/> |
| <reg32 offset="0x043e" name="RBBM_PERFCTR_VFD_5_LO"/> |
| <reg32 offset="0x043f" name="RBBM_PERFCTR_VFD_5_HI"/> |
| <reg32 offset="0x0440" name="RBBM_PERFCTR_VFD_6_LO"/> |
| <reg32 offset="0x0441" name="RBBM_PERFCTR_VFD_6_HI"/> |
| <reg32 offset="0x0442" name="RBBM_PERFCTR_VFD_7_LO"/> |
| <reg32 offset="0x0443" name="RBBM_PERFCTR_VFD_7_HI"/> |
| <reg32 offset="0x0444" name="RBBM_PERFCTR_HLSQ_0_LO"/> |
| <reg32 offset="0x0445" name="RBBM_PERFCTR_HLSQ_0_HI"/> |
| <reg32 offset="0x0446" name="RBBM_PERFCTR_HLSQ_1_LO"/> |
| <reg32 offset="0x0447" name="RBBM_PERFCTR_HLSQ_1_HI"/> |
| <reg32 offset="0x0448" name="RBBM_PERFCTR_HLSQ_2_LO"/> |
| <reg32 offset="0x0449" name="RBBM_PERFCTR_HLSQ_2_HI"/> |
| <reg32 offset="0x044a" name="RBBM_PERFCTR_HLSQ_3_LO"/> |
| <reg32 offset="0x044b" name="RBBM_PERFCTR_HLSQ_3_HI"/> |
| <reg32 offset="0x044c" name="RBBM_PERFCTR_HLSQ_4_LO"/> |
| <reg32 offset="0x044d" name="RBBM_PERFCTR_HLSQ_4_HI"/> |
| <reg32 offset="0x044e" name="RBBM_PERFCTR_HLSQ_5_LO"/> |
| <reg32 offset="0x044f" name="RBBM_PERFCTR_HLSQ_5_HI"/> |
| <reg32 offset="0x0450" name="RBBM_PERFCTR_VPC_0_LO"/> |
| <reg32 offset="0x0451" name="RBBM_PERFCTR_VPC_0_HI"/> |
| <reg32 offset="0x0452" name="RBBM_PERFCTR_VPC_1_LO"/> |
| <reg32 offset="0x0453" name="RBBM_PERFCTR_VPC_1_HI"/> |
| <reg32 offset="0x0454" name="RBBM_PERFCTR_VPC_2_LO"/> |
| <reg32 offset="0x0455" name="RBBM_PERFCTR_VPC_2_HI"/> |
| <reg32 offset="0x0456" name="RBBM_PERFCTR_VPC_3_LO"/> |
| <reg32 offset="0x0457" name="RBBM_PERFCTR_VPC_3_HI"/> |
| <reg32 offset="0x0458" name="RBBM_PERFCTR_VPC_4_LO"/> |
| <reg32 offset="0x0459" name="RBBM_PERFCTR_VPC_4_HI"/> |
| <reg32 offset="0x045a" name="RBBM_PERFCTR_VPC_5_LO"/> |
| <reg32 offset="0x045b" name="RBBM_PERFCTR_VPC_5_HI"/> |
| <reg32 offset="0x045c" name="RBBM_PERFCTR_CCU_0_LO"/> |
| <reg32 offset="0x045d" name="RBBM_PERFCTR_CCU_0_HI"/> |
| <reg32 offset="0x045e" name="RBBM_PERFCTR_CCU_1_LO"/> |
| <reg32 offset="0x045f" name="RBBM_PERFCTR_CCU_1_HI"/> |
| <reg32 offset="0x0460" name="RBBM_PERFCTR_CCU_2_LO"/> |
| <reg32 offset="0x0461" name="RBBM_PERFCTR_CCU_2_HI"/> |
| <reg32 offset="0x0462" name="RBBM_PERFCTR_CCU_3_LO"/> |
| <reg32 offset="0x0463" name="RBBM_PERFCTR_CCU_3_HI"/> |
| <reg32 offset="0x0464" name="RBBM_PERFCTR_CCU_4_LO"/> |
| <reg32 offset="0x0465" name="RBBM_PERFCTR_CCU_4_HI"/> |
| <reg32 offset="0x0466" name="RBBM_PERFCTR_TSE_0_LO"/> |
| <reg32 offset="0x0467" name="RBBM_PERFCTR_TSE_0_HI"/> |
| <reg32 offset="0x0468" name="RBBM_PERFCTR_TSE_1_LO"/> |
| <reg32 offset="0x0469" name="RBBM_PERFCTR_TSE_1_HI"/> |
| <reg32 offset="0x046a" name="RBBM_PERFCTR_TSE_2_LO"/> |
| <reg32 offset="0x046b" name="RBBM_PERFCTR_TSE_2_HI"/> |
| <reg32 offset="0x046c" name="RBBM_PERFCTR_TSE_3_LO"/> |
| <reg32 offset="0x046d" name="RBBM_PERFCTR_TSE_3_HI"/> |
| <reg32 offset="0x046e" name="RBBM_PERFCTR_RAS_0_LO"/> |
| <reg32 offset="0x046f" name="RBBM_PERFCTR_RAS_0_HI"/> |
| <reg32 offset="0x0470" name="RBBM_PERFCTR_RAS_1_LO"/> |
| <reg32 offset="0x0471" name="RBBM_PERFCTR_RAS_1_HI"/> |
| <reg32 offset="0x0472" name="RBBM_PERFCTR_RAS_2_LO"/> |
| <reg32 offset="0x0473" name="RBBM_PERFCTR_RAS_2_HI"/> |
| <reg32 offset="0x0474" name="RBBM_PERFCTR_RAS_3_LO"/> |
| <reg32 offset="0x0475" name="RBBM_PERFCTR_RAS_3_HI"/> |
| <reg32 offset="0x0476" name="RBBM_PERFCTR_UCHE_0_LO"/> |
| <reg32 offset="0x0477" name="RBBM_PERFCTR_UCHE_0_HI"/> |
| <reg32 offset="0x0478" name="RBBM_PERFCTR_UCHE_1_LO"/> |
| <reg32 offset="0x0479" name="RBBM_PERFCTR_UCHE_1_HI"/> |
| <reg32 offset="0x047a" name="RBBM_PERFCTR_UCHE_2_LO"/> |
| <reg32 offset="0x047b" name="RBBM_PERFCTR_UCHE_2_HI"/> |
| <reg32 offset="0x047c" name="RBBM_PERFCTR_UCHE_3_LO"/> |
| <reg32 offset="0x047d" name="RBBM_PERFCTR_UCHE_3_HI"/> |
| <reg32 offset="0x047e" name="RBBM_PERFCTR_UCHE_4_LO"/> |
| <reg32 offset="0x047f" name="RBBM_PERFCTR_UCHE_4_HI"/> |
| <reg32 offset="0x0480" name="RBBM_PERFCTR_UCHE_5_LO"/> |
| <reg32 offset="0x0481" name="RBBM_PERFCTR_UCHE_5_HI"/> |
| <reg32 offset="0x0482" name="RBBM_PERFCTR_UCHE_6_LO"/> |
| <reg32 offset="0x0483" name="RBBM_PERFCTR_UCHE_6_HI"/> |
| <reg32 offset="0x0484" name="RBBM_PERFCTR_UCHE_7_LO"/> |
| <reg32 offset="0x0485" name="RBBM_PERFCTR_UCHE_7_HI"/> |
| <reg32 offset="0x0486" name="RBBM_PERFCTR_UCHE_8_LO"/> |
| <reg32 offset="0x0487" name="RBBM_PERFCTR_UCHE_8_HI"/> |
| <reg32 offset="0x0488" name="RBBM_PERFCTR_UCHE_9_LO"/> |
| <reg32 offset="0x0489" name="RBBM_PERFCTR_UCHE_9_HI"/> |
| <reg32 offset="0x048a" name="RBBM_PERFCTR_UCHE_10_LO"/> |
| <reg32 offset="0x048b" name="RBBM_PERFCTR_UCHE_10_HI"/> |
| <reg32 offset="0x048c" name="RBBM_PERFCTR_UCHE_11_LO"/> |
| <reg32 offset="0x048d" name="RBBM_PERFCTR_UCHE_11_HI"/> |
| <reg32 offset="0x048e" name="RBBM_PERFCTR_TP_0_LO"/> |
| <reg32 offset="0x048f" name="RBBM_PERFCTR_TP_0_HI"/> |
| <reg32 offset="0x0490" name="RBBM_PERFCTR_TP_1_LO"/> |
| <reg32 offset="0x0491" name="RBBM_PERFCTR_TP_1_HI"/> |
| <reg32 offset="0x0492" name="RBBM_PERFCTR_TP_2_LO"/> |
| <reg32 offset="0x0493" name="RBBM_PERFCTR_TP_2_HI"/> |
| <reg32 offset="0x0494" name="RBBM_PERFCTR_TP_3_LO"/> |
| <reg32 offset="0x0495" name="RBBM_PERFCTR_TP_3_HI"/> |
| <reg32 offset="0x0496" name="RBBM_PERFCTR_TP_4_LO"/> |
| <reg32 offset="0x0497" name="RBBM_PERFCTR_TP_4_HI"/> |
| <reg32 offset="0x0498" name="RBBM_PERFCTR_TP_5_LO"/> |
| <reg32 offset="0x0499" name="RBBM_PERFCTR_TP_5_HI"/> |
| <reg32 offset="0x049a" name="RBBM_PERFCTR_TP_6_LO"/> |
| <reg32 offset="0x049b" name="RBBM_PERFCTR_TP_6_HI"/> |
| <reg32 offset="0x049c" name="RBBM_PERFCTR_TP_7_LO"/> |
| <reg32 offset="0x049d" name="RBBM_PERFCTR_TP_7_HI"/> |
| <reg32 offset="0x049e" name="RBBM_PERFCTR_TP_8_LO"/> |
| <reg32 offset="0x049f" name="RBBM_PERFCTR_TP_8_HI"/> |
| <reg32 offset="0x04a0" name="RBBM_PERFCTR_TP_9_LO"/> |
| <reg32 offset="0x04a1" name="RBBM_PERFCTR_TP_9_HI"/> |
| <reg32 offset="0x04a2" name="RBBM_PERFCTR_TP_10_LO"/> |
| <reg32 offset="0x04a3" name="RBBM_PERFCTR_TP_10_HI"/> |
| <reg32 offset="0x04a4" name="RBBM_PERFCTR_TP_11_LO"/> |
| <reg32 offset="0x04a5" name="RBBM_PERFCTR_TP_11_HI"/> |
| <reg32 offset="0x04a6" name="RBBM_PERFCTR_SP_0_LO"/> |
| <reg32 offset="0x04a7" name="RBBM_PERFCTR_SP_0_HI"/> |
| <reg32 offset="0x04a8" name="RBBM_PERFCTR_SP_1_LO"/> |
| <reg32 offset="0x04a9" name="RBBM_PERFCTR_SP_1_HI"/> |
| <reg32 offset="0x04aa" name="RBBM_PERFCTR_SP_2_LO"/> |
| <reg32 offset="0x04ab" name="RBBM_PERFCTR_SP_2_HI"/> |
| <reg32 offset="0x04ac" name="RBBM_PERFCTR_SP_3_LO"/> |
| <reg32 offset="0x04ad" name="RBBM_PERFCTR_SP_3_HI"/> |
| <reg32 offset="0x04ae" name="RBBM_PERFCTR_SP_4_LO"/> |
| <reg32 offset="0x04af" name="RBBM_PERFCTR_SP_4_HI"/> |
| <reg32 offset="0x04b0" name="RBBM_PERFCTR_SP_5_LO"/> |
| <reg32 offset="0x04b1" name="RBBM_PERFCTR_SP_5_HI"/> |
| <reg32 offset="0x04b2" name="RBBM_PERFCTR_SP_6_LO"/> |
| <reg32 offset="0x04b3" name="RBBM_PERFCTR_SP_6_HI"/> |
| <reg32 offset="0x04b4" name="RBBM_PERFCTR_SP_7_LO"/> |
| <reg32 offset="0x04b5" name="RBBM_PERFCTR_SP_7_HI"/> |
| <reg32 offset="0x04b6" name="RBBM_PERFCTR_SP_8_LO"/> |
| <reg32 offset="0x04b7" name="RBBM_PERFCTR_SP_8_HI"/> |
| <reg32 offset="0x04b8" name="RBBM_PERFCTR_SP_9_LO"/> |
| <reg32 offset="0x04b9" name="RBBM_PERFCTR_SP_9_HI"/> |
| <reg32 offset="0x04ba" name="RBBM_PERFCTR_SP_10_LO"/> |
| <reg32 offset="0x04bb" name="RBBM_PERFCTR_SP_10_HI"/> |
| <reg32 offset="0x04bc" name="RBBM_PERFCTR_SP_11_LO"/> |
| <reg32 offset="0x04bd" name="RBBM_PERFCTR_SP_11_HI"/> |
| <reg32 offset="0x04be" name="RBBM_PERFCTR_SP_12_LO"/> |
| <reg32 offset="0x04bf" name="RBBM_PERFCTR_SP_12_HI"/> |
| <reg32 offset="0x04c0" name="RBBM_PERFCTR_SP_13_LO"/> |
| <reg32 offset="0x04c1" name="RBBM_PERFCTR_SP_13_HI"/> |
| <reg32 offset="0x04c2" name="RBBM_PERFCTR_SP_14_LO"/> |
| <reg32 offset="0x04c3" name="RBBM_PERFCTR_SP_14_HI"/> |
| <reg32 offset="0x04c4" name="RBBM_PERFCTR_SP_15_LO"/> |
| <reg32 offset="0x04c5" name="RBBM_PERFCTR_SP_15_HI"/> |
| <reg32 offset="0x04c6" name="RBBM_PERFCTR_SP_16_LO"/> |
| <reg32 offset="0x04c7" name="RBBM_PERFCTR_SP_16_HI"/> |
| <reg32 offset="0x04c8" name="RBBM_PERFCTR_SP_17_LO"/> |
| <reg32 offset="0x04c9" name="RBBM_PERFCTR_SP_17_HI"/> |
| <reg32 offset="0x04ca" name="RBBM_PERFCTR_SP_18_LO"/> |
| <reg32 offset="0x04cb" name="RBBM_PERFCTR_SP_18_HI"/> |
| <reg32 offset="0x04cc" name="RBBM_PERFCTR_SP_19_LO"/> |
| <reg32 offset="0x04cd" name="RBBM_PERFCTR_SP_19_HI"/> |
| <reg32 offset="0x04ce" name="RBBM_PERFCTR_SP_20_LO"/> |
| <reg32 offset="0x04cf" name="RBBM_PERFCTR_SP_20_HI"/> |
| <reg32 offset="0x04d0" name="RBBM_PERFCTR_SP_21_LO"/> |
| <reg32 offset="0x04d1" name="RBBM_PERFCTR_SP_21_HI"/> |
| <reg32 offset="0x04d2" name="RBBM_PERFCTR_SP_22_LO"/> |
| <reg32 offset="0x04d3" name="RBBM_PERFCTR_SP_22_HI"/> |
| <reg32 offset="0x04d4" name="RBBM_PERFCTR_SP_23_LO"/> |
| <reg32 offset="0x04d5" name="RBBM_PERFCTR_SP_23_HI"/> |
| <reg32 offset="0x04d6" name="RBBM_PERFCTR_RB_0_LO"/> |
| <reg32 offset="0x04d7" name="RBBM_PERFCTR_RB_0_HI"/> |
| <reg32 offset="0x04d8" name="RBBM_PERFCTR_RB_1_LO"/> |
| <reg32 offset="0x04d9" name="RBBM_PERFCTR_RB_1_HI"/> |
| <reg32 offset="0x04da" name="RBBM_PERFCTR_RB_2_LO"/> |
| <reg32 offset="0x04db" name="RBBM_PERFCTR_RB_2_HI"/> |
| <reg32 offset="0x04dc" name="RBBM_PERFCTR_RB_3_LO"/> |
| <reg32 offset="0x04dd" name="RBBM_PERFCTR_RB_3_HI"/> |
| <reg32 offset="0x04de" name="RBBM_PERFCTR_RB_4_LO"/> |
| <reg32 offset="0x04df" name="RBBM_PERFCTR_RB_4_HI"/> |
| <reg32 offset="0x04e0" name="RBBM_PERFCTR_RB_5_LO"/> |
| <reg32 offset="0x04e1" name="RBBM_PERFCTR_RB_5_HI"/> |
| <reg32 offset="0x04e2" name="RBBM_PERFCTR_RB_6_LO"/> |
| <reg32 offset="0x04e3" name="RBBM_PERFCTR_RB_6_HI"/> |
| <reg32 offset="0x04e4" name="RBBM_PERFCTR_RB_7_LO"/> |
| <reg32 offset="0x04e5" name="RBBM_PERFCTR_RB_7_HI"/> |
| <reg32 offset="0x04e6" name="RBBM_PERFCTR_VSC_0_LO"/> |
| <reg32 offset="0x04e7" name="RBBM_PERFCTR_VSC_0_HI"/> |
| <reg32 offset="0x04e8" name="RBBM_PERFCTR_VSC_1_LO"/> |
| <reg32 offset="0x04e9" name="RBBM_PERFCTR_VSC_1_HI"/> |
| <reg32 offset="0x04ea" name="RBBM_PERFCTR_LRZ_0_LO"/> |
| <reg32 offset="0x04eb" name="RBBM_PERFCTR_LRZ_0_HI"/> |
| <reg32 offset="0x04ec" name="RBBM_PERFCTR_LRZ_1_LO"/> |
| <reg32 offset="0x04ed" name="RBBM_PERFCTR_LRZ_1_HI"/> |
| <reg32 offset="0x04ee" name="RBBM_PERFCTR_LRZ_2_LO"/> |
| <reg32 offset="0x04ef" name="RBBM_PERFCTR_LRZ_2_HI"/> |
| <reg32 offset="0x04f0" name="RBBM_PERFCTR_LRZ_3_LO"/> |
| <reg32 offset="0x04f1" name="RBBM_PERFCTR_LRZ_3_HI"/> |
| <reg32 offset="0x04f2" name="RBBM_PERFCTR_CMP_0_LO"/> |
| <reg32 offset="0x04f3" name="RBBM_PERFCTR_CMP_0_HI"/> |
| <reg32 offset="0x04f4" name="RBBM_PERFCTR_CMP_1_LO"/> |
| <reg32 offset="0x04f5" name="RBBM_PERFCTR_CMP_1_HI"/> |
| <reg32 offset="0x04f6" name="RBBM_PERFCTR_CMP_2_LO"/> |
| <reg32 offset="0x04f7" name="RBBM_PERFCTR_CMP_2_HI"/> |
| <reg32 offset="0x04f8" name="RBBM_PERFCTR_CMP_3_LO"/> |
| <reg32 offset="0x04f9" name="RBBM_PERFCTR_CMP_3_HI"/> |
| <reg32 offset="0x0500" name="RBBM_PERFCTR_CNTL"/> |
| <reg32 offset="0x0501" name="RBBM_PERFCTR_LOAD_CMD0"/> |
| <reg32 offset="0x0502" name="RBBM_PERFCTR_LOAD_CMD1"/> |
| <reg32 offset="0x0503" name="RBBM_PERFCTR_LOAD_CMD2"/> |
| <reg32 offset="0x0504" name="RBBM_PERFCTR_LOAD_CMD3"/> |
| <reg32 offset="0x0505" name="RBBM_PERFCTR_LOAD_VALUE_LO"/> |
| <reg32 offset="0x0506" name="RBBM_PERFCTR_LOAD_VALUE_HI"/> |
| <reg32 offset="0x0507" name="RBBM_PERFCTR_RBBM_SEL_0"/> |
| <reg32 offset="0x0508" name="RBBM_PERFCTR_RBBM_SEL_1"/> |
| <reg32 offset="0x0509" name="RBBM_PERFCTR_RBBM_SEL_2"/> |
| <reg32 offset="0x050A" name="RBBM_PERFCTR_RBBM_SEL_3"/> |
| <reg32 offset="0x050B" name="RBBM_PERFCTR_GPU_BUSY_MASKED"/> |
| <reg32 offset="0x0533" name="RBBM_ISDB_CNT"/> |
| |
| <!--- |
| This block of registers aren't tied to perf counters. They |
| count various geometry stats, for example number of |
| vertices in, number of primnitives assembled etc. |
| --> |
| |
| <reg32 offset="0x0540" name="RBBM_PRIMCTR_0_LO"/> <!-- vs vertices in --> |
| <reg32 offset="0x0541" name="RBBM_PRIMCTR_0_HI"/> |
| <reg32 offset="0x0542" name="RBBM_PRIMCTR_1_LO"/> <!-- vs primitives out --> |
| <reg32 offset="0x0543" name="RBBM_PRIMCTR_1_HI"/> |
| <reg32 offset="0x0544" name="RBBM_PRIMCTR_2_LO"/> <!-- hs vertices in --> |
| <reg32 offset="0x0545" name="RBBM_PRIMCTR_2_HI"/> |
| <reg32 offset="0x0546" name="RBBM_PRIMCTR_3_LO"/> <!-- hs patches out --> |
| <reg32 offset="0x0547" name="RBBM_PRIMCTR_3_HI"/> |
| <reg32 offset="0x0548" name="RBBM_PRIMCTR_4_LO"/> <!-- dss vertices in --> |
| <reg32 offset="0x0549" name="RBBM_PRIMCTR_4_HI"/> |
| <reg32 offset="0x054a" name="RBBM_PRIMCTR_5_LO"/> <!-- ds primitives out --> |
| <reg32 offset="0x054b" name="RBBM_PRIMCTR_5_HI"/> |
| <reg32 offset="0x054c" name="RBBM_PRIMCTR_6_LO"/> <!-- gs primitives in --> |
| <reg32 offset="0x054d" name="RBBM_PRIMCTR_6_HI"/> |
| <reg32 offset="0x054e" name="RBBM_PRIMCTR_7_LO"/> <!-- gs primitives out --> |
| <reg32 offset="0x054f" name="RBBM_PRIMCTR_7_HI"/> |
| <reg32 offset="0x0550" name="RBBM_PRIMCTR_8_LO"/> <!-- gs primitives out --> |
| <reg32 offset="0x0551" name="RBBM_PRIMCTR_8_HI"/> |
| <reg32 offset="0x0552" name="RBBM_PRIMCTR_9_LO"/> <!-- raster primitives in --> |
| <reg32 offset="0x0553" name="RBBM_PRIMCTR_9_HI"/> |
| <reg32 offset="0x0554" name="RBBM_PRIMCTR_10_LO"/> |
| <reg32 offset="0x0555" name="RBBM_PRIMCTR_10_HI"/> |
| |
| <reg32 offset="0xF400" name="RBBM_SECVID_TRUST_CNTL"/> |
| <reg32 offset="0xF800" name="RBBM_SECVID_TSB_TRUSTED_BASE_LO"/> |
| <reg32 offset="0xF801" name="RBBM_SECVID_TSB_TRUSTED_BASE_HI"/> |
| <reg32 offset="0xF802" name="RBBM_SECVID_TSB_TRUSTED_SIZE"/> |
| <reg32 offset="0xF803" name="RBBM_SECVID_TSB_CNTL"/> |
| <reg32 offset="0xF810" name="RBBM_SECVID_TSB_ADDR_MODE_CNTL"/> |
| <reg32 offset="0x00010" name="RBBM_VBIF_CLIENT_QOS_CNTL"/> |
| <reg32 offset="0x00011" name="RBBM_GBIF_CLIENT_QOS_CNTL"/> |
| <reg32 offset="0x0001c" name="RBBM_WAIT_FOR_GPU_IDLE_CMD"> |
| <bitfield pos="0" name="WAIT_GPU_IDLE" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x0001f" name="RBBM_INTERFACE_HANG_INT_CNTL"/> |
| <reg32 offset="0x00037" name="RBBM_INT_CLEAR_CMD" type="A6XX_RBBM_INT_0_MASK"/> |
| <reg32 offset="0x00038" name="RBBM_INT_0_MASK"/> |
| <reg32 offset="0x00042" name="RBBM_SP_HYST_CNT"/> |
| <reg32 offset="0x00043" name="RBBM_SW_RESET_CMD"/> |
| <reg32 offset="0x00044" name="RBBM_RAC_THRESHOLD_CNT"/> |
| <reg32 offset="0x00045" name="RBBM_BLOCK_SW_RESET_CMD"/> |
| <reg32 offset="0x00046" name="RBBM_BLOCK_SW_RESET_CMD2"/> |
| <reg32 offset="0x000ae" name="RBBM_CLOCK_CNTL"/> |
| <reg32 offset="0x000b0" name="RBBM_CLOCK_CNTL_SP0"/> |
| <reg32 offset="0x000b1" name="RBBM_CLOCK_CNTL_SP1"/> |
| <reg32 offset="0x000b2" name="RBBM_CLOCK_CNTL_SP2"/> |
| <reg32 offset="0x000b3" name="RBBM_CLOCK_CNTL_SP3"/> |
| <reg32 offset="0x000b4" name="RBBM_CLOCK_CNTL2_SP0"/> |
| <reg32 offset="0x000b5" name="RBBM_CLOCK_CNTL2_SP1"/> |
| <reg32 offset="0x000b6" name="RBBM_CLOCK_CNTL2_SP2"/> |
| <reg32 offset="0x000b7" name="RBBM_CLOCK_CNTL2_SP3"/> |
| <reg32 offset="0x000b8" name="RBBM_CLOCK_DELAY_SP0"/> |
| <reg32 offset="0x000b9" name="RBBM_CLOCK_DELAY_SP1"/> |
| <reg32 offset="0x000ba" name="RBBM_CLOCK_DELAY_SP2"/> |
| <reg32 offset="0x000bb" name="RBBM_CLOCK_DELAY_SP3"/> |
| <reg32 offset="0x000bc" name="RBBM_CLOCK_HYST_SP0"/> |
| <reg32 offset="0x000bd" name="RBBM_CLOCK_HYST_SP1"/> |
| <reg32 offset="0x000be" name="RBBM_CLOCK_HYST_SP2"/> |
| <reg32 offset="0x000bf" name="RBBM_CLOCK_HYST_SP3"/> |
| <reg32 offset="0x000c0" name="RBBM_CLOCK_CNTL_TP0"/> |
| <reg32 offset="0x000c1" name="RBBM_CLOCK_CNTL_TP1"/> |
| <reg32 offset="0x000c2" name="RBBM_CLOCK_CNTL_TP2"/> |
| <reg32 offset="0x000c3" name="RBBM_CLOCK_CNTL_TP3"/> |
| <reg32 offset="0x000c4" name="RBBM_CLOCK_CNTL2_TP0"/> |
| <reg32 offset="0x000c5" name="RBBM_CLOCK_CNTL2_TP1"/> |
| <reg32 offset="0x000c6" name="RBBM_CLOCK_CNTL2_TP2"/> |
| <reg32 offset="0x000c7" name="RBBM_CLOCK_CNTL2_TP3"/> |
| <reg32 offset="0x000c8" name="RBBM_CLOCK_CNTL3_TP0"/> |
| <reg32 offset="0x000c9" name="RBBM_CLOCK_CNTL3_TP1"/> |
| <reg32 offset="0x000ca" name="RBBM_CLOCK_CNTL3_TP2"/> |
| <reg32 offset="0x000cb" name="RBBM_CLOCK_CNTL3_TP3"/> |
| <reg32 offset="0x000cc" name="RBBM_CLOCK_CNTL4_TP0"/> |
| <reg32 offset="0x000cd" name="RBBM_CLOCK_CNTL4_TP1"/> |
| <reg32 offset="0x000ce" name="RBBM_CLOCK_CNTL4_TP2"/> |
| <reg32 offset="0x000cf" name="RBBM_CLOCK_CNTL4_TP3"/> |
| <reg32 offset="0x000d0" name="RBBM_CLOCK_DELAY_TP0"/> |
| <reg32 offset="0x000d1" name="RBBM_CLOCK_DELAY_TP1"/> |
| <reg32 offset="0x000d2" name="RBBM_CLOCK_DELAY_TP2"/> |
| <reg32 offset="0x000d3" name="RBBM_CLOCK_DELAY_TP3"/> |
| <reg32 offset="0x000d4" name="RBBM_CLOCK_DELAY2_TP0"/> |
| <reg32 offset="0x000d5" name="RBBM_CLOCK_DELAY2_TP1"/> |
| <reg32 offset="0x000d6" name="RBBM_CLOCK_DELAY2_TP2"/> |
| <reg32 offset="0x000d7" name="RBBM_CLOCK_DELAY2_TP3"/> |
| <reg32 offset="0x000d8" name="RBBM_CLOCK_DELAY3_TP0"/> |
| <reg32 offset="0x000d9" name="RBBM_CLOCK_DELAY3_TP1"/> |
| <reg32 offset="0x000da" name="RBBM_CLOCK_DELAY3_TP2"/> |
| <reg32 offset="0x000db" name="RBBM_CLOCK_DELAY3_TP3"/> |
| <reg32 offset="0x000dc" name="RBBM_CLOCK_DELAY4_TP0"/> |
| <reg32 offset="0x000dd" name="RBBM_CLOCK_DELAY4_TP1"/> |
| <reg32 offset="0x000de" name="RBBM_CLOCK_DELAY4_TP2"/> |
| <reg32 offset="0x000df" name="RBBM_CLOCK_DELAY4_TP3"/> |
| <reg32 offset="0x000e0" name="RBBM_CLOCK_HYST_TP0"/> |
| <reg32 offset="0x000e1" name="RBBM_CLOCK_HYST_TP1"/> |
| <reg32 offset="0x000e2" name="RBBM_CLOCK_HYST_TP2"/> |
| <reg32 offset="0x000e3" name="RBBM_CLOCK_HYST_TP3"/> |
| <reg32 offset="0x000e4" name="RBBM_CLOCK_HYST2_TP0"/> |
| <reg32 offset="0x000e5" name="RBBM_CLOCK_HYST2_TP1"/> |
| <reg32 offset="0x000e6" name="RBBM_CLOCK_HYST2_TP2"/> |
| <reg32 offset="0x000e7" name="RBBM_CLOCK_HYST2_TP3"/> |
| <reg32 offset="0x000e8" name="RBBM_CLOCK_HYST3_TP0"/> |
| <reg32 offset="0x000e9" name="RBBM_CLOCK_HYST3_TP1"/> |
| <reg32 offset="0x000ea" name="RBBM_CLOCK_HYST3_TP2"/> |
| <reg32 offset="0x000eb" name="RBBM_CLOCK_HYST3_TP3"/> |
| <reg32 offset="0x000ec" name="RBBM_CLOCK_HYST4_TP0"/> |
| <reg32 offset="0x000ed" name="RBBM_CLOCK_HYST4_TP1"/> |
| <reg32 offset="0x000ee" name="RBBM_CLOCK_HYST4_TP2"/> |
| <reg32 offset="0x000ef" name="RBBM_CLOCK_HYST4_TP3"/> |
| <reg32 offset="0x000f0" name="RBBM_CLOCK_CNTL_RB0"/> |
| <reg32 offset="0x000f1" name="RBBM_CLOCK_CNTL_RB1"/> |
| <reg32 offset="0x000f2" name="RBBM_CLOCK_CNTL_RB2"/> |
| <reg32 offset="0x000f3" name="RBBM_CLOCK_CNTL_RB3"/> |
| <reg32 offset="0x000f4" name="RBBM_CLOCK_CNTL2_RB0"/> |
| <reg32 offset="0x000f5" name="RBBM_CLOCK_CNTL2_RB1"/> |
| <reg32 offset="0x000f6" name="RBBM_CLOCK_CNTL2_RB2"/> |
| <reg32 offset="0x000f7" name="RBBM_CLOCK_CNTL2_RB3"/> |
| <reg32 offset="0x000f8" name="RBBM_CLOCK_CNTL_CCU0"/> |
| <reg32 offset="0x000f9" name="RBBM_CLOCK_CNTL_CCU1"/> |
| <reg32 offset="0x000fa" name="RBBM_CLOCK_CNTL_CCU2"/> |
| <reg32 offset="0x000fb" name="RBBM_CLOCK_CNTL_CCU3"/> |
| <reg32 offset="0x00100" name="RBBM_CLOCK_HYST_RB_CCU0"/> |
| <reg32 offset="0x00101" name="RBBM_CLOCK_HYST_RB_CCU1"/> |
| <reg32 offset="0x00102" name="RBBM_CLOCK_HYST_RB_CCU2"/> |
| <reg32 offset="0x00103" name="RBBM_CLOCK_HYST_RB_CCU3"/> |
| <reg32 offset="0x00104" name="RBBM_CLOCK_CNTL_RAC"/> |
| <reg32 offset="0x00105" name="RBBM_CLOCK_CNTL2_RAC"/> |
| <reg32 offset="0x00106" name="RBBM_CLOCK_DELAY_RAC"/> |
| <reg32 offset="0x00107" name="RBBM_CLOCK_HYST_RAC"/> |
| <reg32 offset="0x00108" name="RBBM_CLOCK_CNTL_TSE_RAS_RBBM"/> |
| <reg32 offset="0x00109" name="RBBM_CLOCK_DELAY_TSE_RAS_RBBM"/> |
| <reg32 offset="0x0010a" name="RBBM_CLOCK_HYST_TSE_RAS_RBBM"/> |
| <reg32 offset="0x0010b" name="RBBM_CLOCK_CNTL_UCHE"/> |
| <reg32 offset="0x0010c" name="RBBM_CLOCK_CNTL2_UCHE"/> |
| <reg32 offset="0x0010d" name="RBBM_CLOCK_CNTL3_UCHE"/> |
| <reg32 offset="0x0010e" name="RBBM_CLOCK_CNTL4_UCHE"/> |
| <reg32 offset="0x0010f" name="RBBM_CLOCK_DELAY_UCHE"/> |
| <reg32 offset="0x00110" name="RBBM_CLOCK_HYST_UCHE"/> |
| <reg32 offset="0x00111" name="RBBM_CLOCK_MODE_VFD"/> |
| <reg32 offset="0x00112" name="RBBM_CLOCK_DELAY_VFD"/> |
| <reg32 offset="0x00113" name="RBBM_CLOCK_HYST_VFD"/> |
| <reg32 offset="0x00114" name="RBBM_CLOCK_MODE_GPC"/> |
| <reg32 offset="0x00115" name="RBBM_CLOCK_DELAY_GPC"/> |
| <reg32 offset="0x00116" name="RBBM_CLOCK_HYST_GPC"/> |
| <reg32 offset="0x00117" name="RBBM_CLOCK_DELAY_HLSQ_2"/> |
| <reg32 offset="0x00118" name="RBBM_CLOCK_CNTL_GMU_GX"/> |
| <reg32 offset="0x00119" name="RBBM_CLOCK_DELAY_GMU_GX"/> |
| <reg32 offset="0x0011a" name="RBBM_CLOCK_HYST_GMU_GX"/> |
| <reg32 offset="0x0011b" name="RBBM_CLOCK_MODE_HLSQ"/> |
| <reg32 offset="0x0011c" name="RBBM_CLOCK_DELAY_HLSQ"/> |
| <reg32 offset="0x0600" name="DBGC_CFG_DBGBUS_SEL_A"/> |
| <reg32 offset="0x0601" name="DBGC_CFG_DBGBUS_SEL_B"/> |
| <reg32 offset="0x0602" name="DBGC_CFG_DBGBUS_SEL_C"/> |
| <reg32 offset="0x0603" name="DBGC_CFG_DBGBUS_SEL_D"> |
| <bitfield high="7" low="0" name="PING_INDEX"/> |
| <bitfield high="15" low="8" name="PING_BLK_SEL"/> |
| </reg32> |
| <reg32 offset="0x0604" name="DBGC_CFG_DBGBUS_CNTLT"> |
| <bitfield high="5" low="0" name="TRACEEN"/> |
| <bitfield high="14" low="12" name="GRANU"/> |
| <bitfield high="31" low="28" name="SEGT"/> |
| </reg32> |
| <reg32 offset="0x0605" name="DBGC_CFG_DBGBUS_CNTLM"> |
| <bitfield high="27" low="24" name="ENABLE"/> |
| </reg32> |
| <reg32 offset="0x0608" name="DBGC_CFG_DBGBUS_IVTL_0"/> |
| <reg32 offset="0x0609" name="DBGC_CFG_DBGBUS_IVTL_1"/> |
| <reg32 offset="0x060a" name="DBGC_CFG_DBGBUS_IVTL_2"/> |
| <reg32 offset="0x060b" name="DBGC_CFG_DBGBUS_IVTL_3"/> |
| <reg32 offset="0x060c" name="DBGC_CFG_DBGBUS_MASKL_0"/> |
| <reg32 offset="0x060d" name="DBGC_CFG_DBGBUS_MASKL_1"/> |
| <reg32 offset="0x060e" name="DBGC_CFG_DBGBUS_MASKL_2"/> |
| <reg32 offset="0x060f" name="DBGC_CFG_DBGBUS_MASKL_3"/> |
| <reg32 offset="0x0610" name="DBGC_CFG_DBGBUS_BYTEL_0"> |
| <bitfield high="3" low="0" name="BYTEL0"/> |
| <bitfield high="7" low="4" name="BYTEL1"/> |
| <bitfield high="11" low="8" name="BYTEL2"/> |
| <bitfield high="15" low="12" name="BYTEL3"/> |
| <bitfield high="19" low="16" name="BYTEL4"/> |
| <bitfield high="23" low="20" name="BYTEL5"/> |
| <bitfield high="27" low="24" name="BYTEL6"/> |
| <bitfield high="31" low="28" name="BYTEL7"/> |
| </reg32> |
| <reg32 offset="0x0611" name="DBGC_CFG_DBGBUS_BYTEL_1"> |
| <bitfield high="3" low="0" name="BYTEL8"/> |
| <bitfield high="7" low="4" name="BYTEL9"/> |
| <bitfield high="11" low="8" name="BYTEL10"/> |
| <bitfield high="15" low="12" name="BYTEL11"/> |
| <bitfield high="19" low="16" name="BYTEL12"/> |
| <bitfield high="23" low="20" name="BYTEL13"/> |
| <bitfield high="27" low="24" name="BYTEL14"/> |
| <bitfield high="31" low="28" name="BYTEL15"/> |
| </reg32> |
| <reg32 offset="0x062f" name="DBGC_CFG_DBGBUS_TRACE_BUF1"/> |
| <reg32 offset="0x0630" name="DBGC_CFG_DBGBUS_TRACE_BUF2"/> |
| <reg32 offset="0x0CD8" name="VSC_PERFCTR_VSC_SEL_0"/> |
| <reg32 offset="0x0CD9" name="VSC_PERFCTR_VSC_SEL_1"/> |
| <reg32 offset="0x9E00" name="PC_DBG_ECO_CNTL"/> |
| <reg32 offset="0x9E01" name="PC_ADDR_MODE_CNTL"/> |
| <reg32 offset="0x9E34" name="PC_PERFCTR_PC_SEL_0"/> |
| <reg32 offset="0x9E35" name="PC_PERFCTR_PC_SEL_1"/> |
| <reg32 offset="0x9E36" name="PC_PERFCTR_PC_SEL_2"/> |
| <reg32 offset="0x9E37" name="PC_PERFCTR_PC_SEL_3"/> |
| <reg32 offset="0x9E38" name="PC_PERFCTR_PC_SEL_4"/> |
| <reg32 offset="0x9E39" name="PC_PERFCTR_PC_SEL_5"/> |
| <reg32 offset="0x9E3A" name="PC_PERFCTR_PC_SEL_6"/> |
| <reg32 offset="0x9E3B" name="PC_PERFCTR_PC_SEL_7"/> |
| <reg32 offset="0xBE05" name="HLSQ_ADDR_MODE_CNTL"/> |
| <reg32 offset="0xBE10" name="HLSQ_PERFCTR_HLSQ_SEL_0"/> |
| <reg32 offset="0xBE11" name="HLSQ_PERFCTR_HLSQ_SEL_1"/> |
| <reg32 offset="0xBE12" name="HLSQ_PERFCTR_HLSQ_SEL_2"/> |
| <reg32 offset="0xBE13" name="HLSQ_PERFCTR_HLSQ_SEL_3"/> |
| <reg32 offset="0xBE14" name="HLSQ_PERFCTR_HLSQ_SEL_4"/> |
| <reg32 offset="0xBE15" name="HLSQ_PERFCTR_HLSQ_SEL_5"/> |
| <reg32 offset="0xC800" name="HLSQ_DBG_AHB_READ_APERTURE"/> |
| <reg32 offset="0xD000" name="HLSQ_DBG_READ_SEL"/> |
| <reg32 offset="0xA601" name="VFD_ADDR_MODE_CNTL"/> |
| <reg32 offset="0xA610" name="VFD_PERFCTR_VFD_SEL_0"/> |
| <reg32 offset="0xA611" name="VFD_PERFCTR_VFD_SEL_1"/> |
| <reg32 offset="0xA612" name="VFD_PERFCTR_VFD_SEL_2"/> |
| <reg32 offset="0xA613" name="VFD_PERFCTR_VFD_SEL_3"/> |
| <reg32 offset="0xA614" name="VFD_PERFCTR_VFD_SEL_4"/> |
| <reg32 offset="0xA615" name="VFD_PERFCTR_VFD_SEL_5"/> |
| <reg32 offset="0xA616" name="VFD_PERFCTR_VFD_SEL_6"/> |
| <reg32 offset="0xA617" name="VFD_PERFCTR_VFD_SEL_7"/> |
| <reg32 offset="0x9601" name="VPC_ADDR_MODE_CNTL"/> |
| <reg32 offset="0x9604" name="VPC_PERFCTR_VPC_SEL_0"/> |
| <reg32 offset="0x9605" name="VPC_PERFCTR_VPC_SEL_1"/> |
| <reg32 offset="0x9606" name="VPC_PERFCTR_VPC_SEL_2"/> |
| <reg32 offset="0x9607" name="VPC_PERFCTR_VPC_SEL_3"/> |
| <reg32 offset="0x9608" name="VPC_PERFCTR_VPC_SEL_4"/> |
| <reg32 offset="0x9609" name="VPC_PERFCTR_VPC_SEL_5"/> |
| <reg32 offset="0x0E00" name="UCHE_ADDR_MODE_CNTL"/> |
| <reg32 offset="0x0E01" name="UCHE_MODE_CNTL"/> |
| <reg32 offset="0x0E05" name="UCHE_WRITE_RANGE_MAX_LO"/> |
| <reg32 offset="0x0E06" name="UCHE_WRITE_RANGE_MAX_HI"/> |
| <reg32 offset="0x0E07" name="UCHE_WRITE_THRU_BASE_LO"/> |
| <reg32 offset="0x0E08" name="UCHE_WRITE_THRU_BASE_HI"/> |
| <reg32 offset="0x0E09" name="UCHE_TRAP_BASE_LO"/> |
| <reg32 offset="0x0E0A" name="UCHE_TRAP_BASE_HI"/> |
| <reg32 offset="0x0E0B" name="UCHE_GMEM_RANGE_MIN_LO"/> |
| <reg32 offset="0x0E0C" name="UCHE_GMEM_RANGE_MIN_HI"/> |
| <reg32 offset="0x0E0D" name="UCHE_GMEM_RANGE_MAX_LO"/> |
| <reg32 offset="0x0E0E" name="UCHE_GMEM_RANGE_MAX_HI"/> |
| <reg32 offset="0x0E17" name="UCHE_CACHE_WAYS"/> |
| <reg32 offset="0x0E18" name="UCHE_FILTER_CNTL"/> |
| <reg32 offset="0x0E19" name="UCHE_CLIENT_PF"> |
| <bitfield high="7" low="0" name="PERFSEL"/> |
| </reg32> |
| <reg32 offset="0x0E1C" name="UCHE_PERFCTR_UCHE_SEL_0"/> |
| <reg32 offset="0x0E1D" name="UCHE_PERFCTR_UCHE_SEL_1"/> |
| <reg32 offset="0x0E1E" name="UCHE_PERFCTR_UCHE_SEL_2"/> |
| <reg32 offset="0x0E1F" name="UCHE_PERFCTR_UCHE_SEL_3"/> |
| <reg32 offset="0x0E20" name="UCHE_PERFCTR_UCHE_SEL_4"/> |
| <reg32 offset="0x0E21" name="UCHE_PERFCTR_UCHE_SEL_5"/> |
| <reg32 offset="0x0E22" name="UCHE_PERFCTR_UCHE_SEL_6"/> |
| <reg32 offset="0x0E23" name="UCHE_PERFCTR_UCHE_SEL_7"/> |
| <reg32 offset="0x0E24" name="UCHE_PERFCTR_UCHE_SEL_8"/> |
| <reg32 offset="0x0E25" name="UCHE_PERFCTR_UCHE_SEL_9"/> |
| <reg32 offset="0x0E26" name="UCHE_PERFCTR_UCHE_SEL_10"/> |
| <reg32 offset="0x0E27" name="UCHE_PERFCTR_UCHE_SEL_11"/> |
| <reg32 offset="0xAE01" name="SP_ADDR_MODE_CNTL"/> |
| <reg32 offset="0xAE02" name="SP_NC_MODE_CNTL"/> |
| <reg32 offset="0xAE10" name="SP_PERFCTR_SP_SEL_0"/> |
| <reg32 offset="0xAE11" name="SP_PERFCTR_SP_SEL_1"/> |
| <reg32 offset="0xAE12" name="SP_PERFCTR_SP_SEL_2"/> |
| <reg32 offset="0xAE13" name="SP_PERFCTR_SP_SEL_3"/> |
| <reg32 offset="0xAE14" name="SP_PERFCTR_SP_SEL_4"/> |
| <reg32 offset="0xAE15" name="SP_PERFCTR_SP_SEL_5"/> |
| <reg32 offset="0xAE16" name="SP_PERFCTR_SP_SEL_6"/> |
| <reg32 offset="0xAE17" name="SP_PERFCTR_SP_SEL_7"/> |
| <reg32 offset="0xAE18" name="SP_PERFCTR_SP_SEL_8"/> |
| <reg32 offset="0xAE19" name="SP_PERFCTR_SP_SEL_9"/> |
| <reg32 offset="0xAE1A" name="SP_PERFCTR_SP_SEL_10"/> |
| <reg32 offset="0xAE1B" name="SP_PERFCTR_SP_SEL_11"/> |
| <reg32 offset="0xAE1C" name="SP_PERFCTR_SP_SEL_12"/> |
| <reg32 offset="0xAE1D" name="SP_PERFCTR_SP_SEL_13"/> |
| <reg32 offset="0xAE1E" name="SP_PERFCTR_SP_SEL_14"/> |
| <reg32 offset="0xAE1F" name="SP_PERFCTR_SP_SEL_15"/> |
| <reg32 offset="0xAE20" name="SP_PERFCTR_SP_SEL_16"/> |
| <reg32 offset="0xAE21" name="SP_PERFCTR_SP_SEL_17"/> |
| <reg32 offset="0xAE22" name="SP_PERFCTR_SP_SEL_18"/> |
| <reg32 offset="0xAE23" name="SP_PERFCTR_SP_SEL_19"/> |
| <reg32 offset="0xAE24" name="SP_PERFCTR_SP_SEL_20"/> |
| <reg32 offset="0xAE25" name="SP_PERFCTR_SP_SEL_21"/> |
| <reg32 offset="0xAE26" name="SP_PERFCTR_SP_SEL_22"/> |
| <reg32 offset="0xAE27" name="SP_PERFCTR_SP_SEL_23"/> |
| <reg32 offset="0xB601" name="TPL1_ADDR_MODE_CNTL"/> |
| <reg32 offset="0xB604" name="TPL1_NC_MODE_CNTL"/> |
| <reg32 offset="0xB608" name="TPL1_BICUBIC_WEIGHTS_TABLE_0"/> |
| <reg32 offset="0xB609" name="TPL1_BICUBIC_WEIGHTS_TABLE_1"/> |
| <reg32 offset="0xB60A" name="TPL1_BICUBIC_WEIGHTS_TABLE_2"/> |
| <reg32 offset="0xB60B" name="TPL1_BICUBIC_WEIGHTS_TABLE_3"/> |
| <reg32 offset="0xB60C" name="TPL1_BICUBIC_WEIGHTS_TABLE_4"/> |
| <reg32 offset="0xB610" name="TPL1_PERFCTR_TP_SEL_0"/> |
| <reg32 offset="0xB611" name="TPL1_PERFCTR_TP_SEL_1"/> |
| <reg32 offset="0xB612" name="TPL1_PERFCTR_TP_SEL_2"/> |
| <reg32 offset="0xB613" name="TPL1_PERFCTR_TP_SEL_3"/> |
| <reg32 offset="0xB614" name="TPL1_PERFCTR_TP_SEL_4"/> |
| <reg32 offset="0xB615" name="TPL1_PERFCTR_TP_SEL_5"/> |
| <reg32 offset="0xB616" name="TPL1_PERFCTR_TP_SEL_6"/> |
| <reg32 offset="0xB617" name="TPL1_PERFCTR_TP_SEL_7"/> |
| <reg32 offset="0xB618" name="TPL1_PERFCTR_TP_SEL_8"/> |
| <reg32 offset="0xB619" name="TPL1_PERFCTR_TP_SEL_9"/> |
| <reg32 offset="0xB61A" name="TPL1_PERFCTR_TP_SEL_10"/> |
| <reg32 offset="0xB61B" name="TPL1_PERFCTR_TP_SEL_11"/> |
| <reg32 offset="0x3000" name="VBIF_VERSION"/> |
| <reg32 offset="0x3001" name="VBIF_CLKON"> |
| <bitfield pos="1" name="FORCE_ON_TESTBUS"/> |
| </reg32> |
| <reg32 offset="0x302A" name="VBIF_GATE_OFF_WRREQ_EN"/> |
| <reg32 offset="0x3080" name="VBIF_XIN_HALT_CTRL0"/> |
| <reg32 offset="0x3081" name="VBIF_XIN_HALT_CTRL1"/> |
| <reg32 offset="0x3084" name="VBIF_TEST_BUS_OUT_CTRL"/> |
| <reg32 offset="0x3085" name="VBIF_TEST_BUS1_CTRL0"/> |
| <reg32 offset="0x3086" name="VBIF_TEST_BUS1_CTRL1"> |
| <bitfield low="0" high="3" name="DATA_SEL"/> |
| </reg32> |
| <reg32 offset="0x3087" name="VBIF_TEST_BUS2_CTRL0"/> |
| <reg32 offset="0x3088" name="VBIF_TEST_BUS2_CTRL1"> |
| <bitfield low="0" high="8" name="DATA_SEL"/> |
| </reg32> |
| <reg32 offset="0x308c" name="VBIF_TEST_BUS_OUT"/> |
| <reg32 offset="0x30d0" name="VBIF_PERF_CNT_SEL0"/> |
| <reg32 offset="0x30d1" name="VBIF_PERF_CNT_SEL1"/> |
| <reg32 offset="0x30d2" name="VBIF_PERF_CNT_SEL2"/> |
| <reg32 offset="0x30d3" name="VBIF_PERF_CNT_SEL3"/> |
| <reg32 offset="0x30d8" name="VBIF_PERF_CNT_LOW0"/> |
| <reg32 offset="0x30d9" name="VBIF_PERF_CNT_LOW1"/> |
| <reg32 offset="0x30da" name="VBIF_PERF_CNT_LOW2"/> |
| <reg32 offset="0x30db" name="VBIF_PERF_CNT_LOW3"/> |
| <reg32 offset="0x30e0" name="VBIF_PERF_CNT_HIGH0"/> |
| <reg32 offset="0x30e1" name="VBIF_PERF_CNT_HIGH1"/> |
| <reg32 offset="0x30e2" name="VBIF_PERF_CNT_HIGH2"/> |
| <reg32 offset="0x30e3" name="VBIF_PERF_CNT_HIGH3"/> |
| <reg32 offset="0x3100" name="VBIF_PERF_PWR_CNT_EN0"/> |
| <reg32 offset="0x3101" name="VBIF_PERF_PWR_CNT_EN1"/> |
| <reg32 offset="0x3102" name="VBIF_PERF_PWR_CNT_EN2"/> |
| <reg32 offset="0x3110" name="VBIF_PERF_PWR_CNT_LOW0"/> |
| <reg32 offset="0x3111" name="VBIF_PERF_PWR_CNT_LOW1"/> |
| <reg32 offset="0x3112" name="VBIF_PERF_PWR_CNT_LOW2"/> |
| <reg32 offset="0x3118" name="VBIF_PERF_PWR_CNT_HIGH0"/> |
| <reg32 offset="0x3119" name="VBIF_PERF_PWR_CNT_HIGH1"/> |
| <reg32 offset="0x311a" name="VBIF_PERF_PWR_CNT_HIGH2"/> |
| |
| <reg32 offset="0x3c02" name="GBIF_SCACHE_CNTL1"/> |
| <reg32 offset="0x3c03" name="GBIF_QSB_SIDE0"/> |
| <reg32 offset="0x3c04" name="GBIF_QSB_SIDE1"/> |
| <reg32 offset="0x3c05" name="GBIF_QSB_SIDE2"/> |
| <reg32 offset="0x3c06" name="GBIF_QSB_SIDE3"/> |
| <reg32 offset="0x3c45" name="GBIF_HALT"/> |
| <reg32 offset="0x3c46" name="GBIF_HALT_ACK"/> |
| <reg32 offset="0x3cc0" name="GBIF_PERF_PWR_CNT_EN"/> |
| <reg32 offset="0x3cc2" name="GBIF_PERF_CNT_SEL"/> |
| <reg32 offset="0x3cc3" name="GBIF_PERF_PWR_CNT_SEL"/> |
| <reg32 offset="0x3cc4" name="GBIF_PERF_CNT_LOW0"/> |
| <reg32 offset="0x3cc5" name="GBIF_PERF_CNT_LOW1"/> |
| <reg32 offset="0x3cc6" name="GBIF_PERF_CNT_LOW2"/> |
| <reg32 offset="0x3cc7" name="GBIF_PERF_CNT_LOW3"/> |
| <reg32 offset="0x3cc8" name="GBIF_PERF_CNT_HIGH0"/> |
| <reg32 offset="0x3cc9" name="GBIF_PERF_CNT_HIGH1"/> |
| <reg32 offset="0x3cca" name="GBIF_PERF_CNT_HIGH2"/> |
| <reg32 offset="0x3ccb" name="GBIF_PERF_CNT_HIGH3"/> |
| <reg32 offset="0x3ccc" name="GBIF_PWR_CNT_LOW0"/> |
| <reg32 offset="0x3ccd" name="GBIF_PWR_CNT_LOW1"/> |
| <reg32 offset="0x3cce" name="GBIF_PWR_CNT_LOW2"/> |
| <reg32 offset="0x3ccf" name="GBIF_PWR_CNT_HIGH0"/> |
| <reg32 offset="0x3cd0" name="GBIF_PWR_CNT_HIGH1"/> |
| <reg32 offset="0x3cd1" name="GBIF_PWR_CNT_HIGH2"/> |
| |
| <!-- move/rename these.. --> |
| |
| <reg32 offset="0xb4d1" name="SP_WINDOW_OFFSET" type="adreno_reg_xy"/> |
| <reg32 offset="0xb307" name="SP_TP_WINDOW_OFFSET" type="adreno_reg_xy"/> |
| |
| <reg32 offset="0x0c02" name="VSC_BIN_SIZE"> |
| <bitfield name="WIDTH" low="0" high="7" shr="5" type="uint"/> |
| <bitfield name="HEIGHT" low="8" high="16" shr="4" type="uint"/> |
| </reg32> |
| <reg32 offset="0x0c03" name="VSC_DRAW_STRM_SIZE_ADDRESS_LO"/> |
| <reg32 offset="0x0c04" name="VSC_DRAW_STRM_SIZE_ADDRESS_HI"/> |
| <reg64 offset="0x0c03" name="VSC_DRAW_STRM_SIZE_ADDRESS" type="waddress"/> |
| <reg32 offset="0x0c06" name="VSC_BIN_COUNT"> |
| <bitfield name="NX" low="1" high="10" type="uint"/> |
| <bitfield name="NY" low="11" high="20" type="uint"/> |
| </reg32> |
| <array offset="0x0c10" name="VSC_PIPE_CONFIG" stride="1" length="32"> |
| <reg32 offset="0x0" name="REG"> |
| <doc> |
| Configures the mapping between VSC_PIPE buffer and |
| bin, X/Y specify the bin index in the horiz/vert |
| direction (0,0 is upper left, 0,1 is leftmost bin |
| on second row, and so on). W/H specify the number |
| of bins assigned to this VSC_PIPE in the horiz/vert |
| dimension. |
| </doc> |
| <bitfield name="X" low="0" high="9" type="uint"/> |
| <bitfield name="Y" low="10" high="19" type="uint"/> |
| <bitfield name="W" low="20" high="25" type="uint"/> |
| <bitfield name="H" low="26" high="31" type="uint"/> |
| </reg32> |
| </array> |
| <!-- |
| HW binning primitive & draw streams, which enable draws and primitives |
| within a draw to be skipped in the main tile pass. See: |
| https://github.com/freedreno/freedreno/wiki/Visibility-Stream-Format |
| |
| Compared to a5xx and earlier, we just program the address of the first |
| stream and hw adds (pipe_num * VSC_*_STRM_PITCH) |
| |
| LIMIT is set to PITCH - 64, to make room for a bit of overflow |
| --> |
| <reg32 offset="0x0c30" name="VSC_PRIM_STRM_ADDRESS_LO"/> |
| <reg32 offset="0x0c31" name="VSC_PRIM_STRM_ADDRESS_HI"/> |
| <reg64 offset="0x0c30" name="VSC_PRIM_STRM_ADDRESS" type="waddress"/> |
| <reg32 offset="0x0c32" name="VSC_PRIM_STRM_PITCH"/> |
| <reg32 offset="0x0c33" name="VSC_PRIM_STRM_LIMIT"/> |
| <reg32 offset="0x0c34" name="VSC_DRAW_STRM_ADDRESS_LO"/> |
| <reg32 offset="0x0c35" name="VSC_DRAW_STRM_ADDRESS_HI"/> |
| <reg64 offset="0x0c34" name="VSC_DRAW_STRM_ADDRESS" type="waddress"/> |
| <reg32 offset="0x0c36" name="VSC_DRAW_STRM_PITCH"/> |
| <reg32 offset="0x0c37" name="VSC_DRAW_STRM_LIMIT"/> |
| |
| <array offset="0x0c38" name="VSC_STATE" stride="1" length="32"> |
| <doc> |
| Seems to be a bitmap of which tiles mapped to the VSC |
| pipe contain geometry. |
| |
| I suppose we can connect a maximum of 32 tiles to a |
| single VSC pipe. |
| </doc> |
| <reg32 offset="0x0" name="REG"/> |
| </array> |
| |
| <array offset="0x0c58" name="VSC_PRIM_STRM_SIZE" stride="1" length="32"> |
| <doc> |
| Has the size of data written to corresponding VSC_PRIM_STRM |
| buffer. |
| </doc> |
| <reg32 offset="0x0" name="REG"/> |
| </array> |
| |
| <array offset="0x0c78" name="VSC_DRAW_STRM_SIZE" stride="1" length="32"> |
| <doc> |
| Has the size of data written to corresponding VSC pipe, ie. |
| same thing that is written out to VSC_DRAW_STRM_SIZE_ADDRESS_LO/HI |
| </doc> |
| <reg32 offset="0x0" name="REG"/> |
| </array> |
| |
| <!-- always 0x03200000 ? --> |
| <reg32 offset="0x0e12" name="UCHE_UNKNOWN_0E12"/> |
| |
| <!-- adreno_reg_xy has 15 bits per coordinate, but a6xx registers only have 14 --> |
| <bitset name="a6xx_reg_xy" inline="yes"> |
| <bitfield name="X" low="0" high="13" type="uint"/> |
| <bitfield name="Y" low="16" high="29" type="uint"/> |
| </bitset> |
| |
| <reg32 offset="0x8000" name="GRAS_CL_CNTL"> |
| <bitfield name="CLIP_DISABLE" pos="0" type="boolean"/> |
| <bitfield name="ZNEAR_CLIP_DISABLE" pos="1" type="boolean"/> |
| <bitfield name="ZFAR_CLIP_DISABLE" pos="2" type="boolean"/> |
| <!-- set with depthClampEnable, not clear what it does --> |
| <bitfield name="UNK5" pos="5" type="boolean"/> |
| <!-- controls near z clip behavior (set for vulkan) --> |
| <bitfield name="ZERO_GB_SCALE_Z" pos="6" type="boolean"/> |
| <!-- guess based on a3xx and meaning of bits 8 and 9 |
| if the guess is right then this is related to point sprite clipping --> |
| <bitfield name="VP_CLIP_CODE_IGNORE" pos="7" type="boolean"/> |
| <bitfield name="VP_XFORM_DISABLE" pos="8" type="boolean"/> |
| <bitfield name="PERSP_DIVISION_DISABLE" pos="9" type="boolean"/> |
| </reg32> |
| |
| <bitset name="a6xx_gras_xs_cl_cntl" inline="yes"> |
| <bitfield name="CLIP_MASK" low="0" high="7"/> |
| <bitfield name="CULL_MASK" low="8" high="15"/> |
| </bitset> |
| <reg32 offset="0x8001" name="GRAS_VS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/> |
| <reg32 offset="0x8002" name="GRAS_DS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/> |
| <reg32 offset="0x8003" name="GRAS_GS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/> |
| <reg32 offset="0x8004" name="GRAS_MAX_LAYER_INDEX" low="0" high="10" type="uint"/> |
| |
| <reg32 offset="0x8005" name="GRAS_CNTL"> |
| <!-- see also RB_RENDER_CONTROL0 --> |
| <bitfield name="IJ_PERSP_PIXEL" pos="0" type="boolean"/> |
| <!-- b1 set for interpolateAtCentroid() --> |
| <bitfield name="IJ_PERSP_CENTROID" pos="1" type="boolean"/> |
| <!-- b2 set instead of b0 when running in per-sample mode --> |
| <bitfield name="IJ_PERSP_SAMPLE" pos="2" type="boolean"/> |
| <!-- |
| b3 set for interpolateAt{Offset,Sample}() if not in per-sample |
| mode, and frag_face |
| --> |
| <bitfield name="SIZE" pos="3" type="boolean"/> |
| <bitfield name="UNK4" pos="4" type="boolean"/> |
| <!-- b5 set ofr interpolateAt{Offset,Sample}() if in per-sample mode --> |
| <bitfield name="SIZE_PERSAMP" pos="5" type="boolean"/> |
| <bitfield name="COORD_MASK" low="6" high="9" type="hex"/> |
| </reg32> |
| <reg32 offset="0x8006" name="GRAS_CL_GUARDBAND_CLIP_ADJ"> |
| <bitfield name="HORZ" low="0" high="8" type="uint"/> |
| <bitfield name="VERT" low="10" high="18" type="uint"/> |
| </reg32> |
| <!-- 0x8006-0x800f invalid --> |
| <array offset="0x8010" name="GRAS_CL_VPORT" stride="6" length="16"> |
| <reg32 offset="0" name="XOFFSET" type="float"/> |
| <reg32 offset="1" name="XSCALE" type="float"/> |
| <reg32 offset="2" name="YOFFSET" type="float"/> |
| <reg32 offset="3" name="YSCALE" type="float"/> |
| <reg32 offset="4" name="ZOFFSET" type="float"/> |
| <reg32 offset="5" name="ZSCALE" type="float"/> |
| </array> |
| <array offset="0x8070" name="GRAS_CL_Z_CLAMP" stride="2" length="16"> |
| <reg32 offset="0" name="MIN" type="float"/> |
| <reg32 offset="1" name="MAX" type="float"/> |
| </array> |
| |
| <reg32 offset="0x8090" name="GRAS_SU_CNTL"> |
| <bitfield name="CULL_FRONT" pos="0" type="boolean"/> |
| <bitfield name="CULL_BACK" pos="1" type="boolean"/> |
| <bitfield name="FRONT_CW" pos="2" type="boolean"/> |
| <bitfield name="LINEHALFWIDTH" low="3" high="10" radix="2" type="fixed"/> |
| <bitfield name="POLY_OFFSET" pos="11" type="boolean"/> |
| <bitfield name="UNK12" pos="12"/> |
| <bitfield name="MSAA_ENABLE" pos="13" type="boolean"/> |
| <bitfield name="UNK15" low="15" high="22"/> |
| </reg32> |
| <reg32 offset="0x8091" name="GRAS_SU_POINT_MINMAX"> |
| <bitfield name="MIN" low="0" high="15" type="ufixed" radix="4"/> |
| <bitfield name="MAX" low="16" high="31" type="ufixed" radix="4"/> |
| </reg32> |
| <reg32 offset="0x8092" name="GRAS_SU_POINT_SIZE" low="0" high="15" type="fixed" radix="4"/> |
| <!-- 0x8093 invalid --> |
| <reg32 offset="0x8094" name="GRAS_SU_DEPTH_PLANE_CNTL"> |
| <bitfield name="Z_MODE" low="0" high="1" type="a6xx_ztest_mode"/> |
| </reg32> |
| <reg32 offset="0x8095" name="GRAS_SU_POLY_OFFSET_SCALE" type="float"/> |
| <reg32 offset="0x8096" name="GRAS_SU_POLY_OFFSET_OFFSET" type="float"/> |
| <reg32 offset="0x8097" name="GRAS_SU_POLY_OFFSET_OFFSET_CLAMP" type="float"/> |
| <!-- duplicates RB_DEPTH_BUFFER_INFO: --> |
| <reg32 offset="0x8098" name="GRAS_SU_DEPTH_BUFFER_INFO"> |
| <bitfield name="DEPTH_FORMAT" low="0" high="2" type="a6xx_depth_format"/> |
| <bitfield name="UNK3" pos="3"/> |
| </reg32> |
| |
| <reg32 offset="0x8099" name="GRAS_UNKNOWN_8099" low="0" high="5"/> |
| <reg32 offset="0x809a" name="GRAS_UNKNOWN_809A" low="0" high="1"/> |
| |
| <bitset name="a6xx_gras_layer_cntl" inline="yes"> |
| <bitfield name="WRITES_LAYER" pos="0" type="boolean"/> |
| <bitfield name="WRITES_VIEW" pos="1" type="boolean"/> |
| </bitset> |
| <reg32 offset="0x809b" name="GRAS_VS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/> |
| <reg32 offset="0x809c" name="GRAS_GS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/> |
| <reg32 offset="0x809d" name="GRAS_DS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/> |
| <!-- 0x809e/0x809f invalid --> |
| <reg32 offset="0x80a0" name="GRAS_UNKNOWN_80A0" low="0" high="12"/> |
| <reg32 offset="0x80a1" name="GRAS_BIN_CONTROL"> |
| <bitfield name="BINW" low="0" high="5" shr="5" type="uint"/> |
| <bitfield name="BINH" low="8" high="14" shr="4" type="uint"/> |
| <bitfield name="BINNING_PASS" pos="18" type="boolean"/> |
| <bitfield name="UNK19" pos="19"/> |
| <bitfield name="UNK20" pos="20"/> |
| <bitfield name="USE_VIZ" pos="21" type="boolean"/> |
| <bitfield name="UNK22" low="22" high="27"/> |
| </reg32> |
| |
| <reg32 offset="0x80a2" name="GRAS_RAS_MSAA_CNTL"> |
| <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> |
| <bitfield name="UNK2" pos="2"/> |
| <bitfield name="UNK3" pos="3"/> |
| </reg32> |
| <reg32 offset="0x80a3" name="GRAS_DEST_MSAA_CNTL"> |
| <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> |
| <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/> |
| </reg32> |
| |
| <bitset name="a6xx_sample_config" inline="yes"> |
| <bitfield name="UNK0" pos="0"/> |
| <bitfield name="LOCATION_ENABLE" pos="1" type="boolean"/> |
| </bitset> |
| |
| <bitset name="a6xx_sample_locations" inline="yes"> |
| <bitfield name="SAMPLE_0_X" low="0" high="3" radix="4" type="fixed"/> |
| <bitfield name="SAMPLE_0_Y" low="4" high="7" radix="4" type="fixed"/> |
| <bitfield name="SAMPLE_1_X" low="8" high="11" radix="4" type="fixed"/> |
| <bitfield name="SAMPLE_1_Y" low="12" high="15" radix="4" type="fixed"/> |
| <bitfield name="SAMPLE_2_X" low="16" high="19" radix="4" type="fixed"/> |
| <bitfield name="SAMPLE_2_Y" low="20" high="23" radix="4" type="fixed"/> |
| <bitfield name="SAMPLE_3_X" low="24" high="27" radix="4" type="fixed"/> |
| <bitfield name="SAMPLE_3_Y" low="28" high="31" radix="4" type="fixed"/> |
| </bitset> |
| |
| <reg32 offset="0x80a4" name="GRAS_SAMPLE_CONFIG" type="a6xx_sample_config"/> |
| <reg32 offset="0x80a5" name="GRAS_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/> |
| <reg32 offset="0x80a6" name="GRAS_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/> |
| <!-- 0x80a7-0x80ae invalid --> |
| <reg32 offset="0x80af" name="GRAS_UNKNOWN_80AF" pos="0"/> |
| |
| <bitset name="a6xx_scissor_xy" inline="yes"> |
| <bitfield name="X" low="0" high="15" type="uint"/> |
| <bitfield name="Y" low="16" high="31" type="uint"/> |
| </bitset> |
| <array offset="0x80b0" name="GRAS_SC_SCREEN_SCISSOR" stride="2" length="16"> |
| <reg32 offset="0" name="TL" type="a6xx_scissor_xy"/> |
| <reg32 offset="1" name="BR" type="a6xx_scissor_xy"/> |
| </array> |
| <array offset="0x80d0" name="GRAS_SC_VIEWPORT_SCISSOR" stride="2" length="16"> |
| <reg32 offset="0" name="TL" type="a6xx_scissor_xy"/> |
| <reg32 offset="1" name="BR" type="a6xx_scissor_xy"/> |
| </array> |
| |
| <reg32 offset="0x80f0" name="GRAS_SC_WINDOW_SCISSOR_TL" type="a6xx_reg_xy"/> |
| <reg32 offset="0x80f1" name="GRAS_SC_WINDOW_SCISSOR_BR" type="a6xx_reg_xy"/> |
| <!-- 0x80f2-0x80ff invalid --> |
| |
| <reg32 offset="0x8100" name="GRAS_LRZ_CNTL"> |
| <!-- |
| These bits seems to mostly fit.. but wouldn't hurt to have a 2nd |
| look when we get around to enabling lrz |
| --> |
| <bitfield name="ENABLE" pos="0" type="boolean"/> |
| <doc>LRZ write also disabled for blend/etc.</doc> |
| <bitfield name="LRZ_WRITE" pos="1" type="boolean"/> |
| <doc>update MAX instead of MIN value, ie. GL_GREATER/GL_GEQUAL</doc> |
| <bitfield name="GREATER" pos="2" type="boolean"/> |
| <bitfield name="FC_ENABLE" pos="3" type="boolean"/> |
| <!-- set when depth-test + depth-write enabled --> |
| <bitfield name="Z_TEST_ENABLE" pos="4" type="boolean"/> |
| <bitfield name="UNK5" low="5" high="9"/> |
| </reg32> |
| <reg32 offset="0x8101" name="GRAS_UNKNOWN_8101" low="0" high="2"/> |
| <reg32 offset="0x8102" name="GRAS_2D_BLIT_INFO"> |
| <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/> |
| </reg32> |
| <reg32 offset="0x8103" name="GRAS_LRZ_BUFFER_BASE_LO"/> |
| <reg32 offset="0x8104" name="GRAS_LRZ_BUFFER_BASE_HI"/> |
| <reg64 offset="0x8103" name="GRAS_LRZ_BUFFER_BASE" align="256" type="waddress"/> |
| <reg32 offset="0x8105" name="GRAS_LRZ_BUFFER_PITCH"> |
| <!-- TODO: fix the shr fields --> |
| <bitfield name="PITCH" low="0" high="7" shr="5" type="uint"/> |
| <bitfield name="ARRAY_PITCH" low="10" high="28" shr="4" type="uint"/> |
| </reg32> |
| |
| <!-- |
| The LRZ "fast clear" buffer is initialized to zero's by blob, and |
| read/written when GRAS_LRZ_CNTL.FC_ENABLE (b3) is set. It appears |
| to store 1b/block. It appears that '0' means block has original |
| depth clear value, and '1' means that the corresponding block in |
| LRZ has been modified. Ignoring alignment/padding, the size is |
| given by the formula: |
| |
| // calculate LRZ size from depth size: |
| if (nr_samples == 4) { |
| width *= 2; |
| height *= 2; |
| } else if (nr_samples == 2) { |
| height *= 2; |
| } |
| |
| lrz_width = div_round_up(width, 8); |
| lrz_heigh = div_round_up(height, 8); |
| |
| // calculate # of blocks: |
| nblocksx = div_round_up(lrz_width, 16); |
| nblocksy = div_round_up(lrz_height, 4); |
| |
| // fast-clear buffer is 1bit/block: |
| fc_sz = div_round_up(nblocksx * nblocksy, 8); |
| |
| In practice the blob seems to switch off FC_ENABLE once the size |
| increases beyond 1 page. Not sure if that is an actual limit or |
| not. |
| --> |
| <reg32 offset="0x8106" name="GRAS_LRZ_FAST_CLEAR_BUFFER_BASE_LO"/> |
| <reg32 offset="0x8107" name="GRAS_LRZ_FAST_CLEAR_BUFFER_BASE_HI"/> |
| <reg32 offset="0x8106" name="GRAS_LRZ_FAST_CLEAR_BUFFER_BASE" align="64" type="waddress"/> |
| <!-- 0x8108 invalid --> |
| <reg32 offset="0x8109" name="GRAS_SAMPLE_CNTL"> |
| <bitfield name="PER_SAMP_MODE" pos="0" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x810a" name="GRAS_UNKNOWN_810A"> |
| <bitfield name="UNK0" low="0" high="10" type="uint"/> |
| <bitfield name="UNK16" low="16" high="26" type="uint"/> |
| <bitfield name="UNK28" low="28" high="31" type="uint"/> |
| </reg32> |
| |
| <!-- 0x810b-0x810f invalid --> |
| |
| <reg32 offset="0x8110" name="GRAS_UNKNOWN_8110" low="0" high="1"/> |
| |
| <!-- 0x8111-0x83ff invalid --> |
| |
| <enum name="a6xx_rotation"> |
| <value value="0x0" name="ROTATE_0"/> |
| <value value="0x1" name="ROTATE_90"/> |
| <value value="0x2" name="ROTATE_180"/> |
| <value value="0x3" name="ROTATE_270"/> |
| <value value="0x4" name="ROTATE_HFLIP"/> |
| <value value="0x5" name="ROTATE_VFLIP"/> |
| </enum> |
| |
| <bitset name="a6xx_2d_blit_cntl" inline="yes"> |
| <bitfield name="ROTATE" low="0" high="2" type="a6xx_rotation"/> |
| <bitfield name="UNK3" low="3" high="6"/> |
| <bitfield name="SOLID_COLOR" pos="7" type="boolean"/> |
| <bitfield name="COLOR_FORMAT" low="8" high="15" type="a6xx_format"/> |
| <bitfield name="SCISSOR" pos="16" type="boolean"/> |
| <bitfield name="UNK17" low="17" high="18"/> |
| <!-- required when blitting D24S8/D24X8 --> |
| <bitfield name="D24S8" pos="19" type="boolean"/> |
| <!-- some sort of channel mask, disabled channels are set to zero ? --> |
| <bitfield name="MASK" low="20" high="23"/> |
| <bitfield name="IFMT" low="24" high="28" type="a6xx_2d_ifmt"/> |
| <bitfield name="UNK29" pos="29"/> |
| </bitset> |
| |
| <reg32 offset="0x8400" name="GRAS_2D_BLIT_CNTL" type="a6xx_2d_blit_cntl"/> |
| <!-- note: the low 8 bits for src coords are valid, probably fixed point |
| it would be a bit weird though, since we subtract 1 from BR coords |
| apparently signed, gallium driver uses negative coords and it works? |
| --> |
| <reg32 offset="0x8401" name="GRAS_2D_SRC_TL_X" low="8" high="24" type="int"/> |
| <reg32 offset="0x8402" name="GRAS_2D_SRC_BR_X" low="8" high="24" type="int"/> |
| <reg32 offset="0x8403" name="GRAS_2D_SRC_TL_Y" low="8" high="24" type="int"/> |
| <reg32 offset="0x8404" name="GRAS_2D_SRC_BR_Y" low="8" high="24" type="int"/> |
| <reg32 offset="0x8405" name="GRAS_2D_DST_TL" type="a6xx_reg_xy"/> |
| <reg32 offset="0x8406" name="GRAS_2D_DST_BR" type="a6xx_reg_xy"/> |
| <reg32 offset="0x8407" name="GRAS_2D_UNKNOWN_8407" low="0" high="31"/> |
| <reg32 offset="0x8408" name="GRAS_2D_UNKNOWN_8408" low="0" high="31"/> |
| <reg32 offset="0x8409" name="GRAS_2D_UNKNOWN_8409" low="0" high="31"/> |
| <reg32 offset="0x840a" name="GRAS_2D_RESOLVE_CNTL_1" type="a6xx_reg_xy"/> |
| <reg32 offset="0x840b" name="GRAS_2D_RESOLVE_CNTL_2" type="a6xx_reg_xy"/> |
| <!-- 0x840c-0x85ff invalid --> |
| |
| <!-- always 0x880 ? (and 0 in a640/a650 traces?) --> |
| <reg32 offset="0x8600" name="GRAS_UNKNOWN_8600" low="0" high="12" /> |
| <reg32 offset="0x8601" name="GRAS_ADDR_MODE_CNTL" pos="0" type="boolean"/> |
| <reg32 offset="0x8610" name="GRAS_PERFCTR_TSE_SEL_0"/> |
| <reg32 offset="0x8611" name="GRAS_PERFCTR_TSE_SEL_1"/> |
| <reg32 offset="0x8612" name="GRAS_PERFCTR_TSE_SEL_2"/> |
| <reg32 offset="0x8613" name="GRAS_PERFCTR_TSE_SEL_3"/> |
| <reg32 offset="0x8614" name="GRAS_PERFCTR_RAS_SEL_0"/> |
| <reg32 offset="0x8615" name="GRAS_PERFCTR_RAS_SEL_1"/> |
| <reg32 offset="0x8616" name="GRAS_PERFCTR_RAS_SEL_2"/> |
| <reg32 offset="0x8617" name="GRAS_PERFCTR_RAS_SEL_3"/> |
| <reg32 offset="0x8618" name="GRAS_PERFCTR_LRZ_SEL_0"/> |
| <reg32 offset="0x8619" name="GRAS_PERFCTR_LRZ_SEL_1"/> |
| <reg32 offset="0x861A" name="GRAS_PERFCTR_LRZ_SEL_2"/> |
| <reg32 offset="0x861B" name="GRAS_PERFCTR_LRZ_SEL_3"/> |
| |
| <!-- note 0x8620-0x87ff are not all invalid |
| (in particular, 0x8631/0x8632 have 0x3fff3fff mask and would be xy coords) |
| --> |
| |
| <!-- same as GRAS_BIN_CONTROL, but without bit 27: --> |
| <reg32 offset="0x8800" name="RB_BIN_CONTROL"> |
| <bitfield name="BINW" low="0" high="5" shr="5" type="uint"/> |
| <bitfield name="BINH" low="8" high="14" shr="4" type="uint"/> |
| <bitfield name="BINNING_PASS" pos="18" type="boolean"/> |
| <bitfield name="UNK19" pos="19"/> |
| <bitfield name="UNK20" pos="20"/> |
| <bitfield name="USE_VIZ" pos="21" type="boolean"/> |
| <bitfield name="UNK22" low="22" high="26"/> |
| </reg32> |
| <reg32 offset="0x8801" name="RB_RENDER_CNTL"> |
| <bitfield name="UNK3" pos="3" type="boolean"/> |
| <!-- always set: ?? --> |
| <bitfield name="UNK4" pos="4" type="boolean"/> |
| <bitfield name="UNK5" low="5" high="6"/> |
| <!-- set during binning pass: --> |
| <bitfield name="BINNING" pos="7" type="boolean"/> |
| <bitfield name="UNK8" low="8" high="12"/> |
| <!-- bit seems to be set whenever depth buffer enabled: --> |
| <bitfield name="FLAG_DEPTH" pos="14" type="boolean"/> |
| <!-- bitmask of MRTs using UBWC flag buffer: --> |
| <bitfield name="FLAG_MRTS" low="16" high="23"/> |
| </reg32> |
| <reg32 offset="0x8802" name="RB_RAS_MSAA_CNTL"> |
| <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> |
| <bitfield name="UNK2" pos="2"/> |
| <bitfield name="UNK3" pos="3"/> |
| </reg32> |
| <reg32 offset="0x8803" name="RB_DEST_MSAA_CNTL"> |
| <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> |
| <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/> |
| </reg32> |
| |
| <reg32 offset="0x8804" name="RB_SAMPLE_CONFIG" type="a6xx_sample_config"/> |
| <reg32 offset="0x8805" name="RB_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/> |
| <reg32 offset="0x8806" name="RB_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/> |
| <!-- 0x8807-0x8808 invalid --> |
| <!-- |
| note: maybe not actually called RB_RENDER_CONTROLn (since RB_RENDER_CNTL |
| name comes from kernel and is probably right) |
| --> |
| <reg32 offset="0x8809" name="RB_RENDER_CONTROL0"> |
| <!-- see also GRAS_CNTL --> |
| <bitfield name="IJ_PERSP_PIXEL" pos="0" type="boolean"/> |
| <!-- b1 set for interpolateAtCentroid() --> |
| <bitfield name="IJ_PERSP_CENTROID" pos="1" type="boolean"/> |
| <!-- b2 set instead of b0 when running in per-sample mode --> |
| <bitfield name="IJ_PERSP_SAMPLE" pos="2" type="boolean"/> |
| <!-- |
| b3 set for interpolateAt{Offset,Sample}() if not in per-sample |
| mode, and frag_face |
| --> |
| <bitfield name="SIZE" pos="3" type="boolean"/> |
| <bitfield name="UNK4" pos="4" type="boolean"/> |
| <!-- b5 set ofr interpolateAt{Offset,Sample}() if in per-sample mode --> |
| <bitfield name="SIZE_PERSAMP" pos="5" type="boolean"/> |
| <bitfield name="COORD_MASK" low="6" high="9" type="hex"/> |
| <bitfield name="UNK10" pos="10" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x880a" name="RB_RENDER_CONTROL1"> |
| <!-- enable bits for various FS sysvalue regs: --> |
| <bitfield name="SAMPLEMASK" pos="0" type="boolean"/> |
| <bitfield name="UNK1" pos="1" type="boolean"/> |
| <bitfield name="FACENESS" pos="2" type="boolean"/> |
| <bitfield name="SAMPLEID" pos="3" type="boolean"/> |
| <!-- b4 and b5 set in per-sample mode: --> |
| <bitfield name="UNK4" pos="4" type="boolean"/> |
| <bitfield name="UNK5" pos="5" type="boolean"/> |
| <bitfield name="SIZE" pos="6" type="boolean"/> |
| <bitfield name="UNK7" pos="7" type="boolean"/> |
| <bitfield name="UNK8" pos="8" type="boolean"/> |
| </reg32> |
| |
| <reg32 offset="0x880b" name="RB_FS_OUTPUT_CNTL0"> |
| <bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/> |
| <bitfield name="FRAG_WRITES_Z" pos="1" type="boolean"/> |
| <bitfield name="FRAG_WRITES_SAMPMASK" pos="2" type="boolean"/> |
| <bitfield name="UNK3" pos="3" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x880c" name="RB_FS_OUTPUT_CNTL1"> |
| <bitfield name="MRT" low="0" high="3" type="uint"/> |
| </reg32> |
| <reg32 offset="0x880d" name="RB_RENDER_COMPONENTS"> |
| <bitfield name="RT0" low="0" high="3"/> |
| <bitfield name="RT1" low="4" high="7"/> |
| <bitfield name="RT2" low="8" high="11"/> |
| <bitfield name="RT3" low="12" high="15"/> |
| <bitfield name="RT4" low="16" high="19"/> |
| <bitfield name="RT5" low="20" high="23"/> |
| <bitfield name="RT6" low="24" high="27"/> |
| <bitfield name="RT7" low="28" high="31"/> |
| </reg32> |
| <reg32 offset="0x880e" name="RB_DITHER_CNTL"> |
| <bitfield name="DITHER_MODE_MRT0" low="0" high="1" type="adreno_rb_dither_mode"/> |
| <bitfield name="DITHER_MODE_MRT1" low="2" high="3" type="adreno_rb_dither_mode"/> |
| <bitfield name="DITHER_MODE_MRT2" low="4" high="5" type="adreno_rb_dither_mode"/> |
| <bitfield name="DITHER_MODE_MRT3" low="6" high="7" type="adreno_rb_dither_mode"/> |
| <bitfield name="DITHER_MODE_MRT4" low="8" high="9" type="adreno_rb_dither_mode"/> |
| <bitfield name="DITHER_MODE_MRT5" low="10" high="11" type="adreno_rb_dither_mode"/> |
| <bitfield name="DITHER_MODE_MRT6" low="12" high="12" type="adreno_rb_dither_mode"/> |
| <bitfield name="DITHER_MODE_MRT7" low="14" high="15" type="adreno_rb_dither_mode"/> |
| </reg32> |
| <reg32 offset="0x880f" name="RB_SRGB_CNTL"> |
| <!-- Same as SP_SRGB_CNTL --> |
| <bitfield name="SRGB_MRT0" pos="0" type="boolean"/> |
| <bitfield name="SRGB_MRT1" pos="1" type="boolean"/> |
| <bitfield name="SRGB_MRT2" pos="2" type="boolean"/> |
| <bitfield name="SRGB_MRT3" pos="3" type="boolean"/> |
| <bitfield name="SRGB_MRT4" pos="4" type="boolean"/> |
| <bitfield name="SRGB_MRT5" pos="5" type="boolean"/> |
| <bitfield name="SRGB_MRT6" pos="6" type="boolean"/> |
| <bitfield name="SRGB_MRT7" pos="7" type="boolean"/> |
| </reg32> |
| |
| <reg32 offset="0x8810" name="RB_SAMPLE_CNTL"> |
| <bitfield name="PER_SAMP_MODE" pos="0" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x8811" name="RB_UNKNOWN_8811" low="4" high="6"/> |
| <!-- 0x8812-0x8817 invalid --> |
| <!-- always 0x0 ? --> |
| <reg32 offset="0x8818" name="RB_UNKNOWN_8818" low="0" high="6"/> |
| <!-- 0x8819-0x881e all 32 bits --> |
| <reg32 offset="0x8819" name="RB_UNKNOWN_8819"/> |
| <reg32 offset="0x881a" name="RB_UNKNOWN_881A"/> |
| <reg32 offset="0x881b" name="RB_UNKNOWN_881B"/> |
| <reg32 offset="0x881c" name="RB_UNKNOWN_881C"/> |
| <reg32 offset="0x881d" name="RB_UNKNOWN_881D"/> |
| <reg32 offset="0x881e" name="RB_UNKNOWN_881E"/> |
| <!-- 0x881f invalid --> |
| <array offset="0x8820" name="RB_MRT" stride="8" length="8"> |
| <reg32 offset="0x0" name="CONTROL"> |
| <bitfield name="BLEND" pos="0" type="boolean"/> |
| <bitfield name="BLEND2" pos="1" type="boolean"/> |
| <bitfield name="ROP_ENABLE" pos="2" type="boolean"/> |
| <bitfield name="ROP_CODE" low="3" high="6" type="a3xx_rop_code"/> |
| <bitfield name="COMPONENT_ENABLE" low="7" high="10" type="hex"/> |
| </reg32> |
| <reg32 offset="0x1" name="BLEND_CONTROL"> |
| <bitfield name="RGB_SRC_FACTOR" low="0" high="4" type="adreno_rb_blend_factor"/> |
| <bitfield name="RGB_BLEND_OPCODE" low="5" high="7" type="a3xx_rb_blend_opcode"/> |
| <bitfield name="RGB_DEST_FACTOR" low="8" high="12" type="adreno_rb_blend_factor"/> |
| <bitfield name="ALPHA_SRC_FACTOR" low="16" high="20" type="adreno_rb_blend_factor"/> |
| <bitfield name="ALPHA_BLEND_OPCODE" low="21" high="23" type="a3xx_rb_blend_opcode"/> |
| <bitfield name="ALPHA_DEST_FACTOR" low="24" high="28" type="adreno_rb_blend_factor"/> |
| </reg32> |
| <reg32 offset="0x2" name="BUF_INFO"> |
| <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/> |
| <bitfield name="COLOR_TILE_MODE" low="8" high="9" type="a6xx_tile_mode"/> |
| <bitfield name="UNK10" pos="10"/> |
| <bitfield name="COLOR_SWAP" low="13" high="14" type="a3xx_color_swap"/> |
| </reg32> |
| <!-- |
| at least in gmem, things seem to be aligned to pitch of 64.. |
| maybe an artifact of tiled format used in gmem? |
| --> |
| <reg32 offset="0x3" name="PITCH" shr="6" high="15" type="uint"/> |
| <reg32 offset="0x4" name="ARRAY_PITCH" shr="6" high="28" type="uint"/> |
| <!-- |
| Compared to a5xx and before, we configure both a GMEM base and |
| external base. Not sure if this is to facilitate GMEM save/ |
| restore for context switch, or just to simplify state setup to |
| not have to care about GMEM vs BYPASS mode. |
| --> |
| <reg32 offset="0x5" name="BASE_LO"/> |
| <reg32 offset="0x6" name="BASE_HI"/> |
| |
| <!-- maybe something in low bits since alignment of 1 doesn't make sense? --> |
| <reg64 offset="0x5" name="BASE" type="waddress" align="1"/> |
| |
| <reg32 offset="0x7" name="BASE_GMEM" low="12" high="31" shr="12"/> |
| </array> |
| |
| <reg32 offset="0x8860" name="RB_BLEND_RED_F32" type="float"/> |
| <reg32 offset="0x8861" name="RB_BLEND_GREEN_F32" type="float"/> |
| <reg32 offset="0x8862" name="RB_BLEND_BLUE_F32" type="float"/> |
| <reg32 offset="0x8863" name="RB_BLEND_ALPHA_F32" type="float"/> |
| <reg32 offset="0x8864" name="RB_ALPHA_CONTROL"> |
| <bitfield name="ALPHA_REF" low="0" high="7" type="hex"/> |
| <bitfield name="ALPHA_TEST" pos="8" type="boolean"/> |
| <bitfield name="ALPHA_TEST_FUNC" low="9" high="11" type="adreno_compare_func"/> |
| </reg32> |
| <reg32 offset="0x8865" name="RB_BLEND_CNTL"> |
| <!-- per-mrt enable bit --> |
| <bitfield name="ENABLE_BLEND" low="0" high="7"/> |
| <bitfield name="INDEPENDENT_BLEND" pos="8" type="boolean"/> |
| <bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/> |
| <bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/> |
| <bitfield name="ALPHA_TO_ONE" pos="11" type="boolean"/> |
| <bitfield name="SAMPLE_MASK" low="16" high="31"/> |
| </reg32> |
| <!-- 0x8866-0x886f invalid --> |
| <reg32 offset="0x8870" name="RB_DEPTH_PLANE_CNTL"> |
| <bitfield name="Z_MODE" low="0" high="1" type="a6xx_ztest_mode"/> |
| </reg32> |
| |
| <reg32 offset="0x8871" name="RB_DEPTH_CNTL"> |
| <bitfield name="Z_ENABLE" pos="0" type="boolean"/> |
| <bitfield name="Z_WRITE_ENABLE" pos="1" type="boolean"/> |
| <bitfield name="ZFUNC" low="2" high="4" type="adreno_compare_func"/> |
| <bitfield name="Z_CLAMP_ENABLE" pos="5" type="boolean"/> |
| <doc> |
| Z_TEST_ENABLE bit is set for zfunc other than GL_ALWAYS or GL_NEVER |
| also set when Z_BOUNDS_ENABLE is set |
| </doc> |
| <bitfield name="Z_TEST_ENABLE" pos="6" type="boolean"/> |
| <bitfield name="Z_BOUNDS_ENABLE" pos="7" type="boolean"/> |
| </reg32> |
| <!-- duplicates GRAS_SU_DEPTH_BUFFER_INFO: --> |
| <reg32 offset="0x8872" name="RB_DEPTH_BUFFER_INFO"> |
| <bitfield name="DEPTH_FORMAT" low="0" high="2" type="a6xx_depth_format"/> |
| <bitfield name="UNK3" low="3" high="4"/> |
| </reg32> |
| <reg32 offset="0x8873" name="RB_DEPTH_BUFFER_PITCH" low="0" high="13" shr="6" type="uint"/> |
| <reg32 offset="0x8874" name="RB_DEPTH_BUFFER_ARRAY_PITCH" low="0" high="27" shr="6" type="uint"/> |
| <reg32 offset="0x8875" name="RB_DEPTH_BUFFER_BASE_LO"/> |
| <reg32 offset="0x8876" name="RB_DEPTH_BUFFER_BASE_HI"/> |
| <reg64 offset="0x8875" name="RB_DEPTH_BUFFER_BASE" type="waddress" align="64"/> |
| <reg32 offset="0x8877" name="RB_DEPTH_BUFFER_BASE_GMEM" low="12" high="31" shr="12"/> |
| |
| <reg32 offset="0x8878" name="RB_Z_BOUNDS_MIN" type="float"/> |
| <reg32 offset="0x8879" name="RB_Z_BOUNDS_MAX" type="float"/> |
| <!-- 0x887a-0x887f invalid --> |
| <reg32 offset="0x8880" name="RB_STENCIL_CONTROL"> |
| <bitfield name="STENCIL_ENABLE" pos="0" type="boolean"/> |
| <bitfield name="STENCIL_ENABLE_BF" pos="1" type="boolean"/> |
| <!-- |
| set for stencil operations that require read from stencil |
| buffer, but not for example for stencil clear (which does |
| not require read).. so guessing this is analogous to |
| READ_DEST_ENABLE for color buffer.. |
| --> |
| <bitfield name="STENCIL_READ" pos="2" type="boolean"/> |
| <bitfield name="FUNC" low="8" high="10" type="adreno_compare_func"/> |
| <bitfield name="FAIL" low="11" high="13" type="adreno_stencil_op"/> |
| <bitfield name="ZPASS" low="14" high="16" type="adreno_stencil_op"/> |
| <bitfield name="ZFAIL" low="17" high="19" type="adreno_stencil_op"/> |
| <bitfield name="FUNC_BF" low="20" high="22" type="adreno_compare_func"/> |
| <bitfield name="FAIL_BF" low="23" high="25" type="adreno_stencil_op"/> |
| <bitfield name="ZPASS_BF" low="26" high="28" type="adreno_stencil_op"/> |
| <bitfield name="ZFAIL_BF" low="29" high="31" type="adreno_stencil_op"/> |
| </reg32> |
| <reg32 offset="0x8881" name="RB_STENCIL_INFO"> |
| <bitfield name="SEPARATE_STENCIL" pos="0" type="boolean"/> |
| <bitfield name="UNK1" pos="1" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x8882" name="RB_STENCIL_BUFFER_PITCH" low="0" high="11" shr="6" type="uint"/> |
| <reg32 offset="0x8883" name="RB_STENCIL_BUFFER_ARRAY_PITCH" low="0" high="23" shr="6" type="uint"/> |
| <reg32 offset="0x8884" name="RB_STENCIL_BUFFER_BASE_LO"/> |
| <reg32 offset="0x8885" name="RB_STENCIL_BUFFER_BASE_HI"/> |
| <reg64 offset="0x8884" name="RB_STENCIL_BUFFER_BASE" type="waddress" align="64"/> |
| <reg32 offset="0x8886" name="RB_STENCIL_BUFFER_BASE_GMEM" low="12" high="31" shr="12"/> |
| <reg32 offset="0x8887" name="RB_STENCILREF"> |
| <bitfield name="REF" low="0" high="7"/> |
| <bitfield name="BFREF" low="8" high="15"/> |
| </reg32> |
| <reg32 offset="0x8888" name="RB_STENCILMASK"> |
| <bitfield name="MASK" low="0" high="7"/> |
| <bitfield name="BFMASK" low="8" high="15"/> |
| </reg32> |
| <reg32 offset="0x8889" name="RB_STENCILWRMASK"> |
| <bitfield name="WRMASK" low="0" high="7"/> |
| <bitfield name="BFWRMASK" low="8" high="15"/> |
| </reg32> |
| <!-- 0x888a-0x888f invalid --> |
| <reg32 offset="0x8890" name="RB_WINDOW_OFFSET" type="a6xx_reg_xy"/> |
| <reg32 offset="0x8891" name="RB_SAMPLE_COUNT_CONTROL"> |
| <bitfield name="UNK0" pos="0" type="boolean"/> |
| <bitfield name="COPY" pos="1" type="boolean"/> |
| </reg32> |
| <!-- 0x8892-0x8897 invalid --> |
| <reg32 offset="0x8898" name="RB_LRZ_CNTL"> |
| <bitfield name="ENABLE" pos="0" type="boolean"/> |
| </reg32> |
| <!-- 0x8899-0x88bf invalid --> |
| <!-- clamps depth value for depth test/write --> |
| <reg32 offset="0x88c0" name="RB_Z_CLAMP_MIN" type="float"/> |
| <reg32 offset="0x88c1" name="RB_Z_CLAMP_MAX" type="float"/> |
| <!-- 0x88c2-0x88cf invalid--> |
| <reg32 offset="0x88d0" name="RB_UNKNOWN_88D0"> |
| <bitfield name="UNK0" low="0" high="12"/> |
| <bitfield name="UNK16" low="16" high="26"/> |
| </reg32> |
| <reg32 offset="0x88d1" name="RB_BLIT_SCISSOR_TL" type="a6xx_reg_xy"/> |
| <reg32 offset="0x88d2" name="RB_BLIT_SCISSOR_BR" type="a6xx_reg_xy"/> |
| <!-- weird to duplicate other regs from same block?? --> |
| <reg32 offset="0x88d3" name="RB_BIN_CONTROL2"> |
| <bitfield name="BINW" low="0" high="5" shr="5" type="uint"/> |
| <bitfield name="BINH" low="8" high="14" shr="4" type="uint"/> |
| </reg32> |
| <reg32 offset="0x88d4" name="RB_WINDOW_OFFSET2" type="a6xx_reg_xy"/> |
| <reg32 offset="0x88d5" name="RB_MSAA_CNTL"> |
| <bitfield name="SAMPLES" low="3" high="4" type="a3xx_msaa_samples"/> |
| </reg32> |
| <reg32 offset="0x88d6" name="RB_BLIT_BASE_GMEM" low="12" high="31" shr="12"/> |
| <!-- s/DST_FORMAT/DST_INFO/ probably: --> |
| <reg32 offset="0x88d7" name="RB_BLIT_DST_INFO"> |
| <bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/> |
| <bitfield name="FLAGS" pos="2" type="boolean"/> |
| <bitfield name="SAMPLES" low="3" high="4" type="a3xx_msaa_samples"/> |
| <bitfield name="COLOR_SWAP" low="5" high="6" type="a3xx_color_swap"/> |
| <bitfield name="COLOR_FORMAT" low="7" high="14" type="a6xx_format"/> |
| <bitfield name="UNK15" pos="15" type="boolean"/> |
| </reg32> |
| <reg64 offset="0x88d8" name="RB_BLIT_DST" type="waddress" align="64"/> |
| <reg32 offset="0x88d8" name="RB_BLIT_DST_LO"/> |
| <reg32 offset="0x88d9" name="RB_BLIT_DST_HI"/> |
| <reg32 offset="0x88da" name="RB_BLIT_DST_PITCH" low="0" high="15" shr="6" type="uint"/> |
| <!-- array-pitch is size of layer --> |
| <reg32 offset="0x88db" name="RB_BLIT_DST_ARRAY_PITCH" low="0" high="28" shr="6" type="uint"/> |
| <reg64 offset="0x88dc" name="RB_BLIT_FLAG_DST" type="waddress" align="64"/> |
| <reg32 offset="0x88dc" name="RB_BLIT_FLAG_DST_LO"/> |
| <reg32 offset="0x88dd" name="RB_BLIT_FLAG_DST_HI"/> |
| <reg32 offset="0x88de" name="RB_BLIT_FLAG_DST_PITCH"> |
| <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/> |
| <bitfield name="ARRAY_PITCH" low="11" high="27" shr="7" type="uint"/> |
| </reg32> |
| |
| <reg32 offset="0x88df" name="RB_BLIT_CLEAR_COLOR_DW0"/> |
| <reg32 offset="0x88e0" name="RB_BLIT_CLEAR_COLOR_DW1"/> |
| <reg32 offset="0x88e1" name="RB_BLIT_CLEAR_COLOR_DW2"/> |
| <reg32 offset="0x88e2" name="RB_BLIT_CLEAR_COLOR_DW3"/> |
| |
| <!-- seems somewhat similar to what we called RB_CLEAR_CNTL on a5xx: --> |
| <reg32 offset="0x88e3" name="RB_BLIT_INFO"> |
| <bitfield name="UNK0" pos="0" type="boolean"/> <!-- s8 stencil restore/clear? But also color restore? --> |
| <bitfield name="GMEM" pos="1" type="boolean"/> <!-- set for restore and clear to gmem? --> |
| <bitfield name="INTEGER" pos="2" type="boolean"/> <!-- probably --> |
| <bitfield name="DEPTH" pos="3" type="boolean"/> <!-- z16/z32/z24s8/x24x8 clear or resolve? --> |
| <doc> |
| For clearing depth/stencil |
| 1 - depth |
| 2 - stencil |
| 3 - depth+stencil |
| For clearing color buffer: |
| then probably a component mask, I always see 0xf |
| </doc> |
| <bitfield name="CLEAR_MASK" low="4" high="7"/> |
| <bitfield name="UNK8" low="8" high="9"/> |
| <bitfield name="UNK12" low="12" high="15"/> |
| </reg32> |
| <!-- 0x88e4-0x88ef invalid --> |
| <!-- always 0x0 ? --> |
| <reg32 offset="0x88f0" name="RB_UNKNOWN_88F0" low="0" high="11"/> |
| <!-- could be for separate stencil? (or may not be a flag buffer at all) --> |
| <reg64 offset="0x88f1" name="RB_UNK_FLAG_BUFFER_BASE" type="waddress" align="64"/> |
| <reg32 offset="0x88f3" name="RB_UNK_FLAG_BUFFER_PITCH"> |
| <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/> |
| <bitfield name="ARRAY_PITCH" low="11" high="23" shr="7" type="uint"/> |
| </reg32> |
| <reg32 offset="0x88f4" name="RB_UNKNOWN_88F4" low="0" high="2"/> |
| <!-- 0x88f5-0x88ff invalid --> |
| <reg32 offset="0x8900" name="RB_DEPTH_FLAG_BUFFER_BASE_LO"/> |
| <reg32 offset="0x8901" name="RB_DEPTH_FLAG_BUFFER_BASE_HI"/> |
| <reg64 offset="0x8900" name="RB_DEPTH_FLAG_BUFFER_BASE" type="waddress" align="64"/> |
| <reg32 offset="0x8902" name="RB_DEPTH_FLAG_BUFFER_PITCH"> |
| <bitfield name="PITCH" low="0" high="6" shr="6" type="uint"/> |
| <!-- TODO: actually part of array pitch --> |
| <bitfield name="UNK8" low="8" high="10"/> |
| <bitfield name="ARRAY_PITCH" low="11" high="27" shr="7" type="uint"/> |
| </reg32> |
| <array offset="0x8903" name="RB_MRT_FLAG_BUFFER" stride="3" length="8"> |
| <reg32 offset="0" name="ADDR_LO"/> |
| <reg32 offset="1" name="ADDR_HI"/> |
| <reg64 offset="0" name="ADDR" type="waddress" align="64"/> |
| <reg32 offset="2" name="PITCH"> |
| <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/> |
| <bitfield name="ARRAY_PITCH" low="11" high="28" shr="7" type="uint"/> |
| </reg32> |
| </array> |
| <!-- 0x891b-0x8926 invalid --> |
| <reg32 offset="0x8927" name="RB_SAMPLE_COUNT_ADDR_LO"/> |
| <reg32 offset="0x8928" name="RB_SAMPLE_COUNT_ADDR_HI"/> |
| <reg64 offset="0x8927" name="RB_SAMPLE_COUNT_ADDR" type="waddress" align="16"/> |
| <!-- 0x8929-0x89ff invalid --> |
| |
| <!-- TODO: there are some registers in the 0x8a00-0x8bff range --> |
| |
| <reg32 offset="0x8c00" name="RB_2D_BLIT_CNTL" type="a6xx_2d_blit_cntl"/> |
| <reg32 offset="0x8c01" name="RB_2D_UNKNOWN_8C01" low="0" high="31"/> |
| |
| <bitset name="a6xx_2d_surf_info" inline="yes"> |
| <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/> |
| <bitfield name="TILE_MODE" low="8" high="9" type="a6xx_tile_mode"/> |
| <bitfield name="COLOR_SWAP" low="10" high="11" type="a3xx_color_swap"/> |
| <bitfield name="FLAGS" pos="12" type="boolean"/> |
| <bitfield name="SRGB" pos="13" type="boolean"/> |
| <!-- the rest is only for src --> |
| <bitfield name="SAMPLES" low="14" high="15" type="a3xx_msaa_samples"/> |
| <bitfield name="FILTER" pos="16" type="boolean"/> |
| <bitfield name="SAMPLES_AVERAGE" pos="18" type="boolean"/> |
| <bitfield name="UNK20" pos="20" type="boolean"/> |
| <bitfield name="UNK22" pos="22" type="boolean"/> |
| </bitset> |
| |
| <!-- 0x8c02-0x8c16 invalid --> |
| <!-- TODO: RB_2D_DST_INFO has 17 valid bits (doesn't match a6xx_2d_surf_info) --> |
| <reg32 offset="0x8c17" name="RB_2D_DST_INFO" type="a6xx_2d_surf_info"/> |
| <reg32 offset="0x8c18" name="RB_2D_DST_LO"/> |
| <reg32 offset="0x8c19" name="RB_2D_DST_HI"/> |
| <reg64 offset="0x8c18" name="RB_2D_DST" type="waddress" align="64"/> |
| <reg32 offset="0x8c1a" name="RB_2D_DST_PITCH" low="0" high="15" shr="6" type="uint"/> |
| <!-- this is a guess but seems likely (for NV12/IYUV): --> |
| <reg64 offset="0x8c1b" name="RB_2D_DST_PLANE1" type="waddress" align="64"/> |
| <reg32 offset="0x8c1d" name="RB_2D_DST_PLANE_PITCH" low="0" high="15" shr="6" type="uint"/> |
| <reg64 offset="0x8c1e" name="RB_2D_DST_PLANE2" type="waddress" align="64"/> |
| |
| <reg32 offset="0x8c20" name="RB_2D_DST_FLAGS_LO"/> |
| <reg32 offset="0x8c21" name="RB_2D_DST_FLAGS_HI"/> |
| <reg64 offset="0x8c20" name="RB_2D_DST_FLAGS" type="waddress" align="64"/> |
| <reg32 offset="0x8c22" name="RB_2D_DST_FLAGS_PITCH" low="0" high="7" shr="6" type="uint"/> |
| <!-- this is a guess but seems likely (for NV12 with UBWC): --> |
| <reg64 offset="0x8c23" name="RB_2D_DST_FLAGS_PLANE" type="waddress" align="64"/> |
| <reg32 offset="0x8c25" name="RB_2D_DST_FLAGS_PLANE_PITCH" low="0" high="7" shr="6" type="uint"/> |
| |
| <!-- TODO: 0x8c26-0x8c33 are all full 32-bit registers --> |
| <!-- unlike a5xx, these are per channel values rather than packed --> |
| <reg32 offset="0x8c2c" name="RB_2D_SRC_SOLID_C0"/> |
| <reg32 offset="0x8c2d" name="RB_2D_SRC_SOLID_C1"/> |
| <reg32 offset="0x8c2e" name="RB_2D_SRC_SOLID_C2"/> |
| <reg32 offset="0x8c2f" name="RB_2D_SRC_SOLID_C3"/> |
| <!-- 0x8c34-0x8dff invalid --> |
| |
| <!-- always 0x1 ? either doesn't exist for a650 or write-only: --> |
| <reg32 offset="0x8e01" name="RB_UNKNOWN_8E01"/> |
| <!-- 0x8e00-0x8e03 invalid --> |
| <reg32 offset="0x8e04" name="RB_UNKNOWN_8E04"/> <!-- TODO: valid mask 0xfffffeff --> |
| <reg32 offset="0x8e05" name="RB_ADDR_MODE_CNTL" pos="0" type="boolean"/> |
| <!-- 0x8e06 invalid --> |
| <reg32 offset="0x8e07" name="RB_CCU_CNTL"> |
| <!-- offset into GMEM for something. |
| important for sysmem path |
| BLIT_OP_SCALE also writes to GMEM at this offset for GMEM store |
| blob values for GMEM path (note: close to GMEM size): |
| a618: 0x7c000 a630/a640: 0xf8000 a650: 0x114000 |
| SYSMEM path values: |
| a618: 0x10000 a630/a640: 0x20000 a650: 0x30000 |
| TODO: valid mask 0xfffffc1f |
| --> |
| <bitfield name="OFFSET" low="23" high="31" shr="12" type="hex"/> |
| <bitfield name="GMEM" pos="22" type="boolean"/> <!-- set for GMEM path --> |
| <bitfield name="UNK2" pos="2" type="boolean"/> <!-- sometimes set with GMEM? --> |
| </reg32> |
| <reg32 offset="0x8e08" name="RB_NC_MODE_CNTL"> |
| <bitfield name="MODE" pos="0" type="boolean"/> |
| <bitfield name="LOWER_BIT" low="1" high="2" type="uint"/> |
| <bitfield name="MIN_ACCESS_LENGTH" pos="3" type="boolean"/> <!-- true=64b false=32b --> |
| <bitfield name="AMSBC" pos="4" type="boolean"/> |
| <bitfield name="UPPER_BIT" pos="10" type="uint"/> |
| <bitfield name="RGB565_PREDICATOR" pos="11" type="boolean"/> |
| <bitfield name="UNK12" low="12" high="13"/> |
| </reg32> |
| <!-- 0x8e09-0x8e0f invalid --> |
| <reg32 offset="0x8e10" name="RB_PERFCTR_RB_SEL_0"/> |
| <reg32 offset="0x8e11" name="RB_PERFCTR_RB_SEL_1"/> |
| <reg32 offset="0x8e12" name="RB_PERFCTR_RB_SEL_2"/> |
| <reg32 offset="0x8e13" name="RB_PERFCTR_RB_SEL_3"/> |
| <reg32 offset="0x8e14" name="RB_PERFCTR_RB_SEL_4"/> |
| <reg32 offset="0x8e15" name="RB_PERFCTR_RB_SEL_5"/> |
| <reg32 offset="0x8e16" name="RB_PERFCTR_RB_SEL_6"/> |
| <reg32 offset="0x8e17" name="RB_PERFCTR_RB_SEL_7"/> |
| <reg32 offset="0x8e18" name="RB_PERFCTR_CCU_SEL_0"/> |
| <reg32 offset="0x8e19" name="RB_PERFCTR_CCU_SEL_1"/> |
| <reg32 offset="0x8e1a" name="RB_PERFCTR_CCU_SEL_2"/> |
| <reg32 offset="0x8e1b" name="RB_PERFCTR_CCU_SEL_3"/> |
| <reg32 offset="0x8e1c" name="RB_PERFCTR_CCU_SEL_4"/> |
| <!-- 0x8e1d-0x8e1f invalid --> |
| <!-- 0x8e20-0x8e25 more perfcntr sel? --> |
| <!-- 0x8e26-0x8e27 invalid --> |
| <reg32 offset="0x8e28" name="RB_UNKNOWN_8E28" low="0" high="10"/> |
| <!-- 0x8e29-0x8e2b invalid --> |
| <reg32 offset="0x8e2c" name="RB_PERFCTR_CMP_SEL_0"/> |
| <reg32 offset="0x8e2d" name="RB_PERFCTR_CMP_SEL_1"/> |
| <reg32 offset="0x8e2e" name="RB_PERFCTR_CMP_SEL_2"/> |
| <reg32 offset="0x8e2f" name="RB_PERFCTR_CMP_SEL_3"/> |
| <reg32 offset="0x8e3b" name="RB_RB_SUB_BLOCK_SEL_CNTL_HOST"/> |
| <reg32 offset="0x8e3d" name="RB_RB_SUB_BLOCK_SEL_CNTL_CD"/> |
| <!-- 0x8e3e-0x8e4f invalid --> |
| <!-- GMEM save/restore for preemption: --> |
| <reg32 offset="0x8e50" name="RB_CONTEXT_SWITCH_GMEM_SAVE_RESTORE" pos="0" type="boolean"/> |
| <!-- address for GMEM save/restore? --> |
| <reg32 offset="0x8e51" name="RB_UNKNOWN_8E51" type="waddress" align="1"/> |
| <!-- 0x8e53-0x8e7f invalid --> |
| <!-- 0x8e80-0x8e83 are valid --> |
| <!-- 0x8e84-0x90ff invalid --> |
| |
| <reg32 offset="0x9100" name="VPC_UNKNOWN_9100"/> |
| |
| <bitset name="a6xx_vpc_xs_clip_cntl" inline="yes"> |
| <bitfield name="CLIP_MASK" low="0" high="7" type="uint"/> |
| <!-- there can be up to 8 total clip/cull distance outputs, |
| but apparenly VPC can only deal with vec4, so when there are |
| more than 4 outputs a second location needs to be programmed |
| --> |
| <bitfield name="CLIP_DIST_03_LOC" low="8" high="15" type="uint"/> |
| <bitfield name="CLIP_DIST_47_LOC" low="16" high="23" type="uint"/> |
| </bitset> |
| <reg32 offset="0x9101" name="VPC_VS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/> |
| <reg32 offset="0x9102" name="VPC_GS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/> |
| <reg32 offset="0x9103" name="VPC_DS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/> |
| |
| <bitset name="a6xx_vpc_xs_layer_cntl" inline="yes"> |
| <bitfield name="LAYERLOC" low="0" high="7" type="uint"/> |
| <bitfield name="UNKLOC" low="8" high="15" type="uint"/> |
| </bitset> |
| |
| <reg32 offset="0x9104" name="VPC_VS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/> |
| <reg32 offset="0x9105" name="VPC_GS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/> |
| <reg32 offset="0x9106" name="VPC_DS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/> |
| |
| <reg32 offset="0x9107" name="VPC_UNKNOWN_9107"/> |
| <reg32 offset="0x9108" name="VPC_POLYGON_MODE"> |
| <bitfield name="MODE" low="0" high="1" type="a6xx_polygon_mode"/> |
| </reg32> |
| |
| <array offset="0x9200" name="VPC_VARYING_INTERP" stride="1" length="8"> |
| <reg32 offset="0x0" name="MODE"/> |
| </array> |
| <array offset="0x9208" name="VPC_VARYING_PS_REPL" stride="1" length="8"> |
| <reg32 offset="0x0" name="MODE"/> |
| </array> |
| |
| <!-- always 0x0 --> |
| <reg32 offset="0x9210" name="VPC_UNKNOWN_9210"/> |
| <reg32 offset="0x9211" name="VPC_UNKNOWN_9211"/> |
| |
| <array offset="0x9212" name="VPC_VAR" stride="1" length="4"> |
| <!-- one bit per varying component: --> |
| <reg32 offset="0" name="DISABLE"/> |
| </array> |
| |
| <reg32 offset="0x9216" name="VPC_SO_CNTL"> |
| <!-- always 0x10000 when SO enabled.. --> |
| <bitfield name="ENABLE" pos="16" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x9217" name="VPC_SO_PROG"> |
| <bitfield name="A_BUF" low="0" high="1" type="uint"/> |
| <bitfield name="A_OFF" low="2" high="10" shr="2" type="uint"/> |
| <bitfield name="A_EN" pos="11" type="boolean"/> |
| <bitfield name="B_BUF" low="12" high="13" type="uint"/> |
| <bitfield name="B_OFF" low="14" high="22" shr="2" type="uint"/> |
| <bitfield name="B_EN" pos="23" type="boolean"/> |
| </reg32> |
| |
| <reg32 offset="0x9218" name="VPC_SO_STREAM_COUNTS_LO"/> |
| <reg32 offset="0x9219" name="VPC_SO_STREAM_COUNTS_HI"/> |
| |
| <array offset="0x921a" name="VPC_SO" stride="7" length="4"> |
| <reg64 offset="0" name="BUFFER_BASE" type="waddress"/> |
| <reg32 offset="0" name="BUFFER_BASE_LO"/> |
| <reg32 offset="1" name="BUFFER_BASE_HI"/> |
| <reg32 offset="2" name="BUFFER_SIZE"/> |
| <reg32 offset="3" name="NCOMP"/> <!-- component count --> |
| <reg32 offset="4" name="BUFFER_OFFSET"/> |
| <reg64 offset="5" name="FLUSH_BASE" type="waddress"/> |
| <reg32 offset="5" name="FLUSH_BASE_LO"/> |
| <reg32 offset="6" name="FLUSH_BASE_HI"/> |
| </array> |
| |
| <!-- always 0x0 ? --> |
| <reg32 offset="0x9236" name="VPC_UNKNOWN_9236"> |
| <bitfield name="POINT_COORD_INVERT" pos="0" type="uint"/> |
| </reg32> |
| |
| <!-- always 0x0 ? --> |
| <reg32 offset="0x9300" name="VPC_UNKNOWN_9300"/> |
| |
| <bitset name="a6xx_vpc_xs_pack" inline="yes"> |
| <doc> |
| num of varyings plus four for gl_Position (plus one if gl_PointSize) |
| plus # of transform-feedback (streamout) varyings if using the |
| hw streamout (rather than stg instructions in shader) |
| </doc> |
| <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/> |
| <bitfield name="POSITIONLOC" low="8" high="15" type="uint"/> |
| <bitfield name="PSIZELOC" low="16" high="23" type="uint"/> |
| </bitset> |
| <reg32 offset="0x9301" name="VPC_VS_PACK" type="a6xx_vpc_xs_pack"/> |
| <reg32 offset="0x9302" name="VPC_GS_PACK" type="a6xx_vpc_xs_pack"/> |
| <reg32 offset="0x9303" name="VPC_DS_PACK" type="a6xx_vpc_xs_pack"/> |
| |
| <reg32 offset="0x9304" name="VPC_CNTL_0"> |
| <bitfield name="NUMNONPOSVAR" low="0" high="7" type="uint"/> |
| <!-- for fixed-function (i.e. no GS) gl_PrimitiveID in FS --> |
| <bitfield name="PRIMIDLOC" low="8" high="15" type="uint"/> |
| <bitfield name="VARYING" pos="16" type="boolean"/> |
| <bitfield name="UNKLOC" low="24" high="31" type="uint"/> |
| </reg32> |
| |
| <reg32 offset="0x9305" name="VPC_SO_BUF_CNTL"> |
| <bitfield name="BUF0" pos="0" type="boolean"/> |
| <bitfield name="BUF1" pos="3" type="boolean"/> |
| <bitfield name="BUF2" pos="6" type="boolean"/> |
| <bitfield name="BUF3" pos="9" type="boolean"/> |
| <bitfield name="ENABLE" pos="15" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x9306" name="VPC_SO_OVERRIDE"> |
| <bitfield name="SO_DISABLE" pos="0" type="boolean"/> |
| </reg32> |
| |
| <!-- always 0x0 ? --> |
| <reg32 offset="0x9600" name="VPC_UNKNOWN_9600"/> |
| <!-- always 0x0 ? --> |
| <reg32 offset="0x9602" name="VPC_UNKNOWN_9602"/> |
| |
| <reg32 offset="0x9800" name="PC_TESS_NUM_VERTEX"/> |
| |
| <!-- always 0x0 ? --> |
| <reg32 offset="0x9801" name="PC_UNKNOWN_9801"/> |
| |
| <enum name="a6xx_tess_spacing"> |
| <value value="0x0" name="TESS_EQUAL"/> |
| <value value="0x2" name="TESS_FRACTIONAL_ODD"/> |
| <value value="0x3" name="TESS_FRACTIONAL_EVEN"/> |
| </enum> |
| |
| <enum name="a6xx_tess_output"> |
| <value value="0x0" name="TESS_POINTS"/> |
| <value value="0x1" name="TESS_LINES"/> |
| <value value="0x2" name="TESS_CW_TRIS"/> |
| <value value="0x3" name="TESS_CCW_TRIS"/> |
| </enum> |
| |
| <reg32 offset="0x9802" name="PC_TESS_CNTL"> |
| <bitfield name="SPACING" low="0" high="1" type="a6xx_tess_spacing"/> |
| <bitfield name="OUTPUT" low="2" high="3" type="a6xx_tess_output"/> |
| </reg32> |
| |
| <!-- probably: --> |
| <reg32 offset="0x9803" name="PC_RESTART_INDEX"/> |
| <reg32 offset="0x9804" name="PC_MODE_CNTL"/> |
| |
| <!-- always 0x1 ? --> |
| <reg32 offset="0x9805" name="PC_UNKNOWN_9805"/> |
| |
| <!-- probably a mirror of VFD_CONTROL_6 --> |
| <reg32 offset="0x9806" name="PC_PRIMID_CNTL"> |
| <bitfield name="PRIMID_PASSTHRU" pos="0" type="boolean"/> |
| </reg32> |
| |
| <reg32 offset="0x9840" name="PC_DRAW_CMD"> |
| <bitfield name="STATE_ID" low="0" high="7"/> |
| </reg32> |
| |
| <reg32 offset="0x9841" name="PC_DISPATCH_CMD"> |
| <bitfield name="STATE_ID" low="0" high="7"/> |
| </reg32> |
| |
| <reg32 offset="0x9842" name="PC_EVENT_CMD"> |
| <!-- I think only the low bit is actually used? --> |
| <bitfield name="STATE_ID" low="16" high="23"/> |
| <bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/> |
| </reg32> |
| |
| <reg32 offset="0x9980" name="PC_UNKNOWN_9980"/> |
| |
| <reg32 offset="0x9981" name="PC_POLYGON_MODE"> |
| <bitfield name="MODE" low="0" high="1" type="a6xx_polygon_mode"/> |
| </reg32> |
| |
| <reg32 offset="0x9990" name="PC_UNKNOWN_9990"/> |
| |
| <reg32 offset="0x9b00" name="PC_PRIMITIVE_CNTL_0"> |
| <bitfield name="PRIMITIVE_RESTART" pos="0" type="boolean"/> |
| <!-- maybe? b1 seems always set, so just assume it is for now: --> |
| <bitfield name="PROVOKING_VTX_LAST" pos="1" type="boolean"/> |
| <bitfield name="TESS_UPPER_LEFT_DOMAIN_ORIGIN" pos="2" type="boolean"/> |
| </reg32> |
| |
| <bitset name="a6xx_xs_out_cntl" inline="yes"> |
| <doc> |
| num of varyings plus four for gl_Position (plus one if gl_PointSize) |
| plus # of transform-feedback (streamout) varyings if using the |
| hw streamout (rather than stg instructions in shader) |
| </doc> |
| <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/> |
| <bitfield name="PSIZE" pos="8" type="boolean"/> |
| <!-- layer / primitiveid only for GS (apparently) --> |
| <bitfield name="LAYER" pos="9" type="boolean"/> |
| <bitfield name="PRIMITIVE_ID" pos="11" type="boolean"/> |
| <bitfield name="CLIP_MASK" low="16" high="23" type="uint"/> |
| </bitset> |
| |
| <reg32 offset="0x9b01" name="PC_VS_OUT_CNTL" type="a6xx_xs_out_cntl"/> |
| <reg32 offset="0x9b02" name="PC_GS_OUT_CNTL" type="a6xx_xs_out_cntl"/> |
| <reg32 offset="0x9b03" name="PC_PRIMITIVE_CNTL_3"/> |
| <reg32 offset="0x9b04" name="PC_DS_OUT_CNTL" type="a6xx_xs_out_cntl"/> |
| |
| <reg32 offset="0x9b05" name="PC_PRIMITIVE_CNTL_5"> |
| <doc> |
| geometry shader |
| </doc> |
| <bitfield name="GS_VERTICES_OUT" low="0" high="7" type="uint"/> |
| <bitfield name="GS_INVOCATIONS" low="10" high="14" type="uint"/> |
| <bitfield name="GS_OUTPUT" low="16" high="17" type="a6xx_tess_output"/> |
| </reg32> |
| |
| <reg32 offset="0x9b06" name="PC_PRIMITIVE_CNTL_6"> |
| <doc> |
| size in vec4s of per-primitive storage for gs |
| </doc> |
| <bitfield name="STRIDE_IN_VPC" low="0" high="8" type="uint"/> |
| </reg32> |
| |
| <reg32 offset="0x9b07" name="PC_UNKNOWN_9B07"/> |
| |
| <reg32 offset="0x9e08" name="PC_TESSFACTOR_ADDR_LO"/> |
| <reg32 offset="0x9e09" name="PC_TESSFACTOR_ADDR_HI"/> |
| |
| <!-- These match the contents of CP_SET_BIN_DATA (not written directly) --> |
| <reg32 offset="0x9e11" name="PC_VSTREAM_CONTROL"> |
| <bitfield name="VSC_SIZE" low="16" high="21" type="uint"/> |
| <bitfield name="VSC_N" low="22" high="26" type="uint"/> |
| </reg32> |
| <reg32 offset="0x9e12" name="PC_BIN_DATA_ADDR2_LO"/> |
| <reg32 offset="0x9e13" name="PC_BIN_DATA_ADDR2_HI"/> |
| <reg32 offset="0x9e14" name="PC_BIN_DATA_ADDR_LO"/> |
| <reg32 offset="0x9e15" name="PC_BIN_DATA_ADDR_HI"/> |
| |
| <reg32 offset="0x9c00" name="PC_2D_EVENT_CMD"> |
| <bitfield name="STATE_ID" low="8" high="15"/> |
| <bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/> |
| </reg32> |
| |
| <!-- always 0x0 --> |
| <reg32 offset="0x9e72" name="PC_UNKNOWN_9E72"/> |
| |
| <reg32 offset="0xa000" name="VFD_CONTROL_0"> |
| <bitfield name="FETCH_CNT" low="0" high="5" type="uint"/> |
| <bitfield name="DECODE_CNT" low="8" high="13" type="uint"/> |
| </reg32> |
| <reg32 offset="0xa001" name="VFD_CONTROL_1"> |
| <bitfield name="REGID4VTX" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="REGID4INST" low="8" high="15" type="a3xx_regid"/> |
| <bitfield name="REGID4PRIMID" low="16" high="23" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xa002" name="VFD_CONTROL_2"> |
| <bitfield name="REGID_HSPATCHID" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="REGID_INVOCATIONID" low="8" high="15" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xa003" name="VFD_CONTROL_3"> |
| <bitfield name="REGID_DSPATCHID" low="8" high="15" type="a3xx_regid"/> |
| <bitfield name="REGID_TESSX" low="16" high="23" type="a3xx_regid"/> |
| <bitfield name="REGID_TESSY" low="24" high="31" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xa004" name="VFD_CONTROL_4"> |
| </reg32> |
| <reg32 offset="0xa005" name="VFD_CONTROL_5"> |
| <bitfield name="REGID_GSHEADER" low="0" high="7" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xa006" name="VFD_CONTROL_6"> |
| <!-- |
| True if gl_PrimitiveID is read via the FS and there is |
| no matching write from the GS, and therefore it needs to |
| be passed through via fixed-function logic. |
| --> |
| <bitfield name="PRIMID_PASSTHRU" pos="0" type="boolean"/> |
| </reg32> |
| |
| <reg32 offset="0xa007" name="VFD_MODE_CNTL"> |
| <bitfield name="BINNING_PASS" pos="0" type="boolean"/> |
| </reg32> |
| |
| <!-- always 0x0 ? --> |
| <reg32 offset="0xa008" name="VFD_UNKNOWN_A008"/> |
| <reg32 offset="0xa009" name="VFD_ADD_OFFSET"> |
| <!-- add VFD_INDEX_OFFSET to REGID4VTX --> |
| <bitfield name="VERTEX" pos="0" type="boolean"/> |
| <!-- add VFD_INSTANCE_START_OFFSET to REGID4INST --> |
| <bitfield name="INSTANCE" pos="1" type="boolean"/> |
| </reg32> |
| |
| <reg32 offset="0xa00e" name="VFD_INDEX_OFFSET"/> |
| <reg32 offset="0xa00f" name="VFD_INSTANCE_START_OFFSET"/> |
| <array offset="0xa010" name="VFD_FETCH" stride="4" length="32"> |
| <reg64 offset="0x0" name="BASE" type="address"/> |
| <reg32 offset="0x0" name="BASE_LO"/> |
| <reg32 offset="0x1" name="BASE_HI"/> |
| <reg32 offset="0x2" name="SIZE" type="uint"/> |
| <reg32 offset="0x3" name="STRIDE" type="uint"/> |
| </array> |
| <array offset="0xa090" name="VFD_DECODE" stride="2" length="32"> |
| <reg32 offset="0x0" name="INSTR"> |
| <!-- IDX and byte OFFSET into VFD_FETCH --> |
| <bitfield name="IDX" low="0" high="4" type="uint"/> |
| <bitfield name="OFFSET" low="5" high="16"/> |
| <bitfield name="INSTANCED" pos="17" type="boolean"/> |
| <bitfield name="FORMAT" low="20" high="27" type="a6xx_format"/> |
| <bitfield name="SWAP" low="28" high="29" type="a3xx_color_swap"/> |
| <bitfield name="UNK30" pos="30" type="boolean"/> |
| <bitfield name="FLOAT" pos="31" type="boolean"/> |
| </reg32> |
| <reg32 offset="0x1" name="STEP_RATE"/> |
| </array> |
| <array offset="0xa0d0" name="VFD_DEST_CNTL" stride="1" length="32"> |
| <reg32 offset="0x0" name="INSTR"> |
| <bitfield name="WRITEMASK" low="0" high="3" type="hex"/> |
| <bitfield name="REGID" low="4" high="11" type="a3xx_regid"/> |
| </reg32> |
| </array> |
| |
| <!-- always 0x1 ? --> |
| <reg32 offset="0xa0f8" name="SP_UNKNOWN_A0F8"/> |
| |
| <bitset name="a6xx_sp_xs_ctrl_reg0" inline="yes"> |
| <!-- |
| When b31 set we just see FULLREGFOOTPRINT set. The pattern of |
| used registers is a bit odd too: |
| - used (half): 0-15 68-179 (cnt=128, max=179) |
| - used (full): 0-33 50-69 71 73 75 77 79 81 83 85 87 89-105 107 109 111 113 115 117 119 121 123 125 127> |
| whereas we usually see a (mostly) contiguous range of regs used. But if |
| I merge the full and half ranges (ie. rN counts as hr(N*2) and hr(N*2+1)), |
| then: |
| - used (merged): 0-191 (cnt=192, max=191) |
| So I think if b31 is set, then the half precision registers overlap |
| the full precision registers. (Which seems like a pretty sensible |
| feature, actually I'm not sure when you *wouldn't* want to use that, |
| since it gives register allocation more flexibility) |
| --> |
| <bitfield name="HALFREGFOOTPRINT" low="1" high="6" type="uint"/> |
| <bitfield name="FULLREGFOOTPRINT" low="7" high="12" type="uint"/> |
| <!-- seems to be nesting level for flow control:.. --> |
| <bitfield name="BRANCHSTACK" low="14" high="19" type="uint"/> |
| <bitfield name="THREADSIZE" pos="20" type="a3xx_threadsize"/> |
| <bitfield name="VARYING" pos="22" type="boolean"/> |
| <!-- set when dFdxFine/dFdyFine is used --> |
| <bitfield name="DIFF_FINE" pos="23" type="boolean"/> |
| <bitfield name="PIXLODENABLE" pos="26" type="boolean"/> |
| <bitfield name="MERGEDREGS" pos="31" type="boolean"/> |
| </bitset> |
| |
| <bitset name="a6xx_sp_xs_config" inline="yes"> |
| <!-- |
| Each of these are set if the given resource type is used |
| with the Vulkan/bindless binding model. |
| --> |
| <bitfield name="BINDLESS_TEX" pos="0" type="boolean"/> |
| <bitfield name="BINDLESS_SAMP" pos="1" type="boolean"/> |
| <bitfield name="BINDLESS_IBO" pos="2" type="boolean"/> |
| <bitfield name="BINDLESS_UBO" pos="3" type="boolean"/> |
| |
| <bitfield name="ENABLED" pos="8" type="boolean"/> |
| <!-- |
| number of textures and samplers.. these might be swapped, with GL I |
| always see the same value for both. |
| --> |
| <bitfield name="NTEX" low="9" high="16" type="uint"/> |
| <bitfield name="NSAMP" low="17" high="21" type="uint"/> |
| <bitfield name="NIBO" low="22" high="29" type="uint"/> |
| </bitset> |
| |
| <reg32 offset="0xa800" name="SP_VS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/> |
| <reg32 offset="0xa801" name="SP_VS_BRANCH_COND" type="hex"> |
| <!-- |
| bitmask of true/false conditions for VS brac.N instructions, |
| bit N corresponds to brac.N |
| --> |
| </reg32> |
| <reg32 offset="0xa802" name="SP_VS_PRIMITIVE_CNTL"> |
| <!-- # of VS outputs including pos/psize --> |
| <bitfield name="OUT" low="0" high="5" type="uint"/> |
| </reg32> |
| <array offset="0xa803" name="SP_VS_OUT" stride="1" length="16"> |
| <reg32 offset="0x0" name="REG"> |
| <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/> |
| <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/> |
| <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/> |
| </reg32> |
| </array> |
| <!-- |
| Starting with a5xx, position/psize outputs from shader end up in the |
| SP_VS_OUT map, with highest OUTLOCn position. (Generally they are |
| the last entries too, except when gl_PointCoord is used, blob inserts |
| an extra varying after, but with a lower OUTLOC position. If present, |
| psize is last, preceded by position. |
| --> |
| <array offset="0xa813" name="SP_VS_VPC_DST" stride="1" length="8"> |
| <reg32 offset="0x0" name="REG"> |
| <bitfield name="OUTLOC0" low="0" high="7" type="uint"/> |
| <bitfield name="OUTLOC1" low="8" high="15" type="uint"/> |
| <bitfield name="OUTLOC2" low="16" high="23" type="uint"/> |
| <bitfield name="OUTLOC3" low="24" high="31" type="uint"/> |
| </reg32> |
| </array> |
| |
| <reg32 offset="0xa81b" name="SP_UNKNOWN_A81B"/> |
| <reg32 offset="0xa81c" name="SP_VS_OBJ_START_LO"/> |
| <reg32 offset="0xa81d" name="SP_VS_OBJ_START_HI"/> |
| <reg32 offset="0xa822" name="SP_VS_TEX_COUNT" type="uint"/> |
| <reg32 offset="0xa823" name="SP_VS_CONFIG" type="a6xx_sp_xs_config"/> |
| <reg32 offset="0xa824" name="SP_VS_INSTRLEN" type="uint"/> |
| |
| <reg32 offset="0xa830" name="SP_HS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/> |
| <reg32 offset="0xa831" name="SP_HS_UNKNOWN_A831"/> |
| <reg32 offset="0xa833" name="SP_HS_UNKNOWN_A833"/> |
| <reg32 offset="0xa834" name="SP_HS_OBJ_START_LO"/> |
| <reg32 offset="0xa835" name="SP_HS_OBJ_START_HI"/> |
| <reg32 offset="0xa83a" name="SP_HS_TEX_COUNT" type="uint"/> |
| <reg32 offset="0xa83b" name="SP_HS_CONFIG" type="a6xx_sp_xs_config"/> |
| <reg32 offset="0xa83c" name="SP_HS_INSTRLEN" type="uint"/> |
| |
| <reg32 offset="0xa840" name="SP_DS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/> |
| <reg32 offset="0xa842" name="SP_DS_PRIMITIVE_CNTL"> |
| <!-- # of DS outputs including pos/psize --> |
| <bitfield name="OUT" low="0" high="5" type="uint"/> |
| </reg32> |
| <array offset="0xa843" name="SP_DS_OUT" stride="1" length="16"> |
| <reg32 offset="0x0" name="REG"> |
| <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/> |
| <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/> |
| <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/> |
| </reg32> |
| </array> |
| <array offset="0xa853" name="SP_DS_VPC_DST" stride="1" length="8"> |
| <reg32 offset="0x0" name="REG"> |
| <bitfield name="OUTLOC0" low="0" high="7" type="uint"/> |
| <bitfield name="OUTLOC1" low="8" high="15" type="uint"/> |
| <bitfield name="OUTLOC2" low="16" high="23" type="uint"/> |
| <bitfield name="OUTLOC3" low="24" high="31" type="uint"/> |
| </reg32> |
| </array> |
| |
| <reg32 offset="0xa85b" name="SP_DS_UNKNOWN_A85B"/> |
| <reg32 offset="0xa85c" name="SP_DS_OBJ_START_LO"/> |
| <reg32 offset="0xa85d" name="SP_DS_OBJ_START_HI"/> |
| <reg32 offset="0xa862" name="SP_DS_TEX_COUNT" type="uint"/> |
| <reg32 offset="0xa863" name="SP_DS_CONFIG" type="a6xx_sp_xs_config"/> |
| <reg32 offset="0xa864" name="SP_DS_INSTRLEN" type="uint"/> |
| |
| <reg32 offset="0xa870" name="SP_GS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/> |
| <reg32 offset="0xa871" name="SP_GS_PRIM_SIZE"> |
| <!-- size of output of previous stage --> |
| </reg32> |
| <reg32 offset="0xa872" name="SP_GS_BRANCH_COND" type="hex"> |
| <!-- |
| bitmask of true/false conditions for FS brac.N instructions, |
| bit N corresponds to brac.N |
| --> |
| </reg32> |
| |
| <reg32 offset="0xa873" name="SP_GS_PRIMITIVE_CNTL"> |
| <!-- # of VS outputs including pos/psize --> |
| <bitfield name="OUT" low="0" high="5" type="uint"/> |
| <bitfield name="FLAGS_REGID" low="6" high="13" type="a3xx_regid"/> |
| </reg32> |
| |
| <array offset="0xa874" name="SP_GS_OUT" stride="1" length="16"> |
| <reg32 offset="0x0" name="REG"> |
| <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/> |
| <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/> |
| <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/> |
| </reg32> |
| </array> |
| |
| <array offset="0xa884" name="SP_GS_VPC_DST" stride="1" length="8"> |
| <reg32 offset="0x0" name="REG"> |
| <bitfield name="OUTLOC0" low="0" high="7" type="uint"/> |
| <bitfield name="OUTLOC1" low="8" high="15" type="uint"/> |
| <bitfield name="OUTLOC2" low="16" high="23" type="uint"/> |
| <bitfield name="OUTLOC3" low="24" high="31" type="uint"/> |
| </reg32> |
| </array> |
| |
| <reg32 offset="0xa88d" name="SP_GS_OBJ_START_LO"/> |
| <reg32 offset="0xa88e" name="SP_GS_OBJ_START_HI"/> |
| <reg32 offset="0xa893" name="SP_GS_TEX_COUNT" type="uint"/> |
| <reg32 offset="0xa894" name="SP_GS_CONFIG" type="a6xx_sp_xs_config"/> |
| <reg32 offset="0xa895" name="SP_GS_INSTRLEN" type="uint"/> |
| |
| <reg32 offset="0xa8a0" name="SP_VS_TEX_SAMP_LO"/> |
| <reg32 offset="0xa8a1" name="SP_VS_TEX_SAMP_HI"/> |
| <reg32 offset="0xa8a2" name="SP_HS_TEX_SAMP_LO"/> |
| <reg32 offset="0xa8a3" name="SP_HS_TEX_SAMP_HI"/> |
| <reg32 offset="0xa8a4" name="SP_DS_TEX_SAMP_LO"/> |
| <reg32 offset="0xa8a5" name="SP_DS_TEX_SAMP_HI"/> |
| <reg32 offset="0xa8a6" name="SP_GS_TEX_SAMP_LO"/> |
| <reg32 offset="0xa8a7" name="SP_GS_TEX_SAMP_HI"/> |
| <reg32 offset="0xa8a8" name="SP_VS_TEX_CONST_LO"/> |
| <reg32 offset="0xa8a9" name="SP_VS_TEX_CONST_HI"/> |
| <reg32 offset="0xa8aa" name="SP_HS_TEX_CONST_LO"/> |
| <reg32 offset="0xa8ab" name="SP_HS_TEX_CONST_HI"/> |
| <reg32 offset="0xa8ac" name="SP_DS_TEX_CONST_LO"/> |
| <reg32 offset="0xa8ad" name="SP_DS_TEX_CONST_HI"/> |
| <reg32 offset="0xa8ae" name="SP_GS_TEX_CONST_LO"/> |
| <reg32 offset="0xa8af" name="SP_GS_TEX_CONST_HI"/> |
| |
| <reg32 offset="0xa980" name="SP_FS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/> |
| <reg32 offset="0xa981" name="SP_FS_BRANCH_COND" type="hex"> |
| <!-- |
| bitmask of true/false conditions for FS brac.N instructions, |
| bit N corresponds to brac.N |
| --> |
| </reg32> |
| <reg32 offset="0xa982" name="SP_UNKNOWN_A982"/> |
| <reg32 offset="0xa983" name="SP_FS_OBJ_START_LO"/> |
| <reg32 offset="0xa984" name="SP_FS_OBJ_START_HI"/> |
| |
| <reg32 offset="0xa989" name="SP_BLEND_CNTL"> |
| <bitfield name="ENABLED" pos="0" type="boolean"/> |
| <bitfield name="UNK8" pos="8" type="boolean"/> |
| <bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/> |
| <bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/> |
| </reg32> |
| <reg32 offset="0xa98a" name="SP_SRGB_CNTL"> |
| <!-- Same as RB_SRGB_CNTL --> |
| <bitfield name="SRGB_MRT0" pos="0" type="boolean"/> |
| <bitfield name="SRGB_MRT1" pos="1" type="boolean"/> |
| <bitfield name="SRGB_MRT2" pos="2" type="boolean"/> |
| <bitfield name="SRGB_MRT3" pos="3" type="boolean"/> |
| <bitfield name="SRGB_MRT4" pos="4" type="boolean"/> |
| <bitfield name="SRGB_MRT5" pos="5" type="boolean"/> |
| <bitfield name="SRGB_MRT6" pos="6" type="boolean"/> |
| <bitfield name="SRGB_MRT7" pos="7" type="boolean"/> |
| </reg32> |
| <reg32 offset="0xa98b" name="SP_FS_RENDER_COMPONENTS"> |
| <bitfield name="RT0" low="0" high="3"/> |
| <bitfield name="RT1" low="4" high="7"/> |
| <bitfield name="RT2" low="8" high="11"/> |
| <bitfield name="RT3" low="12" high="15"/> |
| <bitfield name="RT4" low="16" high="19"/> |
| <bitfield name="RT5" low="20" high="23"/> |
| <bitfield name="RT6" low="24" high="27"/> |
| <bitfield name="RT7" low="28" high="31"/> |
| </reg32> |
| <reg32 offset="0xa98c" name="SP_FS_OUTPUT_CNTL0"> |
| <bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/> |
| <bitfield name="DEPTH_REGID" low="8" high="15" type="a3xx_regid"/> |
| <bitfield name="SAMPMASK_REGID" low="16" high="23" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xa98d" name="SP_FS_OUTPUT_CNTL1"> |
| <bitfield name="MRT" low="0" high="3" type="uint"/> |
| </reg32> |
| |
| <array offset="0xa996" name="SP_FS_MRT" stride="1" length="8"> |
| <reg32 offset="0" name="REG"> |
| <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/> |
| <bitfield name="COLOR_SINT" pos="8" type="boolean"/> |
| <bitfield name="COLOR_UINT" pos="9" type="boolean"/> |
| </reg32> |
| </array> |
| |
| <reg32 offset="0xa99e" name="SP_FS_PREFETCH_CNTL"> |
| <!-- unknown bits 0x7fc0 always set --> |
| <bitfield name="COUNT" low="0" high="2" type="uint"/> |
| <!-- b3 set if no other use of varyings in the shader itself.. maybe alternative to dummy bary.f? --> |
| <bitfield name="UNK3" pos="3" type="boolean"/> |
| <bitfield name="UNK4" low="4" high="11" type="a3xx_regid"/> |
| </reg32> |
| <array offset="0xa99f" name="SP_FS_PREFETCH" stride="1" length="4"> |
| <reg32 offset="0" name="CMD"> |
| <bitfield name="SRC" low="0" high="6" type="uint"/> |
| <bitfield name="SAMP_ID" low="7" high="10" type="uint"/> |
| <bitfield name="TEX_ID" low="11" high="15" type="uint"/> |
| <bitfield name="DST" low="16" high="21" type="a3xx_regid"/> |
| <bitfield name="WRMASK" low="22" high="25" type="hex"/> |
| <bitfield name="HALF" pos="26" type="boolean"/> |
| <!-- |
| CMD seems always 0x4?? 3d, textureProj, textureLod seem to |
| skip pre-fetch.. TODO test texelFetch |
| CMD is 0x6 when the Vulkan mode is enabled, and |
| TEX_ID/SAMP_ID refer to the descriptor sets while the |
| indices come from SP_FS_BINDLESS_PREFETCH[n] |
| --> |
| <bitfield name="CMD" low="27" high="31"/> |
| </reg32> |
| </array> |
| |
| <!-- TODO confirm that this is actually an array --> |
| <array offset="0xa9a3" name="SP_FS_BINDLESS_PREFETCH" stride="1" length="4"> |
| <reg32 offset="0" name="CMD"> |
| <bitfield name="SAMP_ID" low="0" high="7" type="uint"/> |
| <bitfield name="TEX_ID" low="16" high="23" type="uint"/> |
| </reg32> |
| </array> |
| |
| <reg32 offset="0xa9a7" name="SP_FS_TEX_COUNT" type="uint"/> |
| |
| <!-- always 0x0 ? --> |
| <reg32 offset="0xa9a8" name="SP_UNKNOWN_A9A8"/> |
| |
| <!-- set for compute shaders, always 0x41 --> |
| <reg32 offset="0xa9b1" name="SP_CS_UNKNOWN_A9B1" type="uint"> |
| <doc> |
| bit 0 seems to toggle between 2k and 32k of shared storage |
| the ldl/stl offset seems to be rewritten to 0 when it is beyond |
| this limit. This is different from ldlw/stlw, which wraps at |
| 64k (and has 36k of storage on A640 - reads between 36k-64k |
| always return 0) |
| </doc> |
| <bitfield name="SHARED_SIZE_2K" pos="0" type="uint"/> |
| </reg32> |
| |
| <!-- set for compute shaders, always 0x0 --> |
| <reg32 offset="0xa9b3" name="SP_CS_UNKNOWN_A9B3" type="uint"/> |
| |
| <reg32 offset="0xa9ba" name="SP_CS_TEX_COUNT" type="uint"/> |
| |
| <reg32 offset="0xa9e0" name="SP_FS_TEX_SAMP_LO"/> |
| <reg32 offset="0xa9e1" name="SP_FS_TEX_SAMP_HI"/> |
| <reg32 offset="0xa9e2" name="SP_CS_TEX_SAMP_LO"/> |
| <reg32 offset="0xa9e3" name="SP_CS_TEX_SAMP_HI"/> |
| <reg32 offset="0xa9e4" name="SP_FS_TEX_CONST_LO"/> |
| <reg32 offset="0xa9e5" name="SP_FS_TEX_CONST_HI"/> |
| <reg32 offset="0xa9e6" name="SP_CS_TEX_CONST_LO"/> |
| <reg32 offset="0xa9e7" name="SP_CS_TEX_CONST_HI"/> |
| |
| <array offset="0xa9e8" name="SP_CS_BINDLESS_BASE" stride="2" length="5"> |
| <reg64 offset="0" name="ADDR" type="waddress"/> |
| </array> |
| |
| <array offset="0xa98e" name="SP_FS_OUTPUT" stride="1" length="8"> |
| <doc>per MRT</doc> |
| <reg32 offset="0x0" name="REG"> |
| <bitfield name="REGID" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="HALF_PRECISION" pos="8" type="boolean"/> |
| </reg32> |
| </array> |
| |
| <reg32 offset="0xa9b0" name="SP_CS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/> |
| <reg32 offset="0xa9b4" name="SP_CS_OBJ_START_LO"/> |
| <reg32 offset="0xa9b5" name="SP_CS_OBJ_START_HI"/> |
| <reg32 offset="0xa9bb" name="SP_CS_CONFIG" type="a6xx_sp_xs_config"/> |
| <reg32 offset="0xa9bc" name="SP_CS_INSTRLEN" type="uint"/> |
| |
| <!-- |
| IBO state for compute shader: |
| --> |
| <reg32 offset="0xa9f2" name="SP_CS_IBO_LO"/> |
| <reg32 offset="0xa9f3" name="SP_CS_IBO_HI"/> |
| <reg32 offset="0xaa00" name="SP_CS_IBO_COUNT" type="uint"/> |
| |
| <!-- always 0x5 ? --> |
| <reg32 offset="0xab00" name="SP_UNKNOWN_AB00"/> |
| |
| <reg32 offset="0xab04" name="SP_FS_CONFIG" type="a6xx_sp_xs_config"/> |
| <reg32 offset="0xab05" name="SP_FS_INSTRLEN" type="uint"/> |
| |
| <array offset="0xab10" name="SP_BINDLESS_BASE" stride="2" length="5"> |
| <reg64 offset="0" name="ADDR" type="waddress"/> |
| </array> |
| |
| <!-- |
| Combined IBO state for 3d pipe, used for Image and SSBO write/atomic |
| instructions VS/HS/DS/GS/FS. See SP_CS_IBO_* for compute shaders. |
| --> |
| <reg32 offset="0xab1a" name="SP_IBO_LO"/> |
| <reg32 offset="0xab1b" name="SP_IBO_HI"/> |
| <reg32 offset="0xab20" name="SP_IBO_COUNT" type="uint"/> |
| |
| <reg32 offset="0xacc0" name="SP_2D_DST_FORMAT"> |
| <bitfield name="NORM" pos="0" type="boolean"/> |
| <bitfield name="SINT" pos="1" type="boolean"/> |
| <bitfield name="UINT" pos="2" type="boolean"/> |
| <!-- looks like HW only cares about the base type of this format, |
| which matches the ifmt? --> |
| <bitfield name="COLOR_FORMAT" low="3" high="10" type="a6xx_format"/> |
| <!-- set when ifmt is R2D_UNORM8_SRGB --> |
| <bitfield name="SRGB" pos="11" type="boolean"/> |
| <!-- some sort of channel mask, not sure what it is for --> |
| <bitfield name="MASK" low="12" high="15"/> |
| </reg32> |
| |
| <!-- always 0x0 --> |
| <reg32 offset="0xae00" name="SP_UNKNOWN_AE00"/> |
| |
| <reg32 offset="0xae03" name="SP_UNKNOWN_AE03"/> |
| <reg32 offset="0xae04" name="SP_UNKNOWN_AE04"/> |
| |
| <!-- always 0x3f ? --> |
| <reg32 offset="0xae0f" name="SP_UNKNOWN_AE0F"/> |
| |
| <!-- |
| The downstream kernel calls the debug cluster of registers |
| "a6xx_sp_ps_tp_cluster" but this actually specifies the border |
| color base for compute shaders. |
| --> |
| <reg64 offset="0xb180" name="SP_PS_TP_BORDER_COLOR_BASE_ADDR" type="address"/> |
| <!-- always 0x0 ? --> |
| <reg32 offset="0xb182" name="SP_UNKNOWN_B182"/> |
| <reg32 offset="0xb183" name="SP_UNKNOWN_B183"/> |
| |
| <!-- could be all the stuff below here is actually TPL1?? --> |
| |
| <reg32 offset="0xb300" name="SP_TP_RAS_MSAA_CNTL"> |
| <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> |
| </reg32> |
| <reg32 offset="0xb301" name="SP_TP_DEST_MSAA_CNTL"> |
| <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/> |
| <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/> |
| </reg32> |
| |
| <!-- looks to work in the same way as a5xx: --> |
| <reg64 offset="0xb302" name="SP_TP_BORDER_COLOR_BASE_ADDR" type="address"/> |
| <reg32 offset="0xb302" name="SP_TP_BORDER_COLOR_BASE_ADDR_LO"/> |
| <reg32 offset="0xb303" name="SP_TP_BORDER_COLOR_BASE_ADDR_HI"/> |
| <reg32 offset="0xb304" name="SP_TP_SAMPLE_CONFIG" type="a6xx_sample_config"/> |
| <reg32 offset="0xb305" name="SP_TP_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/> |
| <reg32 offset="0xb306" name="SP_TP_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/> |
| |
| <reg32 offset="0xb309" name="SP_TP_UNKNOWN_B309"/> |
| |
| <!-- |
| Equiv to corresponding RB_2D_SRC_* regs on a5xx.. which were either |
| badly named or the functionality moved in a6xx. But downstream kernel |
| calls this "a6xx_sp_ps_tp_2d_cluster" |
| --> |
| <reg32 offset="0xb4c0" name="SP_PS_2D_SRC_INFO" type="a6xx_2d_surf_info"/> |
| <reg32 offset="0xb4c1" name="SP_PS_2D_SRC_SIZE"> |
| <bitfield name="WIDTH" low="0" high="14" type="uint"/> |
| <bitfield name="HEIGHT" low="15" high="29" type="uint"/> |
| </reg32> |
| <reg32 offset="0xb4c2" name="SP_PS_2D_SRC_LO"/> |
| <reg32 offset="0xb4c3" name="SP_PS_2D_SRC_HI"/> |
| <reg64 offset="0xb4c2" name="SP_PS_2D_SRC" type="waddress"/> |
| <reg32 offset="0xb4c4" name="SP_PS_2D_SRC_PITCH"> |
| <bitfield name="PITCH" low="9" high="24" shr="6" type="uint"/> |
| </reg32> |
| |
| <reg32 offset="0xb4ca" name="SP_PS_2D_SRC_FLAGS_LO"/> |
| <reg32 offset="0xb4cb" name="SP_PS_2D_SRC_FLAGS_HI"/> |
| <reg64 offset="0xb4ca" name="SP_PS_2D_SRC_FLAGS" type="waddress"/> |
| <reg32 offset="0xb4cc" name="SP_PS_2D_SRC_FLAGS_PITCH"> |
| <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/> |
| <bitfield name="ARRAY_PITCH" low="11" high="21" shr="7" type="uint"/> |
| </reg32> |
| |
| <!-- always 0x00100000 ? --> |
| <reg32 offset="0xb600" name="SP_UNKNOWN_B600"/> |
| |
| <!-- always 0x44 ? --> |
| <reg32 offset="0xb605" name="SP_UNKNOWN_B605"/> |
| |
| <bitset name="a6xx_hlsq_xs_cntl" inline="yes"> |
| <bitfield name="CONSTLEN" low="0" high="7" shr="2" type="uint"/> |
| <bitfield name="ENABLED" pos="8" type="boolean"/> |
| </bitset> |
| |
| <reg32 offset="0xb800" name="HLSQ_VS_CNTL" type="a6xx_hlsq_xs_cntl"/> |
| <reg32 offset="0xb801" name="HLSQ_HS_CNTL" type="a6xx_hlsq_xs_cntl"/> |
| <reg32 offset="0xb802" name="HLSQ_DS_CNTL" type="a6xx_hlsq_xs_cntl"/> |
| <reg32 offset="0xb803" name="HLSQ_GS_CNTL" type="a6xx_hlsq_xs_cntl"/> |
| |
| <reg32 offset="0xb820" name="HLSQ_LOAD_STATE_GEOM_CMD"/> |
| <reg64 offset="0xb821" name="HLSQ_LOAD_STATE_GEOM_EXT_SRC_ADDR"/> |
| <reg32 offset="0xb823" name="HLSQ_LOAD_STATE_GEOM_DATA"/> |
| |
| <reg32 offset="0xb980" name="HLSQ_UNKNOWN_B980"/> |
| |
| <reg32 offset="0xb982" name="HLSQ_CONTROL_1_REG"> |
| <!-- always 0x7 ? --> |
| </reg32> |
| <reg32 offset="0xb983" name="HLSQ_CONTROL_2_REG"> |
| <bitfield name="FACEREGID" low="0" high="7" type="a3xx_regid"/> |
| <!-- SAMPLEID is loaded into a half-precision register: --> |
| <bitfield name="SAMPLEID" low="8" high="15" type="a3xx_regid"/> |
| <bitfield name="SAMPLEMASK" low="16" high="23" type="a3xx_regid"/> |
| <!-- |
| SIZE is the "size" of the primitive, ie. what the i/j coords need |
| to be divided by to scale to a single fragment. It is probably |
| the longer of the two lines that form the tri (ie v0v1 and v0v2)? |
| --> |
| <bitfield name="SIZE" low="24" high="31" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xb984" name="HLSQ_CONTROL_3_REG"> |
| <!-- register loaded with position (bary.f) --> |
| <bitfield name="IJ_PERSP_PIXEL" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="IJ_LINEAR_PIXEL" low="8" high="15" type="a3xx_regid"/> |
| <bitfield name="IJ_PERSP_CENTROID" low="16" high="23" type="a3xx_regid"/> |
| <bitfield name="IJ_LINEAR_CENTROID" low="24" high="31" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xb985" name="HLSQ_CONTROL_4_REG"> |
| <bitfield name="IJ_PERSP_SAMPLE" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="IJ_LINEAR_SAMPLE" low="8" high="15" type="a3xx_regid"/> |
| <bitfield name="XYCOORDREGID" low="16" high="23" type="a3xx_regid"/> |
| <bitfield name="ZWCOORDREGID" low="24" high="31" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xb986" name="HLSQ_CONTROL_5_REG"> |
| <!-- unknown regid in low 8b --> |
| </reg32> |
| <reg32 offset="0xb987" name="HLSQ_CS_CNTL" type="a6xx_hlsq_xs_cntl"/> |
| |
| <reg32 offset="0xb990" name="HLSQ_CS_NDRANGE_0"> |
| <bitfield name="KERNELDIM" low="0" high="1" type="uint"/> |
| <!-- localsize is value minus one: --> |
| <bitfield name="LOCALSIZEX" low="2" high="11" type="uint"/> |
| <bitfield name="LOCALSIZEY" low="12" high="21" type="uint"/> |
| <bitfield name="LOCALSIZEZ" low="22" high="31" type="uint"/> |
| </reg32> |
| <reg32 offset="0xb991" name="HLSQ_CS_NDRANGE_1"> |
| <bitfield name="GLOBALSIZE_X" low="0" high="31" type="uint"/> |
| </reg32> |
| <reg32 offset="0xb992" name="HLSQ_CS_NDRANGE_2"> |
| <bitfield name="GLOBALOFF_X" low="0" high="31" type="uint"/> |
| </reg32> |
| <reg32 offset="0xb993" name="HLSQ_CS_NDRANGE_3"> |
| <bitfield name="GLOBALSIZE_Y" low="0" high="31" type="uint"/> |
| </reg32> |
| <reg32 offset="0xb994" name="HLSQ_CS_NDRANGE_4"> |
| <bitfield name="GLOBALOFF_Y" low="0" high="31" type="uint"/> |
| </reg32> |
| <reg32 offset="0xb995" name="HLSQ_CS_NDRANGE_5"> |
| <bitfield name="GLOBALSIZE_Z" low="0" high="31" type="uint"/> |
| </reg32> |
| <reg32 offset="0xb996" name="HLSQ_CS_NDRANGE_6"> |
| <bitfield name="GLOBALOFF_Z" low="0" high="31" type="uint"/> |
| </reg32> |
| <reg32 offset="0xb997" name="HLSQ_CS_CNTL_0"> |
| <bitfield name="WGIDCONSTID" low="0" high="7" type="a3xx_regid"/> |
| <bitfield name="UNK0" low="8" high="15" type="a3xx_regid"/> |
| <bitfield name="UNK1" low="16" high="23" type="a3xx_regid"/> |
| <bitfield name="LOCALIDREGID" low="24" high="31" type="a3xx_regid"/> |
| </reg32> |
| <reg32 offset="0xb998" name="HLSQ_CS_UNKNOWN_B998"/> <!-- always 0x2fc --> |
| <reg32 offset="0xb999" name="HLSQ_CS_KERNEL_GROUP_X"/> |
| <reg32 offset="0xb99a" name="HLSQ_CS_KERNEL_GROUP_Y"/> |
| <reg32 offset="0xb99b" name="HLSQ_CS_KERNEL_GROUP_Z"/> |
| |
| <reg32 offset="0xb9a0" name="HLSQ_LOAD_STATE_FRAG_CMD"/> |
| <reg64 offset="0xb9a1" name="HLSQ_LOAD_STATE_FRAG_EXT_SRC_ADDR"/> |
| <reg32 offset="0xb9a3" name="HLSQ_LOAD_STATE_FRAG_DATA"/> |
| |
| <!-- mirror of SP_CS_BINDLESS_BASE --> |
| <array offset="0xb9c0" name="HLSQ_CS_BINDLESS_BASE" stride="2" length="5"> |
| <reg64 offset="0" name="ADDR" type="waddress"/> |
| </array> |
| |
| <reg32 offset="0xbb00" name="HLSQ_DRAW_CMD"> |
| <bitfield name="STATE_ID" low="0" high="7"/> |
| </reg32> |
| |
| <reg32 offset="0xbb01" name="HLSQ_DISPATCH_CMD"> |
| <bitfield name="STATE_ID" low="0" high="7"/> |
| </reg32> |
| |
| <reg32 offset="0xbb02" name="HLSQ_EVENT_CMD"> |
| <!-- I think only the low bit is actually used? --> |
| <bitfield name="STATE_ID" low="16" high="23"/> |
| <bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/> |
| </reg32> |
| |
| <reg32 offset="0xbb08" name="HLSQ_INVALIDATE_CMD"> |
| <doc> |
| This register clears pending loads queued up by |
| CP_LOAD_STATE6. Each bit resets a particular kind(s) of |
| CP_LOAD_STATE6. |
| </doc> |
| |
| <!-- per-stage state: shader, non-bindless UBO, textures, and samplers --> |
| <bitfield name="VS_STATE" pos="0" type="boolean"/> |
| <bitfield name="HS_STATE" pos="1" type="boolean"/> |
| <bitfield name="DS_STATE" pos="2" type="boolean"/> |
| <bitfield name="GS_STATE" pos="3" type="boolean"/> |
| <bitfield name="FS_STATE" pos="4" type="boolean"/> |
| <bitfield name="CS_STATE" pos="5" type="boolean"/> |
| |
| <bitfield name="CS_IBO" pos="6" type="boolean"/> |
| <bitfield name="GFX_IBO" pos="7" type="boolean"/> |
| |
| <!-- Note: these only do something when HLSQ_SHARED_CONSTS is set to 1 --> |
| <bitfield name="CS_SHARED_CONST" pos="19" type="boolean"/> |
| <bitfield name="GFX_SHARED_CONST" pos="8" type="boolean"/> |
| |
| <!-- SS6_BINDLESS: one bit per bindless base --> |
| <bitfield name="CS_BINDLESS" low="9" high="13" type="hex"/> |
| <bitfield name="GFX_BINDLESS" low="14" high="18" type="hex"/> |
| </reg32> |
| |
| <reg32 offset="0xbb10" name="HLSQ_FS_CNTL" type="a6xx_hlsq_xs_cntl"/> |
| |
| <reg32 offset="0xbb11" name="HLSQ_SHARED_CONSTS"> |
| <doc> |
| Shared constants are intended to be used for Vulkan push |
| constants. When enabled, 8 vec4's are reserved in the FS |
| const pool and 16 in the geometry const pool although |
| only 8 are actually used (why?) and they are mapped to |
| c504-c511 in each stage. Both VS and FS shared consts |
| are written using ST6_CONSTANTS/SB6_IBO, so that both |
| the geometry and FS shared consts can be written at once |
| by using CP_LOAD_STATE6 rather than |
| CP_LOAD_STATE6_FRAG/CP_LOAD_STATE6_GEOM. In addition |
| DST_OFF and NUM_UNIT are in units of dwords instead of |
| vec4's. |
| |
| There is also a separate shared constant pool for CS, |
| which is loaded through CP_LOAD_STATE6_FRAG with |
| ST6_UBO/ST6_IBO. However the only real difference for CS |
| is the dword units. |
| </doc> |
| <bitfield name="ENABLE" pos="0" type="boolean"/> |
| </reg32> |
| |
| <!-- mirror of SP_BINDLESS_BASE --> |
| <array offset="0xbb20" name="HLSQ_BINDLESS_BASE" stride="2" length="5"> |
| <reg64 offset="0" name="ADDR" type="waddress"/> |
| </array> |
| |
| <reg32 offset="0xbd80" name="HLSQ_2D_EVENT_CMD"> |
| <bitfield name="STATE_ID" low="8" high="15"/> |
| <bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/> |
| </reg32> |
| |
| <!-- always 0x80 ? --> |
| <reg32 offset="0xbe00" name="HLSQ_UNKNOWN_BE00"/> |
| <!-- always 0x0 ? --> |
| <reg32 offset="0xbe01" name="HLSQ_UNKNOWN_BE01"/> |
| <!-- always 0x0 ? --> |
| <reg32 offset="0xbe04" name="HLSQ_UNKNOWN_BE04"/> |
| |
| <!-- |
| These special registers signal the beginning/end of an event |
| sequence. The sequence used internally for an event looks like: |
| - write EVENT_CMD pipe register |
| - write CP_EVENT_START |
| - write HLSQ_EVENT_CMD with event or HLSQ_DRAW_CMD |
| - write PC_EVENT_CMD with event or PC_DRAW_CMD |
| - write HLSQ_EVENT_CMD(CONTEXT_DONE) |
| - write PC_EVENT_CMD(CONTEXT_DONE) |
| - write CP_EVENT_END |
| Writing to CP_EVENT_END seems to actually trigger the context roll |
| --> |
| <reg32 offset="0xd600" name="CP_EVENT_START"> |
| <bitfield name="STATE_ID" low="0" high="7"/> |
| </reg32> |
| <reg32 offset="0xd601" name="CP_EVENT_END"> |
| <bitfield name="STATE_ID" low="0" high="7"/> |
| </reg32> |
| <reg32 offset="0xd700" name="CP_2D_EVENT_START"> |
| <bitfield name="STATE_ID" low="0" high="7"/> |
| </reg32> |
| <reg32 offset="0xd701" name="CP_2D_EVENT_END"> |
| <bitfield name="STATE_ID" low="0" high="7"/> |
| </reg32> |
| </domain> |
| |
| <!-- Seems basically the same as a5xx, maybe move to common.xml.. --> |
| <domain name="A6XX_TEX_SAMP" width="32"> |
| <doc>Texture sampler dwords</doc> |
| <enum name="a6xx_tex_filter"> <!-- same as a4xx? --> |
| <value name="A6XX_TEX_NEAREST" value="0"/> |
| <value name="A6XX_TEX_LINEAR" value="1"/> |
| <value name="A6XX_TEX_ANISO" value="2"/> |
| <value name="A6XX_TEX_CUBIC" value="3"/> <!-- a650 only --> |
| </enum> |
| <enum name="a6xx_tex_clamp"> <!-- same as a4xx? --> |
| <value name="A6XX_TEX_REPEAT" value="0"/> |
| <value name="A6XX_TEX_CLAMP_TO_EDGE" value="1"/> |
| <value name="A6XX_TEX_MIRROR_REPEAT" value="2"/> |
| <value name="A6XX_TEX_CLAMP_TO_BORDER" value="3"/> |
| <value name="A6XX_TEX_MIRROR_CLAMP" value="4"/> |
| </enum> |
| <enum name="a6xx_tex_aniso"> <!-- same as a4xx? --> |
| <value name="A6XX_TEX_ANISO_1" value="0"/> |
| <value name="A6XX_TEX_ANISO_2" value="1"/> |
| <value name="A6XX_TEX_ANISO_4" value="2"/> |
| <value name="A6XX_TEX_ANISO_8" value="3"/> |
| <value name="A6XX_TEX_ANISO_16" value="4"/> |
| </enum> |
| <enum name="a6xx_reduction_mode"> |
| <value name="A6XX_REDUCTION_MODE_AVERAGE" value="0"/> |
| <value name="A6XX_REDUCTION_MODE_MIN" value="1"/> |
| <value name="A6XX_REDUCTION_MODE_MAX" value="2"/> |
| </enum> |
| |
| <reg32 offset="0" name="0"> |
| <bitfield name="MIPFILTER_LINEAR_NEAR" pos="0" type="boolean"/> |
| <bitfield name="XY_MAG" low="1" high="2" type="a6xx_tex_filter"/> |
| <bitfield name="XY_MIN" low="3" high="4" type="a6xx_tex_filter"/> |
| <bitfield name="WRAP_S" low="5" high="7" type="a6xx_tex_clamp"/> |
| <bitfield name="WRAP_T" low="8" high="10" type="a6xx_tex_clamp"/> |
| <bitfield name="WRAP_R" low="11" high="13" type="a6xx_tex_clamp"/> |
| <bitfield name="ANISO" low="14" high="16" type="a6xx_tex_aniso"/> |
| <bitfield name="LOD_BIAS" low="19" high="31" type="fixed" radix="8"/><!-- no idea how many bits for real --> |
| </reg32> |
| <reg32 offset="1" name="1"> |
| <!-- bit 0 always set with vulkan? --> |
| <bitfield name="UNK0" pos="0" type="boolean"/> |
| <bitfield name="COMPARE_FUNC" low="1" high="3" type="adreno_compare_func"/> |
| <bitfield name="CUBEMAPSEAMLESSFILTOFF" pos="4" type="boolean"/> |
| <bitfield name="UNNORM_COORDS" pos="5" type="boolean"/> |
| <bitfield name="MIPFILTER_LINEAR_FAR" pos="6" type="boolean"/> |
| <bitfield name="MAX_LOD" low="8" high="19" type="ufixed" radix="8"/> |
| <bitfield name="MIN_LOD" low="20" high="31" type="ufixed" radix="8"/> |
| </reg32> |
| <reg32 offset="2" name="2"> |
| <bitfield name="REDUCTION_MODE" low="0" high="1" type="a6xx_reduction_mode"/> |
| <bitfield name="CHROMA_LINEAR" pos="5" type="boolean"/> |
| <bitfield name="BCOLOR_OFFSET" low="7" high="31" shr="7"/> |
| </reg32> |
| <reg32 offset="3" name="3"/> |
| </domain> |
| |
| <domain name="A6XX_TEX_CONST" width="32"> |
| <doc>Texture constant dwords</doc> |
| <enum name="a6xx_tex_swiz"> <!-- same as a4xx? --> |
| <value name="A6XX_TEX_X" value="0"/> |
| <value name="A6XX_TEX_Y" value="1"/> |
| <value name="A6XX_TEX_Z" value="2"/> |
| <value name="A6XX_TEX_W" value="3"/> |
| <value name="A6XX_TEX_ZERO" value="4"/> |
| <value name="A6XX_TEX_ONE" value="5"/> |
| </enum> |
| <enum name="a6xx_tex_type"> <!-- same as a4xx? --> |
| <value name="A6XX_TEX_1D" value="0"/> |
| <value name="A6XX_TEX_2D" value="1"/> |
| <value name="A6XX_TEX_CUBE" value="2"/> |
| <value name="A6XX_TEX_3D" value="3"/> |
| </enum> |
| <reg32 offset="0" name="0"> |
| <bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/> |
| <bitfield name="SRGB" pos="2" type="boolean"/> |
| <bitfield name="SWIZ_X" low="4" high="6" type="a6xx_tex_swiz"/> |
| <bitfield name="SWIZ_Y" low="7" high="9" type="a6xx_tex_swiz"/> |
| <bitfield name="SWIZ_Z" low="10" high="12" type="a6xx_tex_swiz"/> |
| <bitfield name="SWIZ_W" low="13" high="15" type="a6xx_tex_swiz"/> |
| <bitfield name="MIPLVLS" low="16" high="19" type="uint"/> |
| <!-- overlaps with MIPLVLS --> |
| <bitfield name="CHROMA_MIDPOINT_X" pos="16" type="boolean"/> |
| <bitfield name="CHROMA_MIDPOINT_Y" pos="18" type="boolean"/> |
| <bitfield name="SAMPLES" low="20" high="21" type="a3xx_msaa_samples"/> |
| <bitfield name="FMT" low="22" high="29" type="a6xx_format"/> |
| <bitfield name="SWAP" low="30" high="31" type="a3xx_color_swap"/> |
| </reg32> |
| <reg32 offset="1" name="1"> |
| <bitfield name="WIDTH" low="0" high="14" type="uint"/> |
| <bitfield name="HEIGHT" low="15" high="29" type="uint"/> |
| </reg32> |
| <reg32 offset="2" name="2"> |
| <!-- |
| b4 and b31 set for buffer/ssbo case, in which case low 15 bits |
| of size encoded in WIDTH, and high 15 bits encoded in HEIGHT |
| |
| b31 is probably the 'BUFFER' bit.. it is the one that changes |
| behavior of texture in dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture.buffer_size_131071 |
| --> |
| <bitfield name="UNK4" pos="4" type="boolean"/> |
| <!-- minimum pitch (for mipmap levels): log2(pitchalign / 64) --> |
| <bitfield name="PITCHALIGN" low="0" high="3" type="uint"/> |
| <doc>Pitch in bytes (so actually stride)</doc> |
| <bitfield name="PITCH" low="7" high="28" type="uint"/> |
| <bitfield name="TYPE" low="29" high="30" type="a6xx_tex_type"/> |
| <bitfield name="UNK31" pos="31" type="boolean"/> |
| </reg32> |
| <reg32 offset="3" name="3"> |
| <!-- |
| ARRAY_PITCH is basically LAYERSZ for the first mipmap level, and |
| for 3d textures (laid out mipmap level first) MIN_LAYERSZ is the |
| layer size at the point that it stops being reduced moving to |
| higher (smaller) mipmap levels |
| --> |
| <bitfield name="ARRAY_PITCH" low="0" high="13" shr="12" type="uint"/> |
| <bitfield name="MIN_LAYERSZ" low="23" high="26" shr="12"/> |
| <!-- |
| by default levels with w < 16 are linear |
| TILE_ALL makes all levels have tiling |
| seems required when using UBWC, since all levels have UBWC (can possibly be disabled?) |
| --> |
| <bitfield name="TILE_ALL" pos="27" type="boolean"/> |
| <bitfield name="FLAG" pos="28" type="boolean"/> |
| </reg32> |
| <!-- for 2-3 plane format, BASE is flag buffer address (if enabled) |
| the address of the non-flag base buffer is determined automatically, |
| and must follow the flag buffer |
| --> |
| <reg32 offset="4" name="4"> |
| <bitfield name="BASE_LO" low="5" high="31" shr="5"/> |
| </reg32> |
| <reg32 offset="5" name="5"> |
| <bitfield name="BASE_HI" low="0" high="16"/> |
| <bitfield name="DEPTH" low="17" high="29" type="uint"/> |
| </reg32> |
| <reg32 offset="6" name="6"> |
| <!-- pitch for plane 2 / plane 3 --> |
| <bitfield name="PLANE_PITCH" low="8" high="31" type="uint"/> |
| </reg32> |
| <!-- 7/8 is plane 2 address for planar formats --> |
| <reg32 offset="7" name="7"> |
| <bitfield name="FLAG_LO" low="5" high="31" shr="5"/> |
| </reg32> |
| <reg32 offset="8" name="8"> |
| <bitfield name="FLAG_HI" low="0" high="16"/> |
| </reg32> |
| <!-- 9/10 is plane 3 address for planar formats --> |
| <reg32 offset="9" name="9"> |
| <bitfield name="FLAG_BUFFER_ARRAY_PITCH" low="0" high="16" shr="4" type="uint"/> |
| </reg32> |
| <reg32 offset="10" name="10"> |
| <bitfield name="FLAG_BUFFER_PITCH" low="0" high="6" shr="6" type="uint"/> |
| <!-- log2 size of the first level, required for mipmapping --> |
| <bitfield name="FLAG_BUFFER_LOGW" low="8" high="11" type="uint"/> |
| <bitfield name="FLAG_BUFFER_LOGH" low="12" high="15" type="uint"/> |
| </reg32> |
| <reg32 offset="11" name="11"/> |
| <reg32 offset="12" name="12"/> |
| <reg32 offset="13" name="13"/> |
| <reg32 offset="14" name="14"/> |
| <reg32 offset="15" name="15"/> |
| </domain> |
| |
| <!-- |
| Note the "SSBO" state blocks are actually used for both images and SSBOs, |
| naming is just because I r/e'd SSBOs first. I should probably come up |
| with a better name. |
| --> |
| <domain name="A6XX_IBO" width="32"> |
| <reg32 offset="0" name="0"> |
| <!-- |
| NOTE: same position as in TEX_CONST state.. I don't see other bits |
| used but if they are good chance position is same as TEX_CONST |
| --> |
| <bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/> |
| <bitfield name="FMT" low="22" high="29" type="a6xx_format"/> |
| </reg32> |
| <reg32 offset="1" name="1"> |
| <bitfield name="WIDTH" low="0" high="14" type="uint"/> |
| <bitfield name="HEIGHT" low="15" high="29" type="uint"/> |
| </reg32> |
| <reg32 offset="2" name="2"> |
| <!-- |
| b4 and b31 set for buffer/ssbo case, in which case low 15 bits |
| of size encoded in WIDTH, and high 15 bits encoded in HEIGHT |
| --> |
| <bitfield name="UNK4" pos="4" type="boolean"/> |
| <doc>Pitch in bytes (so actually stride)</doc> |
| <bitfield name="PITCH" low="7" high="28" type="uint"/> |
| <bitfield name="TYPE" low="29" high="30" type="a6xx_tex_type"/> |
| <bitfield name="UNK31" pos="31" type="boolean"/> |
| </reg32> |
| <reg32 offset="3" name="3"> |
| <!-- |
| ARRAY_PITCH is basically LAYERSZ for the first mipmap level, and |
| for 3d textures (laid out mipmap level first) MIN_LAYERSZ is the |
| layer size at the point that it stops being reduced moving to |
| higher (smaller) mipmap levels |
| --> |
| <bitfield name="ARRAY_PITCH" low="0" high="13" shr="12" type="uint"/> |
| <bitfield name="UNK27" pos="27" type="boolean"/> |
| <bitfield name="FLAG" pos="28" type="boolean"/> |
| </reg32> |
| <reg32 offset="4" name="4"> |
| <bitfield name="BASE_LO" low="0" high="31"/> |
| </reg32> |
| <reg32 offset="5" name="5"> |
| <bitfield name="BASE_HI" low="0" high="16"/> |
| <bitfield name="DEPTH" low="17" high="29" type="uint"/> |
| </reg32> |
| <reg32 offset="6" name="6"> |
| </reg32> |
| <reg32 offset="7" name="7"> |
| </reg32> |
| <reg32 offset="8" name="8"> |
| </reg32> |
| <reg32 offset="9" name="9"> |
| <bitfield name="FLAG_BUFFER_ARRAY_PITCH" low="0" high="16" shr="4" type="uint"/> |
| </reg32> |
| <reg32 offset="10" name="10"> |
| <!-- |
| I see some other bits set by blob above FLAG_BUFFER_PITCH, but they |
| don't seem to be particularly sensible... or needed for UBWC to work |
| --> |
| <bitfield name="FLAG_BUFFER_PITCH" low="0" high="6" shr="6" type="uint"/> |
| </reg32> |
| </domain> |
| |
| <domain name="A6XX_UBO" width="32"> |
| <reg32 offset="0" name="0"> |
| <bitfield name="BASE_LO" low="0" high="31"/> |
| </reg32> |
| <reg32 offset="1" name="1"> |
| <bitfield name="BASE_HI" low="0" high="16"/> |
| <bitfield name="SIZE" low="17" high="31"/> <!-- size in vec4 (4xDWORD) units --> |
| </reg32> |
| </domain> |
| |
| <domain name="A6XX_PDC" width="32"> |
| <reg32 offset="0x1140" name="GPU_ENABLE_PDC"/> |
| <reg32 offset="0x1148" name="GPU_SEQ_START_ADDR"/> |
| <reg32 offset="0x1540" name="GPU_TCS0_CONTROL"/> |
| <reg32 offset="0x1541" name="GPU_TCS0_CMD_ENABLE_BANK"/> |
| <reg32 offset="0x1542" name="GPU_TCS0_CMD_WAIT_FOR_CMPL_BANK"/> |
| <reg32 offset="0x1543" name="GPU_TCS0_CMD0_MSGID"/> |
| <reg32 offset="0x1544" name="GPU_TCS0_CMD0_ADDR"/> |
| <reg32 offset="0x1545" name="GPU_TCS0_CMD0_DATA"/> |
| <reg32 offset="0x1572" name="GPU_TCS1_CONTROL"/> |
| <reg32 offset="0x1573" name="GPU_TCS1_CMD_ENABLE_BANK"/> |
| <reg32 offset="0x1574" name="GPU_TCS1_CMD_WAIT_FOR_CMPL_BANK"/> |
| <reg32 offset="0x1575" name="GPU_TCS1_CMD0_MSGID"/> |
| <reg32 offset="0x1576" name="GPU_TCS1_CMD0_ADDR"/> |
| <reg32 offset="0x1577" name="GPU_TCS1_CMD0_DATA"/> |
| <reg32 offset="0x15A4" name="GPU_TCS2_CONTROL"/> |
| <reg32 offset="0x15A5" name="GPU_TCS2_CMD_ENABLE_BANK"/> |
| <reg32 offset="0x15A6" name="GPU_TCS2_CMD_WAIT_FOR_CMPL_BANK"/> |
| <reg32 offset="0x15A7" name="GPU_TCS2_CMD0_MSGID"/> |
| <reg32 offset="0x15A8" name="GPU_TCS2_CMD0_ADDR"/> |
| <reg32 offset="0x15A9" name="GPU_TCS2_CMD0_DATA"/> |
| <reg32 offset="0x15D6" name="GPU_TCS3_CONTROL"/> |
| <reg32 offset="0x15D7" name="GPU_TCS3_CMD_ENABLE_BANK"/> |
| <reg32 offset="0x15D8" name="GPU_TCS3_CMD_WAIT_FOR_CMPL_BANK"/> |
| <reg32 offset="0x15D9" name="GPU_TCS3_CMD0_MSGID"/> |
| <reg32 offset="0x15DA" name="GPU_TCS3_CMD0_ADDR"/> |
| <reg32 offset="0x15DB" name="GPU_TCS3_CMD0_DATA"/> |
| </domain> |
| |
| <domain name="A6XX_PDC_GPU_SEQ" width="32"> |
| <reg32 offset="0x0" name="MEM_0"/> |
| </domain> |
| |
| <domain name="A6XX_CX_DBGC" width="32"> |
| <reg32 offset="0x0000" name="CFG_DBGBUS_SEL_A"> |
| <bitfield high="7" low="0" name="PING_INDEX"/> |
| <bitfield high="15" low="8" name="PING_BLK_SEL"/> |
| </reg32> |
| <reg32 offset="0x0001" name="CFG_DBGBUS_SEL_B"/> |
| <reg32 offset="0x0002" name="CFG_DBGBUS_SEL_C"/> |
| <reg32 offset="0x0003" name="CFG_DBGBUS_SEL_D"/> |
| <reg32 offset="0x0004" name="CFG_DBGBUS_CNTLT"> |
| <bitfield high="5" low="0" name="TRACEEN"/> |
| <bitfield high="14" low="12" name="GRANU"/> |
| <bitfield high="31" low="28" name="SEGT"/> |
| </reg32> |
| <reg32 offset="0x0005" name="CFG_DBGBUS_CNTLM"> |
| <bitfield high="27" low="24" name="ENABLE"/> |
| </reg32> |
| <reg32 offset="0x0008" name="CFG_DBGBUS_IVTL_0"/> |
| <reg32 offset="0x0009" name="CFG_DBGBUS_IVTL_1"/> |
| <reg32 offset="0x000a" name="CFG_DBGBUS_IVTL_2"/> |
| <reg32 offset="0x000b" name="CFG_DBGBUS_IVTL_3"/> |
| <reg32 offset="0x000c" name="CFG_DBGBUS_MASKL_0"/> |
| <reg32 offset="0x000d" name="CFG_DBGBUS_MASKL_1"/> |
| <reg32 offset="0x000e" name="CFG_DBGBUS_MASKL_2"/> |
| <reg32 offset="0x000f" name="CFG_DBGBUS_MASKL_3"/> |
| <reg32 offset="0x0010" name="CFG_DBGBUS_BYTEL_0"> |
| <bitfield high="3" low="0" name="BYTEL0"/> |
| <bitfield high="7" low="4" name="BYTEL1"/> |
| <bitfield high="11" low="8" name="BYTEL2"/> |
| <bitfield high="15" low="12" name="BYTEL3"/> |
| <bitfield high="19" low="16" name="BYTEL4"/> |
| <bitfield high="23" low="20" name="BYTEL5"/> |
| <bitfield high="27" low="24" name="BYTEL6"/> |
| <bitfield high="31" low="28" name="BYTEL7"/> |
| </reg32> |
| <reg32 offset="0x0011" name="CFG_DBGBUS_BYTEL_1"> |
| <bitfield high="3" low="0" name="BYTEL8"/> |
| <bitfield high="7" low="4" name="BYTEL9"/> |
| <bitfield high="11" low="8" name="BYTEL10"/> |
| <bitfield high="15" low="12" name="BYTEL11"/> |
| <bitfield high="19" low="16" name="BYTEL12"/> |
| <bitfield high="23" low="20" name="BYTEL13"/> |
| <bitfield high="27" low="24" name="BYTEL14"/> |
| <bitfield high="31" low="28" name="BYTEL15"/> |
| </reg32> |
| |
| <reg32 offset="0x002f" name="CFG_DBGBUS_TRACE_BUF1"/> |
| <reg32 offset="0x0030" name="CFG_DBGBUS_TRACE_BUF2"/> |
| </domain> |
| |
| <domain name="A6XX_CX_MISC" width="32"> |
| <reg32 offset="0x0001" name="SYSTEM_CACHE_CNTL_0"/> |
| <reg32 offset="0x0002" name="SYSTEM_CACHE_CNTL_1"/> |
| </domain> |
| |
| </database> |