lavapipe: adopt wsi_common_create_swapchain_image

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35875>
This commit is contained in:
Yiwei Zhang
2025-07-01 21:45:01 -07:00
committed by Marge Bot
parent f887116c49
commit 6f7dff3abf

View File

@@ -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);
}