diff options
| author | 2022-10-06 20:59:40 +0200 | |
|---|---|---|
| committer | 2022-10-06 21:00:54 +0200 | |
| commit | df6dffa30baefd9f1e73399c632ab4e5f6475bab (patch) | |
| tree | 14803b31b6817294d40d57446f6fa94c5ff3fe9a /src/video_core/renderer_vulkan | |
| parent | maxwell_dma: remove warnings from implemented functionality (diff) | |
| download | yuzu-df6dffa30baefd9f1e73399c632ab4e5f6475bab.tar.gz yuzu-df6dffa30baefd9f1e73399c632ab4e5f6475bab.tar.xz yuzu-df6dffa30baefd9f1e73399c632ab4e5f6475bab.zip | |
vulkan_blitter: Fix pool allocation double free.
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.cpp | 13 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.h | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp index 444c29f68..cb7fa2078 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp +++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp | |||
| @@ -145,6 +145,11 @@ VkSemaphore BlitScreen::Draw(const Tegra::FramebufferConfig& framebuffer, | |||
| 145 | // Finish any pending renderpass | 145 | // Finish any pending renderpass |
| 146 | scheduler.RequestOutsideRenderPassOperationContext(); | 146 | scheduler.RequestOutsideRenderPassOperationContext(); |
| 147 | 147 | ||
| 148 | if (const auto swapchain_images = swapchain.GetImageCount(); swapchain_images != image_count) { | ||
| 149 | image_count = swapchain_images; | ||
| 150 | Recreate(); | ||
| 151 | } | ||
| 152 | |||
| 148 | const std::size_t image_index = swapchain.GetImageIndex(); | 153 | const std::size_t image_index = swapchain.GetImageIndex(); |
| 149 | 154 | ||
| 150 | scheduler.Wait(resource_ticks[image_index]); | 155 | scheduler.Wait(resource_ticks[image_index]); |
| @@ -448,15 +453,15 @@ vk::Framebuffer BlitScreen::CreateFramebuffer(const VkImageView& image_view, VkE | |||
| 448 | 453 | ||
| 449 | void BlitScreen::CreateStaticResources() { | 454 | void BlitScreen::CreateStaticResources() { |
| 450 | CreateShaders(); | 455 | CreateShaders(); |
| 456 | CreateSampler(); | ||
| 457 | } | ||
| 458 | |||
| 459 | void BlitScreen::CreateDynamicResources() { | ||
| 451 | CreateSemaphores(); | 460 | CreateSemaphores(); |
| 452 | CreateDescriptorPool(); | 461 | CreateDescriptorPool(); |
| 453 | CreateDescriptorSetLayout(); | 462 | CreateDescriptorSetLayout(); |
| 454 | CreateDescriptorSets(); | 463 | CreateDescriptorSets(); |
| 455 | CreatePipelineLayout(); | 464 | CreatePipelineLayout(); |
| 456 | CreateSampler(); | ||
| 457 | } | ||
| 458 | |||
| 459 | void BlitScreen::CreateDynamicResources() { | ||
| 460 | CreateRenderPass(); | 465 | CreateRenderPass(); |
| 461 | CreateFramebuffers(); | 466 | CreateFramebuffers(); |
| 462 | CreateGraphicsPipeline(); | 467 | CreateGraphicsPipeline(); |
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.h b/src/video_core/renderer_vulkan/vk_blit_screen.h index b8c67bef0..29e2ea925 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.h +++ b/src/video_core/renderer_vulkan/vk_blit_screen.h | |||
| @@ -109,7 +109,7 @@ private: | |||
| 109 | MemoryAllocator& memory_allocator; | 109 | MemoryAllocator& memory_allocator; |
| 110 | Swapchain& swapchain; | 110 | Swapchain& swapchain; |
| 111 | Scheduler& scheduler; | 111 | Scheduler& scheduler; |
| 112 | const std::size_t image_count; | 112 | std::size_t image_count; |
| 113 | const ScreenInfo& screen_info; | 113 | const ScreenInfo& screen_info; |
| 114 | 114 | ||
| 115 | vk::ShaderModule vertex_shader; | 115 | vk::ShaderModule vertex_shader; |