diff options
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.cpp | 29 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.h | 3 |
2 files changed, 18 insertions, 14 deletions
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp index f1e8082d2..5c43b8acf 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp +++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp | |||
| @@ -278,6 +278,20 @@ VkSemaphore VKBlitScreen::DrawToSwapchain(const Tegra::FramebufferConfig& frameb | |||
| 278 | return Draw(framebuffer, *framebuffers[image_index], layout, render_area, use_accelerated); | 278 | return Draw(framebuffer, *framebuffers[image_index], layout, render_area, use_accelerated); |
| 279 | } | 279 | } |
| 280 | 280 | ||
| 281 | vk::Framebuffer VKBlitScreen::CreateFramebuffer(const VkImageView& image_view, VkExtent2D extent) { | ||
| 282 | return device.GetLogical().CreateFramebuffer(VkFramebufferCreateInfo{ | ||
| 283 | .sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, | ||
| 284 | .pNext = nullptr, | ||
| 285 | .flags = 0, | ||
| 286 | .renderPass = *renderpass, | ||
| 287 | .attachmentCount = 1, | ||
| 288 | .pAttachments = &image_view, | ||
| 289 | .width = extent.width, | ||
| 290 | .height = extent.height, | ||
| 291 | .layers = 1, | ||
| 292 | }); | ||
| 293 | } | ||
| 294 | |||
| 281 | void VKBlitScreen::CreateStaticResources() { | 295 | void VKBlitScreen::CreateStaticResources() { |
| 282 | CreateShaders(); | 296 | CreateShaders(); |
| 283 | CreateSemaphores(); | 297 | CreateSemaphores(); |
| @@ -621,22 +635,9 @@ void VKBlitScreen::CreateFramebuffers() { | |||
| 621 | const VkExtent2D size{swapchain.GetSize()}; | 635 | const VkExtent2D size{swapchain.GetSize()}; |
| 622 | framebuffers.resize(image_count); | 636 | framebuffers.resize(image_count); |
| 623 | 637 | ||
| 624 | VkFramebufferCreateInfo ci{ | ||
| 625 | .sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, | ||
| 626 | .pNext = nullptr, | ||
| 627 | .flags = 0, | ||
| 628 | .renderPass = *renderpass, | ||
| 629 | .attachmentCount = 1, | ||
| 630 | .pAttachments = nullptr, | ||
| 631 | .width = size.width, | ||
| 632 | .height = size.height, | ||
| 633 | .layers = 1, | ||
| 634 | }; | ||
| 635 | |||
| 636 | for (std::size_t i = 0; i < image_count; ++i) { | 638 | for (std::size_t i = 0; i < image_count; ++i) { |
| 637 | const VkImageView image_view{swapchain.GetImageViewIndex(i)}; | 639 | const VkImageView image_view{swapchain.GetImageViewIndex(i)}; |
| 638 | ci.pAttachments = &image_view; | 640 | framebuffers[i] = CreateFramebuffer(image_view, size); |
| 639 | framebuffers[i] = device.GetLogical().CreateFramebuffer(ci); | ||
| 640 | } | 641 | } |
| 641 | } | 642 | } |
| 642 | 643 | ||
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.h b/src/video_core/renderer_vulkan/vk_blit_screen.h index 44b93b4af..430bcfbca 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.h +++ b/src/video_core/renderer_vulkan/vk_blit_screen.h | |||
| @@ -63,6 +63,9 @@ public: | |||
| 63 | [[nodiscard]] VkSemaphore DrawToSwapchain(const Tegra::FramebufferConfig& framebuffer, | 63 | [[nodiscard]] VkSemaphore DrawToSwapchain(const Tegra::FramebufferConfig& framebuffer, |
| 64 | bool use_accelerated); | 64 | bool use_accelerated); |
| 65 | 65 | ||
| 66 | [[nodiscard]] vk::Framebuffer CreateFramebuffer(const VkImageView& image_view, | ||
| 67 | VkExtent2D extent); | ||
| 68 | |||
| 66 | private: | 69 | private: |
| 67 | struct BufferData; | 70 | struct BufferData; |
| 68 | 71 | ||