using System; using System.Collections.ObjectModel; namespace Ryujinx.Graphics.Shader { public class ShaderProgramInfo { public ReadOnlyCollection CBuffers { get; } public ReadOnlyCollection SBuffers { get; } public ReadOnlyCollection Textures { get; } public ReadOnlyCollection Images { get; } public ShaderIdentification Identification { get; } public int GpLayerInputAttribute { get; } public ShaderStage Stage { get; } public bool UsesFragCoord { get; } public bool UsesInstanceId { get; } public bool UsesDrawParameters { get; } public bool UsesRtLayer { get; } public byte ClipDistancesWritten { get; } public int FragmentOutputMap { get; } public ShaderProgramInfo( BufferDescriptor[] cBuffers, BufferDescriptor[] sBuffers, TextureDescriptor[] textures, TextureDescriptor[] images, ShaderIdentification identification, int gpLayerInputAttribute, ShaderStage stage, bool usesFragCoord, bool usesInstanceId, bool usesDrawParameters, bool usesRtLayer, byte clipDistancesWritten, int fragmentOutputMap) { CBuffers = Array.AsReadOnly(cBuffers); SBuffers = Array.AsReadOnly(sBuffers); Textures = Array.AsReadOnly(textures); Images = Array.AsReadOnly(images); Identification = identification; GpLayerInputAttribute = gpLayerInputAttribute; Stage = stage; UsesFragCoord = usesFragCoord; UsesInstanceId = usesInstanceId; UsesDrawParameters = usesDrawParameters; UsesRtLayer = usesRtLayer; ClipDistancesWritten = clipDistancesWritten; FragmentOutputMap = fragmentOutputMap; } } }