summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
diff options
context:
space:
mode:
authorGravatar ameerj2021-06-10 00:29:19 -0400
committerGravatar ameerj2021-07-22 21:51:37 -0400
commit85399e119d6d61375fd9304d69bdfb3a85522d2a (patch)
tree6b89d199c729ace799392a97268e228d81d9422e /src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
parentglsl: Implement SampleId and SetSampleMask (diff)
downloadyuzu-85399e119d6d61375fd9304d69bdfb3a85522d2a.tar.gz
yuzu-85399e119d6d61375fd9304d69bdfb3a85522d2a.tar.xz
yuzu-85399e119d6d61375fd9304d69bdfb3a85522d2a.zip
glsl: Reorganize backend code, remove unneeded [[maybe_unused]]
Diffstat (limited to 'src/shader_recompiler/backend/glsl/emit_glsl_special.cpp')
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_special.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
index e69de29bb..2155b8802 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
@@ -0,0 +1,61 @@
1// Copyright 2021 yuzu Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include <string_view>
6
7#include "shader_recompiler/backend/glsl/emit_context.h"
8#include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
9#include "shader_recompiler/frontend/ir/value.h"
10
11namespace Shader::Backend::GLSL {
12
13void EmitPhi(EmitContext& ctx, IR::Inst& phi) {
14 const size_t num_args{phi.NumArgs()};
15 for (size_t i = 0; i < num_args; ++i) {
16 ctx.var_alloc.Consume(phi.Arg(i));
17 }
18 if (!phi.Definition<Id>().is_valid) {
19 // The phi node wasn't forward defined
20 ctx.var_alloc.PhiDefine(phi, phi.Arg(0).Type());
21 }
22}
23
24void EmitVoid(EmitContext&) {}
25
26void EmitReference(EmitContext& ctx, const IR::Value& value) {
27 ctx.var_alloc.Consume(value);
28}
29
30void EmitPhiMove(EmitContext& ctx, const IR::Value& phi_value, const IR::Value& value) {
31 IR::Inst& phi{*phi_value.InstRecursive()};
32 const auto phi_type{phi.Arg(0).Type()};
33 if (!phi.Definition<Id>().is_valid) {
34 // The phi node wasn't forward defined
35 ctx.var_alloc.PhiDefine(phi, phi_type);
36 }
37 const auto phi_reg{ctx.var_alloc.Consume(IR::Value{&phi})};
38 const auto val_reg{ctx.var_alloc.Consume(value)};
39 if (phi_reg == val_reg) {
40 return;
41 }
42 ctx.Add("{}={};", phi_reg, val_reg);
43}
44
45void EmitPrologue(EmitContext&) {
46 // TODO
47}
48
49void EmitEpilogue(EmitContext&) {
50 // TODO
51}
52
53void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream) {
54 ctx.Add("EmitStreamVertex(int({}));", ctx.var_alloc.Consume(stream));
55}
56
57void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream) {
58 ctx.Add("EndStreamPrimitive(int({}));", ctx.var_alloc.Consume(stream));
59}
60
61} // namespace Shader::Backend::GLSL