From 22c624d75b3ea06f4eabf267b0516ee5ad6e8f2f Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 21 Jul 2025 16:35:42 -0400 Subject: [PATCH] vulkan/meta: Supply image view usage in vk_meta_clear_*_image() This was the only meta function (including those built into honeykrisp) which wasn't setting view usage so we can also assert that it's always provided. Reviewed-by: Alyssa Rosenzweig Reviewed-by: Mary Guillemard Part-of: --- src/vulkan/runtime/vk_meta.c | 3 +++ src/vulkan/runtime/vk_meta_clear.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/vulkan/runtime/vk_meta.c b/src/vulkan/runtime/vk_meta.c index 18086947e6a..819b970d3cc 100644 --- a/src/vulkan/runtime/vk_meta.c +++ b/src/vulkan/runtime/vk_meta.c @@ -532,6 +532,9 @@ vk_meta_create_image_view(struct vk_command_buffer *cmd, const struct vk_device_dispatch_table *disp = &device->dispatch_table; VkDevice _device = vk_device_to_handle(device); + /* Meta must always specify view usage */ + assert(vk_find_struct_const(info->pNext, IMAGE_VIEW_USAGE_CREATE_INFO)); + VkResult result = disp->CreateImageView(_device, info, NULL, image_view_out); if (unlikely(result != VK_SUCCESS)) return result; diff --git a/src/vulkan/runtime/vk_meta_clear.c b/src/vulkan/runtime/vk_meta_clear.c index bbd2ae26778..0590df28c0b 100644 --- a/src/vulkan/runtime/vk_meta_clear.c +++ b/src/vulkan/runtime/vk_meta_clear.c @@ -442,8 +442,17 @@ clear_image_level_layers(struct vk_command_buffer *cmd, VkCommandBuffer _cmd = vk_command_buffer_to_handle(cmd); VkResult result; + VkImageViewUsageCreateInfo view_usage = { + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, + }; + if (image->aspects == VK_IMAGE_ASPECT_COLOR_BIT) + view_usage.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + if (aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) + view_usage.usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + const VkImageViewCreateInfo view_info = { .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .pNext = &view_usage, .image = vk_image_to_handle(image), .viewType = vk_image_render_view_type(image, layer_count), .format = format,