From 58238e75a7d2a153fdbd51b5f39fd00f390eafbf Mon Sep 17 00:00:00 2001 From: Techjar Date: Mon, 7 Jun 2021 22:32:25 -0400 Subject: [PATCH] Vulkan: Fix subgroup reduction It seems that we were writing values from helper invocations, which produces wrong results. --- Source/Core/VideoBackends/Vulkan/ShaderCompiler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) )";