Implement CAL and RET shader instructions (#1618)
* Add support for CAL and RET shader instructions * Remove unused stuff * Fix a bug that could cause the wrong values to be passed to a function * Avoid repopulating function id dictionary every time * PR feedback * Fix vertex shader A/B merge
This commit is contained in:
parent
973a615d40
commit
49f970d5bd
33 changed files with 1337 additions and 401 deletions
|
@ -49,6 +49,7 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
|
|||
Add(Instruction.BitwiseOr, VariableType.Int, VariableType.Int, VariableType.Int);
|
||||
Add(Instruction.BranchIfTrue, VariableType.None, VariableType.Bool);
|
||||
Add(Instruction.BranchIfFalse, VariableType.None, VariableType.Bool);
|
||||
Add(Instruction.Call, VariableType.Scalar);
|
||||
Add(Instruction.Ceiling, VariableType.Scalar, VariableType.Scalar, VariableType.Scalar);
|
||||
Add(Instruction.Clamp, VariableType.Scalar, VariableType.Scalar, VariableType.Scalar, VariableType.Scalar);
|
||||
Add(Instruction.ClampU32, VariableType.U32, VariableType.U32, VariableType.U32, VariableType.U32);
|
||||
|
@ -151,6 +152,10 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
|
|||
{
|
||||
return VariableType.F32;
|
||||
}
|
||||
else if (inst == Instruction.Call)
|
||||
{
|
||||
return VariableType.S32;
|
||||
}
|
||||
|
||||
return GetFinalVarType(_infoTbl[(int)(inst & Instruction.Mask)].SrcTypes[index], inst);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue