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 <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35017>
This commit is contained in:
Samuel Pitoiset 2025-05-16 09:09:02 +02:00
parent 98c1753214
commit 439baafe5e
3 changed files with 3 additions and 9 deletions

View file

@ -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));

View file

@ -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

View file

@ -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;