From d36f667bc0adaa9f50d53efb4c908aadc38921a6 Mon Sep 17 00:00:00 2001
From: ameerj <52414509+ameerj@users.noreply.github.com>
Date: Tue, 15 Jun 2021 17:23:57 -0400
Subject: glsl: Address rest of feedback

---
 .../backend/glsl/emit_glsl_special.cpp             | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

(limited to 'src/shader_recompiler/backend/glsl/emit_glsl_special.cpp')

diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
index cfef58d79d..59ca52f07f 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
@@ -10,6 +10,17 @@
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {
+namespace {
+void InitializeVaryings(EmitContext& ctx) {
+    ctx.Add("gl_Position=vec4(0,0,0,1);");
+    // TODO: Properly resolve attribute issues
+    for (size_t index = 0; index < ctx.info.stores_generics.size() / 2; ++index) {
+        if (!ctx.info.stores_generics[index]) {
+            ctx.Add("out_attr{}=vec4(0,0,0,1);", index);
+        }
+    }
+}
+} // Anonymous namespace
 
 void EmitPhi(EmitContext& ctx, IR::Inst& phi) {
     const size_t num_args{phi.NumArgs()};
@@ -44,14 +55,8 @@ void EmitPhiMove(EmitContext& ctx, const IR::Value& phi_value, const IR::Value&
 }
 
 void EmitPrologue(EmitContext& ctx) {
-    if (ctx.stage == Stage::VertexA || ctx.stage == Stage::VertexB) {
-        ctx.Add("gl_Position=vec4(0.0f, 0.0f, 0.0f, 1.0f);");
-        // TODO: Properly resolve attribute issues
-        for (size_t index = 0; index < ctx.info.stores_generics.size() / 2; ++index) {
-            if (!ctx.info.stores_generics[index]) {
-                ctx.Add("out_attr{}=vec4(0,0,0,1);", index);
-            }
-        }
+    if (ctx.StageInitializesVaryings()) {
+        InitializeVaryings(ctx);
     }
 }
 
@@ -59,6 +64,7 @@ void EmitEpilogue(EmitContext&) {}
 
 void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream) {
     ctx.Add("EmitStreamVertex(int({}));", ctx.var_alloc.Consume(stream));
+    InitializeVaryings(ctx);
 }
 
 void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream) {
-- 
cgit v1.2.3-70-g09d2