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 7412ad90..9f731e0e 100644
--- a/Ryujinx.Graphics.Vulkan/Window.cs
+++ b/Ryujinx.Graphics.Vulkan/Window.cs
@@ -120,7 +120,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
};
@@ -188,6 +188,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))
@@ -198,10 +214,6 @@ namespace Ryujinx.Graphics.Vulkan
{
return PresentModeKHR.MailboxKhr;
}
- else if (availablePresentModes.Contains(PresentModeKHR.FifoKhr))
- {
- return PresentModeKHR.FifoKhr;
- }
else
{
return PresentModeKHR.FifoKhr;