summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_vulkan/vk_blit_screen.cpp29
-rw-r--r--src/video_core/renderer_vulkan/vk_blit_screen.h3
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
281vk::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
281void VKBlitScreen::CreateStaticResources() { 295void 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
66private: 69private:
67 struct BufferData; 70 struct BufferData;
68 71