]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/framebuffer_backend.cpp
Support binding individual mipmap levels of textures
[libs/gl.git] / source / backends / vulkan / framebuffer_backend.cpp
index 5b83c3db6b67e8be5c65acd31225ec64d8ec6ebf..61ab1caeef75504063f4f3a34475056ac292b142 100644 (file)
@@ -65,7 +65,7 @@ void VulkanFramebuffer::update(unsigned) const
                vk_attachments[i++] = a.tex->view_handle;
        }
 
-       VkRenderPass render_pass = device.get_pipeline_cache().get_render_pass(self.format, false, false);
+       VkRenderPass render_pass = device.get_pipeline_cache().get_render_pass(self.format, false, false, false);
 
        VkFramebufferCreateInfo framebuffer_info = { };
        framebuffer_info.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
@@ -74,7 +74,7 @@ void VulkanFramebuffer::update(unsigned) const
        framebuffer_info.pAttachments = handle_cast<::VkImageView *>(vk_attachments);
        framebuffer_info.width = self.width;
        framebuffer_info.height = self.height;
-       framebuffer_info.layers = 1;
+       framebuffer_info.layers = self.layers;
 
        vk.CreateFramebuffer(framebuffer_info, handle);
 
@@ -82,6 +82,12 @@ void VulkanFramebuffer::update(unsigned) const
                set_vulkan_object_name();
 }
 
+void VulkanFramebuffer::prepare_image_layouts(bool discard) const
+{
+       for(const Framebuffer::Attachment &a: static_cast<const Framebuffer *>(this)->attachments)
+               a.tex->change_layout(a.level, get_vulkan_attachment_layout(get_components(a.tex->get_format())), discard);
+}
+
 void VulkanFramebuffer::set_debug_name(const string &name)
 {
 #ifdef DEBUG