From 463269f704954d71ed4110fe4357f9249ac6ccab Mon Sep 17 00:00:00 2001 From: TellowKrinkle Date: Wed, 17 May 2023 19:28:27 -0500 Subject: VideoBackends:Multiple: Split up BUG_BROKEN_SUBGROUP_OPS We now use subgroup ops for more than just a minor performance optimization --- Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp') diff --git a/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp b/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp index ab9b015cec..86826f7280 100644 --- a/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp +++ b/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp @@ -7,6 +7,7 @@ #include #include "VideoBackends/Vulkan/VulkanContext.h" +#include "VideoCommon/DriverDetails.h" #include "VideoCommon/Spirv.h" namespace Vulkan::ShaderCompiler @@ -98,6 +99,13 @@ static std::string GetShaderCode(std::string_view source, std::string_view heade full_source_code.append(header); if (g_vulkan_context->SupportsShaderSubgroupOperations()) full_source_code.append(SUBGROUP_HELPER_HEADER, subgroup_helper_header_length); + if (DriverDetails::HasBug(DriverDetails::BUG_INVERTED_IS_HELPER)) + { + full_source_code.append("#define gl_HelperInvocation !gl_HelperInvocation " + "// Work around broken AMD Metal driver\n"); + } + if (DriverDetails::HasBug(DriverDetails::BUG_BROKEN_SUBGROUP_OPS_WITH_DISCARD)) + full_source_code.append("#define BROKEN_SUBGROUP_WITH_DISCARD 1\n"); full_source_code.append(source); } -- cgit v1.2.3