Module: Mesa Branch: master Commit: a0978fffb849264ccb20e6b4905b9cf05ed17593 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a0978fffb849264ccb20e6b4905b9cf05ed17593
Author: Marek Olšák <marek.ol...@amd.com> Date: Sat Jan 9 15:14:22 2021 -0500 radeonsi: add new possibly faster command submission helpers This decreases the release libgallium_dri.so size without debug symbols by 16384 bytes. The CPU time spent in si_emit_draw_packets decreased from 4.5% to 4.1% in viewperf13/catia/plane01. The previous code did: cs->current.buf[cs->current.cdw++] = ...; cs->current.buf[cs->current.cdw++] = ...; cs->current.buf[cs->current.cdw++] = ...; cs->current.buf[cs->current.cdw++] = ...; The new code does: unsigned num = cs->current.cdw; uint32_t *buf = cs->current.buf; buf[num++] = ...; buf[num++] = ...; buf[num++] = ...; buf[num++] = ...; cs->current.cdw = num; The code is the same (radeon_emit is redefined as a macro) except that all set and emit functions must be surrounded by radeon_begin(cs) and radeon_end(). radeon_packets_added() returns whether there has been any new packets added since radeon_begin. radeon_end_update_context_roll(sctx) sets sctx->context_roll = true if there has been any new packets added since radeon_begin. For now, the "cs" parameter is intentionally unused in radeon_emit and radeon_emit_array. Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-pra...@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8653> --- src/gallium/drivers/radeonsi/si_build_pm4.h | 446 +++++++++++---------- src/gallium/drivers/radeonsi/si_compute.c | 21 +- .../drivers/radeonsi/si_compute_prim_discard.c | 19 + src/gallium/drivers/radeonsi/si_cp_dma.c | 10 + src/gallium/drivers/radeonsi/si_cp_reg_shadowing.c | 12 +- src/gallium/drivers/radeonsi/si_descriptors.c | 128 +++--- src/gallium/drivers/radeonsi/si_fence.c | 6 + src/gallium/drivers/radeonsi/si_gfx_cs.c | 21 + src/gallium/drivers/radeonsi/si_perfcounter.c | 17 + src/gallium/drivers/radeonsi/si_pm4.c | 2 + src/gallium/drivers/radeonsi/si_query.c | 24 +- src/gallium/drivers/radeonsi/si_sqtt.c | 46 ++- src/gallium/drivers/radeonsi/si_state.c | 39 +- src/gallium/drivers/radeonsi/si_state_binning.c | 10 +- src/gallium/drivers/radeonsi/si_state_draw.cpp | 56 ++- src/gallium/drivers/radeonsi/si_state_msaa.c | 4 + src/gallium/drivers/radeonsi/si_state_shaders.c | 77 ++-- src/gallium/drivers/radeonsi/si_state_streamout.c | 15 +- src/gallium/drivers/radeonsi/si_state_viewport.c | 35 +- 19 files changed, 593 insertions(+), 395 deletions(-) Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=a0978fffb849264ccb20e6b4905b9cf05ed17593 _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit