using System.Runtime.InteropServices; using Ryujinx.Graphics.Shader; namespace Ryujinx.Graphics.Gpu.Shader.Cache.Definition { /// /// Host shader entry header used for binding information. /// [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x14)] struct HostShaderCacheEntryHeader { /// /// Count of constant buffer descriptors. /// public int CBuffersCount; /// /// Count of storage buffer descriptors. /// public int SBuffersCount; /// /// Count of texture descriptors. /// public int TexturesCount; /// /// Count of image descriptors. /// public int ImagesCount; /// /// Set to true if the shader uses instance id. /// [MarshalAs(UnmanagedType.I1)] public bool UsesInstanceId; /// /// Set to true if this entry is in use. /// [MarshalAs(UnmanagedType.I1)] public bool InUse; /// /// Reserved / unused. /// public short Reserved; /// /// Create a new host shader cache entry header. /// /// Count of constant buffer descriptors /// Count of storage buffer descriptors /// Count of texture descriptors /// Count of image descriptors /// Set to true if the shader uses instance id public HostShaderCacheEntryHeader(int cBuffersCount, int sBuffersCount, int texturesCount, int imagesCount, bool usesInstanceId) : this() { CBuffersCount = cBuffersCount; SBuffersCount = sBuffersCount; TexturesCount = texturesCount; ImagesCount = imagesCount; UsesInstanceId = usesInstanceId; InUse = true; } } }