summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-04-16 18:47:26 -0300
committerGravatar ameerj2021-07-22 21:51:28 -0400
commit80940b17069f6baa733a9b572445b27bc7509137 (patch)
treeb6d73140e8f84cd4c3916895cbf054d124c98b7e /src/shader_recompiler/frontend/ir
parentshader: Implement PIXLD.MY_INDEX (diff)
downloadyuzu-80940b17069f6baa733a9b572445b27bc7509137.tar.gz
yuzu-80940b17069f6baa733a9b572445b27bc7509137.tar.xz
yuzu-80940b17069f6baa733a9b572445b27bc7509137.zip
shader: Implement SampleMask
Diffstat (limited to '')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.cpp4
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.h1
-rw-r--r--src/shader_recompiler/frontend/ir/microinstruction.cpp1
-rw-r--r--src/shader_recompiler/frontend/ir/opcodes.inc1
4 files changed, 7 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index 141efd86c..ef3b00bc2 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -343,6 +343,10 @@ void IREmitter::SetFragColor(u32 index, u32 component, const F32& value) {
343 Inst(Opcode::SetFragColor, Imm32(index), Imm32(component), value); 343 Inst(Opcode::SetFragColor, Imm32(index), Imm32(component), value);
344} 344}
345 345
346void IREmitter::SetSampleMask(const U32& value) {
347 Inst(Opcode::SetSampleMask, value);
348}
349
346void IREmitter::SetFragDepth(const F32& value) { 350void IREmitter::SetFragDepth(const F32& value) {
347 Inst(Opcode::SetFragDepth, value); 351 Inst(Opcode::SetFragDepth, value);
348} 352}
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.h b/src/shader_recompiler/frontend/ir/ir_emitter.h
index 81833d928..1a585df15 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.h
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.h
@@ -88,6 +88,7 @@ public:
88 void SetPatch(Patch patch, const F32& value); 88 void SetPatch(Patch patch, const F32& value);
89 89
90 void SetFragColor(u32 index, u32 component, const F32& value); 90 void SetFragColor(u32 index, u32 component, const F32& value);
91 void SetSampleMask(const U32& value);
91 void SetFragDepth(const F32& value); 92 void SetFragDepth(const F32& value);
92 93
93 [[nodiscard]] U32 WorkgroupIdX(); 94 [[nodiscard]] U32 WorkgroupIdX();
diff --git a/src/shader_recompiler/frontend/ir/microinstruction.cpp b/src/shader_recompiler/frontend/ir/microinstruction.cpp
index b2d7573d9..b53fe2e2a 100644
--- a/src/shader_recompiler/frontend/ir/microinstruction.cpp
+++ b/src/shader_recompiler/frontend/ir/microinstruction.cpp
@@ -75,6 +75,7 @@ bool Inst::MayHaveSideEffects() const noexcept {
75 case Opcode::SetAttributeIndexed: 75 case Opcode::SetAttributeIndexed:
76 case Opcode::SetPatch: 76 case Opcode::SetPatch:
77 case Opcode::SetFragColor: 77 case Opcode::SetFragColor:
78 case Opcode::SetSampleMask:
78 case Opcode::SetFragDepth: 79 case Opcode::SetFragDepth:
79 case Opcode::WriteGlobalU8: 80 case Opcode::WriteGlobalU8:
80 case Opcode::WriteGlobalS8: 81 case Opcode::WriteGlobalS8:
diff --git a/src/shader_recompiler/frontend/ir/opcodes.inc b/src/shader_recompiler/frontend/ir/opcodes.inc
index d5e443673..0748efa8d 100644
--- a/src/shader_recompiler/frontend/ir/opcodes.inc
+++ b/src/shader_recompiler/frontend/ir/opcodes.inc
@@ -51,6 +51,7 @@ OPCODE(SetAttributeIndexed, Void, U32,
51OPCODE(GetPatch, F32, Patch, ) 51OPCODE(GetPatch, F32, Patch, )
52OPCODE(SetPatch, Void, Patch, F32, ) 52OPCODE(SetPatch, Void, Patch, F32, )
53OPCODE(SetFragColor, Void, U32, U32, F32, ) 53OPCODE(SetFragColor, Void, U32, U32, F32, )
54OPCODE(SetSampleMask, Void, U32, )
54OPCODE(SetFragDepth, Void, F32, ) 55OPCODE(SetFragDepth, Void, F32, )
55OPCODE(GetZFlag, U1, Void, ) 56OPCODE(GetZFlag, U1, Void, )
56OPCODE(GetSFlag, U1, Void, ) 57OPCODE(GetSFlag, U1, Void, )