diff --git a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp index c43f1d7ff..46df34482 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp @@ -33,13 +33,10 @@ void VkLightmap::Raytrace(LevelMesh* level) { mesh = level; - UpdateAccelStructDescriptors(); // To do: we only need to do this if the accel struct changes. - + UpdateAccelStructDescriptors(); CreateAtlasImages(); - UploadUniforms(); - for (size_t pageIndex = 0; pageIndex < atlasImages.size(); pageIndex++) { RenderAtlasImage(pageIndex); @@ -49,6 +46,21 @@ void VkLightmap::Raytrace(LevelMesh* level) { ResolveAtlasImage(pageIndex); } + + for (LightmapImage& image : atlasImages) + { + fb->GetCommands()->TransferDeleteList->Add(std::move(image.raytrace.Image)); + fb->GetCommands()->TransferDeleteList->Add(std::move(image.raytrace.View)); + fb->GetCommands()->TransferDeleteList->Add(std::move(image.raytrace.Framebuffer)); + fb->GetCommands()->TransferDeleteList->Add(std::move(image.resolve.Image)); + fb->GetCommands()->TransferDeleteList->Add(std::move(image.resolve.View)); + fb->GetCommands()->TransferDeleteList->Add(std::move(image.resolve.Framebuffer)); + } + atlasImages.clear(); + + for (auto& set : resolve.descriptorSets) + fb->GetCommands()->TransferDeleteList->Add(std::move(set)); + resolve.descriptorSets.clear(); } void VkLightmap::RenderAtlasImage(size_t pageIndex)