Skip to content
Snippets Groups Projects
Commit dbbc4fb4 authored by Lionel Landwerlin's avatar Lionel Landwerlin Committed by Faith Ekstrand
Browse files

anv/wsi: create swapchain images using specified image usage


The image usage specified by the caller of vkCreateSwapchainKHR should be
passed onto the internal image creation. Otherwise the driver might later
crash when the user tries to use the image as a combined sampler even though
the creation was explicitly created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT.

Leaving the previous VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT as this might be
expected even if the swapchain is created without any flag.

Signed-off-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: default avatarJason Ekstrand <jason@jlekstrand.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96791
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
parent 51227b41
No related branches found
No related tags found
No related merge requests found
......@@ -607,7 +607,9 @@ static const struct wl_buffer_listener buffer_listener = {
};
static VkResult
wsi_wl_image_init(struct wsi_wl_swapchain *chain, struct wsi_wl_image *image,
wsi_wl_image_init(struct wsi_wl_swapchain *chain,
struct wsi_wl_image *image,
const VkSwapchainCreateInfoKHR *pCreateInfo,
const VkAllocationCallbacks* pAllocator)
{
VkDevice vk_device = anv_device_to_handle(chain->base.device);
......@@ -633,7 +635,8 @@ wsi_wl_image_init(struct wsi_wl_swapchain *chain, struct wsi_wl_image *image,
.samples = 1,
/* FIXME: Need a way to use X tiling to allow scanout */
.tiling = VK_IMAGE_TILING_OPTIMAL,
.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
.usage = (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
pCreateInfo->imageUsage),
.flags = 0,
}},
pAllocator,
......@@ -794,7 +797,8 @@ wsi_wl_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
}
for (uint32_t i = 0; i < chain->image_count; i++) {
result = wsi_wl_image_init(chain, &chain->images[i], pAllocator);
result = wsi_wl_image_init(chain, &chain->images[i],
pCreateInfo, pAllocator);
if (result != VK_SUCCESS)
goto fail;
chain->images[i].busy = false;
......
......@@ -606,7 +606,8 @@ x11_image_init(struct anv_device *device, struct x11_swapchain *chain,
.samples = 1,
/* FIXME: Need a way to use X tiling to allow scanout */
.tiling = VK_IMAGE_TILING_OPTIMAL,
.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
.usage = (pCreateInfo->imageUsage |
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT),
.flags = 0,
}},
NULL,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment