kc3-lang/angle/src/libANGLE/renderer/gl/FeatureSupportGL.md

Download

ANGLE RendererGL feature support

Documentation of OpenGL ES and EGL features, caps and formats and required extensions.

OpenGL ES Feature Support

Feature OpenGL version OpenGL extension OpenGL ES version OpenGL ES extension Notes
Framebuffer/renderbuffer objects 3.0 GL_EXT_framebuffer_object 2.0 Can potentially be emulated with Pbuffers but realistically this extension is always required.

|Blit framebuffer|3.0|GL_EXT_framebuffer_blit|3.0|GL_ANGLE_framebuffer_blit or GL_NV_framebuffer_blit|| |Multisampling|3.0|GL_EXT_framebuffer_multisample|3.0|GL_EXT_multisampled_render_to_texture or GL_ANGLE_framebuffer_multisample|| |Depth textures|3.0|GL_ARB_depth_texture|3.0|GL_OES_depth_texture or GL_ANGLE_depth_texture |Draw buffers (MRT)|2.0?|GL_ARB_draw_buffers or GL_EXT_draw_buffers2|3.0|GL_EXT_draw_buffers|| |3D textures|1.2|GL_EXT_texture3D|3.0|GL_OES_texture_3D|| |Array textures|3.0|GL_EXT_texture_array|3.0|–|| |Texture storage|4.2|GL_EXT_texture_storage|3.0|GL_EXT_texture_storage|Can be emulated with TexImage calls.| |Uniform buffer object|3.1|GL_ARB_uniform_buffer_object|3.0|–|| |Sync objects|3.2|GL_ARB_sync|3.0|–|| |Fence objects|–|GL_NV_fence|–|GL_NV_fence|| |MapBuffer|1.5|–|–|GL_OES_mapbuffer|| |MapBufferRange|3.0|GL_ARB_map_buffer_range|3.0|GL_EXT_map_buffer_range|| |Transform feedback|3.0|GL_EXT_transform_feedback or GL_EXT_transform_feedback2 or GL_ARB_transform_feedback3|3.0|–|| |Sampler object|3.3|GL_ARB_sampler_objects|3.0|–|| |Occlusion query|1.5|GL_ARB_occlusion_query|2.0|–|| |Timer query|3.3|GL_ARB_timer_query|–|GL_EXT_disjoint_timer_query|| |Vertex array object|3.0|GL_ARB_vertex_array_object|3.0|GL_OES_vertex_array_object|Can be emulated but costsmany extra API calls. Virtualized contexts also require some kind of emulation of the default attribute state.| |Anisotropic filtering|–|GL_EXT_texture_filter_anisotropic|–|GL_EXT_texture_filter_anisotropic|Ubiquitous extension.|

OpenGL ES Caps

Cap(s) OpenGL version OpenGL extension OpenGL ES version OpenGL ES extension Notes
GL_MAX_ELEMENT_INDEX 4.3 GL_ARB_ES3_compatibility 3.0 Seems pretty safe to use an arbitrary limit, all implementations tested return 0xFFFFFFFF.

|GL_MAX_3D_TEXTURE_SIZE|1.2|GL_EXT_texture3D|3.0|GL_OES_texture_3D|| |GL_MAX_TEXTURE_SIZE|1.0|–|2.0|–|| |GL_MAX_CUBE_MAP_TEXTURE_SIZE|1.3|–|2.0|| |GL_MAX_ARRAY_TEXTURE_LAYERS|3.0|GL_EXT_texture_array|3.0|–|| |GL_MAX_TEXTURE_LOD_BIAS|1.5|GL_EXT_texture_lod_bias|3.0|–|| |GL_MAX_RENDERBUFFER_SIZE GL_MAX_COLOR_ATTACHMENTS|3.0|GL_EXT_framebuffer_object |2.0|–|| |GL_MAX_DRAW_BUFFERS|2.0?|GL_ARB_draw_buffers or GL_EXT_draw_buffers2|3.0|GL_EXT_draw_buffers|| |GL_MAX_VIEWPORT_DIMS|1.0|–|2.0|–|| |GL_ALIASED_POINT_SIZE_RANGE|1.0?|–|2.0|–|| |GL_ALIASED_LINE_WIDTH_RANGE|1.2|–|2.0|–|| |GL_ALIASED_LINE_WIDTH_RANGE|1.2|–|2.0|–|| |GL_MAX_ELEMENTS_INDICES|1.2|–|3.0|–|| |GL_MAX_ELEMENTS_VERTICES|1.2|–|3.0|–|| |Shader format precision (glGetShaderPrecisionFormat)|4.1|GL_ARB_ES2_compatibility|2.0|–|Can use reasonable default values (IEEE float and twos complement integer).| |GL_MAX_VERTEX_ATTRIBS|2.0|–|2.0|–|| |GL_MAX_VERTEX_UNIFORM_COMPONENTS|2.0|–|2.0|–|| |GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS|2.0|–|2.0|–|| |GL_MAX_VERTEX_UNIFORM_VECTORS GL_MAX_FRAGMENT_UNIFORM_VECTORS|4.1|GL_ARB_ES2_compatibility|2.0|–|Defined as GL_MAX_VERTEX_UNIFORM_COMPONENTS / 4 and GL_MAX_FRAGMENT_UNIFORM_COMPONENTS / 4. Can simply use those values when the cap is not available.| |GL_MAX_VERTEX_UNIFORM_BLOCKS GL_MAX_FRAGMENT_UNIFORM_BLOCKS GL_MAX_UNIFORM_BUFFER_BINDINGS GL_MAX_UNIFORM_BLOCK_SIZE GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT GL_MAX_COMBINED_UNIFORM_BLOCKS GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS |3.1|GL_ARB_uniform_buffer_object|3.0|–|| |GL_MAX_VERTEX_OUTPUT_COMPONENTS|3.2|–|3.0|–|Doesn’t seem to be a desktop extension for this cap, it may be possible to use the minimum ES3 value (64) if lower than GL 3.2.| |GL_MAX_FRAGMENT_UNIFORM_COMPONENTS|2.0|–|2.0|–|| |GL_MAX_TEXTURE_IMAGE_UNITS|2.0|–|2.0|–|| |GL_MAX_FRAGMENT_INPUT_COMPONENTS|3.2|–|3.0|–|Doesn’t seem to be a desktop extension for this cap either, it may be possible to use the minimum ES3 value (60) if lower than GL 3.2.| |GL_MIN_PROGRAM_TEXEL_OFFSET GL_MAX_PROGRAM_TEXEL_OFFSET|3.0|–|3.0|–|Could potentially be emulated in the shader by adding the offsets in normalized texture coordinates before sampling.| |GL_MAX_VARYING_COMPONENTS|3.0|GL_ARB_ES3_compatibility|3.0|–|Was depricated in the OpenGL core spec but re-added in GL_ARB_ES3_compatibility| |GL_MAX_VARYING_VECTORS|4.1|GL_ARB_ES2_compatibility|2.0|–|Defined as GL_MAX_VARYING_COMPONENTS / 4.| |GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS|3.0|GL_EXT_transform_feedback or GL_EXT_transform_feedback2 or GL_ARB_transform_feedback3|3.0|– |GL_MAX_SAMPLES|3.0|GL_EXT_framebuffer_multisample|3.0|GL_EXT_multisampled_render_to_texture or GL_ANGLE_framebuffer_multisample|| |GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT|–|GL_EXT_texture_filter_anisotropic|–|GL_EXT_texture_filter_anisotropic|Ubiquitous extension.| |IMPLEMENTATION_COLOR_READ_FORMAT IMPLEMENTATION_COLOR_READ_TYPE|–|GL_ARB_ES2_compatibility|2.0|–|Desktop GL doesn’t as many limitations as ES for ReadPixels, can either always return GL_RGBA/GL_UNSIGNED_BYTE or return the format and type of the read buffer.|

##OpenGL ES Formats (TODO) |Format|OpenGL version|OpenGL extension|OpenGL ES version|OpenGL ES extension|Notes| |—|—|—|—|—|—| |GL_RGBA8<br>GL_RGB8 |1.0|–|3.0|GL_OES_rgb8_rgba8||

ESSL Features (TODO)

Feature GLSL version Notes

|Unsigned integers|1.30|| |Pack layout std140|1.40||

ESSL3 Builtins

Builtins that are added going from ESSL1 to ESSL3.

Function GLSL version Extension Notes

|sinh<br>cosh<br>tanh<br>asinh<br>acosh|1.30||| |atanh|1.10||| |abs (genIType)|1.30|GL_EXT_gpu_shader4|| |sign (genIType)|1.50|GL_EXT_gpu_shader4|Can be emulated easily.| |trunc|1.30||| |round<br>roundEven|1.30||| |min (genIType, genUType)<br>max (genIType, genUType)<br>clamp (genIType, genUType)|1.30|| |mix (genBType)|4.50|GL_EXT_shader_integer_mix|Should be possible to emulate with a ternery operation.| |modf|1.30||| |isnan|1.30||| |isinf|1.10||| |floatBitsToInt<br>floatBitsToUint<br>intBitsToFloat<br>uintBitsToFloat|3.30|GL_ARB_shader_bit_encoding or ARB_gpu_shader5|| |packSnorm2x16<br>packHalf2x16<br>unpackSnorm2x16<br>unpackHalf2x16|4.20|GL_ARB_shading_language_packing|Can be emulated using bit casting functions.| |packUnorm2x16<br>unpackUnorm2x16|4.10|GL_ARB_shading_language_packing|Can be emulated using bit casting functions.| |matrixCompMult (NxM matrices)|1.10||| |outerProduct|1.20||| |transpose|1.20||| |determinant|1.50||Can be emulated.| |inverse|1.40||Can be emulated.| |lessThan (uvec)<br>lessThanEqual (uvec)<br>greaterThan (uvec)<br>greaterThanEqual (uvec)<br>equal (uvec)<br>notEqual (uvec)|1.30||| |texture<br>textureProj<br>textureLod<br>textureOffset<br>textureProjOffset<br>textureLodOffset<br>textureProjLod<br>textureProjLodOffset<br>texelFetch<br>texelFetchOffset<br>textureGrad<br>textureGradOffset<br>textureProjGrad<br>textureProjGradOffset<br>textureSize|1.30||Equivalent to texture2D, textureCube, etc| |dFdx<br>dFdy<br>fwidth|1.10||

EGL Feature Support (TODO)

Feature EGL version EGL extension WGL core WGL extension GLX version GLX extensions Notes

|Pbuffers|||No|WGL_ARB_pbuffer|||| |BindTexImage|||No|WGL_ARB_render_texture|||Possibly to emulate with OpenGL textures but not strictly required, it is possible only export EGL configs without EGL_BIND_TO_TEXTURE_RGB and EGL_BIND_TO_TEXTURE_RGBA. Bindable pbuffers may be required by Chrome though.| |Pixmaps|||||||| |Swap control|||No|WGL_EXT_swap_control|No|GLX_EXT_swap_control||


Source

Download