diff options
Diffstat (limited to 'src/shader_recompiler')
| -rw-r--r-- | src/shader_recompiler/backend/glsl/emit_glsl.cpp | 9 | ||||
| -rw-r--r-- | src/shader_recompiler/backend/glsl/emit_glsl_special.cpp | 17 |
2 files changed, 12 insertions, 14 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl.cpp b/src/shader_recompiler/backend/glsl/emit_glsl.cpp index 9f8cf659f..ff869923f 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl.cpp | |||
| @@ -216,15 +216,6 @@ std::string EmitGLSL(const Profile& profile, const RuntimeInfo& runtime_info, IR | |||
| 216 | fmt::format("shared uint smem[{}];", Common::AlignUp(program.shared_memory_size, 4)); | 216 | fmt::format("shared uint smem[{}];", Common::AlignUp(program.shared_memory_size, 4)); |
| 217 | } | 217 | } |
| 218 | ctx.header += "void main(){\n"; | 218 | ctx.header += "void main(){\n"; |
| 219 | if (program.stage == Stage::VertexA || program.stage == Stage::VertexB) { | ||
| 220 | ctx.header += "gl_Position = vec4(0.0f, 0.0f, 0.0f, 1.0f);"; | ||
| 221 | // TODO: Properly resolve attribute issues | ||
| 222 | for (size_t index = 0; index < program.info.stores_generics.size() / 2; ++index) { | ||
| 223 | if (!program.info.stores_generics[index]) { | ||
| 224 | ctx.header += fmt::format("out_attr{}=vec4(0,0,0,1);", index); | ||
| 225 | } | ||
| 226 | } | ||
| 227 | } | ||
| 228 | DefineVariables(ctx, ctx.header); | 219 | DefineVariables(ctx, ctx.header); |
| 229 | if (ctx.uses_cc_carry) { | 220 | if (ctx.uses_cc_carry) { |
| 230 | ctx.header += "uint carry;"; | 221 | ctx.header += "uint carry;"; |
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp index 2155b8802..cfef58d79 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | #include "shader_recompiler/backend/glsl/emit_context.h" | 7 | #include "shader_recompiler/backend/glsl/emit_context.h" |
| 8 | #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h" | 8 | #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h" |
| 9 | #include "shader_recompiler/frontend/ir/program.h" | ||
| 9 | #include "shader_recompiler/frontend/ir/value.h" | 10 | #include "shader_recompiler/frontend/ir/value.h" |
| 10 | 11 | ||
| 11 | namespace Shader::Backend::GLSL { | 12 | namespace Shader::Backend::GLSL { |
| @@ -42,13 +43,19 @@ void EmitPhiMove(EmitContext& ctx, const IR::Value& phi_value, const IR::Value& | |||
| 42 | ctx.Add("{}={};", phi_reg, val_reg); | 43 | ctx.Add("{}={};", phi_reg, val_reg); |
| 43 | } | 44 | } |
| 44 | 45 | ||
| 45 | void EmitPrologue(EmitContext&) { | 46 | void EmitPrologue(EmitContext& ctx) { |
| 46 | // TODO | 47 | if (ctx.stage == Stage::VertexA || ctx.stage == Stage::VertexB) { |
| 48 | ctx.Add("gl_Position=vec4(0.0f, 0.0f, 0.0f, 1.0f);"); | ||
| 49 | // TODO: Properly resolve attribute issues | ||
| 50 | for (size_t index = 0; index < ctx.info.stores_generics.size() / 2; ++index) { | ||
| 51 | if (!ctx.info.stores_generics[index]) { | ||
| 52 | ctx.Add("out_attr{}=vec4(0,0,0,1);", index); | ||
| 53 | } | ||
| 54 | } | ||
| 55 | } | ||
| 47 | } | 56 | } |
| 48 | 57 | ||
| 49 | void EmitEpilogue(EmitContext&) { | 58 | void EmitEpilogue(EmitContext&) {} |
| 50 | // TODO | ||
| 51 | } | ||
| 52 | 59 | ||
| 53 | void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream) { | 60 | void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream) { |
| 54 | ctx.Add("EmitStreamVertex(int({}));", ctx.var_alloc.Consume(stream)); | 61 | ctx.Add("EmitStreamVertex(int({}));", ctx.var_alloc.Consume(stream)); |