radv/gfx11: improve RT scratch allocation

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22232>
This commit is contained in:
Rhys Perry
2023-03-29 14:59:00 +01:00
committed by Marge Bot
parent 50e9a8f7c2
commit f92994bb83
+5 -2
View File
@@ -9849,8 +9849,11 @@ radv_trace_rays(struct radv_cmd_buffer *cmd_buffer, const VkTraceRaysIndirectCom
uint32_t scratch_bytes_per_wave = pipeline->base.scratch_bytes_per_wave;
uint32_t wave_size = rt_prolog->info.wave_size;
/* The hardware register is specified as a multiple of 256 DWORDS. */
scratch_bytes_per_wave += align(cmd_buffer->state.rt_stack_size * wave_size, 1024);
/* The hardware register is specified as a multiple of 64 or 256 DWORDS. */
unsigned scratch_alloc_granule =
cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX11 ? 256 : 1024;
scratch_bytes_per_wave +=
align(cmd_buffer->state.rt_stack_size * wave_size, scratch_alloc_granule);
cmd_buffer->compute_scratch_size_per_wave_needed =
MAX2(cmd_buffer->compute_scratch_size_per_wave_needed, scratch_bytes_per_wave);