Explorar el Código

glasm: Implement EmitVertex and EndPrimitive

ReinUsesLisp hace 5 años
padre
commit
3d0ffc6ad0

+ 1 - 1
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);

+ 7 - 3
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) {