diff --git a/doc/changelog.dox b/doc/changelog.dox index 9b44637b3..50e188a76 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -108,8 +108,11 @@ See also: resulted in a new @cpp "firefox-deprecated-debug-renderer-info" @ce workaround being added, see @ref opengl-workarounds for more info. - Recognizing @webgl_extension{EXT,float_blend} and - @webgl_extension{WEBGL,debug_shaders} extensions, no implementation done - yet + @webgl_extension{WEBGL,debug_shaders} WebGL extensions, no implementation + done yet +- Recognizing @gl_extension{KHR,parallel_shader_compile} GL, GLES and + @webgl_extension{KHR,parallel_shader_compile} WebGL extensions, no + implementation done yet - Recognizing ANGLE GLES and WebGL base vertex, base instance and multi-draw extensions and using them in @ref GL::AbstractShaderProgram::draw(Mesh&) and @ref GL::AbstractShaderProgram::draw(Containers::ArrayView>): diff --git a/doc/opengl-mapping.dox b/doc/opengl-mapping.dox index 2b9d03527..2d0dbe60e 100644 --- a/doc/opengl-mapping.dox +++ b/doc/opengl-mapping.dox @@ -290,6 +290,7 @@ OpenGL function | Matching API @fn_gl_extension{MakeTextureHandleResident,ARB,bindless_texture} | | @fn_gl_extension{MakeTextureHandleNonResident,ARB,bindless_texture} | | @fn_gl{MapBuffer}, \n `glMapNamedBuffer()`, \n @fn_gl{MapBufferRange}, \n `glMapNamedBufferRange()`, \n @fn_gl{UnmapBuffer}, \n `glUnmapNamedBuffer()` | @ref GL::Buffer::map(), @ref GL::Buffer::unmap() +@fn_gl_extension{MaxShaderCompilerThreads,KHR,parallel_shader_compile} | | @fn_gl{MemoryBarrier}, \n `glMemoryBarrierByRegion()` | @ref GL::Renderer::setMemoryBarrier(), \n @ref GL::Renderer::setMemoryBarrierByRegion() @fn_gl{MinSampleShading} | @ref GL::Renderer::setMinSampleShading() @fn_gl{MultiDrawArrays}, \n @fn_gl{MultiDrawElements}, \n @fn_gl{MultiDrawElementsBaseVertex} | @ref GL::AbstractShaderProgram::draw(Containers::ArrayView>) diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 1eeaa9c4a..cf85a07b6 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -297,6 +297,7 @@ Extension | Status @gl_extension{KHR,blend_equation_advanced} | done @gl_extension2{KHR,blend_equation_advanced_coherent,KHR_blend_equation_advanced} | done @gl_extension{KHR,texture_compression_astc_sliced_3d} | done (nothing to do) +@gl_extension{KHR,parallel_shader_compile} | | @subsection opengl-support-extensions-vendor Vendor OpenGL extensions @@ -489,6 +490,7 @@ Extension | Status @gl_extension{KHR,context_flush_control} | | @gl_extension{KHR,no_error} | done @gl_extension{KHR,texture_compression_astc_sliced_3d} | done (nothing to do) +@gl_extension{KHR,parallel_shader_compile} | | @gl_extension2{NV,read_buffer_front,NV_read_buffer} | done @gl_extension2{NV,read_depth,NV_read_depth_stencil} | done @gl_extension2{NV,read_stencil,NV_read_depth_stencil} | done @@ -564,6 +566,7 @@ Extension | Status @webgl_extension{EXT,clip_cull_distance} | done @webgl_extension{EXT,texture_norm16} | done @webgl_extension{EXT,draw_buffers_indexed} | done +@webgl_extension{KHR,parallel_shader_compile} | | @webgl_extension{OES,texture_float_linear} | done @webgl_extension{OVR,multiview2} | | @webgl_extension{WEBGL,lose_context} | | diff --git a/src/Magnum/GL/Context.cpp b/src/Magnum/GL/Context.cpp index 7f8835403..a9ae98e2c 100644 --- a/src/Magnum/GL/Context.cpp +++ b/src/Magnum/GL/Context.cpp @@ -104,6 +104,7 @@ constexpr Extension ExtensionList[]{ Extensions::GREMEDY::string_marker{}, Extensions::KHR::blend_equation_advanced{}, Extensions::KHR::blend_equation_advanced_coherent{}, + Extensions::KHR::parallel_shader_compile{}, Extensions::KHR::texture_compression_astc_hdr{}, Extensions::KHR::texture_compression_astc_ldr{}, Extensions::KHR::texture_compression_astc_sliced_3d{}, @@ -290,6 +291,7 @@ constexpr Extension ExtensionList[]{ #ifndef MAGNUM_TARGET_GLES2 Extensions::EXT::texture_norm16{}, #endif + Extensions::KHR::parallel_shader_compile{}, Extensions::OES::texture_float_linear{}, #ifndef MAGNUM_TARGET_GLES2 Extensions::OVR::multiview2{}, @@ -394,6 +396,7 @@ constexpr Extension ExtensionList[]{ Extensions::KHR::blend_equation_advanced_coherent{}, Extensions::KHR::context_flush_control{}, Extensions::KHR::no_error{}, + Extensions::KHR::parallel_shader_compile{}, Extensions::KHR::texture_compression_astc_hdr{}, Extensions::KHR::texture_compression_astc_sliced_3d{}, #ifndef MAGNUM_TARGET_GLES2 diff --git a/src/Magnum/GL/Extensions.h b/src/Magnum/GL/Extensions.h index 11ec946b3..f0255e1f6 100644 --- a/src/Magnum/GL/Extensions.h +++ b/src/Magnum/GL/Extensions.h @@ -256,8 +256,9 @@ namespace AMD { _extension(167,KHR,blend_equation_advanced_coherent, GL210, None) // #174 _extension(168,KHR,no_error, GL210, GL460) // #175 _extension(169,KHR,texture_compression_astc_sliced_3d, GL210, None) // #189 + _extension(170,KHR,parallel_shader_compile, GL210, None) // #192 } namespace MAGNUM { - _extension(170,MAGNUM,shader_vertex_id, GL300, GL300) + _extension(171,MAGNUM,shader_vertex_id, GL300, GL300) } namespace NV { _extension(175,NV,primitive_restart, GL210, GL310) // #285 _extension(176,NV,depth_buffer_float, GL210, GL300) // #334 @@ -305,6 +306,8 @@ namespace ANGLE { #ifndef MAGNUM_TARGET_GLES2 _extension(16,EXT,draw_buffers_indexed, GLES300, None) // #45 #endif +} namespace KHR { + _extension(17,KHR,parallel_shader_compile, GLES200, None) // #37 } namespace OES { #ifdef MAGNUM_TARGET_GLES2 _extension(20,OES,texture_float, GLES200, GLES300) // #1 @@ -488,6 +491,7 @@ namespace ANDROID { _extension( 87,KHR,context_flush_control, GLES200, None) // #191 _extension( 88,KHR,no_error, GLES200, None) // #243 _extension( 89,KHR,texture_compression_astc_sliced_3d, GLES200, None) // #249 + _extension( 90,KHR,parallel_shader_compile, GLES200, None) // #288 } namespace NV { #ifdef MAGNUM_TARGET_GLES2 _extension(100,NV,draw_buffers, GLES200, GLES300) // #91 diff --git a/src/MagnumExternal/OpenGL/GL/extensions.txt b/src/MagnumExternal/OpenGL/GL/extensions.txt index cb8f6593f..b48691380 100644 --- a/src/MagnumExternal/OpenGL/GL/extensions.txt +++ b/src/MagnumExternal/OpenGL/GL/extensions.txt @@ -41,6 +41,7 @@ extension KHR_texture_compression_astc_ldr optional extension KHR_blend_equation_advanced optional extension KHR_blend_equation_advanced_coherent optional # extension KHR_texture_compression_astc_sliced_3d optional +extension KHR_parallel_shader_compile optional extension NV_sample_locations optional extension NV_fragment_shader_barycentric optional extension OVR_multiview optional diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.cpp b/src/MagnumExternal/OpenGL/GL/flextGL.cpp index 1ad0e42b8..d289c4428 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGL.cpp +++ b/src/MagnumExternal/OpenGL/GL/flextGL.cpp @@ -222,6 +222,9 @@ FlextGL flextGL{ /* GL_KHR_blend_equation_advanced */ nullptr, + /* GL_KHR_parallel_shader_compile */ + nullptr, + /* GL_NV_sample_locations */ nullptr, nullptr, diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.h b/src/MagnumExternal/OpenGL/GL/flextGL.h index f2f2bc72e..d11cc1880 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGL.h +++ b/src/MagnumExternal/OpenGL/GL/flextGL.h @@ -1773,6 +1773,11 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum #define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +/* GL_KHR_parallel_shader_compile */ + +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + /* GL_NV_sample_locations */ #define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D @@ -1876,6 +1881,10 @@ struct FlextGL { void(APIENTRY *BlendBarrierKHR)(void); + /* GL_KHR_parallel_shader_compile */ + + void(APIENTRY *MaxShaderCompilerThreadsKHR)(GLuint); + /* GL_NV_sample_locations */ void(APIENTRY *FramebufferSampleLocationsfvNV)(GLenum, GLuint, GLsizei, const GLfloat *); @@ -2680,6 +2689,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL; #define glBlendBarrierKHR flextGL.BlendBarrierKHR +/* GL_KHR_parallel_shader_compile */ + +#define glMaxShaderCompilerThreadsKHR flextGL.MaxShaderCompilerThreadsKHR + /* GL_NV_sample_locations */ #define glFramebufferSampleLocationsfvNV flextGL.FramebufferSampleLocationsfvNV diff --git a/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp index f95454ebb..46da39b00 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp @@ -186,6 +186,9 @@ void flextGLInit(Magnum::GL::Context& context) { /* GL_KHR_blend_equation_advanced */ flextGL.BlendBarrierKHR = reinterpret_cast(loader.load("glBlendBarrierKHR")); + /* GL_KHR_parallel_shader_compile */ + flextGL.MaxShaderCompilerThreadsKHR = reinterpret_cast(loader.load("glMaxShaderCompilerThreadsKHR")); + /* GL_NV_sample_locations */ flextGL.FramebufferSampleLocationsfvNV = reinterpret_cast(loader.load("glFramebufferSampleLocationsfvNV")); flextGL.NamedFramebufferSampleLocationsfvNV = reinterpret_cast(loader.load("glNamedFramebufferSampleLocationsfvNV")); diff --git a/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt index cb8ccd371..31cb7bb1b 100644 --- a/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt @@ -40,6 +40,10 @@ extension KHR_texture_compression_astc_ldr optional # barrier extension KHR_blend_equation_advanced optional +# KHR_parallel_shader_compile includes just GL_COMPLETION_STATUS_KHR and not +# the max threads setting +extension KHR_parallel_shader_compile optional + # From the gl_angle_ext file, base for WEBGL_multi_draw extension ANGLE_multi_draw optional # Base for WEBGL_{multi_,}draw_instanced_base_vertex_base_instance @@ -52,6 +56,8 @@ extension ANGLE_base_vertex_base_instance optional begin functions blacklist # Not present in WEBGL_blend_equation_advanced_coherent BlendBarrierKHR + # Not present in WebGL variant of KHR_parallel_shader_compile + MaxShaderCompilerThreadsKHR end functions blacklist # kate: hl python diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index 11e43e78a..f95b2a0f4 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -99,6 +99,7 @@ extension KHR_blend_equation_advanced_coherent optional extension KHR_context_flush_control optional extension KHR_no_error optional # extension KHR_texture_compression_astc_sliced_3d optional +extension KHR_parallel_shader_compile 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 5b24d7ccc..ad7a639df 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -1019,6 +1019,11 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +/* GL_KHR_parallel_shader_compile */ + +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + /* GL_NV_texture_border_clamp */ #define GL_TEXTURE_BORDER_COLOR_NV 0x1004 @@ -1393,6 +1398,10 @@ struct FlextGL { void(APIENTRY *PopDebugGroupKHR)(void); void(APIENTRY *PushDebugGroupKHR)(GLenum, GLuint, GLsizei, const GLchar *); + /* GL_KHR_parallel_shader_compile */ + + void(APIENTRY *MaxShaderCompilerThreadsKHR)(GLuint); + /* GL_KHR_robustness */ GLenum(APIENTRY *GetGraphicsResetStatusKHR)(void); @@ -1643,6 +1652,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL; #define glPopDebugGroupKHR flextGL.PopDebugGroupKHR #define glPushDebugGroupKHR flextGL.PushDebugGroupKHR +/* GL_KHR_parallel_shader_compile */ + +#define glMaxShaderCompilerThreadsKHR flextGL.MaxShaderCompilerThreadsKHR + /* GL_KHR_robustness */ #define glGetGraphicsResetStatusKHR flextGL.GetGraphicsResetStatusKHR diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h b/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h index cad27e2b0..37ac07123 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h @@ -576,6 +576,11 @@ typedef khronos_uint64_t GLuint64; #define GL_HSL_COLOR_KHR 0x92AF #define GL_HSL_LUMINOSITY_KHR 0x92B0 +/* GL_KHR_parallel_shader_compile */ + +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + /* Function prototypes */ /* GL_ANGLE_base_vertex_base_instance */ diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp index b6c9e75c3..b1cad512f 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp @@ -187,6 +187,9 @@ void flextGLInit(Magnum::GL::Context&) { flextGL.PopDebugGroupKHR = reinterpret_cast(loader.load("glPopDebugGroupKHR")); flextGL.PushDebugGroupKHR = reinterpret_cast(loader.load("glPushDebugGroupKHR")); + /* GL_KHR_parallel_shader_compile */ + flextGL.MaxShaderCompilerThreadsKHR = reinterpret_cast(loader.load("glMaxShaderCompilerThreadsKHR")); + /* GL_KHR_robustness */ flextGL.GetGraphicsResetStatusKHR = reinterpret_cast(loader.load("glGetGraphicsResetStatusKHR")); flextGL.GetnUniformfvKHR = reinterpret_cast(loader.load("glGetnUniformfvKHR")); diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatformIOS.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatformIOS.cpp index a5d27abd9..83152cd05 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatformIOS.cpp +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatformIOS.cpp @@ -131,6 +131,7 @@ #undef glObjectPtrLabelKHR #undef glPopDebugGroupKHR #undef glPushDebugGroupKHR +#undef glMaxShaderCompilerThreadsKHR #undef glGetGraphicsResetStatusKHR #undef glGetnUniformfvKHR #undef glGetnUniformivKHR @@ -372,6 +373,11 @@ void flextGLInit(Magnum::GL::Context&) { flextGL.PushDebugGroupKHR = reinterpret_cast(glPushDebugGroupKHR); #endif + /* GL_KHR_parallel_shader_compile */ + #if GL_KHR_parallel_shader_compile + flextGL.MaxShaderCompilerThreadsKHR = reinterpret_cast(glMaxShaderCompilerThreadsKHR); + #endif + /* GL_KHR_robustness */ #if GL_KHR_robustness flextGL.GetGraphicsResetStatusKHR = reinterpret_cast(glGetGraphicsResetStatusKHR); diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatformWindowsDesktop.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatformWindowsDesktop.cpp index 43806c227..81f64cac9 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatformWindowsDesktop.cpp +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatformWindowsDesktop.cpp @@ -286,6 +286,9 @@ void flextGLInit(Magnum::GL::Context&) { flextGL.PopDebugGroupKHR = reinterpret_cast(loader.load("glPopDebugGroupKHR")); flextGL.PushDebugGroupKHR = reinterpret_cast(loader.load("glPushDebugGroupKHR")); + /* GL_KHR_parallel_shader_compile */ + flextGL.MaxShaderCompilerThreadsKHR = reinterpret_cast(loader.load("glMaxShaderCompilerThreadsKHR")); + /* GL_KHR_robustness */ flextGL.GetGraphicsResetStatusKHR = reinterpret_cast(loader.load("glGetGraphicsResetStatusKHR")); flextGL.GetnUniformfvKHR = reinterpret_cast(loader.load("glGetnUniformfvKHR")); diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h b/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h index a245c1844..fe9a05fa2 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h @@ -1015,6 +1015,11 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +/* GL_KHR_parallel_shader_compile */ + +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + /* GL_NV_texture_border_clamp */ #define GL_TEXTURE_BORDER_COLOR_NV 0x1004 @@ -1393,6 +1398,10 @@ struct FlextGL { void(APIENTRY *PopDebugGroupKHR)(void); void(APIENTRY *PushDebugGroupKHR)(GLenum, GLuint, GLsizei, const GLchar *); + /* GL_KHR_parallel_shader_compile */ + + void(APIENTRY *MaxShaderCompilerThreadsKHR)(GLuint); + /* GL_KHR_robustness */ GLenum(APIENTRY *GetGraphicsResetStatusKHR)(void); @@ -1743,6 +1752,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL; #define glPopDebugGroupKHR flextGL.PopDebugGroupKHR #define glPushDebugGroupKHR flextGL.PushDebugGroupKHR +/* GL_KHR_parallel_shader_compile */ + +#define glMaxShaderCompilerThreadsKHR flextGL.MaxShaderCompilerThreadsKHR + /* GL_KHR_robustness */ #define glGetGraphicsResetStatusKHR flextGL.GetGraphicsResetStatusKHR diff --git a/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt index 41d4d1ba9..3727199cc 100644 --- a/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt @@ -29,6 +29,10 @@ extension KHR_texture_compression_astc_ldr optional # barrier extension KHR_blend_equation_advanced optional +# KHR_parallel_shader_compile includes just GL_COMPLETION_STATUS_KHR and not +# the max threads setting +extension KHR_parallel_shader_compile optional + # From the gl_angle_ext file, base for WEBGL_multi_draw etc extension ANGLE_multi_draw optional extension ANGLE_base_vertex_base_instance optional @@ -41,6 +45,8 @@ extension MAGNUM_what_webgl_has_but_es_not optional begin functions blacklist # Not present in WEBGL_blend_equation_advanced_coherent BlendBarrierKHR + # Not present in WebGL variant of KHR_parallel_shader_compile + MaxShaderCompilerThreadsKHR end functions blacklist # kate: hl python diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index a18dada00..32a066bd2 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -73,6 +73,7 @@ extension KHR_blend_equation_advanced_coherent optional extension KHR_context_flush_control optional extension KHR_no_error optional # extension KHR_texture_compression_astc_sliced_3d optional +extension KHR_parallel_shader_compile 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 9cae0d86a..7aeabd6ac 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -1634,6 +1634,11 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +/* GL_KHR_parallel_shader_compile */ + +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + /* GL_NV_texture_border_clamp */ #define GL_TEXTURE_BORDER_COLOR_NV 0x1004 @@ -2238,6 +2243,10 @@ struct FlextGL { void(APIENTRY *PopDebugGroupKHR)(void); void(APIENTRY *PushDebugGroupKHR)(GLenum, GLuint, GLsizei, const GLchar *); + /* GL_KHR_parallel_shader_compile */ + + void(APIENTRY *MaxShaderCompilerThreadsKHR)(GLuint); + /* GL_KHR_robustness */ GLenum(APIENTRY *GetGraphicsResetStatusKHR)(void); @@ -2577,6 +2586,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL; #define glPopDebugGroupKHR flextGL.PopDebugGroupKHR #define glPushDebugGroupKHR flextGL.PushDebugGroupKHR +/* GL_KHR_parallel_shader_compile */ + +#define glMaxShaderCompilerThreadsKHR flextGL.MaxShaderCompilerThreadsKHR + /* GL_KHR_robustness */ #define glGetGraphicsResetStatusKHR flextGL.GetGraphicsResetStatusKHR diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h b/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h index cb3afe11b..d7fc39281 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h @@ -879,6 +879,11 @@ typedef struct __GLsync *GLsync; #define GL_HSL_COLOR_KHR 0x92AF #define GL_HSL_LUMINOSITY_KHR 0x92B0 +/* GL_KHR_parallel_shader_compile */ + +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + /* Function prototypes */ /* GL_ANGLE_base_vertex_base_instance */ diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp index e19832b11..cd13791b1 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp @@ -305,6 +305,9 @@ void flextGLInit(Magnum::GL::Context&) { flextGL.PopDebugGroupKHR = reinterpret_cast(loader.load("glPopDebugGroupKHR")); flextGL.PushDebugGroupKHR = reinterpret_cast(loader.load("glPushDebugGroupKHR")); + /* GL_KHR_parallel_shader_compile */ + flextGL.MaxShaderCompilerThreadsKHR = reinterpret_cast(loader.load("glMaxShaderCompilerThreadsKHR")); + /* GL_KHR_robustness */ flextGL.GetGraphicsResetStatusKHR = reinterpret_cast(loader.load("glGetGraphicsResetStatusKHR")); flextGL.GetnUniformfvKHR = reinterpret_cast(loader.load("glGetnUniformfvKHR")); diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp index 81cc5911b..64ee4375e 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp @@ -141,6 +141,7 @@ #undef glObjectPtrLabelKHR #undef glPopDebugGroupKHR #undef glPushDebugGroupKHR +#undef glMaxShaderCompilerThreadsKHR #undef glGetGraphicsResetStatusKHR #undef glGetnUniformfvKHR #undef glGetnUniformivKHR @@ -361,6 +362,11 @@ void flextGLInit(Magnum::GL::Context&) { flextGL.PushDebugGroupKHR = reinterpret_cast(glPushDebugGroupKHR); #endif + /* GL_KHR_parallel_shader_compile */ + #if GL_KHR_parallel_shader_compile + flextGL.MaxShaderCompilerThreadsKHR = reinterpret_cast(glMaxShaderCompilerThreadsKHR); + #endif + /* GL_KHR_robustness */ #if GL_KHR_robustness flextGL.GetGraphicsResetStatusKHR = reinterpret_cast(glGetGraphicsResetStatusKHR); diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp index 6c8a520a1..3dceb07db 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp @@ -507,6 +507,9 @@ void flextGLInit(Magnum::GL::Context&) { flextGL.PopDebugGroupKHR = reinterpret_cast(loader.load("glPopDebugGroupKHR")); flextGL.PushDebugGroupKHR = reinterpret_cast(loader.load("glPushDebugGroupKHR")); + /* GL_KHR_parallel_shader_compile */ + flextGL.MaxShaderCompilerThreadsKHR = reinterpret_cast(loader.load("glMaxShaderCompilerThreadsKHR")); + /* GL_KHR_robustness */ flextGL.GetGraphicsResetStatusKHR = reinterpret_cast(loader.load("glGetGraphicsResetStatusKHR")); flextGL.GetnUniformfvKHR = reinterpret_cast(loader.load("glGetnUniformfvKHR")); diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h b/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h index 12adf192c..2ad781e50 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h @@ -1627,6 +1627,11 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +/* GL_KHR_parallel_shader_compile */ + +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + /* GL_NV_texture_border_clamp */ #define GL_TEXTURE_BORDER_COLOR_NV 0x1004 @@ -2242,6 +2247,10 @@ struct FlextGL { void(APIENTRY *PopDebugGroupKHR)(void); void(APIENTRY *PushDebugGroupKHR)(GLenum, GLuint, GLsizei, const GLchar *); + /* GL_KHR_parallel_shader_compile */ + + void(APIENTRY *MaxShaderCompilerThreadsKHR)(GLuint); + /* GL_KHR_robustness */ GLenum(APIENTRY *GetGraphicsResetStatusKHR)(void); @@ -2785,6 +2794,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL; #define glPopDebugGroupKHR flextGL.PopDebugGroupKHR #define glPushDebugGroupKHR flextGL.PushDebugGroupKHR +/* GL_KHR_parallel_shader_compile */ + +#define glMaxShaderCompilerThreadsKHR flextGL.MaxShaderCompilerThreadsKHR + /* GL_KHR_robustness */ #define glGetGraphicsResetStatusKHR flextGL.GetGraphicsResetStatusKHR