Mesa (master): st/mesa: completely rewrite state atoms

Marek Olšák mareko at kemper.freedesktop.org
Sat Jul 30 13:04:04 UTC 2016


Module: Mesa
Branch: master
Commit: c8fe3b9dca73e3b91979d92ba4136b302001b3bb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c8fe3b9dca73e3b91979d92ba4136b302001b3bb

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sun Jul 17 18:38:38 2016 +0200

st/mesa: completely rewrite state atoms

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

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 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(-)

Diff:   http://cgit.freedesktop.org/mesa/mesa/diff/?id=c8fe3b9dca73e3b91979d92ba4136b302001b3bb



More information about the mesa-commit mailing list