diff options
author | Fernando S <fsahmkow27@gmail.com> | 2023-04-24 12:37:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-24 12:37:13 +0200 |
commit | 9bf19b04f6ba432e09caf387ca9b63db5585f140 (patch) | |
tree | 03030ec8030f7b4da2285c6ebe55e473117bdcf6 /src/video_core | |
parent | Merge pull request #10056 from vonchenplus/audout_u (diff) | |
parent | vulkan: pick alpha composite flags based on available values (diff) | |
download | yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.gz yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.bz2 yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.lz yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.xz yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.tar.zst yuzu-9bf19b04f6ba432e09caf387ca9b63db5585f140.zip |
Diffstat (limited to 'src/video_core')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_swapchain.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index 85fdce6e5..b1465e35c 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp @@ -65,6 +65,18 @@ VkExtent2D ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities, u32 wi return extent; } +VkCompositeAlphaFlagBitsKHR ChooseAlphaFlags(const VkSurfaceCapabilitiesKHR& capabilities) { + if (capabilities.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR) { + return VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; + } else if (capabilities.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR) { + return VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR; + } else { + LOG_ERROR(Render_Vulkan, "Unknown composite alpha flags value {:#x}", + capabilities.supportedCompositeAlpha); + return VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; + } +} + } // Anonymous namespace Swapchain::Swapchain(VkSurfaceKHR surface_, const Device& device_, Scheduler& scheduler_, @@ -155,6 +167,7 @@ void Swapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities, bo const auto formats{physical_device.GetSurfaceFormatsKHR(surface)}; const auto present_modes{physical_device.GetSurfacePresentModesKHR(surface)}; + const VkCompositeAlphaFlagBitsKHR alpha_flags{ChooseAlphaFlags(capabilities)}; const VkSurfaceFormatKHR surface_format{ChooseSwapSurfaceFormat(formats)}; present_mode = ChooseSwapPresentMode(present_modes); @@ -185,7 +198,7 @@ void Swapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities, bo .queueFamilyIndexCount = 0, .pQueueFamilyIndices = nullptr, .preTransform = capabilities.currentTransform, - .compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR, + .compositeAlpha = alpha_flags, .presentMode = present_mode, .clipped = VK_FALSE, .oldSwapchain = nullptr, |