[Mesa-dev] [PATCH 00/42] RadeonSI cleaning up states

Marek Olšák maraeo at gmail.com
Sun Aug 30 12:11:30 PDT 2015


Hi,

Nothing special here, just a lot of cosmetic changes and a few micro-optimizations.

This series starts with some fixes for 11.0 (patches 3-5).

Then it converts a half of pm4 states into atoms. All direct states are converted (set_* functions and derived states). All CSOs (init_config, blend, DSA, rasterizer, shaders) will remain as pm4 states.

The viewport and scissor states are optimized. The main thing is that setting non-zero viewports and scissors is delayed until a shader that writes VIEWPORT_INDEX appears (which is typically never).

The geometry and tessellation ring registers and border color registers are moved to the init_config state, removing 3 more states.

All shared functions for writing registers are renamed to radeon_xxx, e.g. radeon_set_context_reg instead of r600_write_context_reg. r600_context_bo_reloc is renamed to radeon_add_to_buffer_list. It now makes sense when you're reading it.

Radeonsi no longer counts how much CS space it needs for draw calls and CP DMA. One need_cs_space call will make sure there are at least 2048 dwords and that's it. Even that is too many, but it's safe.

Uploading border colors is rewritten. Now it's using a static buffer, so the limit is 4096 unique border colors per context. Thanks to that, sampler states are finally immutable, which will be useful for the constant engine.

Lastly, the INDIRECT_BUFFER packet is used for the init_config state on CIK and later.

Marek


More information about the mesa-dev mailing list