From 44f25792d560308868c65eb0bbfa268107a15101 Mon Sep 17 00:00:00 2001 From: Yogesh Mohan Marimuthu Date: Thu, 12 Jan 2023 09:42:53 +0530 Subject: [PATCH] radv: allow NULL initial_preamble_cs in radv_amdgpu_winsys_cs_submit_sysmem() In case of mcbp, shadowed_regs is initialized early in radv_queue_init() function by submitting the command buffer. The command buffer is submitted in radv_init_shadowed_regs_buffer_state() function. When RADV_DEBUG=noibs is used radv_amdgpu_winsys_cs_submit_sysmem() function is used to submit command buffer. radv_amdgpu_winsys_cs_submit_sysmem() crashes here because initial_preamble_cs is NULL. This patch fixes the radv_amdgpu_winsys_cs_submit_sysmem() function to support NULL initial_preamble_cs. Signed-off-by: Yogesh Mohan Marimuthu Acked-by: Pierre-Eric Pelloux-Prayer Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c index 5d4e661..3e21fe5 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c @@ -1056,7 +1056,7 @@ static VkResult radv_amdgpu_winsys_cs_submit_sysmem(struct radv_amdgpu_ctx *ctx, int queue_idx, struct radv_winsys_sem_info *sem_info, struct radeon_cmdbuf **cs_array, unsigned cs_count, - struct radeon_cmdbuf *initial_preamble_cs, + struct radeon_cmdbuf **initial_preamble_cs, struct radeon_cmdbuf *continue_preamble_cs, bool uses_shadow_regs) { @@ -1075,7 +1075,8 @@ radv_amdgpu_winsys_cs_submit_sysmem(struct radv_amdgpu_ctx *ctx, int queue_idx, for (unsigned i = 0; i < cs_count;) { struct radv_amdgpu_cs_ib_info *ibs; struct radeon_winsys_bo **bos; - struct radeon_cmdbuf *preamble_cs = i ? continue_preamble_cs : initial_preamble_cs; + struct radeon_cmdbuf *preamble_cs = i ? continue_preamble_cs : + initial_preamble_cs ? initial_preamble_cs[0] : NULL; struct radv_amdgpu_cs *cs = radv_amdgpu_cs(cs_array[i]); struct drm_amdgpu_bo_list_entry *handles = NULL; unsigned num_handles = 0; @@ -1348,7 +1349,7 @@ radv_amdgpu_winsys_cs_submit_internal(struct radv_amdgpu_ctx *ctx, assert(submit->preamble_count <= 1); result = radv_amdgpu_winsys_cs_submit_sysmem( ctx, submit->queue_index, sem_info, submit->cs_array, submit->cs_count, - submit->initial_preamble_cs[0], submit->continue_preamble_cs, submit->uses_shadow_regs); + submit->initial_preamble_cs, submit->continue_preamble_cs, submit->uses_shadow_regs); } else if (can_patch) { result = radv_amdgpu_winsys_cs_submit_chained( ctx, submit->queue_index, sem_info, submit->cs_array, submit->cs_count, -- 2.7.4