radv/winsys: fix creating the BO list for virtual buffers
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 17 Aug 2018 12:45:39 +0000 (14:45 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 17 Aug 2018 13:00:21 +0000 (15:00 +0200)
When the number of unique BO is 0, we optimize the list creation
by copying all buffers of the current CS directly into it. But
this is only valid if the CS doesn't have virtual buffers,
otherwise they are not added and hw might report VM faults.

This fixes VM faults with:
dEQP-VK.sparse_resources.image_sparse_binding.2d.rgba8ui.1024_128_1

CC: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c

index c94c0f339fde1b7841d12648ba2fe42536c78e55..149c25621874336c42f2e4fa8d667c0f4a276698 100644 (file)
@@ -673,7 +673,7 @@ static int radv_amdgpu_create_bo_list(struct radv_amdgpu_winsys *ws,
                        if (!cs->num_buffers)
                                continue;
 
-                       if (unique_bo_count == 0) {
+                       if (unique_bo_count == 0 && !cs->num_virtual_buffers) {
                                memcpy(handles, cs->handles, cs->num_buffers * sizeof(amdgpu_bo_handle));
                                unique_bo_count = cs->num_buffers;
                                continue;