Skip to content
Snippets Groups Projects
Commit f58f79c8 authored by ReinUsesLisp's avatar ReinUsesLisp Committed by ameerj
Browse files

glasm: Implement Y direction

parent 586c7853
No related branches found
No related tags found
No related merge requests found
...@@ -70,6 +70,8 @@ public: ...@@ -70,6 +70,8 @@ public:
Stage stage{}; Stage stage{};
std::string_view stage_name = "invalid"; std::string_view stage_name = "invalid";
std::string_view attrib_name = "invalid"; std::string_view attrib_name = "invalid";
bool uses_y_direction{};
}; };
} // namespace Shader::Backend::GLASM } // namespace Shader::Backend::GLASM
...@@ -439,6 +439,9 @@ std::string EmitGLASM(const Profile& profile, const RuntimeInfo& runtime_info, I ...@@ -439,6 +439,9 @@ std::string EmitGLASM(const Profile& profile, const RuntimeInfo& runtime_info, I
"MOV.F FSWZB[2],1;" "MOV.F FSWZB[2],1;"
"MOV.F FSWZB[3],-1;"; "MOV.F FSWZB[3],-1;";
} }
if (ctx.uses_y_direction) {
header += "PARAM y_direction[1]={state.material.front.ambient};";
}
ctx.code.insert(0, header); ctx.code.insert(0, header);
ctx.code += "END"; ctx.code += "END";
return ctx.code; return ctx.code;
......
...@@ -71,7 +71,7 @@ void EmitLocalInvocationId(EmitContext& ctx, IR::Inst& inst); ...@@ -71,7 +71,7 @@ void EmitLocalInvocationId(EmitContext& ctx, IR::Inst& inst);
void EmitInvocationId(EmitContext& ctx, IR::Inst& inst); void EmitInvocationId(EmitContext& ctx, IR::Inst& inst);
void EmitSampleId(EmitContext& ctx, IR::Inst& inst); void EmitSampleId(EmitContext& ctx, IR::Inst& inst);
void EmitIsHelperInvocation(EmitContext& ctx, IR::Inst& inst); void EmitIsHelperInvocation(EmitContext& ctx, IR::Inst& inst);
void EmitYDirection(EmitContext& ctx); void EmitYDirection(EmitContext& ctx, IR::Inst& inst);
void EmitLoadLocal(EmitContext& ctx, IR::Inst& inst, ScalarU32 word_offset); void EmitLoadLocal(EmitContext& ctx, IR::Inst& inst, ScalarU32 word_offset);
void EmitWriteLocal(EmitContext& ctx, ScalarU32 word_offset, ScalarU32 value); void EmitWriteLocal(EmitContext& ctx, ScalarU32 word_offset, ScalarU32 value);
void EmitUndefU1(EmitContext& ctx, IR::Inst& inst); void EmitUndefU1(EmitContext& ctx, IR::Inst& inst);
......
...@@ -207,8 +207,9 @@ void EmitIsHelperInvocation(EmitContext& ctx, IR::Inst& inst) { ...@@ -207,8 +207,9 @@ void EmitIsHelperInvocation(EmitContext& ctx, IR::Inst& inst) {
ctx.Add("MOV.S {}.x,fragment.helperthread.x;", inst); ctx.Add("MOV.S {}.x,fragment.helperthread.x;", inst);
} }
void EmitYDirection(EmitContext& ctx) { void EmitYDirection(EmitContext& ctx, IR::Inst& inst) {
NotImplemented(); ctx.uses_y_direction = true;
ctx.Add("MOV.F {}.x,y_direction[0].w;", inst);
} }
void EmitUndefU1(EmitContext& ctx, IR::Inst& inst) { void EmitUndefU1(EmitContext& ctx, IR::Inst& inst) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment