From a315a64291b042651fccc07f77247dfbd761d319 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Fri, 7 Mar 2025 23:33:41 -0800 Subject: [PATCH] venus: relax 2 assertions for prime blit path Prime blit can be used in setups like venus on lavapipe over vtest. It's native env so Venus relies on renderer side driver to tell about the pci info, while lavapipe doesn't implement that extension, which ends up with mismatched gpu thus prime blit. Signed-off-by: Yiwei Zhang Part-of: --- src/virtio/vulkan/vn_image.c | 3 ++- src/virtio/vulkan/vn_queue.c | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/virtio/vulkan/vn_image.c b/src/virtio/vulkan/vn_image.c index 867c7a3d5e0..23d23bd2a95 100644 --- a/src/virtio/vulkan/vn_image.c +++ b/src/virtio/vulkan/vn_image.c @@ -673,7 +673,8 @@ vn_CreateImage(VkDevice device, * Will have to fix more when renderer handle type is no longer dma_buf. */ if (wsi_info) { - assert(external_info->handleTypes == renderer_handle_type); + assert(wsi_info->blit_src || + external_info->handleTypes == renderer_handle_type); result = vn_wsi_create_image(dev, pCreateInfo, wsi_info, alloc, &img); } else if (anb_info) { result = diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 77453335723..9fe26af0ed3 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -514,10 +514,8 @@ vn_queue_submission_prepare(struct vn_queue_submission *submit) submit->batch_type != VK_STRUCTURE_TYPE_BIND_SPARSE_INFO) { const struct wsi_memory_signal_submit_info *info = vk_find_struct_const( submit->submit_batches[0].pNext, WSI_MEMORY_SIGNAL_SUBMIT_INFO_MESA); - if (info) { + if (info) submit->wsi_mem = vn_device_memory_from_handle(info->memory); - assert(submit->wsi_mem->base_bo); - } } for (uint32_t i = 0; i < submit->batch_count; i++) { @@ -988,7 +986,8 @@ vn_queue_wsi_present(struct vn_queue_submission *submit) struct vk_queue *queue_vk = vk_queue_from_handle(submit->queue_handle); struct vn_device *dev = (void *)queue_vk->base.device; - if (!submit->wsi_mem) + /* base_bo can be NULL for prime blit src */ + if (!submit->wsi_mem || !submit->wsi_mem->base_bo) return; if (dev->renderer->info.has_implicit_fencing) {