X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fframebuffer_backend.cpp;h=5db8c356faff5072d5d612aa94c01a64461070f1;hb=2a70fecfbbe8708be2bdaa75d222dd5a889a8ed3;hp=16894a58369f8639bfcc15260505d50a7ab8b8cf;hpb=806f14bc256bfb9dcd435e9985fabac8898e25f6;p=libs%2Fgl.git diff --git a/source/backends/vulkan/framebuffer_backend.cpp b/source/backends/vulkan/framebuffer_backend.cpp index 16894a58..5db8c356 100644 --- a/source/backends/vulkan/framebuffer_backend.cpp +++ b/source/backends/vulkan/framebuffer_backend.cpp @@ -2,6 +2,7 @@ #include "device.h" #include "framebuffer.h" #include "framebuffer_backend.h" +#include "renderpass.h" #include "vulkan.h" using namespace std; @@ -111,11 +112,13 @@ void VulkanFramebuffer::update(unsigned mask) const ++i; } - VkRenderPass render_pass = device.get_pipeline_cache().get_render_pass(self.format, false, false, false); + RenderPass render_pass; + render_pass.framebuffer = &self; + render_pass.update(device); VkFramebufferCreateInfo framebuffer_info = { }; framebuffer_info.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; - framebuffer_info.renderPass = handle_cast<::VkRenderPass>(render_pass); + framebuffer_info.renderPass = handle_cast<::VkRenderPass>(render_pass.handle); framebuffer_info.attachmentCount = self.format.size(); framebuffer_info.pAttachments = handle_cast<::VkImageView *>(vk_attachments); framebuffer_info.width = self.width; @@ -131,7 +134,7 @@ void VulkanFramebuffer::update(unsigned mask) const void VulkanFramebuffer::prepare_image_layouts(bool discard) const { for(const Framebuffer::Attachment &a: static_cast(this)->attachments) - a.tex->change_layout(a.level, get_vulkan_attachment_layout(get_components(a.tex->get_format())), discard); + a.tex->change_layout(a.level, get_vulkan_attachment_layout(get_components(a.tex->get_format())), (discard && a.layer<0)); } void VulkanFramebuffer::set_debug_name(const string &name)