OpenGL » Support state

List of (un)supported OpenGL features and extensions.

OpenGL implementation state

The extension implementation is considered complete if all its defined types, functions and enum values are exposed through the API, except for features listed below in Unsupported features.

All extensions from the below lists are available in the GL::Extensions namespace and it's possible to check for their availability using GL::Context::isExtensionSupported(). See its documentation for more information.

OpenGL 2.1

The core subset of OpenGL 2.1 should be fully implemented, except for the following:

  • Proxy textures
  • Some forgotten limit queries

OpenGL 3.0

ExtensionStatus
GLSL 1.30done
glClearBuffer() functionsdone
ARB_map_buffer_rangedone
ARB_color_buffer_float
ARB_half_float_pixeldone
ARB_texture_floatdone
ARB_depth_buffer_floatdone
ARB_texture_rgdone
ARB_vertex_array_objectdone
ARB_framebuffer_objectdone
ARB_framebuffer_sRGBdone
ARB_half_float_vertexdone
EXT_gpu_shader4done
EXT_packed_floatdone
EXT_texture_arraydone
EXT_texture_compression_rgtcdone
EXT_texture_shared_exponentdone
EXT_draw_buffers2done (GL 3.0 subset)
EXT_texture_integerdone (GL 3.0 subset)
EXT_transform_feedbackdone
MAGNUM_shader_vertex_id
Pseudo-extension denoting support for the gl_VertexID GLSL builtin.
done
NV_depth_buffer_floatdone
NV_conditional_renderdone

OpenGL 3.1

ExtensionStatus
GLSL 1.40done
ARB_texture_rectangledone
ARB_draw_instanceddone
ARB_texture_buffer_objectdone
ARB_uniform_buffer_objectdone except for data layout queries
ARB_copy_bufferdone
EXT_texture_snormdone
NV_primitive_restart

OpenGL 3.2

ExtensionStatus
GLSL 1.50done
ARB_geometry_shader4missing some limit queries
ARB_depth_clampdone
ARB_draw_elements_base_vertexdone
ARB_fragment_coord_conventionsdone (shading language only)
ARB_provoking_vertexdone
ARB_seamless_cube_mapdone
ARB_sync
ARB_texture_multisamplemissing sample location queries and sample mask
ARB_vertex_array_bgradone

OpenGL 3.3

ExtensionStatus
GLSL 3.30done
ARB_instanced_arraysdone
ARB_blend_func_extendeddone
ARB_explicit_attrib_locationdone (shading language only)
ARB_occlusion_query2done
ARB_sampler_objects
ARB_shader_bit_encodingdone (shading language only)
ARB_texture_rgb10_a2uidone
ARB_texture_swizzledone
ARB_timer_querymissing direct query
ARB_vertex_type_2_10_10_10_revdone

OpenGL 4.0

ExtensionStatus
GLSL 4.00done
ARB_draw_buffers_blenddone
ARB_sample_shadingdone
ARB_texture_cube_map_arraydone
ARB_texture_gathermissing limit queries
ARB_texture_query_loddone (shading language only)
ARB_draw_indirect
ARB_gpu_shader5missing limit queries
ARB_gpu_shader_fp64done
ARB_shader_subroutine
ARB_tessellation_shaderdone except for MAX_TESS_GEN_LEVEL and MAX_TESS_PATCH_COMPONENTS queries
ARB_texture_buffer_object_rgb32done
ARB_transform_feedback2done
ARB_transform_feedback3missing indexed properties query

OpenGL 4.1

ExtensionStatus
GLSL 4.10done
ARB_ES2_compatibilityonly float depth clear
ARB_get_program_binary
ARB_separate_shader_objectsonly direct uniform binding
ARB_shader_precisiondone (shading language only)
ARB_vertex_attrib_64bitdone
ARB_viewport_array

OpenGL 4.2

ExtensionStatus
GLSL 4.20done
ARB_texture_compression_bptcdone
ARB_base_instancedone
ARB_shading_language_420packdone (shading language only)
ARB_transform_feedback_instanceddone
ARB_compressed_texture_pixel_storagedone
ARB_conservative_depthdone (shading language only)
ARB_internalformat_query
ARB_map_buffer_alignmentdone
ARB_shader_atomic_countersdone
ARB_shader_image_load_storedone
ARB_shading_language_packingdone (shading language only)
ARB_texture_storagedone

OpenGL 4.3

ExtensionStatus
GLSL 4.30done
ARB_arrays_of_arraysdone (shading language only)
ARB_ES3_compatibilityonly conservative sample query and compression formats
ARB_clear_buffer_object
ARB_compute_shaderdone except for indirect dispatch
ARB_copy_image
KHR_debugmissing log retrieval, sync, pipeline and sampler label
ARB_explicit_uniform_locationdone
ARB_fragment_layer_viewportdone (shading language only)
ARB_framebuffer_no_attachmentsdone
ARB_internalformat_query2only compressed texture block queries
ARB_invalidate_subdatadone
ARB_multi_draw_indirect
ARB_program_interface_query
ARB_robust_buffer_access_behaviordone (nothing to do)
ARB_shader_image_sizedone (shading language only)
ARB_shader_storage_buffer_objectmissing (unneeded) block binding
ARB_stencil_texturingdone
ARB_texture_buffer_rangedone
ARB_texture_query_levelsdone (shading language only)
ARB_texture_storage_multisampledone
ARB_texture_viewdone
ARB_vertex_attrib_binding

OpenGL 4.4

ExtensionStatus
GLSL 4.40done
GL_MAX_VERTEX_ATTRIB_STRIDE
ARB_buffer_storagedone
ARB_clear_texture
ARB_enhanced_layoutsdone (shading language only)
ARB_multi_bindmissing sampler and vertex buffer binding
ARB_query_buffer_object
ARB_texture_mirror_clamp_to_edgedone
ARB_texture_stencil8done
ARB_vertex_type_10f_11f_11f_revdone

OpenGL 4.5

ExtensionStatus
GLSL 4.50done
ARB_ES3_1_compatibilitydone
ARB_clip_controldone
ARB_conditional_render_inverteddone
ARB_cull_distancedone
ARB_derivative_controldone (shading language only)
ARB_direct_state_accessdone for implemented functionality
ARB_get_texture_sub_imagedone
ARB_shader_texture_image_samplesdone (shading language only)
ARB_texture_barrierdone
KHR_context_flush_control
KHR_robustness

OpenGL 4.6

ExtensionStatus
GLSL 4.60done
ARB_indirect_parameters
ARB_shader_draw_parametersdone (shading language only)
ARB_shader_group_votedone (shading language only)
ARB_pipeline_statistics_querydone
ARB_transform_feedback_overflow_querydone
ARB_shader_atomic_counter_opsdone (shading language only)
ARB_gl_spirv
ARB_polygon_offset_clamp
ARB_spirv_extensions
ARB_texture_filter_anisotropicdone
KHR_no_errordone

ARB / Khronos OpenGL extensions

ExtensionStatus
ARB_robustnessdone
KHR_texture_compression_astc_hdrdone
ARB_robustness_isolationdone
ARB_bindless_texture
ARB_compute_variable_group_size
ARB_seamless_cubemap_per_texture
ARB_sparse_texture
ARB_sparse_buffer
ARB_ES3_2_compatibility
ARB_sample_locations
KHR_texture_compression_astc_ldrdone
KHR_robust_buffer_access_behaviordone (nothing to do)
KHR_blend_equation_advanceddone
KHR_blend_equation_advanced_coherentdone
KHR_texture_compression_astc_sliced_3ddone (nothing to do)
KHR_parallel_shader_compilemissing thread count setting

Vendor OpenGL extensions

ExtensionStatus
AMD_transform_feedback3_lines_trianglesdone (nothing to do)
AMD_sample_positions
AMD_vertex_shader_layerdone (shading language only)
AMD_shader_trinary_minmaxdone (shading language only)
AMD_shader_explicit_vertex_parameterdone (shading language only)
ATI_texture_mirror_oncedone (GL 4.4 subset)
EXT_texture_filter_anisotropicdone
EXT_texture_compression_s3tcdone
EXT_texture_mirror_clamponly GL 4.4 subset
EXT_texture_compression_dxt1done
EXT_texture_sRGB_decodedone
EXT_shader_integer_mixdone (shading language only)
EXT_debug_labelmissing pipeline and sampler label
EXT_debug_markerdone
EXT_texture_sRGB_R8done
EXT_texture_sRGB_RG8done
GREMEDY_string_markerdone
NV_geometry_shader_passthroughdone (shading language only)
NV_sample_locations
NV_fragment_shader_barycentricdone (shading language only)
OVR_multiview
OVR_multiview2

OpenGL ES 2.0

Features that have their equivalents implemented in desktop version are supported. ESSL 1.00 is supported.

OpenGL ES 3.0

Features that have their equivalents implemented in desktop version are supported. ESSL 3.00 is supported.

OpenGL ES 3.1

Features that have their equivalents implemented in desktop version are supported. ESSL 3.10 is supported.

OpenGL ES 3.2

Features that have their equivalents implemented in desktop version are supported. ESSL 3.20 is supported.

ExtensionStatus
EXT_color_buffer_half_float
EXT_color_buffer_float
EXT_copy_image
EXT_draw_buffers_indexeddone
EXT_geometry_shadermissing some ES-specific limit queries
EXT_gpu_shader5done (shading language only)
EXT_shader_io_blocksdone (shading language only)
EXT_tessellation_shaderdone except for MAX_TESS_GEN_LEVEL and MAX_TESS_PATCH_COMPONENTS queries
EXT_texture_border_clampdone
EXT_texture_bufferdone
EXT_texture_cube_map_arraydone
EXT_primitive_bounding_box
KHR_texture_compression_astc_ldrdone
KHR_debugsee above
KHR_blend_equation_advanceddone
KHR_robustness
KHR_robust_buffer_access_behaviordone (nothing to do)
OES_sample_shadingdone
OES_sample_variablesdone (shading language only)
OES_shader_image_atomicdone (shading language only)
OES_shader_multisample_interpolation
OES_texture_stencil8done
OES_texture_storage_multisample_2d_arraydone

OpenGL ES 2.0 extensions to match ES 3.0 functionality

Unless said otherwise, these are not exposed in the GL::Extensions namespace on OpenGL ES 3.0 builds.

ExtensionStatus
ANGLE_framebuffer_blitdone
ANGLE_framebuffer_multisampledone
ANGLE_instanced_arraysdone
ANGLE_depth_texturedone
ANGLE_compressed_texture_etc (unlisted)done
APPLE_framebuffer_multisampledone (ES 3.0 subset)
APPLE_texture_max_leveldone
ARM_rgba8done
EXT_texture_type_2_10_10_10_REVdone
EXT_discard_framebufferdone
EXT_blend_minmaxdone
EXT_shader_texture_loddone (shading language only)
EXT_unpack_subimagedone
EXT_occlusion_query_booleandone
EXT_shadow_samplersdone
EXT_texture_rgdone
EXT_sRGBdone
EXT_texture_storagedone
EXT_map_buffer_rangedone
EXT_draw_buffersdone
EXT_instanced_arraysdone
EXT_draw_instanceddone
MAGNUM_shader_vertex_id
Pseudo-extension denoting support for the gl_VertexID
GLSL builtin. Exposed on ES3 builds only.
done
NV_draw_buffersdone
NV_fbo_color_attachmentsdone
NV_read_bufferdone
NV_pack_subimagedone
NV_draw_instanceddone
NV_framebuffer_blitdone
NV_framebuffer_multisampledone
NV_instanced_arraysdone
NV_shadow_samplers_arraydone (shading language only)
NV_shadow_samplers_cubedone (shading language only)
OES_depth24done
OES_element_index_uintdone
OES_fbo_render_mipmapdone
OES_rgb8_rgba8done (desktop-compatible subset)
OES_texture_3Ddone
OES_texture_half_float_lineardone
OES_texture_half_floatdone
OES_texture_floatdone
OES_texture_npotdone (nothing to do)
OES_vertex_half_floatdone
OES_packed_depth_stencildone
OES_depth_texturedone
OES_standard_derivativesdone
OES_vertex_array_objectdone
OES_required_internalformatdone (desktop-compatible subset)
OES_surfaceless_contextdone

OpenGL ES extensions

ExtensionStatus
ANDROID_extension_pack_es31adone (nothing to do)
ANGLE_texture_compression_dxt1done
ANGLE_texture_compression_dxt3done
ANGLE_texture_compression_dxt5done
ANGLE_multi_draw (unlisted)done
ANGLE_base_vertex_base_instance (unlisted)done
ANGLE_provoking_vertex (unlisted)done
ANGLE_polygon_mode (unlisted)done
ANGLE_stencil_texturing (unlisted)done
APPLE_texture_format_BGRA8888done
APPLE_clip_distancedone
ARM_shader_framebuffer_fetchmissing renderer setup and limit query
ARM_shader_framebuffer_fetch_depth_stencildone (shading language only)
EXT_texture_filter_anisotropicdone
EXT_texture_compression_dxt1done
EXT_texture_format_BGRA8888done
EXT_read_format_bgradone
EXT_multi_draw_arraysdone
EXT_debug_labelsee above
EXT_debug_markerdone
EXT_separate_shader_objectsonly direct uniform binding
EXT_multisampled_render_to_textureonly renderbuffer storage
EXT_robustnessdone
EXT_shader_framebuffer_fetchmissing limit query
EXT_disjoint_timer_queryonly time elapsed query
EXT_texture_sRGB_decodedone
EXT_sRGB_write_controldone
EXT_texture_compression_s3tcdone
EXT_pvrtc_sRGBdone
EXT_shader_integer_mixdone (shading language only)
EXT_texture_viewdone
EXT_draw_elements_base_vertexdone
EXT_texture_norm16done
EXT_texture_sRGB_R8done
EXT_texture_sRGB_RG8done
EXT_blend_func_extendeddone
EXT_polygon_offset_clamp
EXT_clip_cull_distancedone
EXT_texture_compression_rgtcdone
EXT_texture_compression_bptcdone
EXT_texture_compression_s3tc_srgbdone
EXT_clip_controldone
EXT_texture_mirror_clamp_to_edgedone
EXT_depth_clampdone
IMG_texture_compression_pvrtcdone
KHR_texture_compression_astc_hdrdone
KHR_blend_equation_advanced_coherentdone
KHR_context_flush_control
KHR_no_errordone
KHR_texture_compression_astc_sliced_3ddone (nothing to do)
KHR_parallel_shader_compilemissing thread count setting
NV_read_buffer_frontdone
NV_read_depthdone
NV_read_stencildone
NV_read_depth_stencildone
NV_texture_border_clampdone
NV_shader_noperspective_interpolationdone (shading language only)
NV_geometry_shader_passthroughdone (shading language only)
NV_sample_locations
NV_polygon_modedone
OES_depth32done
OES_mapbufferdone
OES_stencil1done
OES_stencil4done
OES_texture_float_lineardone
OES_texture_viewdone
OES_draw_elements_base_vertexdone
OVR_multiview
OVR_multiview2

WebGL 1.0

Features that have their equivalents implemented in OpenGL ES 2.0 are supported.

WebGL 2.0

Features that have their equivalents implemented in OpenGL ES 3.0 are supported.

WebGL 1.0 extensions to match WebGL 2.0 functionality

Unless said otherwise, these are not available in the GL::Extensions namespace on WebGL 2.0 builds.

ExtensionStatus
ANGLE_instanced_arraysdone
EXT_frag_depthdone (shading language only)
EXT_sRGBdone
EXT_blend_minmaxdone
EXT_shader_texture_loddone (shading language only)
MAGNUM_shader_vertex_id
Pseudo-extension denoting support for the gl_VertexID
GLSL builtin. Exposed on WebGL 2 builds only.
done
OES_texture_floatdone
OES_texture_half_floatdone
OES_standard_derivativesdone
OES_vertex_array_objectdone
OES_element_index_uintdone
OES_texture_half_float_lineardone
OES_fbo_render_mipmapdone
WEBGL_depth_texturedone
WEBGL_color_buffer_float
WEBGL_draw_buffersdone

WebGL extensions

ExtensionStatus
EXT_texture_filter_anisotropicdone
EXT_color_buffer_half_float
EXT_disjoint_timer_queryonly time elapsed query
EXT_disjoint_timer_query_webgl2done
EXT_color_buffer_float
EXT_float_blend
EXT_texture_compression_rgtcdone
EXT_texture_compression_bptcdone
EXT_texture_norm16done
EXT_polygon_offset_clampmissing support in Emscripten
EXT_clip_controlmissing support in Emscripten
EXT_depth_clampdone
EXT_texture_mirror_clamp_to_edgedone
KHR_parallel_shader_compiledone
NV_shader_noperspective_interpolationdone (shading language only)
OES_texture_float_lineardone
OES_draw_buffers_indexed
(originally named EXT_draw_buffers_indexed)
done
OVR_multiview2
WEBGL_lose_context
WEBGL_debug_renderer_infodone
WEBGL_debug_shaders
WEBGL_compressed_texture_s3tcdone
WEBGL_compressed_texture_pvrtcdone
WEBGL_compressed_texture_etcdone
WEBGL_compressed_texture_astcdone
WEBGL_compressed_texture_s3tc_srgbdone
WEBGL_multi_drawdone
WEBGL_blend_equation_advanced_coherentdone
WEBGL_clip_cull_distance
(originally named EXT_clip_cull_distance)
done
WEBGL_draw_instanced_base_vertex_base_instancedone
WEBGL_multi_draw_instanced_base_vertex_base_instancedone
WEBGL_provoking_vertexmissing support in Emscripten
WEBGL_polygon_modemissing support in Emscripten
WEBGL_blend_func_extendeddone
WEBGL_stencil_texturingdone

Unsupported OpenGL features

Some functionality, which is either soon-to-be deprecated or isn't proven to add any performance gains, is not supported in Magnum. See also Deprecated OpenGL API list.

Unsupported features

  • API that is not part of core profile or is marked as deprecated (but still supported in core profile) in the latest version of OpenGL specification is not supported. The only exception are features that are needed for some OpenGL ES 2.0 implementations (such as luminance texture formats).
  • State queries (various glIs*(), glGet*() functions) are not supported. Magnum API is designed to prevent the need for majority of them, many of them are tracked internally to avoid redundant state changes and in many cases it is easier to set the state to some value rather than query it and then decide on the result. For detailed state introspection please use external debugger (such as ApiTrace), which is more convenient to use than manual queries. Queries of implementation-defined values (various limits etc.) and queries of generated values (buffer data, texture data) are supported.
  • Line and polygon smoothing (GL_LINE_SMOOTH, GL_POLYGON_SMOOTH) and related functions are not supported, as the driver might do it in software with serious performance drops. Multisampling is far superior solution.
  • Fixed precision data types (GL_FIXED in OpenGL ES) are not supported, as they occupy the same memory as floats and they aren't faster than floats on current hardware anymore. They are also not available in WebGL or desktop GL.
  • Shader compiler is assumed to be present (GL_SHADER_COMPILER returning true), as all desktop GL implementations and also ES3 are required to support it.
  • Querying shader attribute locations using glGetAttribLocation() and other resources using glGetProgramResource(), glGetProgramResourceIndex(), glGetProgramResourceLocation(), glGetProgramResourceLocationIndex() or glGetProgramResourceName() (as opposed to setting them) is not supported, as newer GL versions encourage setting them explicitly in shader code.
  • Direct vertex data specification (as opposed to using buffers) is not supported, as it encourages bad practices.
  • glPixelStore() with GL_PACK_SWAP_BYTES / GL_UNPACK_SWAP_BYTES. Too much burden imposed on every API that deals with pixel storage. Use Corrade::Utility::Endianness instead. Note that this state is also not tracked, so it won't get reset in case a 3rd party code enables it.

Unsupported ARB / Khronos extensions

Unsupported vendor extensions