Mesa (master): gallium: add take_ownership param into set_vertex_buffers to eliminate atomics
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jan 28 00:13:26 UTC 2021
Module: Mesa
Branch: master
Commit: 27dcb466293f2ab3f80a141fd0b8c14617a8e37f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=27dcb466293f2ab3f80a141fd0b8c14617a8e37f
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sat Dec 26 17:29:45 2020 -0500
gallium: add take_ownership param into set_vertex_buffers to eliminate atomics
There are a few places (mainly u_threaded_context) that do:
set_vertex_buffers(...);
for (i = 0; i < count; i++)
pipe_resource_reference(&buffers[i].resource.buffer, NULL);
set_vertex_buffers increments the reference counts while the loop
decrements them.
This commit eliminates those reference count changes by adding a parameter
into set_vertex_buffers that tells the callee to accept all buffers
without incrementing the reference counts.
AMD Zen benefits from this because it has slow atomics if they come from
different CCXs.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8298>
---
src/gallium/auxiliary/cso_cache/cso_context.c | 6 +--
src/gallium/auxiliary/draw/draw_context.c | 2 +-
src/gallium/auxiliary/driver_ddebug/dd_context.c | 4 +-
src/gallium/auxiliary/driver_noop/noop_state.c | 1 +
src/gallium/auxiliary/driver_rbug/rbug_context.c | 3 +-
src/gallium/auxiliary/driver_trace/tr_context.c | 5 ++-
src/gallium/auxiliary/hud/hud_context.c | 2 +-
src/gallium/auxiliary/postprocess/pp_run.c | 2 +-
src/gallium/auxiliary/util/u_blitter.c | 10 ++---
src/gallium/auxiliary/util/u_draw_quad.c | 2 +-
src/gallium/auxiliary/util/u_helpers.c | 11 +++--
src/gallium/auxiliary/util/u_helpers.h | 6 ++-
src/gallium/auxiliary/util/u_threaded_context.c | 31 +++++++------
src/gallium/auxiliary/util/u_vbuf.c | 6 +--
src/gallium/auxiliary/vl/vl_bicubic_filter.c | 2 +-
src/gallium/auxiliary/vl/vl_compositor_gfx.c | 2 +-
src/gallium/auxiliary/vl/vl_deint_filter.c | 2 +-
src/gallium/auxiliary/vl/vl_matrix_filter.c | 2 +-
src/gallium/auxiliary/vl/vl_median_filter.c | 2 +-
src/gallium/auxiliary/vl/vl_mpeg12_decoder.c | 6 +--
src/gallium/drivers/d3d12/d3d12_context.cpp | 4 +-
src/gallium/drivers/etnaviv/etnaviv_state.c | 5 ++-
src/gallium/drivers/freedreno/freedreno_blitter.c | 2 +-
src/gallium/drivers/freedreno/freedreno_state.c | 4 +-
src/gallium/drivers/i915/i915_state.c | 4 +-
src/gallium/drivers/iris/iris_state.c | 8 +++-
src/gallium/drivers/lima/lima_state.c | 6 ++-
src/gallium/drivers/llvmpipe/lp_state_vertex.c | 4 +-
src/gallium/drivers/nouveau/nv30/nv30_state.c | 4 +-
src/gallium/drivers/nouveau/nv50/nv50_state.c | 4 +-
src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 4 +-
src/gallium/drivers/panfrost/pan_context.c | 4 +-
src/gallium/drivers/r300/r300_context.c | 2 +-
src/gallium/drivers/r300/r300_state.c | 8 ++--
src/gallium/drivers/r600/r600_pipe_common.c | 2 +-
src/gallium/drivers/r600/r600_state_common.c | 9 +++-
src/gallium/drivers/radeonsi/si_state.c | 55 ++++++++++++++++-------
src/gallium/drivers/softpipe/sp_state_vertex.c | 4 +-
src/gallium/drivers/svga/svga_pipe_vertex.c | 4 +-
src/gallium/drivers/swr/swr_state.cpp | 4 +-
src/gallium/drivers/tegra/tegra_context.c | 4 +-
src/gallium/drivers/v3d/v3dx_state.c | 4 +-
src/gallium/drivers/vc4/vc4_state.c | 4 +-
src/gallium/drivers/virgl/virgl_context.c | 4 +-
src/gallium/drivers/zink/zink_context.c | 3 +-
src/gallium/frontends/lavapipe/lvp_execute.c | 4 +-
src/gallium/frontends/nine/nine_state.c | 18 ++++----
src/gallium/include/pipe/p_context.h | 12 +++++
src/gallium/tests/graw/fs-fragcoord.c | 2 +-
src/gallium/tests/graw/fs-frontface.c | 2 +-
src/gallium/tests/graw/fs-test.c | 2 +-
src/gallium/tests/graw/fs-write-z.c | 2 +-
src/gallium/tests/graw/gs-test.c | 2 +-
src/gallium/tests/graw/occlusion-query.c | 2 +-
src/gallium/tests/graw/quad-sample.c | 2 +-
src/gallium/tests/graw/quad-tex.c | 2 +-
src/gallium/tests/graw/shader-leak.c | 2 +-
src/gallium/tests/graw/tex-srgb.c | 2 +-
src/gallium/tests/graw/tex-swizzle.c | 2 +-
src/gallium/tests/graw/tri-gs.c | 2 +-
src/gallium/tests/graw/tri-instanced.c | 2 +-
src/gallium/tests/graw/tri-large.c | 2 +-
src/gallium/tests/graw/tri.c | 2 +-
src/gallium/tests/graw/vs-test.c | 2 +-
64 files changed, 215 insertions(+), 118 deletions(-)
Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=27dcb466293f2ab3f80a141fd0b8c14617a8e37f
More information about the mesa-commit
mailing list