From 28c957409f41ad3d8023d79c02b3f6923dc554f1 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 22 Aug 2024 16:43:20 +0200 Subject: [PATCH] radv/amdgpu: do not check that a CS is aligned if no padding is added Some video queues don't require padding. Fixes: d5efbc7f1cc ("radv/amdgpu: fix CS padding for non-GFX/COMPUTE queues") Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c index 2cdb7b05000..8d1b30fdb30 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c @@ -447,23 +447,18 @@ radv_amdgpu_winsys_cs_pad(struct radeon_cmdbuf *_cs, unsigned leave_dw_space) } } } else { - /* Pad the CS with NOP packets. */ - bool pad = true; - /* Don't pad on VCN encode/unified as no NOPs */ if (ip_type == AMDGPU_HW_IP_VCN_ENC) - pad = false; + return; /* Don't add padding to 0 length UVD due to kernel */ if (ip_type == AMDGPU_HW_IP_UVD && cs->base.cdw == 0) - pad = false; + return; - if (pad) { - const uint32_t nop_packet = get_nop_packet(cs); + const uint32_t nop_packet = get_nop_packet(cs); - while (!cs->base.cdw || (cs->base.cdw & pad_dw_mask)) - radeon_emit_unchecked(&cs->base, nop_packet); - } + while (!cs->base.cdw || (cs->base.cdw & pad_dw_mask)) + radeon_emit_unchecked(&cs->base, nop_packet); } assert(((cs->base.cdw + leave_dw_space) & pad_dw_mask) == 0);