diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index f643712ff..c7c997107 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -248,7 +248,7 @@ Extension | Status @extension{ARB,transform_feedback_overflow_query} | | @extension{KHR,blend_equation_advanced} | done @extension3{KHR,blend_equation_advanced_coherent,blend_equation_advanced} | done -@extension{KHR,no_error} | | +@extension{KHR,no_error} | done @subsection opengl-support-extensions-vendor Vendor OpenGL extensions @@ -384,7 +384,7 @@ Extension | Status @es_extension{KHR,robustness} | | @es_extension{KHR,robust_buffer_access_behavior} | done (nothing to do) @es_extension{KHR,context_flush_control} | | -@es_extension2{KHR,no_error,no_error} | | +@es_extension2{KHR,no_error,no_error} | done @es_extension2{NV,read_buffer_front,NV_read_buffer} | done @es_extension2{NV,read_depth,NV_read_depth_stencil} | done @es_extension2{NV,read_stencil,NV_read_depth_stencil} | done diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index aa5cdd51c..b8bf0590e 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -812,6 +812,7 @@ Debug& operator<<(Debug& debug, const Context::Flag value) { switch(value) { #define _c(value) case Context::Flag::value: return debug << "Context::Flag::" #value; _c(Debug) + _c(NoError) #ifndef MAGNUM_TARGET_GLES _c(RobustAccess) #endif diff --git a/src/Magnum/Context.h b/src/Magnum/Context.h index d9821ff92..8ce3b2521 100644 --- a/src/Magnum/Context.h +++ b/src/Magnum/Context.h @@ -136,6 +136,13 @@ class MAGNUM_EXPORT Context { Debug = GL_CONTEXT_FLAG_DEBUG_BIT_KHR, #endif + /** + * Context without error reporting + * @requires_extension Extension @extension{KHR,no_error} + * @requires_es_extension Extension @es_extension2{KHR,no_error,no_error} + */ + NoError = GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR, + #ifndef MAGNUM_TARGET_GLES /** * Context with robust access diff --git a/src/Magnum/Platform/GlfwApplication.h b/src/Magnum/Platform/GlfwApplication.h index cadf55732..573bdbeab 100644 --- a/src/Magnum/Platform/GlfwApplication.h +++ b/src/Magnum/Platform/GlfwApplication.h @@ -290,7 +290,7 @@ class GlfwApplication::Configuration { /** * @brief Context flag * - * @see @ref Flags, @ref setFlags() + * @see @ref Flags, @ref setFlags(), @ref Context::Flag */ enum class Flag: Int { #ifdef GLFW_CONTEXT_NO_ERROR diff --git a/src/Magnum/Platform/magnum-info.cpp b/src/Magnum/Platform/magnum-info.cpp index 47c1f5d7b..68cf49f56 100644 --- a/src/Magnum/Platform/magnum-info.cpp +++ b/src/Magnum/Platform/magnum-info.cpp @@ -269,11 +269,12 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat Context& c = Context::current(); Debug() << "Context flags:"; - #ifndef MAGNUM_TARGET_GLES - for(const auto flag: {Context::Flag::Debug, Context::Flag::RobustAccess}) - #else - for(const auto flag: {Context::Flag::Debug}) - #endif + for(const auto flag: {Context::Flag::Debug, + Context::Flag::NoError, + #ifndef MAGNUM_TARGET_GLES + Context::Flag::RobustAccess + #endif + }) if(c.flags() & flag) Debug() << " " << flag; Debug() << "Supported GLSL versions:"; diff --git a/src/MagnumExternal/OpenGL/GL/extensions.txt b/src/MagnumExternal/OpenGL/GL/extensions.txt index 035c3e478..82b268d8b 100644 --- a/src/MagnumExternal/OpenGL/GL/extensions.txt +++ b/src/MagnumExternal/OpenGL/GL/extensions.txt @@ -33,3 +33,4 @@ extension KHR_texture_compression_astc_ldr optional extension KHR_texture_compression_astc_hdr optional extension KHR_blend_equation_advanced optional extension KHR_blend_equation_advanced_coherent optional +extension KHR_no_error optional diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.h b/src/MagnumExternal/OpenGL/GL/flextGL.h index e2ad3f517..92148bc94 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGL.h +++ b/src/MagnumExternal/OpenGL/GL/flextGL.h @@ -1749,6 +1749,10 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum #define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +/* GL_KHR_no_error */ + +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 + /* Function prototypes */ /* GL_ARB_bindless_texture */ diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index 7fdaedd20..c3b32ba19 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -74,6 +74,7 @@ extension KHR_blend_equation_advanced_coherent optional extension KHR_robustness optional extension KHR_robust_buffer_access_behavior optional extension KHR_context_flush_control optional +extension KHR_no_error optional extension NV_read_buffer_front optional extension NV_read_depth optional extension NV_read_stencil optional diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h b/src/MagnumExternal/OpenGL/GLES2/flextGL.h index b7162711e..9c0a50d28 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -981,6 +981,10 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC #define GL_NONE 0 +/* GL_KHR_no_error */ + +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 + /* GL_NV_texture_border_clamp */ #define GL_TEXTURE_BORDER_COLOR_NV 0x1004 diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index f07c7bb94..5e7d2760a 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -36,6 +36,7 @@ extension KHR_blend_equation_advanced_coherent optional extension KHR_robustness optional extension KHR_robust_buffer_access_behavior optional extension KHR_context_flush_control optional +extension KHR_no_error optional extension NV_read_buffer_front optional extension NV_read_depth optional extension NV_read_stencil optional diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h index 53fc2d6a5..1286c46dc 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -1280,6 +1280,10 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC #define GL_NONE 0 +/* GL_KHR_no_error */ + +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 + /* GL_NV_texture_border_clamp */ #define GL_TEXTURE_BORDER_COLOR_NV 0x1004