From 36ef404a6cc11746d954cceb181e1dfd75388bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Wed, 20 Aug 2025 14:57:17 +0200 Subject: [PATCH] radv/amdgpu: Fix crash with RADV_DEBUG=noibs After a refactor last year, the noibs option stopped working because it hits an assertion when empty IBs are submitted. Emit a single large NOP packet to avoid submitting empty IBs. Cc: mesa-stable Part-of: (cherry picked from commit 132a61c6b72d8e96ae7e0022a394ac470446b7ce) --- .pick_status.json | 2 +- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 2579d061534..8369dfda65a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -8714,7 +8714,7 @@ "description": "radv/amdgpu: Fix crash with RADV_DEBUG=noibs", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c index d0d3073f922..374311e4713 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c @@ -457,6 +457,11 @@ radv_amdgpu_winsys_cs_pad(struct radeon_cmdbuf *_cs, unsigned leave_dw_space) radeon_emit_unchecked(&cs->base, PKT3(PKT3_NOP, remaining - 2, 0)); cs->base.cdw += remaining - 1; } + } else if (cs->base.cdw == 0 && leave_dw_space == 0) { + /* Emit a NOP packet to avoid submitting a completely empty IB. */ + const int remaining = pad_dw_mask + 1; + radeon_emit_unchecked(&cs->base, PKT3(PKT3_NOP, remaining - 2, 0)); + cs->base.cdw += remaining - 1; } } else { /* Don't pad on VCN encode/unified as no NOPs */