From 3a3279246fdbd003afdf1bfa5f4834cce7ecf23b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 9 Jul 2021 00:01:33 +0200 Subject: [PATCH] OpenGLRenderer: Enable GL_ARB_gl_spirv and GL_ARB_texture_filter_anisotropic with OpenGL 4.6 --- .../Nazara/OpenGLRenderer/Wrapper/Context.hpp | 10 ++++++---- src/Nazara/OpenGLRenderer/Wrapper/Context.cpp | 17 +++++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/include/Nazara/OpenGLRenderer/Wrapper/Context.hpp b/include/Nazara/OpenGLRenderer/Wrapper/Context.hpp index 29ed1227d..2dad92f74 100644 --- a/include/Nazara/OpenGLRenderer/Wrapper/Context.hpp +++ b/include/Nazara/OpenGLRenderer/Wrapper/Context.hpp @@ -57,11 +57,13 @@ namespace Nz::GL enum class ExtensionStatus { - NotSupported, + NotSupported = 0, - ARB, - EXT, - KHR + ARB = 3, + Core = 5, + EXT = 2, + KHR = 4, + Vendor = 1 }; enum class FramebufferTarget diff --git a/src/Nazara/OpenGLRenderer/Wrapper/Context.cpp b/src/Nazara/OpenGLRenderer/Wrapper/Context.cpp index b76e3801e..67680135c 100644 --- a/src/Nazara/OpenGLRenderer/Wrapper/Context.cpp +++ b/src/Nazara/OpenGLRenderer/Wrapper/Context.cpp @@ -281,19 +281,24 @@ namespace Nz::GL m_extensionStatus.fill(ExtensionStatus::NotSupported); + // SpirV + if (m_params.type == ContextType::OpenGL && m_params.glMajorVersion >= 4 && m_params.glMajorVersion >= 6) + m_extensionStatus[UnderlyingCast(Extension::SpirV)] = ExtensionStatus::Core; + else if (m_supportedExtensions.count("GL_ARB_gl_spirv")) + m_extensionStatus[UnderlyingCast(Extension::SpirV)] = ExtensionStatus::ARB; + + // Texture compression (S3tc) if (m_supportedExtensions.count("GL_EXT_texture_compression_s3tc")) m_extensionStatus[UnderlyingCast(Extension::TextureCompressionS3tc)] = ExtensionStatus::EXT; - // TextureFilterAnisotropic - if (m_supportedExtensions.count("GL_ARB_texture_filter_anisotropic")) + // Texture anisotropic filter + if (m_params.type == ContextType::OpenGL && m_params.glMajorVersion >= 4 && m_params.glMajorVersion >= 6) + m_extensionStatus[UnderlyingCast(Extension::TextureFilterAnisotropic)] = ExtensionStatus::Core; + else if (m_supportedExtensions.count("GL_ARB_texture_filter_anisotropic")) m_extensionStatus[UnderlyingCast(Extension::TextureFilterAnisotropic)] = ExtensionStatus::ARB; else if (m_supportedExtensions.count("GL_EXT_texture_filter_anisotropic")) m_extensionStatus[UnderlyingCast(Extension::TextureFilterAnisotropic)] = ExtensionStatus::EXT; - // SpirV - if (m_supportedExtensions.count("GL_ARB_gl_spirv")) - m_extensionStatus[UnderlyingCast(Extension::SpirV)] = ExtensionStatus::ARB; - #define NAZARA_OPENGLRENDERER_FUNC(name, sig) #define NAZARA_OPENGLRENDERER_EXT_FUNC(name, sig) loader.Load(name, #name, false); NAZARA_OPENGLRENDERER_FOREACH_GLES_FUNC(NAZARA_OPENGLRENDERER_FUNC, NAZARA_OPENGLRENDERER_EXT_FUNC)