Support state
List of (un)supported OpenGL features and extensions.
Contents
-
OpenGL implementation state
- OpenGL 2.1
- OpenGL 3.0
- OpenGL 3.1
- OpenGL 3.2
- OpenGL 3.3
- OpenGL 4.0
- OpenGL 4.1
- OpenGL 4.2
- OpenGL 4.3
- OpenGL 4.4
- OpenGL 4.5
- OpenGL 4.6
- ARB / Khronos OpenGL extensions
- Vendor OpenGL extensions
- OpenGL ES 2.0
- OpenGL ES 3.0
- OpenGL ES 3.1
- OpenGL ES 3.2
- OpenGL ES 2.0 extensions to match ES 3.0 functionality
- OpenGL ES extensions
- WebGL 1.0
- WebGL 2.0
- WebGL 1.0 extensions to match WebGL 2.0 functionality
- WebGL extensions to match desktop functionality
- Unsupported OpenGL features
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
Extension | Status |
---|---|
GLSL 1.30 | done |
glClearBuffer() functions | done |
ARB_ | done |
ARB_ | |
ARB_ | done |
ARB_ | done |
ARB_ | done |
ARB_ | done |
ARB_ | done |
ARB_ | done |
ARB_ | done |
ARB_ | done |
EXT_ | done |
EXT_ | done |
EXT_ | done |
EXT_ | done |
EXT_ | done |
EXT_ | |
EXT_ | done (GL 3.0 subset) |
EXT_ | done |
NV_ | |
NV_ | done |
OpenGL 3.1
Extension | Status |
---|---|
GLSL 1.40 | done |
ARB_ | done |
ARB_ | done |
ARB_ | done |
ARB_ | done except for data layout queries |
ARB_ | done |
EXT_ | done |
NV_ |
OpenGL 3.2
Extension | Status |
---|---|
GLSL 1.50 | done |
ARB_ | missing some limit queries |
ARB_ | done |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | done |
ARB_ | done |
ARB_ | |
ARB_ | missing sample location queries and sample mask |
ARB_ | done |
OpenGL 3.3
Extension | Status |
---|---|
GLSL 3.30 | done |
ARB_ | done |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | done |
ARB_ | |
ARB_ | done (shading language only) |
ARB_ | done |
ARB_ | done |
ARB_ | missing direct query |
ARB_ | done |
OpenGL 4.0
Extension | Status |
---|---|
GLSL 4.00 | done |
ARB_ | |
ARB_ | |
ARB_ | done |
ARB_ | missing limit queries |
ARB_ | done (shading language only) |
ARB_ | |
ARB_ | missing limit queries |
ARB_ | done |
ARB_ | |
ARB_ | missing some limit queries and patch parameter specification function |
ARB_ | done |
ARB_ | done |
ARB_ | missing indexed properties query |
OpenGL 4.1
Extension | Status |
---|---|
GLSL 4.10 | done |
ARB_ | only float depth clear |
ARB_ | |
ARB_ | only direct uniform binding |
ARB_ | done (shading language only) |
ARB_ | done |
ARB_ |
OpenGL 4.2
Extension | Status |
---|---|
GLSL 4.20 | done |
ARB_ | done |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | done |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | |
ARB_ | done |
ARB_ | done |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | done |
OpenGL 4.3
Extension | Status |
---|---|
GLSL 4.30 | done |
ARB_ | done (shading language only) |
ARB_ | only conservative sample query and compression formats |
ARB_ | |
ARB_ | done except for indirect dispatch |
ARB_ | |
KHR_ | missing log retrieval, sync, pipeline and sampler label |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | |
ARB_ | only compressed texture block queries |
ARB_ | done |
ARB_ | |
ARB_ | |
ARB_ | done (nothing to do) |
ARB_ | done (shading language only) |
ARB_ | missing (unneeded) block binding |
ARB_ | done |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | done |
ARB_ | |
ARB_ |
OpenGL 4.4
Extension | Status |
---|---|
GLSL 4.40 | done |
GL_MAX_VERTEX_ATTRIB_STRIDE | |
ARB_ | |
ARB_ | |
ARB_ | done (shading language only) |
ARB_ | missing sampler and vertex buffer binding |
ARB_ | |
ARB_ | done |
ARB_ | done |
ARB_ | done |
OpenGL 4.5
Extension | Status |
---|---|
GLSL 4.50 | done |
ARB_ | done |
ARB_ | |
ARB_ | done |
ARB_ | |
ARB_ | done (shading language only) |
ARB_ | done for implemented functionality (except VAOs) |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | done |
KHR_ | |
KHR_ |
OpenGL 4.6
Extension | Status |
---|---|
GLSL 4.60 | done |
ARB_ | |
ARB_ | done (shading language only) |
ARB_ | done (shading language only) |
ARB_ | |
ARB_ | done |
ARB_ | done (shading language only) |
ARB_ | |
ARB_ | |
ARB_ | |
ARB_ | done |
KHR_ | done |
ARB / Khronos OpenGL extensions
Vendor OpenGL extensions
Extension | Status |
---|---|
AMD_ | done (nothing to do) |
AMD_ | done (shading language only) |
AMD_ | done (shading language only) |
ATI_ | done (GL 4.4 subset) |
EXT_ | done |
EXT_ | done |
EXT_ | only GL 4.4 subset |
EXT_ | done for implemented functionality |
EXT_ | done |
EXT_ | done (shading language only) |
EXT_ | missing pipeline and sampler label |
EXT_ | done |
GREMEDY_ | done |
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.
Extension | Status |
---|---|
EXT_ | |
EXT_ | |
EXT_ | |
EXT_ | |
EXT_ | missing some ES-specific limit queries |
EXT_ | done (shading language only) |
EXT_ | done (shading language only) |
EXT_ | see above |
EXT_ | done |
EXT_ | done |
EXT_ | done |
EXT_ | |
KHR_ | done |
KHR_ | see above |
KHR_ | done |
KHR_ | |
KHR_ | done (nothing to do) |
OES_ | |
OES_ | done (shading language only) |
OES_ | done (shading language only) |
OES_ | |
OES_ | done |
OES_ | done |
OpenGL ES 2.0 extensions to match ES 3.0 functionality
OpenGL ES extensions
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
Extension | Status |
---|---|
ANGLE_ | done |
EXT_ | |
EXT_ | done |
EXT_ | done (shading language only) |
OES_ | done |
OES_ | done |
OES_ | done |
OES_ | done |
OES_ | done |
OES_ | done |
OES_ | done |
WEBGL_ | done |
WEBGL_ | |
WEBGL_ | done |
WebGL extensions to match desktop functionality
Extension | Status |
---|---|
EXT_ | done |
EXT_ | done |
EXT_ | only time elapsed query |
EXT_ | |
OES_ | done |
WEBGL_ | done |
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
- ARB_
shading_ language_ include is overly complicated and supported exclusively by NVidia - ARB_
cl_ event seems to be not supported anywhere - ARB_
shader_ stencil_ export is supported exclusively by AMD
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.