From 6b37d76d8cafcf100b686cb5320b5c397c8c6b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 4 Mar 2023 01:24:45 +0100 Subject: [PATCH] GL: recognize and implement EXT_depth_clamp on GLES. Makes Renderer::Feature::DepthClamp available not just on desktop GL anymore. --- doc/changelog.dox | 2 ++ doc/opengl-support.dox | 1 + src/Magnum/GL/Context.cpp | 1 + src/Magnum/GL/Extensions.h | 3 ++- src/Magnum/GL/Renderer.h | 10 +++++++--- src/MagnumExternal/OpenGL/GLES2/extensions.txt | 1 + src/MagnumExternal/OpenGL/GLES2/flextGL.h | 4 ++++ .../OpenGL/GLES2/flextGLWindowsDesktop.h | 4 ++++ src/MagnumExternal/OpenGL/GLES3/extensions.txt | 1 + src/MagnumExternal/OpenGL/GLES3/flextGL.h | 4 ++++ .../OpenGL/GLES3/flextGLWindowsDesktop.h | 4 ++++ 11 files changed, 31 insertions(+), 4 deletions(-) diff --git a/doc/changelog.dox b/doc/changelog.dox index 8951a6b57..8aad1c278 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -492,6 +492,8 @@ See also: complement @relativeref{GL::Framebuffer::InvalidationAttachment,Depth} and @relativeref{GL::Framebuffer::InvalidationAttachment,Stencil} (see [mosra/magnum#554](https://github.com/mosra/magnum/pull/554)) +- @ref GL::Renderer::Feature::DepthClamp is now exposed on OpenGL ES as well, + using the @gl_extension{EXT,depth_clamp} extension - Added @ref GL::Shader::wrap() and @relativeref{GL::Shader,release()} - New @ref MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DRAW_IMPLEMENTATION() and @ref MAGNUM_GL_ABSTRACTSHADERPROGRAM_SUBCLASS_DISPATCH_IMPLEMENTATION() diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 256aae77f..199a821f0 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -482,6 +482,7 @@ Extension | Status @gl_extension{EXT,texture_compression_rgtc} | done @gl_extension{EXT,texture_compression_bptc} | done @gl_extension{EXT,texture_compression_s3tc_srgb} | done +@gl_extension{EXT,depth_clamp} | done @gl_extension{IMG,texture_compression_pvrtc} | done @gl_extension2{KHR,texture_compression_astc_hdr,KHR_texture_compression_astc_hdr} | done @gl_extension2{KHR,blend_equation_advanced_coherent,KHR_blend_equation_advanced} | done diff --git a/src/Magnum/GL/Context.cpp b/src/Magnum/GL/Context.cpp index 502aa02bb..ddb4acbb0 100644 --- a/src/Magnum/GL/Context.cpp +++ b/src/Magnum/GL/Context.cpp @@ -361,6 +361,7 @@ constexpr Extension ExtensionList[]{ #endif Extensions::EXT::debug_label{}, Extensions::EXT::debug_marker{}, + Extensions::EXT::depth_clamp{}, Extensions::EXT::disjoint_timer_query{}, Extensions::EXT::draw_elements_base_vertex{}, Extensions::EXT::multi_draw_arrays{}, diff --git a/src/Magnum/GL/Extensions.h b/src/Magnum/GL/Extensions.h index 0845000c3..d1fba845a 100644 --- a/src/Magnum/GL/Extensions.h +++ b/src/Magnum/GL/Extensions.h @@ -479,8 +479,9 @@ namespace ANDROID { _extension( 70,EXT,texture_compression_bptc, GLES300, None) // #287 #endif _extension( 71,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289 + _extension( 72,EXT,depth_clamp, GLES200, None) // #309 } namespace IMG { - _extension( 72,IMG,texture_compression_pvrtc, GLES200, None) // #54 + _extension( 73,IMG,texture_compression_pvrtc, GLES200, None) // #54 } namespace KHR { _extension( 80,KHR,texture_compression_astc_ldr,GLES200, GLES320) // #117 _extension( 81,KHR,texture_compression_astc_hdr,GLES200, None) // #117 diff --git a/src/Magnum/GL/Renderer.h b/src/Magnum/GL/Renderer.h index 7e272f31e..344fda3f4 100644 --- a/src/Magnum/GL/Renderer.h +++ b/src/Magnum/GL/Renderer.h @@ -324,14 +324,18 @@ class MAGNUM_GL_EXPORT Renderer { #endif #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_WEBGL /** * Depth clamping. If enabled, ignores near and far clipping plane. * @requires_gl32 Extension @gl_extension{ARB,depth_clamp} - * @requires_gl Depth clamping is not available in OpenGL ES and - * WebGL. + * @requires_es_extension Extension @gl_extension{EXT,depth_clamp} + * @requires_gles Depth clamping is not available in WebGL. */ + #ifndef MAGNUM_TARGET_GLES DepthClamp = GL_DEPTH_CLAMP, + #else + DepthClamp = GL_DEPTH_CLAMP_EXT, + #endif #endif /** diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index f95b2a0f4..590e5703d 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -93,6 +93,7 @@ extension EXT_pvrtc_sRGB optional extension EXT_draw_elements_base_vertex optional extension EXT_polygon_offset_clamp optional extension EXT_texture_compression_s3tc_srgb optional +extension EXT_depth_clamp optional extension IMG_texture_compression_pvrtc optional # extension KHR_texture_compression_astc_hdr optional extension KHR_blend_equation_advanced_coherent optional diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h b/src/MagnumExternal/OpenGL/GLES2/flextGL.h index 88ae2af00..691afa959 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -1004,6 +1004,10 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +/* GL_EXT_depth_clamp */ + +#define GL_DEPTH_CLAMP_EXT 0x864F + /* GL_IMG_texture_compression_pvrtc */ #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h b/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h index 8049427d4..54e11313a 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h @@ -1000,6 +1000,10 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +/* GL_EXT_depth_clamp */ + +#define GL_DEPTH_CLAMP_EXT 0x864F + /* GL_IMG_texture_compression_pvrtc */ #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index 481f11786..623c75469 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -69,6 +69,7 @@ extension EXT_clip_cull_distance optional extension EXT_texture_compression_rgtc optional extension EXT_texture_compression_bptc optional extension EXT_texture_compression_s3tc_srgb optional +extension EXT_depth_clamp optional extension IMG_texture_compression_pvrtc optional # extension KHR_texture_compression_astc_hdr optional extension KHR_blend_equation_advanced_coherent optional diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h index e17bc5ed7..f07d56a82 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -1629,6 +1629,10 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +/* GL_EXT_depth_clamp */ + +#define GL_DEPTH_CLAMP_EXT 0x864F + /* GL_IMG_texture_compression_pvrtc */ #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h b/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h index 1c18e3466..57630ce0c 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h @@ -1622,6 +1622,10 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +/* GL_EXT_depth_clamp */ + +#define GL_DEPTH_CLAMP_EXT 0x864F + /* GL_IMG_texture_compression_pvrtc */ #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00