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.

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_buffers2
EXT_texture_integerdone (GL 3.0 subset)
EXT_transform_feedbackdone
NV_depth_buffer_float
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_blend
ARB_sample_shading
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_shadermissing some limit queries and patch parameter specification function
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_attachments
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_view
ARB_vertex_attrib_binding

OpenGL 4.4

ExtensionStatus
GLSL 4.40done
GL_MAX_VERTEX_ATTRIB_STRIDE
ARB_buffer_storage
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_control
ARB_conditional_render_inverteddone
ARB_cull_distance
ARB_derivative_controldone (shading language only)
ARB_direct_state_accessdone for implemented functionality (except VAOs)
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_query
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
KHR_texture_compression_astc_ldrdone
KHR_robust_buffer_access_behaviordone (nothing to do)
KHR_blend_equation_advanceddone
KHR_blend_equation_advanced_coherentdone

Vendor OpenGL extensions

ExtensionStatus
AMD_transform_feedback3_lines_trianglesdone (nothing to do)
AMD_vertex_shader_layerdone (shading language only)
AMD_shader_trinary_minmaxdone (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_direct_state_accessdone for implemented functionality
EXT_texture_sRGB_decodedone
EXT_shader_integer_mixdone (shading language only)
EXT_debug_labelmissing pipeline and sampler label
EXT_debug_markerdone
GREMEDY_string_markerdone

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_indexed
EXT_geometry_shadermissing some ES-specific limit queries
EXT_gpu_shader5done (shading language only)
EXT_shader_io_blocksdone (shading language only)
EXT_tessellation_shadersee above
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_shading
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

ExtensionStatus
ANGLE_framebuffer_blitdone
ANGLE_framebuffer_multisampledone
ANGLE_instanced_arraysdone
ANGLE_depth_texturedone
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
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)
APPLE_texture_format_BGRA8888done
ARM_shader_framebuffer_fetchmissing renderer setup and limit query
ARM_shader_framebuffer_fetch_depth_stencildone (shading language only)
EXT_texture_filter_anisotropicdone
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_shader_integer_mixdone (shading language only)
KHR_texture_compression_astc_hdrdone
KHR_blend_equation_advanced_coherentdone
KHR_context_flush_control
KHR_no_errordone
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_polygon_modedone
OES_depth32done
OES_mapbufferdone
OES_stencil1done
OES_stencil4done
OES_texture_float_lineardone

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

ExtensionStatus
ANGLE_instanced_arraysdone
EXT_color_buffer_half_float
EXT_blend_minmaxdone
EXT_shader_texture_loddone (shading language only)
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 to match desktop functionality

ExtensionStatus
EXT_texture_filter_anisotropicdone
EXT_sRGBdone
EXT_disjoint_timer_queryonly time elapsed query
EXT_color_buffer_float
OES_texture_float_lineardone
WEBGL_compressed_texture_s3tcdone

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 (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.
  • glglPixelStore() 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

  • INTEL_map_texture negatively affects texture access performance. Combination of buffer mapping and pixel buffers might be of the same or better performance, without affecting texture access speed.
  • NV_draw_texture can be done with framebuffer blitting and doesn't make any full-screen postprocessing easier, as shaders are excluded.