From 439baafe5e6f39af4f9097429fd07d5a716ed841 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 16 May 2025 09:09:02 +0200 Subject: [PATCH] radv: increase size of the buffer for emulated queries on GFX12 This increases this buffer by 20 bytes but it will be re-used for emulated queries on GFX11-GFX11.5 in order to remove the GDS path. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/nir/radv_nir_lower_abi.c | 4 ---- src/amd/vulkan/radv_constants.h | 6 ++---- src/amd/vulkan/radv_query.c | 2 +- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/amd/vulkan/nir/radv_nir_lower_abi.c b/src/amd/vulkan/nir/radv_nir_lower_abi.c index 8eb24c75b62..3401a302904 100644 --- a/src/amd/vulkan/nir/radv_nir_lower_abi.c +++ b/src/amd/vulkan/nir/radv_nir_lower_abi.c @@ -353,10 +353,6 @@ lower_abi_instr(nir_builder *b, nir_intrinsic_instr *intrin, void *state) nir_def *va = nir_pack_64_2x32_split(b, ac_nir_load_arg(b, &s->args->ac, s->args->ngg_query_buf_va), nir_imm_int(b, s->address32_hi)); - /* Only generated/written primitives query are emulated on GFX12+. */ - offset -= RADV_SHADER_QUERY_PRIM_GEN_OFFSET(0); - assert(offset <= RADV_SHADER_QUERY_PRIM_XFB_OFFSET(3)); - nir_global_atomic_amd(b, 32, va, intrin->src[0].ssa, nir_imm_int(b, offset), .atomic_op = nir_atomic_op_iadd); } else { nir_gds_atomic_add_amd(b, 32, intrin->src[0].ssa, nir_imm_int(b, offset), nir_imm_int(b, 0x100)); diff --git a/src/amd/vulkan/radv_constants.h b/src/amd/vulkan/radv_constants.h index 17333885483..01105e839bd 100644 --- a/src/amd/vulkan/radv_constants.h +++ b/src/amd/vulkan/radv_constants.h @@ -150,10 +150,8 @@ #define RADV_SHADER_QUERY_MS_PRIM_GEN_OFFSET 44 #define RADV_SHADER_QUERY_TS_INVOCATION_OFFSET 48 -/* Size of the shader query buffer for generated/written primitive queries - * using SSBO atomics on GFX12. - */ -#define RADV_SHADER_QUERY_BUF_SIZE (RADV_SHADER_QUERY_PRIM_XFB_OFFSET(3) - RADV_SHADER_QUERY_PRIM_GEN_OFFSET(0) + 4) +/* Size of the buffer for emulated queries using SSBO atomics on GFX12. */ +#define RADV_SHADER_QUERY_BUF_SIZE (RADV_SHADER_QUERY_TS_INVOCATION_OFFSET + 4) /* Number of samples for line smooth lowering (hw requirement). */ #define RADV_NUM_SMOOTH_AA_SAMPLES 4 diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index 48f9a8672f6..3f25e9ff94a 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -65,7 +65,7 @@ gfx10_copy_shader_query_gfx(struct radv_cmd_buffer *cmd_buffer, bool use_gds, ui cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_VS_PARTIAL_FLUSH; src_sel = COPY_DATA_SRC_MEM; - src_va = cmd_buffer->state.shader_query_buf_va + src_offset - RADV_SHADER_QUERY_PRIM_GEN_OFFSET(0); + src_va = cmd_buffer->state.shader_query_buf_va + src_offset; } cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_INV_L2;