OpCodeTexture.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Ryujinx.Graphics.Shader.Instructions;
  2. namespace Ryujinx.Graphics.Shader.Decoders
  3. {
  4. class OpCodeTexture : OpCode
  5. {
  6. public Register Rd { get; }
  7. public Register Ra { get; }
  8. public Register Rb { get; }
  9. public bool IsArray { get; }
  10. public TextureDimensions Dimensions { get; }
  11. public int ComponentMask { get; }
  12. public int Immediate { get; }
  13. public TextureLodMode LodMode { get; protected set; }
  14. public bool HasOffset { get; protected set; }
  15. public bool HasDepthCompare { get; protected set; }
  16. public bool IsMultisample { get; protected set; }
  17. public OpCodeTexture(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
  18. {
  19. Rd = new Register(opCode.Extract(0, 8), RegisterType.Gpr);
  20. Ra = new Register(opCode.Extract(8, 8), RegisterType.Gpr);
  21. Rb = new Register(opCode.Extract(20, 8), RegisterType.Gpr);
  22. IsArray = opCode.Extract(28);
  23. Dimensions = (TextureDimensions)opCode.Extract(29, 2);
  24. ComponentMask = opCode.Extract(31, 4);
  25. Immediate = opCode.Extract(36, 13);
  26. LodMode = (TextureLodMode)opCode.Extract(55, 3);
  27. }
  28. }
  29. }