diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2024-05-21 22:17:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-21 22:17:22 +0200 |
| commit | 5c2f73986a97a94a3f9f0eb5a9c77725e5e1c68e (patch) | |
| tree | d7f7d3dfd4c4043e6ea076f35b1f0ee95682c637 /Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp | |
| parent | 321dc9b76deff1dc3053dd26d1b5f5248bbdc206 (diff) | |
| parent | b7a451fc8775848eaf09aad02a3f8d9022fbde8e (diff) | |
Merge pull request #12537 from TellowKrinkle/MTLSubgroup
VideoCommon: More specific subgroup op bugs
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
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 <string> #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); } |
