MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Samples / ImageView

Method ImageView

framework/core/image_view.cpp:27–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25namespace core
26{
27ImageView::ImageView(Image &img, VkImageViewType view_type, VkFormat format,
28 uint32_t mip_level, uint32_t array_layer,
29 uint32_t n_mip_levels, uint32_t n_array_layers) :
30 VulkanResource{VK_NULL_HANDLE, &img.get_device()},
31 image{&img},
32 format{format}
33{
34 if (format == VK_FORMAT_UNDEFINED)
35 {
36 this->format = format = image->get_format();
37 }
38
39 subresource_range.baseMipLevel = mip_level;
40 subresource_range.baseArrayLayer = array_layer;
41 subresource_range.levelCount = n_mip_levels == 0 ? image->get_subresource().mipLevel : n_mip_levels;
42 subresource_range.layerCount = n_array_layers == 0 ? image->get_subresource().arrayLayer : n_array_layers;
43
44 if (is_depth_format(format))
45 {
46 subresource_range.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
47 }
48 else
49 {
50 subresource_range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
51 }
52
53 VkImageViewCreateInfo view_info{VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO};
54 view_info.image = image->get_handle();
55 view_info.viewType = view_type;
56 view_info.format = format;
57 view_info.subresourceRange = subresource_range;
58
59 auto result = vkCreateImageView(get_device().get_handle(), &view_info, nullptr, &get_handle());
60
61 if (result != VK_SUCCESS)
62 {
63 throw VulkanException{result, "Cannot create ImageView"};
64 }
65
66 // Register this image view to its image
67 // in order to be notified when it gets moved
68 image->get_views().emplace(this);
69}
70
71ImageView::ImageView(ImageView &&other) :
72 VulkanResource{std::move(other)},

Callers

nothing calls this directly

Calls 4

get_subresourceMethod · 0.80
is_depth_formatFunction · 0.50
get_formatMethod · 0.45
get_handleMethod · 0.45

Tested by

no test coverage detected