diff --git a/src/video_core/renderer_vulkan/vk_blit_helper.cpp b/src/video_core/renderer_vulkan/vk_blit_helper.cpp index 6e8033ed3..abd8401d8 100644 --- a/src/video_core/renderer_vulkan/vk_blit_helper.cpp +++ b/src/video_core/renderer_vulkan/vk_blit_helper.cpp @@ -476,6 +476,10 @@ void BlitHelper::MakeComputePipelines() { } vk::Pipeline BlitHelper::MakeDepthStencilBlitPipeline() { + if (!instance.IsShaderStencilExportSupported()) { + return VK_NULL_HANDLE; + } + const std::array stages = MakeStages(full_screen_vert, blit_depth_stencil_frag); const VideoCore::PixelFormat depth_stencil = VideoCore::PixelFormat::D24S8; const vk::Format depth_stencil_format = instance.GetTraits(depth_stencil).native; diff --git a/src/video_core/renderer_vulkan/vk_renderpass_cache.h b/src/video_core/renderer_vulkan/vk_renderpass_cache.h index 7d66b5cfe..5f0787c53 100644 --- a/src/video_core/renderer_vulkan/vk_renderpass_cache.h +++ b/src/video_core/renderer_vulkan/vk_renderpass_cache.h @@ -5,6 +5,7 @@ #pragma once #include +#include #include #include "common/hash.h" #include "video_core/rasterizer_cache/pixel_format.h" diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index 5ffa99d39..c4983f9b1 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp @@ -112,6 +112,10 @@ void Swapchain::AcquireNextImage() { MICROPROFILE_DEFINE(Vulkan_Present, "Vulkan", "Swapchain Present", MP_RGB(66, 185, 245)); void Swapchain::Present() { scheduler.Record([this, index = image_index](vk::CommandBuffer) { + if (NeedsRecreation()) [[unlikely]] { + return; + } + const vk::PresentInfoKHR present_info = { .waitSemaphoreCount = 1, .pWaitSemaphores = &present_ready[index],