summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/SwapChain.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@users.noreply.github.com>2018-01-12 11:46:55 +1000
committerGitHub <noreply@github.com>2018-01-12 11:46:55 +1000
commitce0c699b6605a1d103b6434bc28d20d161040904 (patch)
tree2f229fc73b0b7d84b92e44f2db4e0d64860c4320 /Source/Core/VideoBackends/Vulkan/SwapChain.cpp
parentb93ae142724f07cb9664a92b55887557dbb7d8ee (diff)
parent4997fbce44f9d092c503ce34f92faafb1af1dd44 (diff)
Merge pull request #6246 from stenzek/vulkan-readback-fixes
Vulkan: Fix MSAA regression from 5.0-5968
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/SwapChain.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/SwapChain.cpp47
1 files changed, 3 insertions, 44 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/SwapChain.cpp b/Source/Core/VideoBackends/Vulkan/SwapChain.cpp
index 58785130b0..672affeaea 100644
--- a/Source/Core/VideoBackends/Vulkan/SwapChain.cpp
+++ b/Source/Core/VideoBackends/Vulkan/SwapChain.cpp
@@ -33,7 +33,6 @@ SwapChain::~SwapChain()
{
DestroySwapChainImages();
DestroySwapChain();
- DestroyRenderPass();
DestroySurface();
}
@@ -229,48 +228,9 @@ bool SwapChain::SelectPresentMode()
bool SwapChain::CreateRenderPass()
{
// render pass for rendering to the swap chain
- VkAttachmentDescription present_render_pass_attachments[] = {
- {0, m_surface_format.format, VK_SAMPLE_COUNT_1_BIT, VK_ATTACHMENT_LOAD_OP_CLEAR,
- VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_LOAD_OP_DONT_CARE,
- VK_ATTACHMENT_STORE_OP_DONT_CARE, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
- VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL}};
-
- VkAttachmentReference present_render_pass_color_attachment_references[] = {
- {0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL}};
-
- VkSubpassDescription present_render_pass_subpass_descriptions[] = {
- {0, VK_PIPELINE_BIND_POINT_GRAPHICS, 0, nullptr, 1,
- present_render_pass_color_attachment_references, nullptr, nullptr, 0, nullptr}};
-
- VkRenderPassCreateInfo present_render_pass_info = {
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
- nullptr,
- 0,
- static_cast<u32>(ArraySize(present_render_pass_attachments)),
- present_render_pass_attachments,
- static_cast<u32>(ArraySize(present_render_pass_subpass_descriptions)),
- present_render_pass_subpass_descriptions,
- 0,
- nullptr};
-
- VkResult res = vkCreateRenderPass(g_vulkan_context->GetDevice(), &present_render_pass_info,
- nullptr, &m_render_pass);
- if (res != VK_SUCCESS)
- {
- LOG_VULKAN_ERROR(res, "vkCreateRenderPass (present) failed: ");
- return false;
- }
-
- return true;
-}
-
-void SwapChain::DestroyRenderPass()
-{
- if (!m_render_pass)
- return;
-
- vkDestroyRenderPass(g_vulkan_context->GetDevice(), m_render_pass, nullptr);
- m_render_pass = VK_NULL_HANDLE;
+ m_render_pass = g_object_cache->GetRenderPass(m_surface_format.format, VK_FORMAT_UNDEFINED, 1,
+ VK_ATTACHMENT_LOAD_OP_CLEAR);
+ return m_render_pass != VK_NULL_HANDLE;
}
bool SwapChain::CreateSwapChain()
@@ -498,7 +458,6 @@ bool SwapChain::SetVSync(bool enabled)
bool SwapChain::RecreateSurface(void* native_handle)
{
// Destroy the old swap chain, images, and surface.
- DestroyRenderPass();
DestroySwapChainImages();
DestroySwapChain();
DestroySurface();