st/mesa: completely rewrite state atoms

Graphics / Mesa 3D Graphics Library / Mesa - Marek Olšák [amd.com] - 30 July 2016 08:02 UTC

The goal is to do this in st_validate_state: while (dirty) atoms[u_bit_scan(&dirty)]->update(st);

That implies that atoms can't specify which flags they consume. There is exactly one ST_NEW_* flag for each atom. (58 flags in total)

There are macros that combine multiple flags into one for easier use.

All _NEW_* flags are translated into ST_NEW_* flags in st_invalidate_state. st/mesa doesn't keep the _NEW_* flags after that.

torcs is 2% faster between the previous patch and the end of this series.

v2: - add st_atom_list.h to Makefile.sources

c8fe3b9 st/mesa: completely rewrite state atoms
src/mesa/Makefile.sources | 1 +
src/mesa/state_tracker/st_atom.c | 156 +++++-------------
src/mesa/state_tracker/st_atom.h | 210 ++++++++++++++++--------
src/mesa/state_tracker/st_atom_array.c | 4 -
src/mesa/state_tracker/st_atom_atomicbuf.c | 24 ---
src/mesa/state_tracker/st_atom_blend.c | 4 -
src/mesa/state_tracker/st_atom_clip.c | 4 -
src/mesa/state_tracker/st_atom_constbuf.c | 48 ------
src/mesa/state_tracker/st_atom_depth.c | 4 -
src/mesa/state_tracker/st_atom_framebuffer.c | 4 -
src/mesa/state_tracker/st_atom_image.c | 24 ---
src/mesa/state_tracker/st_atom_list.h | 75 +++++++++
src/mesa/state_tracker/st_atom_msaa.c | 8 -
src/mesa/state_tracker/st_atom_pixeltransfer.c | 4 -
src/mesa/state_tracker/st_atom_rasterizer.c | 16 --
src/mesa/state_tracker/st_atom_sampler.c | 4 -
src/mesa/state_tracker/st_atom_scissor.c | 8 -
src/mesa/state_tracker/st_atom_shader.c | 24 ---
src/mesa/state_tracker/st_atom_stipple.c | 5 -
src/mesa/state_tracker/st_atom_storagebuf.c | 24 ---
src/mesa/state_tracker/st_atom_tess.c | 4 -
src/mesa/state_tracker/st_atom_texture.c | 24 ---
src/mesa/state_tracker/st_atom_viewport.c | 4 -
src/mesa/state_tracker/st_cb_bitmap.c | 10 +-
src/mesa/state_tracker/st_cb_bufferobjects.c | 10 +-
src/mesa/state_tracker/st_cb_compute.c | 2 +-
src/mesa/state_tracker/st_cb_feedback.c | 2 +-
src/mesa/state_tracker/st_cb_program.c | 38 ++---
src/mesa/state_tracker/st_cb_texture.c | 2 +-
src/mesa/state_tracker/st_context.c | 100 +++++++++--
src/mesa/state_tracker/st_context.h | 42 +----
src/mesa/state_tracker/st_draw.c | 4 +-
src/mesa/state_tracker/st_manager.c | 4 +-
33 files changed, 381 insertions(+), 516 deletions(-)

Upstream: cgit.freedesktop.org


  • Share