Use multiple dest operands for shader call instructions (#1975)

* Use multiple dest operands for shader call instructions

* Passing opNode is no longer needed
This commit is contained in:
gdkchan
2021-01-31 21:13:38 -03:00
committed by GitHub
parent f93089a64f
commit 053dcfdb05
7 changed files with 40 additions and 45 deletions

View File

@ -299,21 +299,23 @@ namespace Ryujinx.Graphics.Shader.Translation
var fru = frus[funcId.Value];
Operand[] regs = new Operand[fru.InArguments.Length];
Operand[] inRegs = new Operand[fru.InArguments.Length];
for (int i = 0; i < fru.InArguments.Length; i++)
{
regs[i] = OperandHelper.Register(fru.InArguments[i]);
inRegs[i] = OperandHelper.Register(fru.InArguments[i]);
}
operation.AppendOperands(regs);
operation.AppendSources(inRegs);
Operand[] outRegs = new Operand[1 + fru.OutArguments.Length];
for (int i = 0; i < fru.OutArguments.Length; i++)
{
Operation callOutArgOp = new Operation(Instruction.CallOutArgument, OperandHelper.Register(fru.OutArguments[i]));
node = block.Operations.AddAfter(node, callOutArgOp);
outRegs[1 + i] = OperandHelper.Register(fru.OutArguments[i]);
}
operation.AppendDests(outRegs);
}
}
}