Add InputTopologyVertices from torzu adapted to eden
This commit is contained in:
parent
b03d51f06f
commit
44dc152a2b
3 changed files with 27 additions and 0 deletions
|
@ -6,6 +6,7 @@
|
||||||
#include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
|
#include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
|
||||||
#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
|
#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
|
||||||
#include "shader_recompiler/frontend/ir/value.h"
|
#include "shader_recompiler/frontend/ir/value.h"
|
||||||
|
#include "shader_recompiler/runtime_info.h"
|
||||||
#include "shader_recompiler/profile.h"
|
#include "shader_recompiler/profile.h"
|
||||||
#include "shader_recompiler/shader_info.h"
|
#include "shader_recompiler/shader_info.h"
|
||||||
|
|
||||||
|
@ -406,6 +407,10 @@ void EmitInvocationInfo(EmitContext& ctx, IR::Inst& inst) {
|
||||||
case Stage::TessellationEval:
|
case Stage::TessellationEval:
|
||||||
ctx.Add("SHL.U {}.x,primitive.vertexcount,16;", inst);
|
ctx.Add("SHL.U {}.x,primitive.vertexcount,16;", inst);
|
||||||
break;
|
break;
|
||||||
|
case Stage::Geometry:
|
||||||
|
ctx.Add("SHL.U {}.x,{},16;", inst,
|
||||||
|
InputTopologyVertices::vertices(ctx.runtime_info.input_topology));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_WARNING(Shader, "(STUBBED) called");
|
LOG_WARNING(Shader, "(STUBBED) called");
|
||||||
ctx.Add("MOV.S {}.x,0x00ff0000;", inst);
|
ctx.Add("MOV.S {}.x,0x00ff0000;", inst);
|
||||||
|
|
|
@ -426,6 +426,10 @@ void EmitInvocationInfo(EmitContext& ctx, IR::Inst& inst) {
|
||||||
case Stage::TessellationEval:
|
case Stage::TessellationEval:
|
||||||
ctx.AddU32("{}=uint(gl_PatchVerticesIn)<<16;", inst);
|
ctx.AddU32("{}=uint(gl_PatchVerticesIn)<<16;", inst);
|
||||||
break;
|
break;
|
||||||
|
case Stage::Geometry:
|
||||||
|
ctx.AddU32("{}=uint({}<<16);", inst,
|
||||||
|
InputTopologyVertices::vertices(ctx.runtime_info.input_topology));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_WARNING(Shader, "(STUBBED) called");
|
LOG_WARNING(Shader, "(STUBBED) called");
|
||||||
ctx.AddU32("{}=uint(0x00ff0000);", inst);
|
ctx.AddU32("{}=uint(0x00ff0000);", inst);
|
||||||
|
|
|
@ -30,6 +30,24 @@ enum class InputTopology {
|
||||||
TrianglesAdjacency,
|
TrianglesAdjacency,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct InputTopologyVertices {
|
||||||
|
static u32 vertices(InputTopology input_topology) {
|
||||||
|
switch (input_topology) {
|
||||||
|
case InputTopology::Lines:
|
||||||
|
return 2;
|
||||||
|
case InputTopology::LinesAdjacency:
|
||||||
|
return 4;
|
||||||
|
case InputTopology::Triangles:
|
||||||
|
return 3;
|
||||||
|
case InputTopology::TrianglesAdjacency:
|
||||||
|
return 6;
|
||||||
|
case InputTopology::Points:
|
||||||
|
default:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
enum class CompareFunction {
|
enum class CompareFunction {
|
||||||
Never,
|
Never,
|
||||||
Less,
|
Less,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue