From cf1ff99b10cbbd6dfe1b19657b339cae0ed8dec7 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sun, 24 May 2020 18:38:54 +0200 Subject: [PATCH] [vulkan] Disable fullscreen exclusive support on wine Fixes issues with RenderDoc captures on winevulkan. --- src/vulkan/vulkan_presenter.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vulkan/vulkan_presenter.cpp b/src/vulkan/vulkan_presenter.cpp index 6958e5768..7eb84b023 100644 --- a/src/vulkan/vulkan_presenter.cpp +++ b/src/vulkan/vulkan_presenter.cpp @@ -11,6 +11,14 @@ namespace dxvk::vk { PresenterDevice device, const PresenterDesc& desc) : m_vki(vki), m_vkd(vkd), m_device(device), m_window(window) { + // As of Wine 5.9, winevulkan provides this extension, but does + // not filter the pNext chain for VkSwapchainCreateInfoKHR properly + // before passing it to the Linux sude, which breaks RenderDoc. + if (::GetModuleHandle("winevulkan.dll")) { + Logger::warn("winevulkan detected, disabling exclusive fullscreen support"); + m_device.features.fullScreenExclusive = false; + } + if (createSurface() != VK_SUCCESS) throw DxvkError("Failed to create surface");