| Name | Description |
|---|---|
|
VK_ANDROID_native_buffer |
Provides entry points for vkAcquireImageANDROID, vkGetSwapchainGrallocUsageANDROID, vkQueueSignalReleaseImageANDROID to be used by the Android supplied Vulkan Loader. |
| VK_KHR_16bit_storage | Indicates which SPIR-V features can handle explicit 16-bit data types. The Mali driver supports all features: storageBuffer16BitAccess, uniformAndStorageBuffer16BitAccess, storagePushConstant16, and storageInputOutput16. |
| VK_KHR_dedicated_allocation | Enables binding of buffers or images to a dedicated allocation, rather than to a suballocated memory region. |
| VK_KHR_descriptor_update_template | Allows up dating a fixed set of descriptors in a single descriptor set from a pointer to a user-defined data structure describing the new descriptors. |
| VK_KHR_external_fence | Enables an application to create fence objects from which non Vulkan handles that reference the underlying synchronization primitive can be exported. |
| VK_KHR_external_fence_capabilities | Provides a set of capability queries and handle definitions that allow an application to determine what types of external fence handles an implementation supports for a given set of use cases. |
| VK_KHR_external_fence_fd | VK_KHR_external_fence_fd enables an application to import and export fence payload from POSIX file descriptors. |
| VK_KHR_external_memory_capabilities | Provides an interface to query which types of external memory handle the driver supports for specific use cases. |
| VK_KHR_external_semaphore | Enables an application to create semaphore objects from which non Vulkan handles that reference the underlying synchronization primitive can be exported. |
| VK_KHR_external_semaphore_capabilities | Provides an interface to query which types of external semaphore handle the driver supports for specific use cases. |
| VK_KHR_external_semaphore_fd | Enables an application to import and export semaphore payload from POSIX file descriptors. |
| VK_KHR_get_memory_requirements2 | Provides new, extendible API entry points for querying memory requirements of images and buffers. |
| VK_KHR_get_physical_device_properties2 | Provides extra entry points for querying device and format properties in an extensible way. |
| VK_KHR_image_format_list | Allows the constraint of image format aliases to enable further driver optimizations. |
| VK_KHR_maintenance1 |
Enables support for extra features that missed the Vulkan 1.0 core spec and other minor enhancements:
|
| VK_KHR_maintenance2 |
|
| VK_KHR_shader_draw_parameters |
Enables shader access to three extra built-in variables containing draw call parameters:
|
| VK_KHR_storage_buffer_storage_class | Indicates that SPIR-V code using the StorageBuffer storage class can be used. |
| VK_KHR_variable_pointers | Indicates up to which functional level pointers can be used by SPIR-V code. The Mali driver supports the VariablePointersStorageBuffer feature subset. |
| Name | Description |
|---|---|
| EGL_ANDROID_image_crop | Allows Android 4.4 onwards to communicate a crop rectangle to the EGL. This extension is only supported on some GPUs (It is supported for all Bifrost GPUs). |
| EGL_ANDROID_image_native_buffer | Allows the creation of an EGL image from an Android native buffer. This signal allows native buffers of this type to be drawn as textures without needing to be copied. |
| EGL_ANDROID_recordable | Allows the creation of an EGL surface capable of streaming rendering content to a video stream. |
| EGL_ANDROID_native_fence_sync | Allows the creation of Android-specific sync objects.These objects can be used to synchronize EGL and OpenGL ES command execution. |
| EGL_ANDROID_blob_cache | Provides a way for the application to efficiently cache compiled shader binaries. |
| EGL_ANDROID_framebuffer_target | Provides information about whether a certain floating-point EGL configuration is suited for hardware-accelerated compositing or not. |
| EGL_ARM_implicit_external_sync | Provides an attribute for fence sync objects, that signals on command submission instead of on completion. |
| EGL_ARM_pixmap_multisample_discard | Allows creation of EGL Surfaces that OpenGL ES can render to using the sRGB format. |
| EGL_EXT_client_extensions | Provides a mechanism to query EGL client extensions without a display. |
| EGL_EXT_create_context_robustness | Allows creation of OpenGL ES 3.2 contexts that support robust buffer access behavior and reset notification. |
| EGL_EXT_pixel_format_float | Provides the EGL_COLOR_COMPONENT_TYPE_EXT EGL Config attribute to expose floating-point configurations. |
|
EGL_EXT_platform_base EGL_KHR_platform_android |
EGL_EXT_platform_base and its extensions define the functionality and behavior of the DDK when multiple platforms are supported. The extensions that are exposed depends on the platform support that is built into the DDK, as determined by the winsys build option. |
| EGL_EXT_protected_content | Allows the creation of protected context, surface, orEGL Image. |
| EGL_EXT_protected_surface | Enables protected content to be rendered to an EGLwindow surface. |
| EGL_IMG_context_priority | Allows a context to be created with a priority hint, that are considered when scheduling resources. |
|
EGL_KHR_client_get_all_proc_addresses EGL_KHR_get_all_proc_addresses |
Allow query of non-extension EGL or client API functions. |
| EGL_KHR_config_attribs |
Adds EGL configuration attributes and attribute bits that express limitations of configurations on a per-API basis. The configuration attributes include:
|
| EGL_KHR_create_context | Required to support GL_KHR_Debug, and OpenGL ES 3.2 context creation. |
| EGL_KHR_fence_sync | Allows the creation of fence sync objects. A fence sync object is used to wait for completion of the corresponding fence command. |
| EGL_KHR_mutable_render_buffer | Allows the toggling of front-buffer rendering for window surfaces after their initial creation. This signal allows for implementations to switch between back-buffered and single-buffered rendering without requiring re-creation of the surface. YUV and MSAA configurations are not compatible with this extension. |
| EGL_KHR_partial_update | Enables efficient partial updates of postable surfaces. |
| EGL_KHR_surfaceless_context | Allows the creation of surfaceless OpenGLES contexts. |
| EGL_KHR_wait_sync | Allows the ability to wait for signaling of sync objects in the server for a client API context. Instead of in the application thread that is bound to that context. |
|
EGL_KHR_image EGL_KHR_image_base |
This group of extensions supports sharing the 2D arrays of image data between client APIs. |
|
EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image |
This group of extensions supports creating EGL image objects from Open GLES resources, for example:
|
| Name | Description |
|---|---|
| cl_arm_core_id | The cl_arm_core_id extension provides a built-in function that returns the physical core id OpenCL Compute Unit, that a work-group is running on. Returns a uint that represents the physical core id, in the range 0 to CL_DEVICE_MAX_COMPUTE_UNITS-1 |
| cl_arm_import_memory | The cl_arm_import_memory extension allows different memory types to be imported based on the property argument that is passed to the API. |
| cl_arm_import_memory_dma_buf | The cl_arm_import_memory_dma_buf extension is for importing from a dma_buf file handle. It is a specialization of the cl_arm_import_memory extension string explicitly for the given property type CL_IMPORT_TYPE_DMA_BUF_ARM. |
| cl_arm_import_memory_host | The cl_arm_import_memory_host extension is for normal user-space allocations, such as those created using malloc. It is a specialization of the cl_arm_import_memory extension string explicitly for the given property type CL_IMPORT_TYPE_HOST_ARM. |
|
cl_arm_int8_dot_product cl_arm_int8_dot_product_accumulate cl_arm_int16_dot_product_accumulate |
These extensions add built-in functions giving direct access to specialized integer dot product instructions that are supported on some devices, that is, dot_arm. |
| cl_arm_non_uniform_work_group_size | The cl_arm_non_uniform_work_group_size extension allows a CL kernel job to be split into non-uniform work group sizes. Therefore, allowing efficient processing of oddly sized buffers and images. You enable this bypassing in the -cl-non-uniform-work-group-size as a compiler option. |
| cl_arm_printf | The printf Mali extension provides a mechanism for setting a call back function and buffer size.The constants are specified when calling clCreateContext as part of the properties list. The default for the callback function is, no call back function, so no output is received for that context. The buffer for printf is still allocated, even if the callback function is not set. |
| cl_arm_shared_virtual_memory | The cl_arm_shared_virtual_memory extension provides support for Shared Virtual Memory (SVM) feature in OpenCL 2.0 |
| cl_khr_byte_addressable_store | Enable extension to remove restrictions on byte-addressable stores. |
| cl_khr_depth_images |
Add support for depth images.
Use clCreateImage to create a depth image with an image_channel_data_type of CL_DEPTH and image_channel_order values of CL_UNORM_INT16 or CL_FLOAT. |
| cl_khr_egl_image | Enables creation of a cl_image from an EGLImage object. |
| cl_khr_fp16 | Support for the16-bit, half-precision, floating-point format. |
| cl_khr_icd | The ICD loader enables multiple OpenCL implementations to reside in the same system. Applications using the ICDloader can select an underlying OpenCL implementation for the OpenCL API calls. |
| cl_khr_image2d_from_buffer | This extension adds support for creating 2D images from a buffer. |
| cl_khr_int64_base_atomics | Optional extensions that implement atomic operations on 64-bit signed, and unsigned, integers to locations in __global and __local memory. |
| cl_khr_int64_extended_atomics | Optional extensions that implement atomic operations on 64-bit signed, and unsigned, integers to locations in __global and __local memory. |
| cl_khr_global_int32_base_atomics | Support for atomic operations on 32-bit signed and unsigned integers to locations in __global memory. |
| cl_khr_global_int32_extended_atomics | Support for atomic operations on 32-bit signed and unsigned integers to locations in __global memory. |
| cl_khr_local_int32_base_atomics | Support for atomic operations on 32-bit signed and unsigned integers to locations in __local memory. |
| cl_khr_local_int32_extended_atomics | Support for atomic operations on 32-bit signed and unsigned integers to locations in __local memory. |
| cl_khr_subgroups | Optional extension that adds support for implementation-controlled subgroups. |
| cl_khr_3d_image_writes | Enables writes to 3D image memory objects. |
| Name | Description |
|---|---|
| GL_ARM_mali_program_binary | This is a companion-extension to the GL_OES_get_program_binary extension that enables use of the program binary format that is supported by the GPUs. |
| GL_ARM_mali_shader_binary | Enables applications running on the GPU to use shaders that are precompiled with the ESSL shader compiler. |
| GL_ARM_rgba8 | Enables an RGBA8 renderbuffer storage format. Thisis a subset of GL_OES_rgb8_rgba8, that is supported for legacy reasons. |
| GL_ARM_shader_framebuffer_fetch | Allows reading of the previous fragment color from the frame buffer. |
| GL_ARM_shader_framebuffer_fetch_depth_stencil | Allows reading of the previous fragment depth and stencil values from the frame buffer. |
| GL_EXT_blend_minmax | Enables support for the MIN and MAX blend equations. |
| GL_EXT_color_buffer_half_float | Enables rendering to 16-bit floating-point formats: R16F, RG16F, RGB16F, and RGBA16F. |
| GL_EXT_color_buffer_float | Enables rendering to floating-point formats: R16F, RG16F, RGBA16F, R32F, RG23F, RGBA23F, and R11F_G11F_B10F. |
| GL_EXT_discard_framebuffer | Enables applications to mark the contents of frame buffer attachments as UNDEFINED. This can improve performance sometimes. |
| GL_EXT_disjoint_timer_query | Exposes query mechanisms useful for determining the amount of time it takes to fully complete a set of GL commands. |
| GL_EXT_multisampled_render_to_texture | Enables multi-sampled rendering to a color renderable texture, without requiring an explicit resolve of multi-sample data. |
| GL_EXT_occlusion_query_boolean | Allows applications to query whether any samples are drawn by a group of primitives. The application can use this information to cull draw calls. |
| GL_EXT_read_format_bgra | Enables support for the glReadPixel command to return data in BGRA order, rather than the usual RGBA. |
| GL_EXT_shadow_samplers | Enables the use of shadow samplers in ESSL 1.0 |
| GL_EXT_sRGB | Support for SRGB_EXT and SRGB_ALPHA_EXT texture formats. |
| GL_EXT_sRGB_write_control | Controls whether the conversion from linear space to sRGB at frame buffer write or blending time happens. |
| GL_EXT_texture_format_BGRA8888 | Enables texture data to be specified in BGRA order, rather than the usual RGBA. |
| GL_EXT_texture_rg | Enables support for one-component and two-component red and red-green texture formats. |
| GL_EXT_texture_storage | Enables a mechanism for specifying the entire structure of a texture in a single call. |
| GL_EXT_texture_type_2_10_10_10_REV | Enables a new texture type for unsigned data using 10 bits per texel for RGB and 2 bits per texel for Alpha. |
| GL_KHR_debug | Exposes advanced debugging hooks from the driver to applications. |
| GL_KHR_texture_compression_astc_ldr | Allows using the ASTC texture format in LDR, HDR,and 3D use cases. This extension is only exposed for Mali Bifrost GPUs that support the ASTC formats in hardware. |
| GL_KHR_texture_compression_astc_hdr | |
| GL_OES_texture_compression_astc | |
| GL_OES_compressed_ETC1_RGB8_texture | Enables support for compressed textures in the Ericsson Texture Compression (ETC) format. |
| GL_OES_compressed_paletted_texture | This extension permits direct support of palletized textures in OpenGL ES. This extension is only supported for compatibility reasons. The GPU does not directly support compressed palletized texture data. The driver decompresses palletized texture data to a non-compressed form. |
| GL_OES_depth_texture | Enables support for depth texture images for use in features such as shadow casting and displacement mapping. |
| GL_OES_depth_texture_cube_map | Enables support for cubemap depth textures, for usein shadow casting or other scenarios. |
| GL_OES_depth24 | Enables support for 24-bit depth components as a valid renderbuffer storage format. |
| GL_OES_EGL_image | Enables EGL image targets, such as texture and renderbuffer objects, from EGL Images. |
| GL_OES_EGL_image_external | Enables EGL image texture targets to be created from EGL Images. These textures can have formats that are not supported by OpenGL ES, such as YUV. |
| GL_OES_EGL_sync | Enables the use of EGL sync objects on an OpenGL ES context. |
| GL_OES_element_index_uint | Enables drawing indexed geometry with 32-bit indices. |
| GL_OES_fbo_render_mipmap | Enables rendering to any mip-map level of a texture. |
| GL_OES_get_program_binary | Enables applications to retrieve program binaries from the OpenGL ES driver, and to supply these binaries back to the driver in subsequent runs of the application. |
| GL_OES_mapbuffer | Enables applications to map the datastore of a bufferobject into their address spaces. |
| GL_OES_packed_depth_stencil | Enables support for a packed depth and stencil data where the values are interleaved in a single buffer with 24 bits for depth and 8 bits for stencil. |
| GL_OES_required_internalformat | Enables applications to specify the minimum numberof bits the driver can use to store texture data. |
| GL_OES_rgb8_rgba8 | Enables RGB8 and RGBA8 render buffer storage formats. |
| GL_OES_standard_derivatives | Enables the standard derivative built-in functions and semantics from OpenGL 2.0. This also contains ahint that controls the quality-performance trade-off. |
| GL_OES_surfaceless_context | Allows the creation of an OpenGL ES context without providing a surface for the default Frame Buffer Object (FBO). |
| GL_OES_texture_3D | Enables support for 3D texture maps. |
| GL_OES_texture_npot | Enables the use of REPEAT and MIRRORED_REPEAT wrap modes and minification filters with non-power-of-two textures, except for automatic mip mapping of NPOT textures. |
| GL_OES_vertex_array_object | Enables applications to rapidly switch between different sets of vertex array states by encapsulating these states into vertex array objects. |
| GL_OES_vertex_half_float | Enables vertex attributes such as vertex positions and texture coordinates to be specified as 16-bit floating-point values. |
| GL_EXT_texture_filter_anisotropic | Support the use of anisotropic textures. Only available on selected Bifrost GPUs, MaliTM‐G51 r1p1, MaliTM-G72 r0p3, and later. This extension is not available on any Midgard GPUs. |
| Name | Description |
|---|---|
| GL_ARM_shader_framebuffer_fetch | Allows reading of the previous fragment color from the FB |
| GL_ARM_shader_framebuffer_fetch_depth_stencil | Allows reading of the previous fragment depth and stencil values from the frame buffer. |
| GL_EXT_draw_buffers_indexed | Supports individual blend states per draw buffer. |
| GL_OES_draw_buffers_indexed | |
| GL_EXT_robustness | Supports safe-range data access by the GL implementation and support for querying reset status of the GL. |
| GL_EXT_shader_pixel_local_storage | Allows passing of pixel-local data between shader invocations. This signal can be used for efficient Geometry Buffer (G-Buffer) implementations. |
| GL_EXT_texture_sRGB_decode | Allows sampling of sRGB textures directly, without linearizing the color values. |
| GL_EXT_texture_sRGB_R8 | Allows efficient sRGB sampling for source images that are stored as a separate texture per channel. |
| GL_EXT_texture_sRGB_RG8 | Allows efficient sRGB sampling for source images that are stored with two channels. |
| GL_EXT_texture_border_clamp | Allows texture sampling to be clamped to a border color. |
| GL_OES_texture_border_clamp | |
| GL_EXT_YUV_target | Adds support for rendering to YUV images, sampling from YUV image while keeping the data in YUV color space, and adds new built-in shader functions that performs conversion from YUV <-> RGB |
| GL_KHR_blend_equation_advanced | Adds support for more blend equations. |
| GL_KHR_blend_equation_advanced_coherent | |
| GL_OES_shader_multisample_interpolation | Adds support for fine-granular control over subsample evaluation of varyings. |
| GL_OES_EGL_image_external_essl3 | Extends OES_EGL_image_external to support OpenGL ES Shading Language version 3.x |
| GL_OES_texture_stencil8 | Adds support for the STENCIL_INDEX8 texture format. |
| GL_OVR_multiview | Adds support for stereo rendering efficiency. When rendering for stereo, traversing the same set of objects and textures is performed twice, once for each eye. This extension adds the ability to render to multiple elements of a 2D texture array simultaneously. |
| GL_OVR_multiview2 | This extension relaxes the restriction in OVR_multiview that only gl_Position can depend on ViewID in the vertex shader. With this change, view-dependent outputs like reflection vectors and similar are allowed. |
| GL_OVR_multiview_multisampled_render_to_texture | Enables multi-sampled rendering to a color renderable texture, without requiring an explicit resolve of multi-sample data. |
| GL_EXT_texture_compression_astc_decode_mode GL_EXT_texture_compression_astc_decode_mode_rgb9e5 |
Allows specifying lower precision ASTCLDR texture decode. In many cases, decompressing LDR textures to a lower precision intermediate result, gives acceptable image quality because source material for LDR textures is typically authored as 8-bit UNORM values. Lowering the precision improves cache performance and saves power. |
| Name | Description |
|---|---|
| GL_EXT_buffer_storage | Applies the concept of immutable storage to buffer objects. |
| GL_EXT_copy_image | Enables direct image data transfer between image objects. |
| GL_OES_copy_image | |
| GL_EXT_geometry_shader | Enables support for geometry shaders. |
| GL_OES_geometry_shader | |
| GL_EXT_gpu_shader5 | Provides extra language and functional extensions to the ESSL 3.1 shading language. |
| GL_OES_gpu_shader5 | |
| GL_EXT_primitive_bounding_box | Allows specification of a bounding box that is expected to contain all the primitives that are generated by tessellation and geometry shaders. |
| GL_OES_primitive_bounding_box | |
| GL_EXT_protected_textures | Enables allocating standard OpenGL textures as protected surfaces. |
| GL_EXT_shader_io_blocks | Extends the functionality of interface blocks to support input and output interfaces. |
| GL_OES_shader_io_blocks | |
| GL_EXT_tessellation_shader | Enables support for tessellation control and tessellation evaluation shaders. |
| GL_OES_tessellation_shader | |
| GL_EXT_texture_buffer | Allows an OpenGL ES buffer object to define the backing memory for a texture. |
| GL_OES_texture_buffer | |
| GL_EXT_texture_cube_map_array | Adds support for textures forming arrays of cubemaps. |
| GL_OES_texture_cube_map_array | |
| GL_OES_sample_shading | Controls the minimum number of samples for independently interpolated attribute data. |
| GL_OES_sample_variables | Allows per-sample control when doing multi-sampled rendering operations. Provides access to the sample ID, sample position, and coverage mask of a fragment. |
| GL_OES_shader_image_atomic | Enables atomic read-modify-write operations on images in ESSL3.1 shaders. |
| GL_OES_texture_storage_multisample_2d_array | Allows creation of multi-sampled 2D array textures. |
| GL_OES_draw_elements_base_vertex | Allows the selection of a base vertex offset value, which is added to every DrawElements vertex index. |
| GL_KHR_robustness | Generates a CONTEXT_LOST error after a reset event. |
| GL_KHR_robust_buffer_access_behavior | Enables a well-defined behavior for out-of-bounds buffer and array accesses. |