radv/winsys: set IB flags prior to submit in the sysmem path
authorFlorian Will <florian.will@gmail.com>
Mon, 27 Jan 2020 09:30:21 +0000 (10:30 +0100)
committerFlorian Will <florian.will@gmail.com>
Mon, 27 Jan 2020 10:53:22 +0000 (11:53 +0100)
This fixes missing scene objects in ZUSI 3 + dxvk. Index / vertex buffer
upload using thousands of CopyBuffer commands in one huge Vulkan command
buffer, mixed with lots of render pass begin/end and draw calls, failed
for some of the buffers.

radv divides the huge command buffer into 3 IBs, and they had random
flags set because the field was uninitialized. Maybe IBs got discarded
if they had the PREAMBLE bit set.

Signed-off-by: Florian Will <florian.will@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Cc: <mesa-stable@lists.freedesktop.org>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3577>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3577>

src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c

index 676dd06..dbc7397 100644 (file)
@@ -1119,6 +1119,7 @@ static int radv_amdgpu_winsys_cs_submit_sysmem(struct radeon_winsys_ctx *_ctx,
 
                                ibs[j].size = size;
                                ibs[j].ib_mc_address = radv_buffer_get_va(bos[j]);
+                               ibs[j].flags = 0;
                        }
 
                        cnt++;
@@ -1163,6 +1164,7 @@ static int radv_amdgpu_winsys_cs_submit_sysmem(struct radeon_winsys_ctx *_ctx,
 
                        ibs[0].size = size;
                        ibs[0].ib_mc_address = radv_buffer_get_va(bos[0]);
+                       ibs[0].flags = 0;
                }
 
                r = radv_amdgpu_create_bo_list(cs0->ws, &cs_array[i], cnt,