From 2751a427e10b498375ffb2080b6c891cf7e063dd Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 11 Mar 2026 10:09:45 +0100 Subject: [PATCH] radv: use LOAD_CONTEXT_REG_INDEX when supported for streamout It's supported on GFX9+ and on GFX8+ with a specific fw version. It's more correct with preemption. Also rewrite the comment now that we got more information from Marek. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index bc743563570..30a403a5a2b 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -15574,7 +15574,6 @@ radv_emit_strmout_buffer(struct radv_cmd_buffer *cmd_buffer, const struct radv_d { struct radv_device *device = radv_cmd_buffer_device(cmd_buffer); const struct radv_physical_device *pdev = radv_device_physical(device); - const enum amd_gfx_level gfx_level = pdev->info.gfx_level; struct radv_cmd_stream *cs = cmd_buffer->cs; radeon_begin(cs); @@ -15594,9 +15593,10 @@ radv_emit_strmout_buffer(struct radv_cmd_buffer *cmd_buffer, const struct radv_d } radeon_end(); - if (gfx_level >= GFX10) { + if (pdev->info.has_load_ctx_reg_pkt) { /* Make sure that PFP waits for ME to avoid a race condition because the data is written by - * STRMOUT_BUFFER_UPDATE in ME, but LOAD_CONTEXT_REG_INDEX is in PFP. + * STRMOUT_BUFFER_UPDATE in ME, but LOAD_CONTEXT_REG_INDEX loads the value from memory between + * PFP and ME. */ ac_emit_cp_pfp_sync_me(cs->b, false);