From 6f7dff3abf6ecffeda4100810ef177898afd7426 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Tue, 1 Jul 2025 21:45:01 -0700 Subject: [PATCH] lavapipe: adopt wsi_common_create_swapchain_image Reviewed-by: Faith Ekstrand Part-of: --- src/gallium/frontends/lavapipe/lvp_image.c | 39 +++++----------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_image.c b/src/gallium/frontends/lavapipe/lvp_image.c index 7d778746984..689bf3c4590 100644 --- a/src/gallium/frontends/lavapipe/lvp_image.c +++ b/src/gallium/frontends/lavapipe/lvp_image.c @@ -218,45 +218,24 @@ lvp_swapchain_get_image(VkSwapchainKHR swapchain, return lvp_image_from_handle(image); } -static VkResult -lvp_image_from_swapchain(VkDevice device, - const VkImageCreateInfo *pCreateInfo, - const VkImageSwapchainCreateInfoKHR *swapchain_info, - const VkAllocationCallbacks *pAllocator, - VkImage *pImage) -{ - ASSERTED struct lvp_image *swapchain_image = lvp_swapchain_get_image(swapchain_info->swapchain, 0); - assert(swapchain_image); - - assert(swapchain_image->vk.image_type == pCreateInfo->imageType); - - VkImageCreateInfo local_create_info; - local_create_info = *pCreateInfo; - local_create_info.pNext = NULL; - /* The following parameters are implictly selected by the wsi code. */ - local_create_info.tiling = VK_IMAGE_TILING_OPTIMAL; - local_create_info.samples = VK_SAMPLE_COUNT_1_BIT; - local_create_info.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; - - assert(!(local_create_info.usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)); - return lvp_image_create(device, &local_create_info, pAllocator, - pImage); -} - VKAPI_ATTR VkResult VKAPI_CALL -lvp_CreateImage(VkDevice device, +lvp_CreateImage(VkDevice _device, const VkImageCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkImage *pImage) { #if !DETECT_OS_ANDROID + LVP_FROM_HANDLE(lvp_device, device, _device); const VkImageSwapchainCreateInfoKHR *swapchain_info = vk_find_struct_const(pCreateInfo->pNext, IMAGE_SWAPCHAIN_CREATE_INFO_KHR); - if (swapchain_info && swapchain_info->swapchain != VK_NULL_HANDLE) - return lvp_image_from_swapchain(device, pCreateInfo, swapchain_info, - pAllocator, pImage); + if (swapchain_info && swapchain_info->swapchain != VK_NULL_HANDLE) { + return wsi_common_create_swapchain_image(&device->physical_device->wsi_device, + pCreateInfo, + swapchain_info->swapchain, + pImage); + } #endif - return lvp_image_create(device, pCreateInfo, pAllocator, + return lvp_image_create(_device, pCreateInfo, pAllocator, pImage); }