From 6271f5ce797bf12be64c710b66b1b9e93a239829 Mon Sep 17 00:00:00 2001 From: Chuyan Zhang Date: Thu, 10 Oct 2024 18:51:05 -0700 Subject: move to new resource abstraction --- src/resources/image.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/resources/image.cpp (limited to 'src/resources/image.cpp') diff --git a/src/resources/image.cpp b/src/resources/image.cpp new file mode 100644 index 0000000..0c51b2d --- /dev/null +++ b/src/resources/image.cpp @@ -0,0 +1,43 @@ +#include "resources/image.h" +#include "vulkan_helper.h" +#include + +namespace iris { + +VkImageView Image_tt::get_image_view(const ImageViewDesc &desc) { + auto it = image_views.find(desc); + if (it != image_views.end()) { + return it->second; + } + + // Not found, create the image view + VkImageViewCreateInfo view_create_info = { + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .image = handle, + .viewType = desc.view_type, + .format = desc.format, + .components = { + .r = VK_COMPONENT_SWIZZLE_IDENTITY, + .g = VK_COMPONENT_SWIZZLE_IDENTITY, + .b = VK_COMPONENT_SWIZZLE_IDENTITY, + .a = VK_COMPONENT_SWIZZLE_IDENTITY, + }, + .subresourceRange = { + .aspectMask = desc.aspect_mask, + .baseMipLevel = desc.base_mip_level, + .levelCount = desc.mip_levels, + .baseArrayLayer = desc.base_array_layer, + .layerCount = desc.array_layers, + }, + }; + VkImageView view; + CHECK_VULKAN(vkCreateImageView( + device, + &view_create_info, + nullptr, + &view)); + image_views[desc] = view; + return view; +} + +} // namespace iris \ No newline at end of file -- cgit v1.2.3-70-g09d2