ComputeParams.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using Ryujinx.Graphics.Gpu.State;
  2. using System;
  3. using System.Runtime.InteropServices;
  4. namespace Ryujinx.Graphics.Gpu.Engine
  5. {
  6. struct UniformBufferParams
  7. {
  8. public int AddressLow;
  9. public int AddressHighAndSize;
  10. public ulong PackAddress()
  11. {
  12. return (uint)AddressLow | ((ulong)(AddressHighAndSize & 0xff) << 32);
  13. }
  14. public ulong UnpackSize()
  15. {
  16. return (ulong)((AddressHighAndSize >> 15) & 0x1ffff);
  17. }
  18. }
  19. struct ComputeParams
  20. {
  21. public int Unknown0;
  22. public int Unknown1;
  23. public int Unknown2;
  24. public int Unknown3;
  25. public int Unknown4;
  26. public int Unknown5;
  27. public int Unknown6;
  28. public int Unknown7;
  29. public int ShaderOffset;
  30. public int Unknown9;
  31. public int Unknown10;
  32. public SamplerIndex SamplerIndex;
  33. public int GridSizeX;
  34. public int GridSizeYZ;
  35. public int Unknown14;
  36. public int Unknown15;
  37. public int Unknown16;
  38. public int Unknown17;
  39. public int BlockSizeX;
  40. public int BlockSizeYZ;
  41. public int UniformBuffersConfig;
  42. public int Unknown21;
  43. public int Unknown22;
  44. public int Unknown23;
  45. public int Unknown24;
  46. public int Unknown25;
  47. public int Unknown26;
  48. public int Unknown27;
  49. public int Unknown28;
  50. private UniformBufferParams _uniformBuffer0;
  51. private UniformBufferParams _uniformBuffer1;
  52. private UniformBufferParams _uniformBuffer2;
  53. private UniformBufferParams _uniformBuffer3;
  54. private UniformBufferParams _uniformBuffer4;
  55. private UniformBufferParams _uniformBuffer5;
  56. private UniformBufferParams _uniformBuffer6;
  57. private UniformBufferParams _uniformBuffer7;
  58. public Span<UniformBufferParams> UniformBuffers
  59. {
  60. get
  61. {
  62. return MemoryMarshal.CreateSpan(ref _uniformBuffer0, 8);
  63. }
  64. }
  65. public int Unknown45;
  66. public int Unknown46;
  67. public int Unknown47;
  68. public int Unknown48;
  69. public int Unknown49;
  70. public int Unknown50;
  71. public int Unknown51;
  72. public int Unknown52;
  73. public int Unknown53;
  74. public int Unknown54;
  75. public int Unknown55;
  76. public int Unknown56;
  77. public int Unknown57;
  78. public int Unknown58;
  79. public int Unknown59;
  80. public int Unknown60;
  81. public int Unknown61;
  82. public int Unknown62;
  83. public int Unknown63;
  84. public int UnpackGridSizeX()
  85. {
  86. return GridSizeX & 0x7fffffff;
  87. }
  88. public int UnpackGridSizeY()
  89. {
  90. return GridSizeYZ & 0xffff;
  91. }
  92. public int UnpackGridSizeZ()
  93. {
  94. return (GridSizeYZ >> 16) & 0xffff;
  95. }
  96. public int UnpackBlockSizeX()
  97. {
  98. return (BlockSizeX >> 16) & 0xffff;
  99. }
  100. public int UnpackBlockSizeY()
  101. {
  102. return BlockSizeYZ & 0xffff;
  103. }
  104. public int UnpackBlockSizeZ()
  105. {
  106. return (BlockSizeYZ >> 16) & 0xffff;
  107. }
  108. public uint UnpackUniformBuffersEnableMask()
  109. {
  110. return (uint)UniformBuffersConfig & 0xff;
  111. }
  112. }
  113. }