API Extension List - API Extension List - AM026

Versal AI Edge Series Gen 2 and Prime Series Gen 2 Technical Reference Manual (AM026)

Document ID
AM026
Release Date
2025-12-23
Revision
1.3 English
Table 1. For Vulkan
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:

  • 2D and 2D array image views on 3D images.
  • Data copies between 3D and 2D array images.
  • Trimming command pool memory.
  • y-inverted viewports.

VK_KHR_maintenance2
  • Allow uncompressed image views of compressed images.
  • Allow clipping behavior of points.
  • Support for upper-left and lower-left origins for the tessellation space.

VK_KHR_shader_draw_parameters

Enables shader access to three extra built-in variables containing draw call parameters:

  • BaseInstance
  • BaseVertex
  • DrawIndex

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.
Table 2. EGL
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:

  • This configuration produces a conformant context.
  • This configuration supports OpenVG rendering in linear color space.
  • This configuration supports OpenVG rendering with premultiplied alpha.
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:

  • 2D and 3D textures.
  • Cubemaps.
  • Render buffers.
Table 3. OpenCL
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.

  • CL_DEPTH
    • This format is available if channel datatype= CL_UNORM_INT16 or CL_FLOAT.
  • CL_UNORM_INT16
    • Each channel component is a normalized and unsigned 16-bit integer value.
  • CL_FLOAT
    • Each channel component is a single precision floating-point value.

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.
Table 4. Open GLES 2.0
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.
Table 5. OpenGL ES 3.0
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.
Table 6. OpenGL ES 3.1
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.