Mesa (master): mesa: for every state change, remember states we changed for glPopAttrib

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Jan 30 21:52:58 UTC 2021


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sat Dec 19 01:37:40 2020 -0500

mesa: for every state change, remember states we changed for glPopAttrib

The idea is to restore only those states in glPopAttrib that have been
changed. This will reduce glPopAttrib overhead a lot.

This is based on the state tables in the OpenGL 4.6 Compatibility Profile
specification and many extension specifications.

This code might superfluously flag GL_TEXTURE_BIT for texture and
sampler functions that don't have effect on states popped by glPopAttrib,
but I don't wanna test my luck and make a mistake. Thus,
if _NEW_TEXTURE_OBJECT if flagged, GL_TEXTURE_BIT is usually flagged too.

This has no effect on glPopAttrib yet. glPopAttrib will use this in a later
commit. This only adds attrib masks into FLUSH_VERTICES based on specs.

Reviewed-by: Zoltán Böszörményi <zboszor at gmail.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8181>

---

 src/mesa/drivers/common/meta.c           |  12 +-
 src/mesa/drivers/dri/i965/intel_screen.c |   2 +-
 src/mesa/main/accum.c                    |   3 +-
 src/mesa/main/arbprogram.c               |   8 +-
 src/mesa/main/atifragshader.c            |   8 +-
 src/mesa/main/attrib.c                   |   4 +-
 src/mesa/main/blend.c                    |  28 +++--
 src/mesa/main/blend.h                    |   6 +-
 src/mesa/main/blit.c                     |   2 +-
 src/mesa/main/bufferobj.c                |  16 +--
 src/mesa/main/buffers.c                  |   8 +-
 src/mesa/main/clear.c                    |  14 ++-
 src/mesa/main/clip.c                     |   2 +-
 src/mesa/main/compute.c                  |   6 +-
 src/mesa/main/condrender.c               |   2 +-
 src/mesa/main/conservativeraster.c       |   4 +-
 src/mesa/main/context.c                  |   6 +-
 src/mesa/main/context.h                  |   3 +-
 src/mesa/main/depth.c                    |  10 +-
 src/mesa/main/dlist.c                    |  10 +-
 src/mesa/main/drawpix.c                  |   7 +-
 src/mesa/main/enable.c                   | 189 ++++++++++++++++++-------------
 src/mesa/main/eval.c                     |   8 +-
 src/mesa/main/externalobjects.c          |   4 +-
 src/mesa/main/fbobject.c                 |  18 +--
 src/mesa/main/feedback.c                 |  16 +--
 src/mesa/main/fog.c                      |  16 +--
 src/mesa/main/genmipmap.c                |   2 +-
 src/mesa/main/hint.c                     |  16 +--
 src/mesa/main/light.c                    |  38 +++----
 src/mesa/main/lines.c                    |   4 +-
 src/mesa/main/matrix.c                   |  23 ++--
 src/mesa/main/mipmap.c                   |   1 +
 src/mesa/main/mtypes.h                   |   1 +
 src/mesa/main/multisample.c              |  14 ++-
 src/mesa/main/pipelineobj.c              |   2 +-
 src/mesa/main/pixel.c                    |  36 +++---
 src/mesa/main/points.c                   |  12 +-
 src/mesa/main/polygon.c                  |  21 ++--
 src/mesa/main/queryobj.c                 |   6 +-
 src/mesa/main/rastpos.c                  |   6 +-
 src/mesa/main/readpix.c                  |   2 +-
 src/mesa/main/samplerobj.c               |  12 +-
 src/mesa/main/scissor.c                  |   5 +-
 src/mesa/main/shaderapi.c                |  18 +--
 src/mesa/main/shaderimage.c              |   4 +-
 src/mesa/main/state.c                    |   2 +-
 src/mesa/main/stencil.c                  |  34 ++++--
 src/mesa/main/texenv.c                   |  22 ++--
 src/mesa/main/texgen.c                   |   6 +-
 src/mesa/main/texgetimage.c              |   4 +-
 src/mesa/main/teximage.c                 |  16 +--
 src/mesa/main/texobj.c                   |  25 ++--
 src/mesa/main/texparam.c                 |  10 +-
 src/mesa/main/texstate.c                 |   2 +-
 src/mesa/main/transformfeedback.c        |   8 +-
 src/mesa/main/uniform_query.cpp          |   8 +-
 src/mesa/main/uniforms.c                 |   4 +-
 src/mesa/main/viewport.c                 |  11 +-
 src/mesa/state_tracker/st_cb_bitmap.c    |   1 +
 src/mesa/state_tracker/st_cb_rasterpos.c |   3 +
 src/mesa/state_tracker/st_manager.c      |   2 +-
 src/mesa/vbo/vbo_exec_api.c              |   5 +-
 src/mesa/vbo/vbo_save_draw.c             |  10 +-
 64 files changed, 455 insertions(+), 353 deletions(-)

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


More information about the mesa-commit mailing list