ShaderIrOperGpr.cs 885 B

123456789101112131415161718192021222324252627282930313233343536
  1. namespace Ryujinx.Graphics.Gal.Shader
  2. {
  3. class ShaderIrOperGpr : ShaderIrNode
  4. {
  5. public const int ZrIndex = 0xff;
  6. public bool IsConst => Index == ZrIndex;
  7. public bool IsValidRegister => (uint)Index <= ZrIndex;
  8. public int Index { get; set; }
  9. public int HalfPart { get; set; }
  10. public ShaderRegisterSize RegisterSize { get; private set; }
  11. public ShaderIrOperGpr(int index)
  12. {
  13. Index = index;
  14. RegisterSize = ShaderRegisterSize.Single;
  15. }
  16. public ShaderIrOperGpr(int index, int halfPart)
  17. {
  18. Index = index;
  19. HalfPart = halfPart;
  20. RegisterSize = ShaderRegisterSize.Half;
  21. }
  22. public static ShaderIrOperGpr MakeTemporary(int index = 0)
  23. {
  24. return new ShaderIrOperGpr(0x100 + index);
  25. }
  26. }
  27. }