diff options
| -rw-r--r-- | src/shader_recompiler/backend/glasm/emit_context.cpp | 3 | ||||
| -rw-r--r-- | src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp | 4 | 
2 files changed, 5 insertions, 2 deletions
| diff --git a/src/shader_recompiler/backend/glasm/emit_context.cpp b/src/shader_recompiler/backend/glasm/emit_context.cpp index d8451b41f..7b25fa042 100644 --- a/src/shader_recompiler/backend/glasm/emit_context.cpp +++ b/src/shader_recompiler/backend/glasm/emit_context.cpp @@ -77,6 +77,9 @@ EmitContext::EmitContext(IR::Program& program, Bindings& bindings, const Profile      if (stage == Stage::Geometry && info.loads_position) {          Add("ATTRIB vertex_position=vertex.position;");      } +    if (info.uses_invocation_id) { +        Add("ATTRIB primitive_invocation=primitive.invocation;"); +    }      for (size_t index = 0; index < program.info.stores_frag_color.size(); ++index) {          if (!program.info.stores_frag_color[index]) {              continue; 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 82abbdab3..b60c907df 100644 --- a/src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp +++ b/src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp @@ -160,8 +160,8 @@ void EmitLocalInvocationId(EmitContext& ctx, IR::Inst& inst) {      ctx.Add("MOV.S {},invocation.localid;", inst);  } -void EmitInvocationId(EmitContext& ctx) { -    NotImplemented(); +void EmitInvocationId(EmitContext& ctx, IR::Inst& inst) { +    ctx.Add("MOV.S {}.x,primitive_invocation.x;", inst);  }  void EmitSampleId(EmitContext& ctx) { | 
