mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-08-17 06:08:43 +02:00
* Use RGBA16 vertex format if RGB16 is not supported on Vulkan * Catch all shader compilation exceptions
50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
using Ryujinx.Graphics.Shader.StructuredIr;
|
|
using Ryujinx.Graphics.Shader.Translation;
|
|
using System;
|
|
|
|
namespace Ryujinx.Graphics.Shader
|
|
{
|
|
public enum AttributeType : byte
|
|
{
|
|
// Generic types.
|
|
Float,
|
|
Sint,
|
|
Uint
|
|
}
|
|
|
|
static class AttributeTypeExtensions
|
|
{
|
|
public static string ToVec4Type(this AttributeType type)
|
|
{
|
|
return type switch
|
|
{
|
|
AttributeType.Float => "vec4",
|
|
AttributeType.Sint => "ivec4",
|
|
AttributeType.Uint => "uvec4",
|
|
_ => throw new ArgumentException($"Invalid attribute type \"{type}\".")
|
|
};
|
|
}
|
|
|
|
public static VariableType ToVariableType(this AttributeType type)
|
|
{
|
|
return type switch
|
|
{
|
|
AttributeType.Float => VariableType.F32,
|
|
AttributeType.Sint => VariableType.S32,
|
|
AttributeType.Uint => VariableType.U32,
|
|
_ => throw new ArgumentException($"Invalid attribute type \"{type}\".")
|
|
};
|
|
}
|
|
|
|
public static AggregateType ToAggregateType(this AttributeType type)
|
|
{
|
|
return type switch
|
|
{
|
|
AttributeType.Float => AggregateType.FP32,
|
|
AttributeType.Sint => AggregateType.S32,
|
|
AttributeType.Uint => AggregateType.U32,
|
|
_ => throw new ArgumentException($"Invalid attribute type \"{type}\".")
|
|
};
|
|
}
|
|
}
|
|
} |