InstGenCall.cs 930 B

1234567891011121314151617181920212223242526272829
  1. using Ryujinx.Graphics.Shader.IntermediateRepresentation;
  2. using Ryujinx.Graphics.Shader.StructuredIr;
  3. using System.Diagnostics;
  4. using static Ryujinx.Graphics.Shader.CodeGen.Glsl.Instructions.InstGenHelper;
  5. namespace Ryujinx.Graphics.Shader.CodeGen.Glsl.Instructions
  6. {
  7. static class InstGenCall
  8. {
  9. public static string Call(CodeGenContext context, AstOperation operation)
  10. {
  11. AstOperand funcId = (AstOperand)operation.GetSource(0);
  12. Debug.Assert(funcId.Type == OperandType.Constant);
  13. var function = context.GetFunction(funcId.Value);
  14. string[] args = new string[operation.SourcesCount - 1];
  15. for (int i = 0; i < args.Length; i++)
  16. {
  17. args[i] = GetSoureExpr(context, operation.GetSource(i + 1), function.GetArgumentType(i));
  18. }
  19. return $"{function.Name}({string.Join(", ", args)})";
  20. }
  21. }
  22. }