diff --git a/Doxyfile b/Doxyfile
index 257379fc2..ec9dbea6a 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -216,6 +216,7 @@ ALIASES = \
"requires_gl41=@xrefitem requires-gl41 \"Requires OpenGL 4.1\" \"Functionality requiring OpenGL 4.1\"" \
"requires_gl42=@xrefitem requires-gl42 \"Requires OpenGL 4.2\" \"Functionality requiring OpenGL 4.2\"" \
"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_extension=@xrefitem requires-extension \"Requires OpenGL extension\" \"Functionality requiring specific OpenGL extension\"" \
"extension{2}=\1_\2" \
"requires_gles30=@xrefitem requires-gles30 \"Requires OpenGL ES 3.0\" \"Functionality requiring OpenGL ES 3.0\"" \
diff --git a/doc/required-extensions.dox b/doc/required-extensions.dox
index 2d56cfa65..e2c4d8b14 100644
--- a/doc/required-extensions.dox
+++ b/doc/required-extensions.dox
@@ -46,6 +46,7 @@ supported on Intel GPUs even if they are capable of OpenGL 2.1 only).
- @subpage requires-gl41
- @subpage requires-gl42
- @subpage requires-gl43
+- @subpage requires-gl44
- @subpage requires-extension
- @subpage requires-gl
- @subpage requires-gles20
@@ -61,6 +62,7 @@ supported on Intel GPUs even if they are capable of OpenGL 2.1 only).
@page requires-gl41 Functionality requiring OpenGL 4.1
@page requires-gl42 Functionality requiring OpenGL 4.2
@page requires-gl43 Functionality requiring OpenGL 4.3
+@page requires-gl44 Functionality requiring OpenGL 4.4
@page requires-extension Functionality requiring specific OpenGL extension
diff --git a/src/Buffer.h b/src/Buffer.h
index 7cbc99ae2..0fe35faaa 100644
--- a/src/Buffer.h
+++ b/src/Buffer.h
@@ -119,7 +119,7 @@ OpenGL in order to preserve the data. If running on OpenGL ES or extension
@extension{ARB,invalidate_subdata} is not available, these functions do
nothing.
-@todo Support for AMD's query buffer (@extension{AMD,query_buffer_object})
+@todo Support for AMD/ARB's query buffer (@extension{AMD,query_buffer_object}, @extension{ARB,query_buffer_object})
@todo BindBufferRange/BindBufferOffset/BindBufferBase for transform feedback (3.0, @extension{EXT,transform_feedback})
*/
class MAGNUM_EXPORT Buffer {
diff --git a/src/Context.cpp b/src/Context.cpp
index a2d290dee..1b7f9d72e 100644
--- a/src/Context.cpp
+++ b/src/Context.cpp
@@ -61,6 +61,7 @@ Debug operator<<(Debug debug, Version value) {
_c(GL410, "OpenGL 4.1")
_c(GL420, "OpenGL 4.2")
_c(GL430, "OpenGL 4.3")
+ _c(GL440, "OpenGL 4.4")
#else
_c(GLES200, "OpenGL ES 2.0")
_c(GLES300, "OpenGL ES 3.0")
@@ -195,6 +196,15 @@ const std::vector& Extension::extensions(Version version) {
_extension(GL,ARB,texture_storage_multisample),
_extension(GL,ARB,texture_view),
_extension(GL,ARB,vertex_attrib_binding)};
+ static const std::vector extensions440{
+ _extension(GL,ARB,buffer_storage),
+ _extension(GL,ARB,clear_texture),
+ _extension(GL,ARB,enhanced_layouts),
+ _extension(GL,ARB,multi_bind),
+ _extension(GL,ARB,query_buffer_object),
+ _extension(GL,ARB,texture_mirror_clamp_to_edge),
+ _extension(GL,ARB,texture_stencil8),
+ _extension(GL,ARB,vertex_type_10f_11f_11f_rev)};
#undef _extension
#else
static const std::vector extensions{
@@ -271,6 +281,7 @@ const std::vector& Extension::extensions(Version version) {
case Version::GL420: return extensions420;
/* case Version::GLES300: */
case Version::GL430: return extensions430;
+ case Version::GL440: return extensions440;
#else
case Version::GLES200: return empty;
case Version::GLES300: return extensionsES300;
@@ -322,6 +333,7 @@ Context::Context() {
Version::GL410,
Version::GL420,
Version::GL430,
+ Version::GL440,
#else
Version::GLES200,
Version::GLES300,
diff --git a/src/Context.h b/src/Context.h
index d768897fc..3bdd1c6f0 100644
--- a/src/Context.h
+++ b/src/Context.h
@@ -59,6 +59,7 @@ enum class Version: Int {
GL410 = 410, /**< @brief OpenGL 4.1, GLSL 4.10 */
GL420 = 420, /**< @brief OpenGL 4.2, GLSL 4.20 */
GL430 = 430, /**< @brief OpenGL 4.3, GLSL 4.30 */
+ GL440 = 440, /**< @brief OpenGL 4.4, GLSL 4.40 */
#endif
/**
diff --git a/src/Extensions.h b/src/Extensions.h
index 249dad0db..80595b3a2 100644
--- a/src/Extensions.h
+++ b/src/Extensions.h
@@ -153,6 +153,14 @@ namespace GL {
_extension(GL,ARB,texture_buffer_range, GL210, GL430) // #139
_extension(GL,ARB,texture_query_levels, GL300, GL430) // #140
_extension(GL,ARB,texture_storage_multisample, GL210, GL430) // #141
+ _extension(GL,ARB,buffer_storage, /*?*/ GL430, GL440) // #144
+ _extension(GL,ARB,clear_texture, GL210, GL440) // #145
+ _extension(GL,ARB,enhanced_layouts, GL310, GL440) // #146
+ _extension(GL,ARB,multi_bind, GL300, GL440) // #147
+ _extension(GL,ARB,query_buffer_object, GL210, GL440) // #148
+ _extension(GL,ARB,texture_mirror_clamp_to_edge, GL210, GL440) // #149
+ _extension(GL,ARB,texture_stencil8, GL210, GL440) // #150
+ _extension(GL,ARB,vertex_type_10f_11f_11f_rev, GL300, GL440) // #151
} namespace EXT {
_extension(GL,EXT,texture_filter_anisotropic, GL210, None) // #187
/* EXT_framebuffer_object, EXT_packed_depth_stencil, EXT_framebuffer_blit,
@@ -181,7 +189,7 @@ namespace GL {
_extension(GL,NV,conditional_render, GL210, GL300) // #346
/* NV_draw_texture not supported */ // #430
}
- /* IMPORTANT: if this line is > 188 (57 + size), don't forget to update array size in Context.h */
+ /* IMPORTANT: if this line is > 194 (67 + size), don't forget to update array size in Context.h */
#else
#line 1
namespace ANGLE {
diff --git a/src/Platform/magnum-info.cpp b/src/Platform/magnum-info.cpp
index 74129639a..8def78d74 100644
--- a/src/Platform/magnum-info.cpp
+++ b/src/Platform/magnum-info.cpp
@@ -119,6 +119,7 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat
Version::GL410,
Version::GL420,
Version::GL430,
+ Version::GL440,
#else
Version::GLES200,
Version::GLES300,
diff --git a/src/Shader.cpp b/src/Shader.cpp
index d71cea9bd..5b12c8b03 100644
--- a/src/Shader.cpp
+++ b/src/Shader.cpp
@@ -71,6 +71,7 @@ Shader::Shader(const Version version, const Type type): _type(type), _id(0) {
case Version::GL410: sources.push_back("#version 410\n"); return;
case Version::GL420: sources.push_back("#version 420\n"); return;
case Version::GL430: sources.push_back("#version 430\n"); return;
+ case Version::GL440: sources.push_back("#version 440\n"); return;
#else
case Version::GLES200: sources.push_back("#version 100\n"); return;
case Version::GLES300: sources.push_back("#version 300\n"); return;