radv: don't remove the blit queue from the device queues

I don't remember why I implemented it like this in !13959, but
AFAICT there's no need to manually remove this queue from vk_device's
queues list.

On the other hand, this hack causes issues if syncobj timeline isn't
supported; amdgpu always support timeline, but amdgpu over virtio-gpu
doesn't.

The issue is as follow: the sequence in vk_queue.c:

   case VK_QUEUE_SUBMIT_MODE_DEFERRED:
      vk_queue_push_submit(queue, submit);
      return vk_device_flush(queue->base.device);

Would fail to produce the expected result, because vk_device_flush would
fail to realize that the blit queue has some pending work because
"vk_foreach_queue(queue, device)" would never process the queue.

Then, the call to vk_drm_syncobj_export_sync_file() would fail, because
the syncobj handle was never used in a submit.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27412>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2023-06-26 16:16:44 +02:00
parent 716ed7d62a
commit 6c3a294eef

View file

@ -73,10 +73,6 @@ radv_wsi_get_prime_blit_queue(VkDevice _device)
VkResult result = radv_queue_init(device, device->private_sdma_queue, 0, &queue_create, NULL);
if (result == VK_SUCCESS) {
/* Remove the queue from our queue list because it'll be cleared manually
* in radv_DestroyDevice.
*/
list_delinit(&device->private_sdma_queue->vk.link);
return vk_queue_to_handle(&device->private_sdma_queue->vk);
} else {
vk_free(&device->vk.alloc, device->private_sdma_queue);