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
41
Ryujinx.Graphics.Shader/StructuredIr/StructuredFunction.cs
Normal file
41
Ryujinx.Graphics.Shader/StructuredIr/StructuredFunction.cs
Normal file
|
@ -0,0 +1,41 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Ryujinx.Graphics.Shader.StructuredIr
|
||||
{
|
||||
class StructuredFunction
|
||||
{
|
||||
public AstBlock MainBlock { get; }
|
||||
|
||||
public string Name { get; }
|
||||
|
||||
public VariableType ReturnType { get; }
|
||||
|
||||
public VariableType[] InArguments { get; }
|
||||
public VariableType[] OutArguments { get; }
|
||||
|
||||
public HashSet<AstOperand> Locals { get; }
|
||||
|
||||
public StructuredFunction(
|
||||
AstBlock mainBlock,
|
||||
string name,
|
||||
VariableType returnType,
|
||||
VariableType[] inArguments,
|
||||
VariableType[] outArguments)
|
||||
{
|
||||
MainBlock = mainBlock;
|
||||
Name = name;
|
||||
ReturnType = returnType;
|
||||
InArguments = inArguments;
|
||||
OutArguments = outArguments;
|
||||
|
||||
Locals = new HashSet<AstOperand>();
|
||||
}
|
||||
|
||||
public VariableType GetArgumentType(int index)
|
||||
{
|
||||
return index >= InArguments.Length
|
||||
? OutArguments[index - InArguments.Length]
|
||||
: InArguments[index];
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue