Sampler.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using Ryujinx.Graphics.GAL;
  2. using System;
  3. namespace Ryujinx.Graphics.Gpu.Image
  4. {
  5. class Sampler : IDisposable
  6. {
  7. public ISampler HostSampler { get; }
  8. public Sampler(GpuContext context, SamplerDescriptor descriptor)
  9. {
  10. MinFilter minFilter = descriptor.UnpackMinFilter();
  11. MagFilter magFilter = descriptor.UnpackMagFilter();
  12. AddressMode addressU = descriptor.UnpackAddressU();
  13. AddressMode addressV = descriptor.UnpackAddressV();
  14. AddressMode addressP = descriptor.UnpackAddressP();
  15. CompareMode compareMode = descriptor.UnpackCompareMode();
  16. CompareOp compareOp = descriptor.UnpackCompareOp();
  17. ColorF color = new ColorF(0, 0, 0, 0);
  18. float minLod = descriptor.UnpackMinLod();
  19. float maxLod = descriptor.UnpackMaxLod();
  20. float mipLodBias = descriptor.UnpackMipLodBias();
  21. float maxAnisotropy = descriptor.UnpackMaxAnisotropy();
  22. HostSampler = context.Renderer.CreateSampler(new SamplerCreateInfo(
  23. minFilter,
  24. magFilter,
  25. addressU,
  26. addressV,
  27. addressP,
  28. compareMode,
  29. compareOp,
  30. color,
  31. minLod,
  32. maxLod,
  33. mipLodBias,
  34. maxAnisotropy));
  35. }
  36. public void Dispose()
  37. {
  38. HostSampler.Dispose();
  39. }
  40. }
  41. }