From 433e4e8fb8630f6601007e0e29d35b213bc55209 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 16 May 2023 14:38:55 +0200 Subject: [PATCH] radv: reserve cmdbuf space in radv_flush_gfx2ace_semaphore() Fixes an assertion with test_amplification_shader in vkd3d-proton. Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit b83ce03a7d1378fef8e9999e8afe8aa777debc01) --- .pick_status.json | 2 +- src/amd/vulkan/radv_cmd_buffer.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 84ab0b6f815..2aacf9a8938 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -490,7 +490,7 @@ "description": "radv: reserve cmdbuf space in radv_flush_gfx2ace_semaphore()", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 0ef52c7d35f..d738f53b74b 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -659,6 +659,8 @@ radv_flush_gfx2ace_semaphore(struct radv_cmd_buffer *cmd_buffer) return false; } + ASSERTED unsigned cdw_max = radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 12); + /* GFX writes a value to the semaphore which ACE can wait for.*/ si_cs_emit_write_event_eop( cmd_buffer->cs, cmd_buffer->device->physical_device->rad_info.gfx_level, @@ -667,6 +669,9 @@ radv_flush_gfx2ace_semaphore(struct radv_cmd_buffer *cmd_buffer) cmd_buffer->ace_internal.sem.gfx2ace_value, cmd_buffer->gfx9_eop_bug_va); cmd_buffer->ace_internal.sem.emitted_gfx2ace_value = cmd_buffer->ace_internal.sem.gfx2ace_value; + + assert(cmd_buffer->cs->cdw <= cdw_max); + return true; }