From 31d0bc5915caea7b96ce690b144eedd907c46a7f Mon Sep 17 00:00:00 2001 From: KeatonTheBot Date: Wed, 27 May 2026 17:41:47 -0500 Subject: [PATCH] Revert "Shader: skip initialization of all clip distances on macOS." This reverts commit f764ae2d58534fdd9a4944b532fb2c813fd11d67. --- src/Ryujinx.Graphics.GAL/Capabilities.cs | 3 --- src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs | 2 -- src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs | 1 - src/Ryujinx.Graphics.Shader/IGpuAccessor.cs | 9 --------- src/Ryujinx.Graphics.Shader/Translation/Translator.cs | 9 +++------ src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 1 - 6 files changed, 3 insertions(+), 22 deletions(-) diff --git a/src/Ryujinx.Graphics.GAL/Capabilities.cs b/src/Ryujinx.Graphics.GAL/Capabilities.cs index 1811fb850..c94abef89 100644 --- a/src/Ryujinx.Graphics.GAL/Capabilities.cs +++ b/src/Ryujinx.Graphics.GAL/Capabilities.cs @@ -10,7 +10,6 @@ namespace Ryujinx.Graphics.GAL public readonly bool HasFrontFacingBug; public readonly bool HasVectorIndexingBug; - public readonly bool HasClipDistanceInitBug; public readonly bool NeedsFragmentOutputSpecialization; public readonly bool ReduceShaderPrecision; @@ -82,7 +81,6 @@ namespace Ryujinx.Graphics.GAL SystemMemoryType memoryType, bool hasFrontFacingBug, bool hasVectorIndexingBug, - bool hasClipDistanceInitBug, bool needsFragmentOutputSpecialization, bool reduceShaderPrecision, bool supportsAstcCompression, @@ -147,7 +145,6 @@ namespace Ryujinx.Graphics.GAL MemoryType = memoryType; HasFrontFacingBug = hasFrontFacingBug; HasVectorIndexingBug = hasVectorIndexingBug; - HasClipDistanceInitBug = hasClipDistanceInitBug; NeedsFragmentOutputSpecialization = needsFragmentOutputSpecialization; ReduceShaderPrecision = reduceShaderPrecision; SupportsAstcCompression = supportsAstcCompression; diff --git a/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs b/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs index ce81467ac..2f8c329e5 100644 --- a/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs +++ b/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs @@ -201,8 +201,6 @@ namespace Ryujinx.Graphics.Gpu.Shader public bool QueryHostHasVectorIndexingBug() => _context.Capabilities.HasVectorIndexingBug; - public bool QueryHostHasClipDistanceInitBug() => _context.Capabilities.HasClipDistanceInitBug; - public int QueryHostStorageBufferOffsetAlignment() => _context.Capabilities.StorageBufferOffsetAlignment; public int QueryHostSubgroupSize() => _context.Capabilities.ShaderSubgroupSize; diff --git a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs index e5934099f..b294c54b9 100644 --- a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs +++ b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs @@ -152,7 +152,6 @@ namespace Ryujinx.Graphics.OpenGL memoryType: SystemMemoryType.BackendManaged, hasFrontFacingBug: intelWindows, hasVectorIndexingBug: amdWindows, - hasClipDistanceInitBug: false, needsFragmentOutputSpecialization: false, reduceShaderPrecision: false, supportsAstcCompression: HwCapabilities.SupportsAstcCompression, diff --git a/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs b/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs index 79af4c9f2..6635b82d3 100644 --- a/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs +++ b/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs @@ -207,15 +207,6 @@ namespace Ryujinx.Graphics.Shader return false; } - /// - /// Queries host about the presence of the clip distance initialization bug. - /// - /// True if the bug is present on the host device used, false otherwise - bool QueryHostHasClipDistanceInitBug() - { - return false; - } - /// /// Queries host storage buffer alignment required. /// diff --git a/src/Ryujinx.Graphics.Shader/Translation/Translator.cs b/src/Ryujinx.Graphics.Shader/Translation/Translator.cs index bad465bd5..54cad966a 100644 --- a/src/Ryujinx.Graphics.Shader/Translation/Translator.cs +++ b/src/Ryujinx.Graphics.Shader/Translation/Translator.cs @@ -259,14 +259,11 @@ namespace Ryujinx.Graphics.Shader.Translation context.Store(StorageKind.Output, IoVariable.Position, null, Const(c), ConstF(c == 3 ? 1f : 0f)); } - if (!context.TranslatorContext.GpuAccessor.QueryHostHasClipDistanceInitBug()) + if (context.Program.ClipDistancesWritten != 0) { - if (context.Program.ClipDistancesWritten != 0) + for (int i = 0; i < 8; i++) { - for (int i = 0; i < 8; i++) - { - context.Store(StorageKind.Output, IoVariable.ClipDistance, null, Const(i), ConstF(0f)); - } + context.Store(StorageKind.Output, IoVariable.ClipDistance, null, Const(i), ConstF(0f)); } } } diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 1c3e4c187..ef394d35d 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -742,7 +742,6 @@ namespace Ryujinx.Graphics.Vulkan memoryType: memoryType, hasFrontFacingBug: IsIntelWindows, hasVectorIndexingBug: IsQualcommProprietary, - hasClipDistanceInitBug: IsMoltenVk, needsFragmentOutputSpecialization: IsMoltenVk, reduceShaderPrecision: IsMoltenVk, supportsAstcCompression: features2.Features.TextureCompressionAstcLdr && supportsAstcFormats,