diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs b/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs index 5ee926911..7f175d93c 100644 --- a/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs +++ b/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs @@ -144,9 +144,9 @@ namespace Ryujinx.Graphics.Vulkan { _drawCountSinceBarrier = DrawCount; - // Barriers apparently have no effect inside a render pass on MoltenVK. + // Barriers are not supported inside a render pass on Apple GPUs. // As a workaround, end the render pass. - if (Gd.IsMoltenVk) + if (Gd.Vendor == Vendor.Apple) { EndRenderPass(); } diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 8f0c73061..b9b1ba911 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -315,7 +315,7 @@ namespace Ryujinx.Graphics.Vulkan features2.Features.ShaderStorageImageMultisample, _physicalDevice.IsDeviceExtensionPresent(ExtConditionalRendering.ExtensionName), _physicalDevice.IsDeviceExtensionPresent(ExtExtendedDynamicState.ExtensionName), - features2.Features.MultiViewport, + features2.Features.MultiViewport && !(IsMoltenVk && Vendor == Vendor.Amd), // Workaround for AMD on MoltenVK issue featuresRobustness2.NullDescriptor || IsMoltenVk, _physicalDevice.IsDeviceExtensionPresent(KhrPushDescriptor.ExtensionName), featuresPrimitiveTopologyListRestart.PrimitiveTopologyListRestart, @@ -680,7 +680,8 @@ namespace Ryujinx.Graphics.Vulkan IsAmdWindows = Vendor == Vendor.Amd && OperatingSystem.IsWindows(); IsIntelWindows = Vendor == Vendor.Intel && OperatingSystem.IsWindows(); - IsTBDR = IsMoltenVk || + IsTBDR = + Vendor == Vendor.Apple || Vendor == Vendor.Qualcomm || Vendor == Vendor.ARM || Vendor == Vendor.Broadcom ||