summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-04-17 03:21:03 -0300
committerGravatar ameerj2021-07-22 21:51:28 -0400
commit0a0818c0259b4f90f1f7bb37fcffbc1f194ca4d0 (patch)
tree809cb00a8188a76cb5585379d9982d9e52fcd0e6 /src/shader_recompiler/backend
parentspirv: Fix implicit lod type (diff)
downloadyuzu-0a0818c0259b4f90f1f7bb37fcffbc1f194ca4d0.tar.gz
yuzu-0a0818c0259b4f90f1f7bb37fcffbc1f194ca4d0.tar.xz
yuzu-0a0818c0259b4f90f1f7bb37fcffbc1f194ca4d0.zip
shader: Fix memory barriers
Diffstat (limited to 'src/shader_recompiler/backend')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv.h5
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_barriers.cpp14
2 files changed, 7 insertions, 12 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.h b/src/shader_recompiler/backend/spirv/emit_spirv.h
index cf8d74f4e..d43c72f6e 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv.h
+++ b/src/shader_recompiler/backend/spirv/emit_spirv.h
@@ -29,9 +29,8 @@ void EmitReturn(EmitContext& ctx);
29void EmitUnreachable(EmitContext& ctx); 29void EmitUnreachable(EmitContext& ctx);
30void EmitDemoteToHelperInvocation(EmitContext& ctx, Id continue_label); 30void EmitDemoteToHelperInvocation(EmitContext& ctx, Id continue_label);
31void EmitBarrier(EmitContext& ctx); 31void EmitBarrier(EmitContext& ctx);
32void EmitMemoryBarrierWorkgroupLevel(EmitContext& ctx); 32void EmitWorkgroupMemoryBarrier(EmitContext& ctx);
33void EmitMemoryBarrierDeviceLevel(EmitContext& ctx); 33void EmitDeviceMemoryBarrier(EmitContext& ctx);
34void EmitMemoryBarrierSystemLevel(EmitContext& ctx);
35void EmitPrologue(EmitContext& ctx); 34void EmitPrologue(EmitContext& ctx);
36void EmitEpilogue(EmitContext& ctx); 35void EmitEpilogue(EmitContext& ctx);
37void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream); 36void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream);
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_barriers.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_barriers.cpp
index 74f523d0f..366dc6a0c 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_barriers.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_barriers.cpp
@@ -7,7 +7,7 @@
7 7
8namespace Shader::Backend::SPIRV { 8namespace Shader::Backend::SPIRV {
9namespace { 9namespace {
10void EmitMemoryBarrierImpl(EmitContext& ctx, spv::Scope scope) { 10void MemoryBarrier(EmitContext& ctx, spv::Scope scope) {
11 const auto semantics{ 11 const auto semantics{
12 spv::MemorySemanticsMask::AcquireRelease | spv::MemorySemanticsMask::UniformMemory | 12 spv::MemorySemanticsMask::AcquireRelease | spv::MemorySemanticsMask::UniformMemory |
13 spv::MemorySemanticsMask::WorkgroupMemory | spv::MemorySemanticsMask::AtomicCounterMemory | 13 spv::MemorySemanticsMask::WorkgroupMemory | spv::MemorySemanticsMask::AtomicCounterMemory |
@@ -27,16 +27,12 @@ void EmitBarrier(EmitContext& ctx) {
27 ctx.Constant(ctx.U32[1], static_cast<u32>(memory_semantics))); 27 ctx.Constant(ctx.U32[1], static_cast<u32>(memory_semantics)));
28} 28}
29 29
30void EmitMemoryBarrierWorkgroupLevel(EmitContext& ctx) { 30void EmitWorkgroupMemoryBarrier(EmitContext& ctx) {
31 EmitMemoryBarrierImpl(ctx, spv::Scope::Workgroup); 31 MemoryBarrier(ctx, spv::Scope::Workgroup);
32} 32}
33 33
34void EmitMemoryBarrierDeviceLevel(EmitContext& ctx) { 34void EmitDeviceMemoryBarrier(EmitContext& ctx) {
35 EmitMemoryBarrierImpl(ctx, spv::Scope::Device); 35 MemoryBarrier(ctx, spv::Scope::Device);
36}
37
38void EmitMemoryBarrierSystemLevel(EmitContext& ctx) {
39 EmitMemoryBarrierImpl(ctx, spv::Scope::CrossDevice);
40} 36}
41 37
42} // namespace Shader::Backend::SPIRV 38} // namespace Shader::Backend::SPIRV