Skip to content
Snippets Groups Projects
Commit eba4f6d2 authored by Simon Oehrl's avatar Simon Oehrl
Browse files

Add image views for individual layers

parent 82a8c2a7
Branches
No related tags found
No related merge requests found
...@@ -70,7 +70,20 @@ namespace lava { ...@@ -70,7 +70,20 @@ namespace lava {
view_info.image = vk_image; view_info.image = vk_image;
view_info.subresourceRange = subresource_range; view_info.subresourceRange = subresource_range;
return device->vkCreateImageView(&view_info, &view); if (!device->vkCreateImageView(&view_info, &view)) {
return false;
}
layer_views.resize(layer_count);
for (uint32_t i = 0; i < layer_count; ++i) {
view_info.subresourceRange.baseArrayLayer = i;
view_info.subresourceRange.layerCount = 1;
if (!device->vkCreateImageView(&view_info, &layer_views[i])) {
return false;
}
}
return true;
} }
void image_array::destroy(bool view_only) { void image_array::destroy(bool view_only) {
...@@ -78,6 +91,12 @@ namespace lava { ...@@ -78,6 +91,12 @@ namespace lava {
device->vkDestroyImageView(view); device->vkDestroyImageView(view);
view = 0; view = 0;
} }
for (auto& layer_view : layer_views) {
if (layer_view) {
device->vkDestroyImageView(layer_view);
layer_view = 0;
}
}
if (view_only) if (view_only)
return; return;
......
...@@ -41,6 +41,9 @@ namespace lava { ...@@ -41,6 +41,9 @@ namespace lava {
VkImageView get_view() const { VkImageView get_view() const {
return view; return view;
} }
VkImageView get_layer_view(uint32_t layer_index) const {
return layer_views[layer_index];
}
VkImageCreateInfo const& get_info() const { VkImageCreateInfo const& get_info() const {
return info; return info;
...@@ -94,6 +97,7 @@ namespace lava { ...@@ -94,6 +97,7 @@ namespace lava {
VmaAllocation allocation = nullptr; VmaAllocation allocation = nullptr;
VkImageView view = VK_NULL_HANDLE; VkImageView view = VK_NULL_HANDLE;
std::vector<VkImageView> layer_views;
VkImageViewCreateInfo view_info; VkImageViewCreateInfo view_info;
VkImageSubresourceRange subresource_range; VkImageSubresourceRange subresource_range;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment