Mesa (master): gallium: add take_ownership param into set_constant_buffer to eliminate atomics
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jan 28 00:13:25 UTC 2021
Module: Mesa
Branch: master
Commit: a51d4b10f1a056a7e8ff592c034575139d19211c
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a51d4b10f1a056a7e8ff592c034575139d19211c
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sat Dec 26 12:01:10 2020 -0500
gallium: add take_ownership param into set_constant_buffer to eliminate atomics
We often do this:
pipe->set_constant_buffer(pipe, shader, slot, &cb);
pipe_resource_reference(&cb->buffer, NULL);
That results in atomic increment in set_constant_buffer followed by
atomic decrement after set_constant_buffer. This new interface
eliminates those atomics.
For the case above, this should be used instead:
pipe->set_constant_buffer(pipe, shader, slot, true, &cb);
cb->buffer = NULL; // if cb is not a local variable, else do nothing
AMD Zen benefits from this. The perf improvement is ~3% for Viewperf13/Catia.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8298>
---
docs/gallium/context.rst | 2 ++
src/gallium/auxiliary/cso_cache/cso_context.c | 6 +++---
src/gallium/auxiliary/driver_ddebug/dd_context.c | 3 ++-
src/gallium/auxiliary/driver_noop/noop_state.c | 1 +
src/gallium/auxiliary/driver_rbug/rbug_context.c | 4 ++--
src/gallium/auxiliary/driver_trace/tr_context.c | 4 +++-
src/gallium/auxiliary/hud/hud_context.c | 10 ++++-----
src/gallium/auxiliary/postprocess/pp_mlaa.c | 4 ++--
src/gallium/auxiliary/postprocess/pp_run.c | 4 ++--
src/gallium/auxiliary/util/u_blitter.c | 6 +++---
src/gallium/auxiliary/util/u_compute.c | 4 ++--
src/gallium/auxiliary/util/u_inlines.h | 14 ++++++++----
src/gallium/auxiliary/util/u_threaded_context.c | 13 ++++++------
src/gallium/auxiliary/vl/vl_bicubic_filter.c | 2 +-
src/gallium/auxiliary/vl/vl_compositor_cs.c | 2 +-
src/gallium/drivers/d3d12/d3d12_context.cpp | 11 ++++++++--
src/gallium/drivers/etnaviv/etnaviv_state.c | 4 ++--
src/gallium/drivers/freedreno/freedreno_blitter.c | 2 +-
src/gallium/drivers/freedreno/freedreno_state.c | 3 ++-
src/gallium/drivers/i915/i915_state.c | 8 ++++++-
src/gallium/drivers/iris/iris_state.c | 10 +++++++--
src/gallium/drivers/lima/lima_state.c | 1 +
src/gallium/drivers/llvmpipe/lp_setup.c | 4 ++--
src/gallium/drivers/llvmpipe/lp_state_cs.c | 4 ++--
src/gallium/drivers/llvmpipe/lp_state_fs.c | 4 +++-
src/gallium/drivers/nouveau/nv30/nv30_state.c | 15 +++++++++++--
src/gallium/drivers/nouveau/nv50/nv50_state.c | 9 +++++++-
src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 9 +++++++-
src/gallium/drivers/panfrost/pan_compute.c | 2 +-
src/gallium/drivers/panfrost/pan_context.c | 4 ++--
src/gallium/drivers/r300/r300_state.c | 1 +
src/gallium/drivers/r600/evergreen_compute.c | 2 +-
src/gallium/drivers/r600/evergreen_state.c | 13 ++++++------
src/gallium/drivers/r600/r600_pipe.c | 4 ++--
src/gallium/drivers/r600/r600_query.c | 7 ++----
src/gallium/drivers/r600/r600_state_common.c | 22 ++++++++++++-------
src/gallium/drivers/radeonsi/gfx10_query.c | 2 +-
src/gallium/drivers/radeonsi/si_compute_blit.c | 15 ++++++-------
src/gallium/drivers/radeonsi/si_descriptors.c | 19 +++++++++++------
src/gallium/drivers/radeonsi/si_pipe.c | 2 +-
src/gallium/drivers/radeonsi/si_query.c | 2 +-
src/gallium/drivers/radeonsi/si_state.c | 3 +--
src/gallium/drivers/softpipe/sp_state_shader.c | 8 ++++++-
src/gallium/drivers/svga/svga_pipe_constants.c | 8 ++++++-
src/gallium/drivers/svga/svga_state_ts.c | 2 +-
src/gallium/drivers/swr/swr_state.cpp | 4 ++--
src/gallium/drivers/tegra/tegra_context.c | 4 ++--
src/gallium/drivers/v3d/v3dx_state.c | 3 ++-
src/gallium/drivers/vc4/vc4_blit.c | 6 +++---
src/gallium/drivers/vc4/vc4_state.c | 6 ++----
src/gallium/drivers/virgl/virgl_context.c | 8 ++++++-
src/gallium/drivers/zink/zink_context.c | 8 ++++++-
src/gallium/frontends/lavapipe/lvp_execute.c | 8 +++----
src/gallium/frontends/nine/nine_state.c | 26 +++++++++++------------
src/gallium/frontends/omx/vid_enc_common.c | 4 ++--
src/gallium/include/pipe/p_context.h | 10 +++++++++
src/gallium/tests/graw/fs-test.c | 4 ++--
src/mesa/state_tracker/st_atom_constbuf.c | 9 ++++----
src/mesa/state_tracker/st_pbo.c | 2 +-
59 files changed, 240 insertions(+), 141 deletions(-)
Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=a51d4b10f1a056a7e8ff592c034575139d19211c
More information about the mesa-commit
mailing list