mirror of
https://git.ryujinx.app/projects/Kenji-NX.git
synced 2026-10-05 19:19:13 +02:00
macOS: Fix black screen on Metal versions older than 3.1
Fixes a black screen on Metal versions older than 3.1 by disabling `VK_EXT_extended_dynamic_state` (and `VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE`). Fix imported from sunshineinabox's unpublished extended dynamic states branch. Co-authored-by: sunshineinabox <aqemail@gmail.com>
This commit is contained in:
co-authored by
sunshineinabox
parent
0d6c0aeeab
commit
30dba1ed36
@@ -582,8 +582,10 @@ namespace Ryujinx.Graphics.Vulkan
|
|||||||
dynamicStates[5] = DynamicState.StencilReference;
|
dynamicStates[5] = DynamicState.StencilReference;
|
||||||
dynamicStates[6] = DynamicState.BlendConstants;
|
dynamicStates[6] = DynamicState.BlendConstants;
|
||||||
|
|
||||||
if (supportsExtDynamicState)
|
if (supportsExtDynamicState && (gd.SupportsMTL31 || !gd.IsMoltenVk))
|
||||||
{
|
{
|
||||||
|
// Requires Metal 3.1 and new MoltenVK, however extended dynamic states extension is not
|
||||||
|
// available on older versions of MVK, so we can safely check only OS version.
|
||||||
dynamicStates[dynamicStatesCount++] = DynamicState.VertexInputBindingStrideExt;
|
dynamicStates[dynamicStatesCount++] = DynamicState.VertexInputBindingStrideExt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||||||
internal bool IsIntelArc { get; private set; }
|
internal bool IsIntelArc { get; private set; }
|
||||||
internal bool IsQualcommProprietary { get; private set; }
|
internal bool IsQualcommProprietary { get; private set; }
|
||||||
internal bool IsMoltenVk { get; private set; }
|
internal bool IsMoltenVk { get; private set; }
|
||||||
|
internal bool SupportsMTL31 { get; private set; }
|
||||||
internal bool IsTBDR { get; private set; }
|
internal bool IsTBDR { get; private set; }
|
||||||
internal bool IsSharedMemory { get; private set; }
|
internal bool IsSharedMemory { get; private set; }
|
||||||
|
|
||||||
@@ -125,6 +126,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|||||||
// Any device running on MacOS is using MoltenVK, even Intel and AMD vendors.
|
// Any device running on MacOS is using MoltenVK, even Intel and AMD vendors.
|
||||||
IsMoltenVk = true;
|
IsMoltenVk = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SupportsMTL31 = OperatingSystem.IsMacOSVersionAtLeast(14);
|
||||||
}
|
}
|
||||||
|
|
||||||
private unsafe void LoadFeatures(uint maxQueueCount, uint queueFamilyIndex)
|
private unsafe void LoadFeatures(uint maxQueueCount, uint queueFamilyIndex)
|
||||||
|
|||||||
Reference in New Issue
Block a user