vulkan/meta: Add a helper for image view types

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
Faith Ekstrand 2023-01-30 20:11:59 -06:00 committed by Marge Bot
parent ecf5c5c46d
commit c13c6d04d7
2 changed files with 18 additions and 18 deletions

View file

@ -439,27 +439,10 @@ clear_image_level_layers(struct vk_command_buffer *cmd,
VkCommandBuffer _cmd = vk_command_buffer_to_handle(cmd);
VkResult result;
VkImageViewType view_type;
switch (image->image_type) {
case VK_IMAGE_TYPE_1D:
view_type = layer_count == 1 ? VK_IMAGE_VIEW_TYPE_1D :
VK_IMAGE_VIEW_TYPE_1D_ARRAY;
break;
case VK_IMAGE_TYPE_2D:
case VK_IMAGE_TYPE_3D:
view_type = layer_count == 1 ? VK_IMAGE_VIEW_TYPE_2D :
VK_IMAGE_VIEW_TYPE_2D_ARRAY;
break;
default:
unreachable("Invalid image type");
}
const VkImageViewCreateInfo view_info = {
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = vk_image_to_handle(image),
.viewType = view_type,
.viewType = vk_image_render_view_type(image, layer_count),
.format = format,
.subresourceRange = {
.aspectMask = aspects,

View file

@ -23,6 +23,7 @@
#ifndef VK_META_PRIVATE_H
#define VK_META_PRIVATE_H
#include "vk_image.h"
#include "vk_meta.h"
#ifdef __cplusplus
@ -48,6 +49,22 @@ vk_meta_rendering_info_copy(struct vk_meta_rendering_info *dst,
dst->stencil_attachment_format = src->stencil_attachment_format;
}
static inline VkImageViewType
vk_image_render_view_type(const struct vk_image *image, uint32_t layer_count)
{
switch (image->image_type) {
case VK_IMAGE_TYPE_1D:
return layer_count == 1 ? VK_IMAGE_VIEW_TYPE_1D :
VK_IMAGE_VIEW_TYPE_1D_ARRAY;
case VK_IMAGE_TYPE_2D:
case VK_IMAGE_TYPE_3D:
return layer_count == 1 ? VK_IMAGE_VIEW_TYPE_2D :
VK_IMAGE_VIEW_TYPE_2D_ARRAY;
default:
unreachable("Invalid image type");
}
}
#ifdef __cplusplus
}
#endif