diff --git a/Ryujinx.Graphics.OpenGL/HwCapabilities.cs b/Ryujinx.Graphics.OpenGL/HwCapabilities.cs index 883542d6c0..f958946e7c 100644 --- a/Ryujinx.Graphics.OpenGL/HwCapabilities.cs +++ b/Ryujinx.Graphics.OpenGL/HwCapabilities.cs @@ -5,75 +5,10 @@ namespace Ryujinx.Graphics.OpenGL { static class HwCapabilities { - private static Lazy _astcCompression = new Lazy(SupportsAstcCompressionImpl); + private static Lazy _astcCompression = new Lazy(() => HasExtension("GL_KHR_texture_compression_astc_ldr")); public static bool SupportsAstcCompression => _astcCompression.Value; - private static bool SupportsAstcCompressionImpl() - { - // The NVIDIA driver has software decompression support for ASTC textures, - // but the extension is not exposed, so we check the list of compressed - // formats too, since the support is indicated there. - return SupportsAnyAstcFormat() || HasExtension("GL_KHR_texture_compression_astc_ldr"); - } - - private static bool SupportsAnyAstcFormat() - { - int formatsCount = GL.GetInteger(GetPName.NumCompressedTextureFormats); - - int[] formats = new int[formatsCount]; - - GL.GetInteger(GetPName.CompressedTextureFormats, formats); - - foreach (int format in formats) - { - if (IsAstcFormat(format)) - { - return true; - } - } - - return false; - } - - private static bool IsAstcFormat(int format) - { - switch ((All)format) - { - case All.CompressedRgbaAstc4X4Khr: - case All.CompressedRgbaAstc5X4Khr: - case All.CompressedRgbaAstc5X5Khr: - case All.CompressedRgbaAstc6X5Khr: - case All.CompressedRgbaAstc6X6Khr: - case All.CompressedRgbaAstc8X5Khr: - case All.CompressedRgbaAstc8X6Khr: - case All.CompressedRgbaAstc8X8Khr: - case All.CompressedRgbaAstc10X5Khr: - case All.CompressedRgbaAstc10X6Khr: - case All.CompressedRgbaAstc10X8Khr: - case All.CompressedRgbaAstc10X10Khr: - case All.CompressedRgbaAstc12X10Khr: - case All.CompressedRgbaAstc12X12Khr: - case All.CompressedSrgb8Alpha8Astc4X4Khr: - case All.CompressedSrgb8Alpha8Astc5X4Khr: - case All.CompressedSrgb8Alpha8Astc5X5Khr: - case All.CompressedSrgb8Alpha8Astc6X5Khr: - case All.CompressedSrgb8Alpha8Astc6X6Khr: - case All.CompressedSrgb8Alpha8Astc8X5Khr: - case All.CompressedSrgb8Alpha8Astc8X6Khr: - case All.CompressedSrgb8Alpha8Astc8X8Khr: - case All.CompressedSrgb8Alpha8Astc10X5Khr: - case All.CompressedSrgb8Alpha8Astc10X6Khr: - case All.CompressedSrgb8Alpha8Astc10X8Khr: - case All.CompressedSrgb8Alpha8Astc10X10Khr: - case All.CompressedSrgb8Alpha8Astc12X10Khr: - case All.CompressedSrgb8Alpha8Astc12X12Khr: - return true; - } - - return false; - } - private static bool HasExtension(string name) { int numExtensions = GL.GetInteger(GetPName.NumExtensions);