From 3d0ffc6ad077174e2af9f3923fd99ced6f5e373b Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
Date: Thu, 20 May 2021 01:49:26 -0300
Subject: [PATCH] glasm: Implement EmitVertex and EndPrimitive

---
 .../backend/glasm/emit_glasm_instructions.h            |  2 +-
 .../backend/glasm/emit_glasm_not_implemented.cpp       | 10 +++++++---
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h b/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
index 7ccba4c6f8..0ce00db672 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
@@ -32,7 +32,7 @@ void EmitWorkgroupMemoryBarrier(EmitContext& ctx);
 void EmitDeviceMemoryBarrier(EmitContext& ctx);
 void EmitPrologue(EmitContext& ctx);
 void EmitEpilogue(EmitContext& ctx);
-void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream);
+void EmitEmitVertex(EmitContext& ctx, ScalarS32 stream);
 void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream);
 void EmitGetRegister(EmitContext& ctx);
 void EmitSetRegister(EmitContext& ctx);
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp
index f7fec05452..9b962427cd 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp
@@ -72,12 +72,16 @@ void EmitEpilogue(EmitContext& ctx) {
     // TODO
 }
 
-void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream) {
-    NotImplemented();
+void EmitEmitVertex(EmitContext& ctx, ScalarS32 stream) {
+    ctx.Add("EMITS {};", stream);
 }
 
 void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream) {
-    NotImplemented();
+    if (!stream.IsImmediate()) {
+        // LOG_WARNING not immediate
+    }
+    ctx.reg_alloc.Consume(stream);
+    ctx.Add("ENDPRIM;");
 }
 
 void EmitGetRegister(EmitContext& ctx) {