From 6f4730d5ae7e8711c185416dccca39fade06c76e Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Fri, 22 Sep 2023 11:31:50 +0200 Subject: [PATCH] Fix view index binding error --- .../rendering/vulkan/accelstructs/vk_lightmap.cpp | 13 ++++++++++++- .../rendering/vulkan/textures/vk_imagetransition.h | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp index 4ec1e8faf..5c6edfdeb 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp @@ -414,16 +414,27 @@ void VkLightmap::CopyResult() // Create framebuffer object if it doesn't exist if (i >= destTexture->LMFramebuffers.size()) { + destTexture->LMViews.resize(i + 1); destTexture->LMFramebuffers.resize(i + 1); } auto& framebuffer = destTexture->LMFramebuffers[i]; if (!framebuffer) { + auto& view = destTexture->LMViews[i]; + if (!view) + { + view = ImageViewBuilder() + .Type(VK_IMAGE_VIEW_TYPE_2D) + .Image(destTexture->Image.get(), VK_FORMAT_R16G16B16A16_SFLOAT, VK_IMAGE_ASPECT_COLOR_BIT, 0, i, 1, 1) + .DebugName("LMView") + .Create(fb->GetDevice()); + } + framebuffer = FramebufferBuilder() .RenderPass(copy.renderPass.get()) .Size(destSize, destSize) - .AddAttachment(destTexture->View.get()) + .AddAttachment(view.get()) .DebugName("LMFramebuffer") .Create(fb->GetDevice()); } diff --git a/src/common/rendering/vulkan/textures/vk_imagetransition.h b/src/common/rendering/vulkan/textures/vk_imagetransition.h index 71a476dd3..9067f2e84 100644 --- a/src/common/rendering/vulkan/textures/vk_imagetransition.h +++ b/src/common/rendering/vulkan/textures/vk_imagetransition.h @@ -22,6 +22,9 @@ public: for (auto& framebuffer : LMFramebuffers) deletelist->Add(std::move(framebuffer)); LMFramebuffers.clear(); + for (auto& view : LMViews) + deletelist->Add(std::move(view)); + LMViews.clear(); deletelist->Add(std::move(DepthOnlyView)); deletelist->Add(std::move(View)); deletelist->Add(std::move(Image)); @@ -36,6 +39,7 @@ public: VkImageAspectFlags AspectMask = VK_IMAGE_ASPECT_COLOR_BIT; std::unique_ptr PPFramebuffer; std::map> RSFramebuffers; + std::vector> LMViews; std::vector> LMFramebuffers; };