Browse Source

Another try

vk-experiments4
CamilleLaVey 1 month ago
committed by crueter
parent
commit
bcaeece578
  1. 1
      src/shader_recompiler/backend/spirv/emit_spirv.cpp
  2. 3
      src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp

1
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) { if (info.uses_quad_shuffles && profile.support_quad_shuffles) {
ctx.AddCapability(spv::Capability::GroupNonUniformQuad); ctx.AddCapability(spv::Capability::GroupNonUniformQuad);
ctx.AddCapability(spv::Capability::GroupNonUniformShuffle);
} }
if (info.uses_int64_bit_atomics && profile.support_int64_atomics) { if (info.uses_int64_bit_atomics && profile.support_int64_atomics) {
ctx.AddCapability(spv::Capability::Int64Atomics); ctx.AddCapability(spv::Capability::Int64Atomics);

3
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) { 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) { Id EmitFSwizzleAdd(EmitContext& ctx, Id op_a, Id op_b, Id swizzle) {

Loading…
Cancel
Save