summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp
diff options
context:
space:
mode:
authorTechjar <tecknojar@gmail.com>2021-06-07 22:32:25 -0400
committerTechjar <tecknojar@gmail.com>2021-06-07 22:32:25 -0400
commit58238e75a7d2a153fdbd51b5f39fd00f390eafbf (patch)
treefc202be04201c6e174925c5bea4bb2b454abf4c7 /Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp
parent638909aec6ef07483f9c9301d4926bbd7d9d6bb0 (diff)
Vulkan: Fix subgroup reduction
It seems that we were writing values from helper invocations, which produces wrong results.
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp b/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp
index f0f39f27f6..450fcbe558 100644
--- a/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp
+++ b/Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp
@@ -103,7 +103,7 @@ static const char SUBGROUP_HELPER_HEADER[] = R"(
#define SUPPORTS_SUBGROUP_REDUCTION 1
#define CAN_USE_SUBGROUP_REDUCTION true
#define IS_HELPER_INVOCATION gl_HelperInvocation
- #define IS_FIRST_ACTIVE_INVOCATION (gl_SubgroupInvocationID == subgroupBallotFindLSB(subgroupBallot(true)))
+ #define IS_FIRST_ACTIVE_INVOCATION (gl_SubgroupInvocationID == subgroupBallotFindLSB(subgroupBallot(!gl_HelperInvocation)))
#define SUBGROUP_MIN(value) value = subgroupMin(value)
#define SUBGROUP_MAX(value) value = subgroupMax(value)
)";