Partial TextureQuerySamples

This commit is contained in:
Isaac Marovitz 2023-10-09 11:16:33 -04:00 committed by Isaac Marovitz
parent ce5f383f5d
commit 81b1ae4bcf
2 changed files with 20 additions and 1 deletions

View file

@ -138,7 +138,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
case Instruction.TextureSample: case Instruction.TextureSample:
return TextureSample(context, operation); return TextureSample(context, operation);
case Instruction.TextureQuerySamples: case Instruction.TextureQuerySamples:
return "|| TEXTURE QUERY SIZE ||"; return TextureQuerySamples(context, operation);
case Instruction.TextureQuerySize: case Instruction.TextureQuerySize:
return TextureQuerySize(context, operation); return TextureQuerySize(context, operation);
case Instruction.VectorExtract: case Instruction.VectorExtract:

View file

@ -269,6 +269,25 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
return swizzle; return swizzle;
} }
public static string TextureQuerySamples(CodeGenContext context, AstOperation operation)
{
AstTextureOperation texOp = (AstTextureOperation)operation;
bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0;
// TODO: Bindless texture support. For now we just return 0.
if (isBindless)
{
return NumberFormatter.FormatInt(0);
}
string textureName = "texture";
string texCall = textureName + ".";
texCall += $"get_num_samples()";
return texCall;
}
public static string TextureQuerySize(CodeGenContext context, AstOperation operation) public static string TextureQuerySize(CodeGenContext context, AstOperation operation)
{ {
AstTextureOperation texOp = (AstTextureOperation)operation; AstTextureOperation texOp = (AstTextureOperation)operation;