Path: blob/21.2-virgl/src/freedreno/registers/adreno/adreno_common.xml
8057 views
<?xml version="1.0" encoding="UTF-8"?>1<database xmlns="http://nouveau.freedesktop.org/"2xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"3xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">45<enum name="chip" bare="yes">6<value name="A2XX"/>7<value name="A3XX"/>8<value name="A4XX"/>9<value name="A5XX"/>10<value name="A6XX"/>11</enum>1213<enum name="adreno_pa_su_sc_draw">14<value name="PC_DRAW_POINTS" value="0"/>15<value name="PC_DRAW_LINES" value="1"/>16<value name="PC_DRAW_TRIANGLES" value="2"/>17</enum>1819<enum name="adreno_compare_func">20<value name="FUNC_NEVER" value="0"/>21<value name="FUNC_LESS" value="1"/>22<value name="FUNC_EQUAL" value="2"/>23<value name="FUNC_LEQUAL" value="3"/>24<value name="FUNC_GREATER" value="4"/>25<value name="FUNC_NOTEQUAL" value="5"/>26<value name="FUNC_GEQUAL" value="6"/>27<value name="FUNC_ALWAYS" value="7"/>28</enum>2930<enum name="adreno_stencil_op">31<value name="STENCIL_KEEP" value="0"/>32<value name="STENCIL_ZERO" value="1"/>33<value name="STENCIL_REPLACE" value="2"/>34<value name="STENCIL_INCR_CLAMP" value="3"/>35<value name="STENCIL_DECR_CLAMP" value="4"/>36<value name="STENCIL_INVERT" value="5"/>37<value name="STENCIL_INCR_WRAP" value="6"/>38<value name="STENCIL_DECR_WRAP" value="7"/>39</enum>4041<enum name="adreno_rb_blend_factor">42<value name="FACTOR_ZERO" value="0"/>43<value name="FACTOR_ONE" value="1"/>44<value name="FACTOR_SRC_COLOR" value="4"/>45<value name="FACTOR_ONE_MINUS_SRC_COLOR" value="5"/>46<value name="FACTOR_SRC_ALPHA" value="6"/>47<value name="FACTOR_ONE_MINUS_SRC_ALPHA" value="7"/>48<value name="FACTOR_DST_COLOR" value="8"/>49<value name="FACTOR_ONE_MINUS_DST_COLOR" value="9"/>50<value name="FACTOR_DST_ALPHA" value="10"/>51<value name="FACTOR_ONE_MINUS_DST_ALPHA" value="11"/>52<value name="FACTOR_CONSTANT_COLOR" value="12"/>53<value name="FACTOR_ONE_MINUS_CONSTANT_COLOR" value="13"/>54<value name="FACTOR_CONSTANT_ALPHA" value="14"/>55<value name="FACTOR_ONE_MINUS_CONSTANT_ALPHA" value="15"/>56<value name="FACTOR_SRC_ALPHA_SATURATE" value="16"/>57<value name="FACTOR_SRC1_COLOR" value="20"/>58<value name="FACTOR_ONE_MINUS_SRC1_COLOR" value="21"/>59<value name="FACTOR_SRC1_ALPHA" value="22"/>60<value name="FACTOR_ONE_MINUS_SRC1_ALPHA" value="23"/>61</enum>6263<bitset name="adreno_rb_stencilrefmask" inline="yes">64<bitfield name="STENCILREF" low="0" high="7" type="hex"/>65<bitfield name="STENCILMASK" low="8" high="15" type="hex"/>66<bitfield name="STENCILWRITEMASK" low="16" high="23" type="hex"/>67</bitset>6869<enum name="adreno_rb_surface_endian">70<value name="ENDIAN_NONE" value="0"/>71<value name="ENDIAN_8IN16" value="1"/>72<value name="ENDIAN_8IN32" value="2"/>73<value name="ENDIAN_16IN32" value="3"/>74<value name="ENDIAN_8IN64" value="4"/>75<value name="ENDIAN_8IN128" value="5"/>76</enum>7778<enum name="adreno_rb_dither_mode">79<value name="DITHER_DISABLE" value="0"/>80<value name="DITHER_ALWAYS" value="1"/>81<value name="DITHER_IF_ALPHA_OFF" value="2"/>82</enum>8384<enum name="adreno_rb_depth_format">85<value name="DEPTHX_16" value="0"/>86<value name="DEPTHX_24_8" value="1"/>87<value name="DEPTHX_32" value="2"/>88</enum>8990<enum name="adreno_rb_copy_control_mode">91<value name="RB_COPY_RESOLVE" value="1"/>92<value name="RB_COPY_CLEAR" value="2"/>93<value name="RB_COPY_DEPTH_STENCIL" value="5"/> <!-- not sure if this is part of MODE or another bitfield?? -->94</enum>9596<bitset name="adreno_reg_xy" inline="yes">97<bitfield name="WINDOW_OFFSET_DISABLE" pos="31" type="boolean"/>98<bitfield name="X" low="0" high="14" type="uint"/>99<bitfield name="Y" low="16" high="30" type="uint"/>100</bitset>101102<bitset name="adreno_cp_protect" inline="yes">103<bitfield name="BASE_ADDR" low="0" high="16"/>104<bitfield name="MASK_LEN" low="24" high="28"/>105<bitfield name="TRAP_WRITE" pos="29"/>106<bitfield name="TRAP_READ" pos="30"/>107</bitset>108109<domain name="AXXX" width="32">110<brief>Registers in common between a2xx and a3xx</brief>111112<reg32 offset="0x01c0" name="CP_RB_BASE"/>113<reg32 offset="0x01c1" name="CP_RB_CNTL">114<bitfield name="BUFSZ" low="0" high="5"/>115<bitfield name="BLKSZ" low="8" high="13"/>116<bitfield name="BUF_SWAP" low="16" high="17"/>117<bitfield name="POLL_EN" pos="20" type="boolean"/>118<bitfield name="NO_UPDATE" pos="27" type="boolean"/>119<bitfield name="RPTR_WR_EN" pos="31" type="boolean"/>120</reg32>121<reg32 offset="0x01c3" name="CP_RB_RPTR_ADDR">122<bitfield name="SWAP" low="0" high="1" type="uint"/>123<bitfield name="ADDR" low="2" high="31" shr="2"/>124</reg32>125<reg32 offset="0x01c4" name="CP_RB_RPTR" type="uint"/>126<reg32 offset="0x01c5" name="CP_RB_WPTR" type="uint"/>127<reg32 offset="0x01c6" name="CP_RB_WPTR_DELAY"/>128<reg32 offset="0x01c7" name="CP_RB_RPTR_WR"/>129<reg32 offset="0x01c8" name="CP_RB_WPTR_BASE"/>130<reg32 offset="0x01d5" name="CP_QUEUE_THRESHOLDS">131<bitfield name="CSQ_IB1_START" low="0" high="3" type="uint"/>132<bitfield name="CSQ_IB2_START" low="8" high="11" type="uint"/>133<bitfield name="CSQ_ST_START" low="16" high="19" type="uint"/>134</reg32>135<reg32 offset="0x01d6" name="CP_MEQ_THRESHOLDS">136<bitfield name="MEQ_END" low="16" high="20" type="uint"/>137<bitfield name="ROQ_END" low="24" high="28" type="uint"/>138</reg32>139<reg32 offset="0x01d7" name="CP_CSQ_AVAIL">140<bitfield name="RING" low="0" high="6" type="uint"/>141<bitfield name="IB1" low="8" high="14" type="uint"/>142<bitfield name="IB2" low="16" high="22" type="uint"/>143</reg32>144<reg32 offset="0x01d8" name="CP_STQ_AVAIL">145<bitfield name="ST" low="0" high="6" type="uint"/>146</reg32>147<reg32 offset="0x01d9" name="CP_MEQ_AVAIL">148<bitfield name="MEQ" low="0" high="4" type="uint"/>149</reg32>150<reg32 offset="0x01dc" name="SCRATCH_UMSK">151<bitfield name="UMSK" low="0" high="7" type="uint"/>152<bitfield name="SWAP" low="16" high="17" type="uint"/>153</reg32>154<reg32 offset="0x01dd" name="SCRATCH_ADDR"/>155<reg32 offset="0x01ea" name="CP_ME_RDADDR"/>156157<reg32 offset="0x01ec" name="CP_STATE_DEBUG_INDEX"/>158<reg32 offset="0x01ed" name="CP_STATE_DEBUG_DATA"/>159<reg32 offset="0x01f2" name="CP_INT_CNTL">160<bitfield name="SW_INT_MASK" pos="19" type="boolean"/>161<bitfield name="T0_PACKET_IN_IB_MASK" pos="23" type="boolean"/>162<bitfield name="OPCODE_ERROR_MASK" pos="24" type="boolean"/>163<bitfield name="PROTECTED_MODE_ERROR_MASK" pos="25" type="boolean"/>164<bitfield name="RESERVED_BIT_ERROR_MASK" pos="26" type="boolean"/>165<bitfield name="IB_ERROR_MASK" pos="27" type="boolean"/>166<bitfield name="IB2_INT_MASK" pos="29" type="boolean"/>167<bitfield name="IB1_INT_MASK" pos="30" type="boolean"/>168<bitfield name="RB_INT_MASK" pos="31" type="boolean"/>169</reg32>170<reg32 offset="0x01f3" name="CP_INT_STATUS"/>171<reg32 offset="0x01f4" name="CP_INT_ACK"/>172<reg32 offset="0x01f6" name="CP_ME_CNTL">173<bitfield name="BUSY" pos="29" type="boolean"/>174<bitfield name="HALT" pos="28" type="boolean"/>175</reg32>176<reg32 offset="0x01f7" name="CP_ME_STATUS"/>177<reg32 offset="0x01f8" name="CP_ME_RAM_WADDR"/>178<reg32 offset="0x01f9" name="CP_ME_RAM_RADDR"/>179<reg32 offset="0x01fa" name="CP_ME_RAM_DATA"/>180<reg32 offset="0x01fc" name="CP_DEBUG">181<bitfield name="PREDICATE_DISABLE" pos="23" type="boolean"/>182<bitfield name="PROG_END_PTR_ENABLE" pos="24" type="boolean"/>183<bitfield name="MIU_128BIT_WRITE_ENABLE" pos="25" type="boolean"/>184<bitfield name="PREFETCH_PASS_NOPS" pos="26" type="boolean"/>185<bitfield name="DYNAMIC_CLK_DISABLE" pos="27" type="boolean"/>186<bitfield name="PREFETCH_MATCH_DISABLE" pos="28" type="boolean"/>187<bitfield name="SIMPLE_ME_FLOW_CONTROL" pos="30" type="boolean"/>188<bitfield name="MIU_WRITE_PACK_DISABLE" pos="31" type="boolean"/>189</reg32>190<reg32 offset="0x01fd" name="CP_CSQ_RB_STAT">191<bitfield name="RPTR" low="0" high="6" type="uint"/>192<bitfield name="WPTR" low="16" high="22" type="uint"/>193</reg32>194<reg32 offset="0x01fe" name="CP_CSQ_IB1_STAT">195<bitfield name="RPTR" low="0" high="6" type="uint"/>196<bitfield name="WPTR" low="16" high="22" type="uint"/>197</reg32>198<reg32 offset="0x01ff" name="CP_CSQ_IB2_STAT">199<bitfield name="RPTR" low="0" high="6" type="uint"/>200<bitfield name="WPTR" low="16" high="22" type="uint"/>201</reg32>202203<reg32 offset="0x0440" name="CP_NON_PREFETCH_CNTRS"/>204<reg32 offset="0x0443" name="CP_STQ_ST_STAT"/>205<reg32 offset="0x044d" name="CP_ST_BASE"/>206<reg32 offset="0x044e" name="CP_ST_BUFSZ"/>207<reg32 offset="0x044f" name="CP_MEQ_STAT"/>208<reg32 offset="0x0452" name="CP_MIU_TAG_STAT"/>209<reg32 offset="0x0454" name="CP_BIN_MASK_LO"/>210<reg32 offset="0x0455" name="CP_BIN_MASK_HI"/>211<reg32 offset="0x0456" name="CP_BIN_SELECT_LO"/>212<reg32 offset="0x0457" name="CP_BIN_SELECT_HI"/>213<reg32 offset="0x0458" name="CP_IB1_BASE"/>214<reg32 offset="0x0459" name="CP_IB1_BUFSZ"/>215<reg32 offset="0x045a" name="CP_IB2_BASE"/>216<reg32 offset="0x045b" name="CP_IB2_BUFSZ"/>217<reg32 offset="0x047f" name="CP_STAT">218<bitfield pos="31" name="CP_BUSY"/>219<bitfield pos="30" name="VS_EVENT_FIFO_BUSY"/>220<bitfield pos="29" name="PS_EVENT_FIFO_BUSY"/>221<bitfield pos="28" name="CF_EVENT_FIFO_BUSY"/>222<bitfield pos="27" name="RB_EVENT_FIFO_BUSY"/>223<bitfield pos="26" name="ME_BUSY"/>224<bitfield pos="25" name="MIU_WR_C_BUSY"/>225<bitfield pos="23" name="CP_3D_BUSY"/>226<bitfield pos="22" name="CP_NRT_BUSY"/>227<bitfield pos="21" name="RBIU_SCRATCH_BUSY"/>228<bitfield pos="20" name="RCIU_ME_BUSY"/>229<bitfield pos="19" name="RCIU_PFP_BUSY"/>230<bitfield pos="18" name="MEQ_RING_BUSY"/>231<bitfield pos="17" name="PFP_BUSY"/>232<bitfield pos="16" name="ST_QUEUE_BUSY"/>233<bitfield pos="13" name="INDIRECT2_QUEUE_BUSY"/>234<bitfield pos="12" name="INDIRECTS_QUEUE_BUSY"/>235<bitfield pos="11" name="RING_QUEUE_BUSY"/>236<bitfield pos="10" name="CSF_BUSY"/>237<bitfield pos="9" name="CSF_ST_BUSY"/>238<bitfield pos="8" name="EVENT_BUSY"/>239<bitfield pos="7" name="CSF_INDIRECT2_BUSY"/>240<bitfield pos="6" name="CSF_INDIRECTS_BUSY"/>241<bitfield pos="5" name="CSF_RING_BUSY"/>242<bitfield pos="4" name="RCIU_BUSY"/>243<bitfield pos="3" name="RBIU_BUSY"/>244<bitfield pos="2" name="MIU_RD_RETURN_BUSY"/>245<bitfield pos="1" name="MIU_RD_REQ_BUSY"/>246<bitfield pos="0" name="MIU_WR_BUSY"/>247</reg32>248<reg32 offset="0x0578" name="CP_SCRATCH_REG0" type="uint"/>249<reg32 offset="0x0579" name="CP_SCRATCH_REG1" type="uint"/>250<reg32 offset="0x057a" name="CP_SCRATCH_REG2" type="uint"/>251<reg32 offset="0x057b" name="CP_SCRATCH_REG3" type="uint"/>252<reg32 offset="0x057c" name="CP_SCRATCH_REG4" type="uint"/>253<reg32 offset="0x057d" name="CP_SCRATCH_REG5" type="uint"/>254<reg32 offset="0x057e" name="CP_SCRATCH_REG6" type="uint"/>255<reg32 offset="0x057f" name="CP_SCRATCH_REG7" type="uint"/>256257<reg32 offset="0x0600" name="CP_ME_VS_EVENT_SRC"/>258<reg32 offset="0x0601" name="CP_ME_VS_EVENT_ADDR"/>259<reg32 offset="0x0602" name="CP_ME_VS_EVENT_DATA"/>260<reg32 offset="0x0603" name="CP_ME_VS_EVENT_ADDR_SWM"/>261<reg32 offset="0x0604" name="CP_ME_VS_EVENT_DATA_SWM"/>262<reg32 offset="0x0605" name="CP_ME_PS_EVENT_SRC"/>263<reg32 offset="0x0606" name="CP_ME_PS_EVENT_ADDR"/>264<reg32 offset="0x0607" name="CP_ME_PS_EVENT_DATA"/>265<reg32 offset="0x0608" name="CP_ME_PS_EVENT_ADDR_SWM"/>266<reg32 offset="0x0609" name="CP_ME_PS_EVENT_DATA_SWM"/>267<reg32 offset="0x060a" name="CP_ME_CF_EVENT_SRC"/>268<reg32 offset="0x060b" name="CP_ME_CF_EVENT_ADDR"/>269<reg32 offset="0x060c" name="CP_ME_CF_EVENT_DATA" type="uint"/>270<reg32 offset="0x060d" name="CP_ME_NRT_ADDR"/>271<reg32 offset="0x060e" name="CP_ME_NRT_DATA"/>272<reg32 offset="0x0612" name="CP_ME_VS_FETCH_DONE_SRC"/>273<reg32 offset="0x0613" name="CP_ME_VS_FETCH_DONE_ADDR"/>274<reg32 offset="0x0614" name="CP_ME_VS_FETCH_DONE_DATA"/>275276</domain>277278<!--279Common between A3xx and A4xx:280-->281282<enum name="a3xx_rop_code">283<value name="ROP_CLEAR" value="0"/>284<value name="ROP_NOR" value="1"/>285<value name="ROP_AND_INVERTED" value="2"/>286<value name="ROP_COPY_INVERTED" value="3"/>287<value name="ROP_AND_REVERSE" value="4"/>288<value name="ROP_INVERT" value="5"/>289<value name="ROP_XOR" value="6"/>290<value name="ROP_NAND" value="7"/>291<value name="ROP_AND" value="8"/>292<value name="ROP_EQUIV" value="9"/>293<value name="ROP_NOOP" value="10"/>294<value name="ROP_OR_INVERTED" value="11"/>295<value name="ROP_COPY" value="12"/>296<value name="ROP_OR_REVERSE" value="13"/>297<value name="ROP_OR" value="14"/>298<value name="ROP_SET" value="15"/>299</enum>300301<enum name="a3xx_render_mode">302<value name="RB_RENDERING_PASS" value="0"/>303<value name="RB_TILING_PASS" value="1"/>304<value name="RB_RESOLVE_PASS" value="2"/>305<value name="RB_COMPUTE_PASS" value="3"/>306</enum>307308<enum name="a3xx_msaa_samples">309<value name="MSAA_ONE" value="0"/>310<value name="MSAA_TWO" value="1"/>311<value name="MSAA_FOUR" value="2"/>312<value name="MSAA_EIGHT" value="3"/>313</enum>314315<enum name="a3xx_threadmode">316<value value="0" name="MULTI"/>317<value value="1" name="SINGLE"/>318</enum>319320<enum name="a3xx_instrbuffermode">321<!--322When shader size goes above ~128 or so, blob switches to '0'323and doesn't emit shader in cmdstream. When either is '0' it324doesn't get emitted via CP_LOAD_STATE. When only one is325'0' the other gets size 256-others_size. So I think that:326BUFFER => execute out of state memory327CACHE => use available state memory as local cache328NOTE that when CACHE mode, also set CACHEINVALID flag!329330TODO check if that 256 size is same for all a3xx331-->332<value value="0" name="CACHE"/>333<value value="1" name="BUFFER"/>334</enum>335336<enum name="a3xx_threadsize">337<value value="0" name="TWO_QUADS"/>338<value value="1" name="FOUR_QUADS"/>339</enum>340341<enum name="a3xx_color_swap">342<value name="WZYX" value="0"/>343<value name="WXYZ" value="1"/>344<value name="ZYXW" value="2"/>345<value name="XYZW" value="3"/>346</enum>347348<enum name="a3xx_rb_blend_opcode">349<value name="BLEND_DST_PLUS_SRC" value="0"/>350<value name="BLEND_SRC_MINUS_DST" value="1"/>351<value name="BLEND_DST_MINUS_SRC" value="2"/>352<value name="BLEND_MIN_DST_SRC" value="3"/>353<value name="BLEND_MAX_DST_SRC" value="4"/>354</enum>355356<enum name="a4xx_tess_spacing">357<value name="EQUAL_SPACING" value="0"/>358<value name="ODD_SPACING" value="2"/>359<value name="EVEN_SPACING" value="3"/>360</enum>361362<doc>Address mode for a5xx+</doc>363<enum name="a5xx_address_mode">364<value name="ADDR_32B" value="0"/>365<value name="ADDR_64B" value="1"/>366</enum>367368</database>369370371372