aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Vulkan/Window.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/Window.cs')
-rw-r--r--Ryujinx.Graphics.Vulkan/Window.cs22
1 files changed, 17 insertions, 5 deletions
diff --git a/Ryujinx.Graphics.Vulkan/Window.cs b/Ryujinx.Graphics.Vulkan/Window.cs
index d37dd7e9..27ebb0de 100644
--- a/Ryujinx.Graphics.Vulkan/Window.cs
+++ b/Ryujinx.Graphics.Vulkan/Window.cs
@@ -113,7 +113,7 @@ namespace Ryujinx.Graphics.Vulkan
ImageSharingMode = SharingMode.Exclusive,
ImageArrayLayers = 1,
PreTransform = capabilities.CurrentTransform,
- CompositeAlpha = CompositeAlphaFlagsKHR.OpaqueBitKhr,
+ CompositeAlpha = ChooseCompositeAlpha(capabilities.SupportedCompositeAlpha),
PresentMode = ChooseSwapPresentMode(presentModes, _vsyncEnabled),
Clipped = true,
OldSwapchain = oldSwapchain
@@ -182,6 +182,22 @@ namespace Ryujinx.Graphics.Vulkan
return availableFormats[0];
}
+ private static CompositeAlphaFlagsKHR ChooseCompositeAlpha(CompositeAlphaFlagsKHR supportedFlags)
+ {
+ if (supportedFlags.HasFlag(CompositeAlphaFlagsKHR.OpaqueBitKhr))
+ {
+ return CompositeAlphaFlagsKHR.OpaqueBitKhr;
+ }
+ else if (supportedFlags.HasFlag(CompositeAlphaFlagsKHR.PreMultipliedBitKhr))
+ {
+ return CompositeAlphaFlagsKHR.PreMultipliedBitKhr;
+ }
+ else
+ {
+ return CompositeAlphaFlagsKHR.InheritBitKhr;
+ }
+ }
+
private static PresentModeKHR ChooseSwapPresentMode(PresentModeKHR[] availablePresentModes, bool vsyncEnabled)
{
if (!vsyncEnabled && availablePresentModes.Contains(PresentModeKHR.ImmediateKhr))
@@ -192,10 +208,6 @@ namespace Ryujinx.Graphics.Vulkan
{
return PresentModeKHR.MailboxKhr;
}
- else if (availablePresentModes.Contains(PresentModeKHR.FifoKhr))
- {
- return PresentModeKHR.FifoKhr;
- }
else
{
return PresentModeKHR.FifoKhr;