namespace Ryujinx.Graphics.Shader.Translation { readonly struct IoUsage { private readonly FeatureFlags _usedFeatures; public readonly bool UsesRtLayer => _usedFeatures.HasFlag(FeatureFlags.RtLayer); public readonly bool UsesViewportIndex => _usedFeatures.HasFlag(FeatureFlags.ViewportIndex); public readonly bool UsesViewportMask => _usedFeatures.HasFlag(FeatureFlags.ViewportMask); public readonly byte ClipDistancesWritten { get; } public readonly int UserDefinedMap { get; } public IoUsage(FeatureFlags usedFeatures, byte clipDistancesWritten, int userDefinedMap) { _usedFeatures = usedFeatures; ClipDistancesWritten = clipDistancesWritten; UserDefinedMap = userDefinedMap; } public readonly IoUsage Combine(IoUsage other) { return new IoUsage( _usedFeatures | other._usedFeatures, (byte)(ClipDistancesWritten | other.ClipDistancesWritten), UserDefinedMap | other.UserDefinedMap); } } }