diff options
| author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2021-05-20 01:49:26 -0300 | 
|---|---|---|
| committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-22 21:51:32 -0400 | 
| commit | 3d0ffc6ad077174e2af9f3923fd99ced6f5e373b (patch) | |
| tree | b7a50656b63f5207c61f52bd6e655634dd9d7c1d | |
| parent | f79cbbf814b679f4302283852081faabec1316e8 (diff) | |
glasm: Implement EmitVertex and EndPrimitive
| -rw-r--r-- | src/shader_recompiler/backend/glasm/emit_glasm_instructions.h | 2 | ||||
| -rw-r--r-- | src/shader_recompiler/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 7ccba4c6f..0ce00db67 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 f7fec0545..9b962427c 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) { | 
