HostShaderCacheEntryHeader.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.Runtime.InteropServices;
  2. using Ryujinx.Graphics.Shader;
  3. namespace Ryujinx.Graphics.Gpu.Shader.Cache.Definition
  4. {
  5. /// <summary>
  6. /// Host shader entry header used for binding information.
  7. /// </summary>
  8. [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x14)]
  9. struct HostShaderCacheEntryHeader
  10. {
  11. /// <summary>
  12. /// Count of constant buffer descriptors.
  13. /// </summary>
  14. public int CBuffersCount;
  15. /// <summary>
  16. /// Count of storage buffer descriptors.
  17. /// </summary>
  18. public int SBuffersCount;
  19. /// <summary>
  20. /// Count of texture descriptors.
  21. /// </summary>
  22. public int TexturesCount;
  23. /// <summary>
  24. /// Count of image descriptors.
  25. /// </summary>
  26. public int ImagesCount;
  27. /// <summary>
  28. /// Set to true if the shader uses instance id.
  29. /// </summary>
  30. [MarshalAs(UnmanagedType.I1)]
  31. public bool UsesInstanceId;
  32. /// <summary>
  33. /// Set to true if this entry is in use.
  34. /// </summary>
  35. [MarshalAs(UnmanagedType.I1)]
  36. public bool InUse;
  37. /// <summary>
  38. /// Mask of clip distances that are written to on the shader.
  39. /// </summary>
  40. public byte ClipDistancesWritten;
  41. /// <summary>
  42. /// Reserved / unused.
  43. /// </summary>
  44. public byte Reserved;
  45. /// <summary>
  46. /// Create a new host shader cache entry header.
  47. /// </summary>
  48. /// <param name="cBuffersCount">Count of constant buffer descriptors</param>
  49. /// <param name="sBuffersCount">Count of storage buffer descriptors</param>
  50. /// <param name="texturesCount">Count of texture descriptors</param>
  51. /// <param name="imagesCount">Count of image descriptors</param>
  52. /// <param name="usesInstanceId">Set to true if the shader uses instance id</param>
  53. public HostShaderCacheEntryHeader(
  54. int cBuffersCount,
  55. int sBuffersCount,
  56. int texturesCount,
  57. int imagesCount,
  58. bool usesInstanceId,
  59. byte clipDistancesWritten) : this()
  60. {
  61. CBuffersCount = cBuffersCount;
  62. SBuffersCount = sBuffersCount;
  63. TexturesCount = texturesCount;
  64. ImagesCount = imagesCount;
  65. UsesInstanceId = usesInstanceId;
  66. ClipDistancesWritten = clipDistancesWritten;
  67. InUse = true;
  68. }
  69. }
  70. }