diff --git a/Doxyfile b/Doxyfile
index afcc8888b..156ee9045 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -261,6 +261,7 @@ ALIASES = \
"requires_gl43=@xrefitem requires-gl43 \"Requires OpenGL 4.3\" \"Functionality requiring OpenGL 4.3\"" \
"requires_gl44=@xrefitem requires-gl44 \"Requires OpenGL 4.4\" \"Functionality requiring OpenGL 4.4\"" \
"requires_gl45=@xrefitem requires-gl45 \"Requires OpenGL 4.5\" \"Functionality requiring OpenGL 4.5\"" \
+ "requires_gl46=@xrefitem requires-gl46 \"Requires OpenGL 4.6\" \"Functionality requiring OpenGL 4.6\"" \
"requires_extension=@xrefitem requires-extension \"Requires OpenGL extension\" \"Functionality requiring specific OpenGL extension\"" \
"requires_gl=@xrefitem requires-gl \"Requires desktop OpenGL\" \"Functionality requiring desktop OpenGL\"" \
"extension{2}=\1_\2" \
diff --git a/Doxyfile-mcss b/Doxyfile-mcss
index 4a46522a6..b3fdc4c54 100644
--- a/Doxyfile-mcss
+++ b/Doxyfile-mcss
@@ -40,6 +40,7 @@ ALIASES = \
"requires_gl43=@xrefitem requires-gl43 \"Requires OpenGL 4.3\" \"Functionality requiring OpenGL 4.3\"" \
"requires_gl44=@xrefitem requires-gl44 \"Requires OpenGL 4.4\" \"Functionality requiring OpenGL 4.4\"" \
"requires_gl45=@xrefitem requires-gl45 \"Requires OpenGL 4.5\" \"Functionality requiring OpenGL 4.5\"" \
+ "requires_gl46=@xrefitem requires-gl46 \"Requires OpenGL 4.6\" \"Functionality requiring OpenGL 4.6\"" \
"requires_extension=@xrefitem requires-extension \"Requires OpenGL extension\" \"Functionality requiring specific OpenGL extension\"" \
"requires_gl=@xrefitem requires-gl \"Requires desktop OpenGL\" \"Functionality requiring desktop OpenGL\"" \
"extension{2}=@m_class{m-dox-external} \1_\2" \
diff --git a/Doxyfile-public b/Doxyfile-public
index d6e6c172d..552b2d901 100644
--- a/Doxyfile-public
+++ b/Doxyfile-public
@@ -37,6 +37,7 @@ ALIASES = \
"requires_gl43=@xrefitem requires-gl43 \"Requires OpenGL 4.3\" \"Functionality requiring OpenGL 4.3\"" \
"requires_gl44=@xrefitem requires-gl44 \"Requires OpenGL 4.4\" \"Functionality requiring OpenGL 4.4\"" \
"requires_gl45=@xrefitem requires-gl45 \"Requires OpenGL 4.5\" \"Functionality requiring OpenGL 4.5\"" \
+ "requires_gl46=@xrefitem requires-gl46 \"Requires OpenGL 4.6\" \"Functionality requiring OpenGL 4.6\"" \
"requires_extension=@xrefitem requires-extension \"Requires OpenGL extension\" \"Functionality requiring specific OpenGL extension\"" \
"requires_gl=@xrefitem requires-gl \"Requires desktop OpenGL\" \"Functionality requiring desktop OpenGL\"" \
"extension{2}=@m_class{m-dox-external} \1_\2" \
diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox
index 8464783c7..808d4b572 100644
--- a/doc/opengl-support.dox
+++ b/doc/opengl-support.dox
@@ -249,6 +249,25 @@ GLSL 4.50 | done
@extension{KHR,context_flush_control} | |
@extension{KHR,robustness} | |
+@subsection opengl-support-46 OpenGL 4.6
+
+@m_class{m-fullwidth}
+
+Extension | Status
+------------------------------------------- | ------
+GLSL 4.60 | done
+@extension{ARB,indirect_parameters} | |
+@extension{ARB,shader_draw_parameters} | done (shading language only)
+@extension{ARB,shader_group_vote} | done (shading language only)
+@extension{ARB,pipeline_statistics_query} | |
+@extension{ARB,transform_feedback_overflow_query} | done
+@extension{ARB,shader_atomic_counter_ops} | done (shading language only)
+@extension{ARB,gl_spirv} | |
+@extension{ARB,polygon_offset_clamp} | |
+@extension{ARB,spirv_extensions} | |
+@extension{ARB,texture_filter_anisotropic} | |
+@extension{KHR,no_error} | done
+
@subsection opengl-support-extensions ARB / Khronos OpenGL extensions
@m_class{m-fullwidth}
@@ -260,20 +279,14 @@ Extension | Status
@extension{ARB,robustness_isolation} | done
@extension{ARB,bindless_texture} | |
@extension{ARB,compute_variable_group_size} | |
-@extension{ARB,indirect_parameters} | |
@extension{ARB,seamless_cubemap_per_texture} | |
-@extension{ARB,shader_draw_parameters} | done (shading language only)
-@extension{ARB,shader_group_vote} | done (shading language only)
@extension{ARB,sparse_texture} | |
-@extension{ARB,pipeline_statistics_query} | |
@extension{ARB,sparse_buffer} | |
-@extension{ARB,transform_feedback_overflow_query} | done
@extension{ARB,ES3_2_compatibility} | |
@extension2{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | done
@extension{KHR,robust_buffer_access_behavior} | done (nothing to do)
@extension{KHR,blend_equation_advanced} | done
@extension2{KHR,blend_equation_advanced_coherent,blend_equation_advanced} | done
-@extension{KHR,no_error} | done
@subsection opengl-support-extensions-vendor Vendor OpenGL extensions
diff --git a/doc/opengl.dox b/doc/opengl.dox
index f6913132d..0e348aabd 100644
--- a/doc/opengl.dox
+++ b/doc/opengl.dox
@@ -62,6 +62,7 @@ is supported on older Intel GPUs even if they are capable of OpenGL 2.1 only).
- @subpage requires-gl43
- @subpage requires-gl44
- @subpage requires-gl45
+- @subpage requires-gl46
- @subpage requires-extension
- @subpage requires-gl
- @subpage requires-gles20
@@ -117,6 +118,10 @@ is supported on older Intel GPUs even if they are capable of OpenGL 2.1 only).
* @m_footernavigation
*/
+/** @page requires-gl46 Functionality requiring OpenGL 4.6
+ * @m_footernavigation
+ */
+
/** @page requires-extension Functionality requiring specific OpenGL extension
* @m_footernavigation
*/
diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp
index 4da7a8d8f..3a7ad2385 100644
--- a/src/Magnum/Context.cpp
+++ b/src/Magnum/Context.cpp
@@ -79,14 +79,9 @@ const std::vector& Extension::extensions(Version version) {
_extension(GL,ARB,robustness_share_group_isolation),
_extension(GL,ARB,bindless_texture),
_extension(GL,ARB,compute_variable_group_size),
- _extension(GL,ARB,indirect_parameters),
_extension(GL,ARB,seamless_cubemap_per_texture),
- _extension(GL,ARB,shader_draw_parameters),
- _extension(GL,ARB,shader_group_vote),
_extension(GL,ARB,sparse_texture),
- _extension(GL,ARB,pipeline_statistics_query),
_extension(GL,ARB,sparse_buffer),
- _extension(GL,ARB,transform_feedback_overflow_query),
_extension(GL,ARB,ES3_2_compatibility),
_extension(GL,ATI,texture_mirror_once),
_extension(GL,EXT,texture_filter_anisotropic),
@@ -101,8 +96,7 @@ const std::vector& Extension::extensions(Version version) {
_extension(GL,KHR,texture_compression_astc_ldr),
_extension(GL,KHR,texture_compression_astc_hdr),
_extension(GL,KHR,blend_equation_advanced),
- _extension(GL,KHR,blend_equation_advanced_coherent),
- _extension(GL,KHR,no_error)};
+ _extension(GL,KHR,blend_equation_advanced_coherent)};
static const std::vector extensions300{
_extension(GL,ARB,map_buffer_range),
_extension(GL,ARB,color_buffer_float),
@@ -232,6 +226,18 @@ const std::vector& Extension::extensions(Version version) {
_extension(GL,ARB,texture_barrier),
_extension(GL,KHR,context_flush_control),
_extension(GL,KHR,robustness)};
+ static const std::vector extensions460{
+ _extension(GL,ARB,indirect_parameters),
+ _extension(GL,ARB,shader_draw_parameters),
+ _extension(GL,ARB,shader_group_vote),
+ _extension(GL,ARB,pipeline_statistics_query),
+ _extension(GL,ARB,transform_feedback_overflow_query),
+ _extension(GL,ARB,shader_atomic_counter_ops),
+ _extension(GL,ARB,gl_spirv),
+ _extension(GL,ARB,polygon_offset_clamp),
+ _extension(GL,ARB,spirv_extensions),
+ _extension(GL,ARB,texture_filter_anisotropic),
+ _extension(GL,KHR,no_error)};
#elif defined(MAGNUM_TARGET_WEBGL)
static const std::vector extensions{
_extension(GL,EXT,texture_filter_anisotropic),
@@ -282,6 +288,7 @@ const std::vector& Extension::extensions(Version version) {
#ifndef MAGNUM_TARGET_GLES2
_extension(GL,EXT,shader_integer_mix),
#endif
+ _extension(GL,EXT,polygon_offset_clamp),
_extension(GL,KHR,texture_compression_astc_hdr),
_extension(GL,KHR,blend_equation_advanced_coherent),
_extension(GL,KHR,context_flush_control),
@@ -402,6 +409,7 @@ const std::vector& Extension::extensions(Version version) {
case Version::GL430: return extensions430;
case Version::GL440: return extensions440;
case Version::GL450: return extensions450;
+ case Version::GL460: return extensions460;
case Version::GLES200:
case Version::GLES300:
case Version::GLES310:
diff --git a/src/Magnum/Extensions.h b/src/Magnum/Extensions.h
index 5b18e2938..9c03f1834 100644
--- a/src/Magnum/Extensions.h
+++ b/src/Magnum/Extensions.h
@@ -193,10 +193,10 @@ namespace GL {
_extension(GL,ARB,vertex_type_10f_11f_11f_rev, GL300, GL440) // #151
_extension(GL,ARB,bindless_texture, GL400, None) // #152
_extension(GL,ARB,compute_variable_group_size, GL420, None) // #153
- _extension(GL,ARB,indirect_parameters, GL420, None) // #154
+ _extension(GL,ARB,indirect_parameters, GL420, GL460) // #154
_extension(GL,ARB,seamless_cubemap_per_texture, GL320, None) // #155
- _extension(GL,ARB,shader_draw_parameters, GL310, None) // #156
- _extension(GL,ARB,shader_group_vote, GL420, None) // #157
+ _extension(GL,ARB,shader_draw_parameters, GL310, GL460) // #156
+ _extension(GL,ARB,shader_group_vote, GL420, GL460) // #157
_extension(GL,ARB,sparse_texture, GL210, None) // #158
_extension(GL,ARB,ES3_1_compatibility, GL440, GL450) // #159
_extension(GL,ARB,clip_control, GL210, GL450) // #160
@@ -207,10 +207,15 @@ namespace GL {
_extension(GL,ARB,get_texture_sub_image, GL210, GL450) // #165
_extension(GL,ARB,shader_texture_image_samples, GL430, GL450) // #166
_extension(GL,ARB,texture_barrier, GL210, GL450) // #167
- _extension(GL,ARB,pipeline_statistics_query, GL300, None) // #171
+ _extension(GL,ARB,pipeline_statistics_query, GL300, GL460) // #171
_extension(GL,ARB,sparse_buffer, GL210, None) // #172
_extension(GL,ARB,transform_feedback_overflow_query, GL300, None) // #173
_extension(GL,ARB,ES3_2_compatibility, GL450, None) // #177
+ _extension(GL,ARB,shader_atomic_counter_ops, GL300, GL460) // #182
+ _extension(GL,ARB,gl_spirv, GL330, GL460) // #190
+ _extension(GL,ARB,polygon_offset_clamp, GL330, GL460) // #193
+ _extension(GL,ARB,spirv_extensions, GL330, GL460) // #194
+ _extension(GL,ARB,texture_filter_anisotropic, GL210, GL460) // #195
} namespace ATI {
_extension(GL,ATI,texture_mirror_once, GL210, None) // #221
} namespace EXT {
@@ -386,6 +391,7 @@ namespace GL {
_extension(GL,EXT,texture_cube_map_array, GLES310, GLES320) // #184
_extension(GL,EXT,primitive_bounding_box, GLES310, GLES320) // #186
#endif
+ _extension(GL,EXT,polygon_offset_clamp, GLES200, None) // #252
} namespace KHR {
_extension(GL,KHR,texture_compression_astc_ldr, GLES200, GLES320) // #117
_extension(GL,KHR,texture_compression_astc_hdr, GLES200, None) // #117
diff --git a/src/Magnum/Platform/magnum-info.cpp b/src/Magnum/Platform/magnum-info.cpp
index c66a224eb..20fb8595a 100644
--- a/src/Magnum/Platform/magnum-info.cpp
+++ b/src/Magnum/Platform/magnum-info.cpp
@@ -295,6 +295,7 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat
Version::GL430,
Version::GL440,
Version::GL450,
+ Version::GL460,
#else
Version::GLES300,
#ifndef MAGNUM_TARGET_WEBGL
diff --git a/src/Magnum/Shader.cpp b/src/Magnum/Shader.cpp
index 56ab2ab3c..702cdd3ad 100644
--- a/src/Magnum/Shader.cpp
+++ b/src/Magnum/Shader.cpp
@@ -661,6 +661,7 @@ Shader::Shader(const Version version, const Type type): _type(type), _id(0) {
case Version::GL430: _sources.emplace_back("#version 430\n"); return;
case Version::GL440: _sources.emplace_back("#version 440\n"); return;
case Version::GL450: _sources.emplace_back("#version 450\n"); return;
+ case Version::GL460: _sources.emplace_back("#version 460\n"); return;
#endif
/* `#version 100` really is GLSL ES 1.00 and *not* GLSL 1.00. What a mess. */
case Version::GLES200: _sources.emplace_back("#version 100\n"); return;
diff --git a/src/Magnum/Version.cpp b/src/Magnum/Version.cpp
index 138274293..6b99e424a 100644
--- a/src/Magnum/Version.cpp
+++ b/src/Magnum/Version.cpp
@@ -47,6 +47,7 @@ Debug& operator<<(Debug& debug, Version value) {
_c(GL430, "OpenGL 4.3")
_c(GL440, "OpenGL 4.4")
_c(GL450, "OpenGL 4.5")
+ _c(GL460, "OpenGL 4.6")
#endif
#ifdef MAGNUM_TARGET_WEBGL
_c(GLES200, "WebGL 1.0")
diff --git a/src/Magnum/Version.h b/src/Magnum/Version.h
index 3d2a704f8..0d4fbef69 100644
--- a/src/Magnum/Version.h
+++ b/src/Magnum/Version.h
@@ -61,6 +61,7 @@ enum class Version: Int {
GL430 = 430, /**< OpenGL 4.3, GLSL 4.30 */
GL440 = 440, /**< OpenGL 4.4, GLSL 4.40 */
GL450 = 450, /**< OpenGL 4.5, GLSL 4.50 */
+ GL460 = 460, /**< OpenGL 4.6, GLSL 4.60 */
#endif
/**