TextureTarget.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Ryujinx.Graphics.GAL;
  2. namespace Ryujinx.Graphics.Gpu.Image
  3. {
  4. /// <summary>
  5. /// Texture target.
  6. /// </summary>
  7. enum TextureTarget : byte
  8. {
  9. Texture1D,
  10. Texture2D,
  11. Texture3D,
  12. Cubemap,
  13. Texture1DArray,
  14. Texture2DArray,
  15. TextureBuffer,
  16. Texture2DRect,
  17. CubemapArray
  18. }
  19. static class TextureTargetConverter
  20. {
  21. /// <summary>
  22. /// Converts the texture target enum to a host compatible, Graphics Abstraction Layer enum.
  23. /// </summary>
  24. /// <param name="target">The target enum to convert</param>
  25. /// <param name="isMultisample">True if the texture is a multisampled texture</param>
  26. /// <returns>The host compatible texture target</returns>
  27. public static Target Convert(this TextureTarget target, bool isMultisample)
  28. {
  29. if (isMultisample)
  30. {
  31. switch (target)
  32. {
  33. case TextureTarget.Texture2D: return Target.Texture2DMultisample;
  34. case TextureTarget.Texture2DArray: return Target.Texture2DMultisampleArray;
  35. }
  36. }
  37. else
  38. {
  39. switch (target)
  40. {
  41. case TextureTarget.Texture1D: return Target.Texture1D;
  42. case TextureTarget.Texture2D: return Target.Texture2D;
  43. case TextureTarget.Texture2DRect: return Target.Texture2D;
  44. case TextureTarget.Texture3D: return Target.Texture3D;
  45. case TextureTarget.Texture1DArray: return Target.Texture1DArray;
  46. case TextureTarget.Texture2DArray: return Target.Texture2DArray;
  47. case TextureTarget.Cubemap: return Target.Cubemap;
  48. case TextureTarget.CubemapArray: return Target.CubemapArray;
  49. case TextureTarget.TextureBuffer: return Target.TextureBuffer;
  50. }
  51. }
  52. return Target.Texture1D;
  53. }
  54. }
  55. }