don't hardcode texture type

This commit is contained in:
Samuliak 2024-05-16 16:20:52 +02:00 committed by Isaac Marovitz
parent 05eedc5066
commit 5741fb90f9
No known key found for this signature in database
GPG Key ID: 97250B2B09A132E1
2 changed files with 28 additions and 2 deletions

View File

@ -135,8 +135,8 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl
foreach (var texture in context.Properties.Textures.Values)
{
// TODO: don't use always texture2d
args = args.Append($"texture2d<float> tex_{texture.Name} [[texture({texture.Binding})]]").ToArray();
var textureTypeName = texture.Type.ToMslTextureType();
args = args.Append($"{textureTypeName} tex_{texture.Name} [[texture({texture.Binding})]]").ToArray();
args = args.Append($"sampler samp_{texture.Name} [[sampler({texture.Binding})]]").ToArray();
}
}

View File

@ -155,5 +155,31 @@ namespace Ryujinx.Graphics.Shader
return typeName;
}
public static string ToMslTextureType(this SamplerType type)
{
string typeName = (type & SamplerType.Mask) switch
{
SamplerType.None => "texture",
SamplerType.Texture1D => "texture1d",
SamplerType.TextureBuffer => "texturebuffer",
SamplerType.Texture2D => "texture2d",
SamplerType.Texture3D => "texture3d",
SamplerType.TextureCube => "texturecube",
_ => throw new ArgumentException($"Invalid sampler type \"{type}\"."),
};
if ((type & SamplerType.Multisample) != 0)
{
typeName += "_ms";
}
if ((type & SamplerType.Array) != 0)
{
typeName += "_array";
}
return typeName + "<float>";
}
}
}