summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2024-05-21 22:17:22 +0200
committerGitHub <noreply@github.com>2024-05-21 22:17:22 +0200
commit5c2f73986a97a94a3f9f0eb5a9c77725e5e1c68e (patch)
treed7f7d3dfd4c4043e6ea076f35b1f0ee95682c637 /Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp
parent321dc9b76deff1dc3053dd26d1b5f5248bbdc206 (diff)
parentb7a451fc8775848eaf09aad02a3f8d9022fbde8e (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.cpp8
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);
}