TextureTarget.cs
1 using Ryujinx.Graphics.GAL; 2 using Ryujinx.Graphics.Shader; 3 4 namespace Ryujinx.Graphics.Gpu.Image 5 { 6 /// <summary> 7 /// Texture target. 8 /// </summary> 9 enum TextureTarget : byte 10 { 11 Texture1D, 12 Texture2D, 13 Texture3D, 14 Cubemap, 15 Texture1DArray, 16 Texture2DArray, 17 TextureBuffer, 18 Texture2DRect, 19 CubemapArray, 20 } 21 22 static class TextureTargetConverter 23 { 24 /// <summary> 25 /// Converts the texture target enum to a host compatible, Graphics Abstraction Layer enum. 26 /// </summary> 27 /// <param name="target">The target enum to convert</param> 28 /// <param name="isMultisample">True if the texture is a multisampled texture</param> 29 /// <returns>The host compatible texture target</returns> 30 public static Target Convert(this TextureTarget target, bool isMultisample) 31 { 32 if (isMultisample) 33 { 34 switch (target) 35 { 36 case TextureTarget.Texture2D: 37 return Target.Texture2DMultisample; 38 case TextureTarget.Texture2DArray: 39 return Target.Texture2DMultisampleArray; 40 } 41 } 42 else 43 { 44 switch (target) 45 { 46 case TextureTarget.Texture1D: 47 return Target.Texture1D; 48 case TextureTarget.Texture2D: 49 return Target.Texture2D; 50 case TextureTarget.Texture2DRect: 51 return Target.Texture2D; 52 case TextureTarget.Texture3D: 53 return Target.Texture3D; 54 case TextureTarget.Texture1DArray: 55 return Target.Texture1DArray; 56 case TextureTarget.Texture2DArray: 57 return Target.Texture2DArray; 58 case TextureTarget.Cubemap: 59 return Target.Cubemap; 60 case TextureTarget.CubemapArray: 61 return Target.CubemapArray; 62 case TextureTarget.TextureBuffer: 63 return Target.TextureBuffer; 64 } 65 } 66 67 return Target.Texture1D; 68 } 69 70 /// <summary> 71 /// Converts the texture target enum to a shader sampler type. 72 /// </summary> 73 /// <param name="target">The target enum to convert</param> 74 /// <returns>The shader sampler type</returns> 75 public static SamplerType ConvertSamplerType(this TextureTarget target) 76 { 77 return target switch 78 { 79 TextureTarget.Texture1D => SamplerType.Texture1D, 80 TextureTarget.Texture2D => SamplerType.Texture2D, 81 TextureTarget.Texture3D => SamplerType.Texture3D, 82 TextureTarget.Cubemap => SamplerType.TextureCube, 83 TextureTarget.Texture1DArray => SamplerType.Texture1D | SamplerType.Array, 84 TextureTarget.Texture2DArray => SamplerType.Texture2D | SamplerType.Array, 85 TextureTarget.TextureBuffer => SamplerType.TextureBuffer, 86 TextureTarget.Texture2DRect => SamplerType.Texture2D, 87 TextureTarget.CubemapArray => SamplerType.TextureCube | SamplerType.Array, 88 _ => SamplerType.Texture2D, 89 }; 90 } 91 } 92 }