From bcaeece578296bde470350d5c85e42741b755e28 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Thu, 2 Jul 2026 00:39:32 -0400 Subject: [PATCH] Another try --- src/shader_recompiler/backend/spirv/emit_spirv.cpp | 1 + src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.cpp b/src/shader_recompiler/backend/spirv/emit_spirv.cpp index 38679c593e..d284c73781 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv.cpp @@ -447,6 +447,7 @@ void SetupCapabilities(const Profile& profile, const Info& info, EmitContext& ct } if (info.uses_quad_shuffles && profile.support_quad_shuffles) { ctx.AddCapability(spv::Capability::GroupNonUniformQuad); + ctx.AddCapability(spv::Capability::GroupNonUniformShuffle); } if (info.uses_int64_bit_atomics && profile.support_int64_atomics) { ctx.AddCapability(spv::Capability::Int64Atomics); diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp index 054018e9f7..d93760995b 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp @@ -228,7 +228,8 @@ Id EmitQuadBroadcast(EmitContext& ctx, Id value, Id lane) { } Id EmitQuadSwap(EmitContext& ctx, Id value, Id direction) { - return ctx.OpGroupNonUniformQuadSwap(ctx.U32[1], SubgroupScope(ctx), value, direction); + const Id xor_mask{ctx.OpIAdd(ctx.U32[1], direction, ctx.Const(1u))}; + return ctx.OpGroupNonUniformShuffleXor(ctx.U32[1], SubgroupScope(ctx), value, xor_mask); } Id EmitFSwizzleAdd(EmitContext& ctx, Id op_a, Id op_b, Id swizzle) {