mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2025-03-23 12:50:18 +00:00
* check for too bix texture bindings * implement lod query * print shader stage name * always have fragment input * resolve merge conflicts * fix: lod query * fix: casting texture coords * support non-array memories * use structure types for buffers * implement compute pipeline cache * compute dispatch * improve error message * rebind compute state * bind compute textures * pass local size as an argument to dispatch * implement texture buffers * hack: change vertex index to vertex id * pass support buffer as an argument to every function * return at the end of function * fix: certain missing compute bindings * implement texture base * improve texture binding system * remove useless exception * move texture handle to texture base * fix: segfault when using disposed textures --------- Co-authored-by: Samuliak <samuliak77@gmail.com> Co-authored-by: SamoZ256 <96914946+SamoZ256@users.noreply.github.com>
30 lines
997 B
C#
30 lines
997 B
C#
using Ryujinx.Graphics.Shader.StructuredIr;
|
|
|
|
using static Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions.InstGenHelper;
|
|
|
|
namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
|
|
{
|
|
static class InstGenCall
|
|
{
|
|
public static string Call(CodeGenContext context, AstOperation operation)
|
|
{
|
|
AstOperand funcId = (AstOperand)operation.GetSource(0);
|
|
|
|
var functon = context.GetFunction(funcId.Value);
|
|
|
|
int argCount = operation.SourcesCount - 1;
|
|
string[] args = new string[argCount + CodeGenContext.additionalArgCount];
|
|
|
|
// Additional arguments
|
|
args[0] = "support_buffer";
|
|
|
|
int argIndex = CodeGenContext.additionalArgCount;
|
|
for (int i = 0; i < argCount; i++)
|
|
{
|
|
args[argIndex++] = GetSourceExpr(context, operation.GetSource(i + 1), functon.GetArgumentType(i));
|
|
}
|
|
|
|
return $"{functon.Name}({string.Join(", ", args)})";
|
|
}
|
|
}
|
|
}
|