This page is a graphical representation of the text file docs/features.txt from the Mesa repository.

Although this text file is updated by the Mesa developers themselves, it might not contain an exhaustive list of each drivers features and subtleties. For more information, it is advised to look at the source code or ask the developers on their mailing list.

Feel free to open an issue or create a PR on GitHub, or join the Matrix room #mesamatrix:matrix.org.

Last commits

Age Commit message
2024-12-18 08:33 panvk: enable shaderDrawParameters
2024-12-11 13:19 panvk: expose scalarBlockLayout
2024-12-09 21:16 panvk: expose EXT_4444_formats
2024-12-09 20:31 panvk: advertise multiview support on v10+
2024-12-06 10:40 panvk: advertise VK_EXT_provoking_vertex
2024-12-04 21:34 panvk: expose KHR_dedicated_allocation
2024-12-02 20:58 panvk: enable shaderInt8, VK_KHR_8bit_storage and VK_KHR_shader_float16_int8
2024-11-25 18:33 panvk: Advertise VK_EXT_pipeline_robustness
2024-11-25 18:33 panvk: Advertise VK_EXT_image_robustness
2024-11-25 17:19 docs: add missing panfrost extensions
More...

Vulkan

There are a total of 249 extensions to implement. The ranking is based on the current number of extensions implemented per driver.

# Driver Extensions Version
1 mesa (98.0%) 244 1.3
2 radv (92.4%) 230 1.3
3 anv (82.3%) 205 1.3
4 nvk (73.1%) 182 1.3
5 tu (71.1%) 177 1.3
6 lvp (61.8%) 154 1.3
7 vn (53.4%) 133 1.3
8 hasvk (51.4%) 128 N/A
9 v3dv (47.4%) 118 1.0
10 panvk (33.3%) 83 1.0
11 dzn (23.3%) 58 1.0
12 pvr (14.1%) 35 N/A
Drivers details

Vulkan 1.3

AMD Arm Broadcom Intel Nvidia PowerVR Qualcomm Software Translation
Extension mesa radv panvk v3dv anv hasvk nvk pvr tu lvp dzn vn
100.0% 100.0% 50.0% 100.0% 100.0% 91.7% 100.0% 20.8% 100.0% 100.0% 12.5% 100.0%
VK_KHR_copy_commands2
VK_KHR_dynamic_rendering 2024-10-15 2024-03-19
VK_KHR_format_feature_flags2
VK_KHR_maintenance4
VK_KHR_shader_integer_dot_product
VK_KHR_shader_non_semantic_info 2024-11-18
VK_KHR_shader_relaxed_extended_instruction 2024-09-16 2024-09-16 2024-11-18 2024-09-16 2024-09-16 2024-09-16 2024-09-16 2024-09-16 2024-09-16 2024-09-16
VK_KHR_shader_terminate_invocation
VK_KHR_synchronization2
VK_KHR_zero_initialize_workgroup_memory 2024-11-18 2024-01-14
VK_EXT_4444_formats 2024-12-09
VK_EXT_extended_dynamic_state 2024-04-26
VK_EXT_extended_dynamic_state2 2024-05-08
VK_EXT_inline_uniform_block
VK_EXT_pipeline_creation_cache_control 2024-06-17 2024-01-09
VK_EXT_pipeline_creation_feedback 2024-06-17 2024-01-09
VK_EXT_private_data 2024-07-24
VK_EXT_image_robustness 2024-11-25
VK_EXT_shader_demote_to_helper_invocation 2024-01-09
VK_EXT_subgroup_size_control 2024-01-11
VK_EXT_texel_buffer_alignment
VK_EXT_texture_compression_astc_hdr 2024-08-05 2024-01-27
VK_EXT_tooling_info 2024-11-18
VK_EXT_ycbcr_2plane_444_formats 2024-08-05

Vulkan 1.2

AMD Arm Broadcom Intel Nvidia PowerVR Qualcomm Software Translation
Extension mesa radv panvk v3dv anv hasvk nvk pvr tu lvp dzn vn
100.0% 100.0% 45.8% 70.8% 100.0% 87.5% 100.0% 20.8% 100.0% 100.0% 70.8% 100.0%
VK_KHR_8bit_storage 2024-12-02 2024-01-29 2024-07-03
VK_KHR_buffer_device_address 2024-06-17 2024-01-29
VK_KHR_create_renderpass2 2024-10-30
VK_KHR_depth_stencil_resolve
VK_KHR_draw_indirect_count
VK_KHR_driver_properties 2024-04-19
VK_KHR_image_format_list 2024-10-22
VK_KHR_imageless_framebuffer
VK_KHR_sampler_mirror_clamp_to_edge 2024-06-26
VK_KHR_separate_depth_stencil_layouts
VK_KHR_shader_atomic_int64 2024-01-29 2024-10-21
VK_KHR_shader_float16_int8 2024-12-02 2024-01-29 2024-01-27
VK_KHR_shader_float_controls 2024-01-29
VK_KHR_shader_subgroup_extended_types 2024-01-29 2024-01-14
VK_KHR_spirv_1_4
VK_KHR_timeline_semaphore 2024-11-04
VK_KHR_uniform_buffer_standard_layout
VK_KHR_vulkan_memory_model
VK_EXT_descriptor_indexing 2024-01-29
VK_EXT_host_query_reset 2024-11-19
VK_EXT_sampler_filter_minmax 2024-11-19 2024-01-29
VK_EXT_scalar_block_layout 2024-12-11 2024-11-14
VK_EXT_separate_stencil_usage
VK_EXT_shader_viewport_index_layer

Vulkan 1.1

AMD Arm Broadcom Intel Nvidia PowerVR Qualcomm Software Translation
Extension mesa radv panvk v3dv anv hasvk nvk pvr tu lvp dzn vn
100.0% 100.0% 95.7% 95.7% 100.0% 100.0% 100.0% 39.1% 100.0% 100.0% 82.6% 100.0%
VK_KHR_16bit_storage 2024-10-31 2024-01-29 2024-03-26
VK_KHR_bind_memory2 2024-10-14
VK_KHR_dedicated_allocation 2024-12-04
VK_KHR_descriptor_update_template
VK_KHR_device_group 2024-06-17
VK_KHR_device_group_creation 2024-06-17
VK_KHR_external_fence 2024-10-14
VK_KHR_external_fence_capabilities 2024-10-14
VK_KHR_external_memory 2024-10-14
VK_KHR_external_memory_capabilities 2024-10-14
VK_KHR_external_semaphore 2024-10-14
VK_KHR_external_semaphore_capabilities 2024-10-14
VK_KHR_get_memory_requirements2 2024-10-02
VK_KHR_get_physical_device_properties2
VK_KHR_maintenance1 2024-10-02
VK_KHR_maintenance2 2024-10-14
VK_KHR_maintenance3 2024-06-17
VK_KHR_multiview 2024-12-09
VK_KHR_relaxed_block_layout 2024-10-14
VK_KHR_sampler_ycbcr_conversion
VK_KHR_shader_draw_parameters 2024-12-18
VK_KHR_storage_buffer_storage_class
VK_KHR_variable_pointers

Vulkan 1.0

AMD Arm Broadcom Intel Nvidia PowerVR Qualcomm Software Translation
Extension mesa radv panvk v3dv anv hasvk nvk pvr tu lvp dzn vn
100.0% 100.0% 100.0% 100.0% 100.0% 0.0% 100.0% 0.0% 100.0% 100.0% 100.0% 100.0%
All extensions 2024-10-30

Extensions that are not part of any Vulkan version

AMD Arm Broadcom Intel Nvidia PowerVR Qualcomm Software Translation
Extension mesa radv panvk v3dv anv hasvk nvk pvr tu lvp dzn vn
97.2% 89.3% 20.9% 30.5% 75.1% 35.0% 62.1% 9.0% 59.3% 46.3% 10.2% 34.5%
VK_KHR_acceleration_structure 2024-03-06
VK_KHR_android_surface
VK_KHR_calibrated_timestamps 2024-01-29 2024-03-21 2024-09-23
VK_KHR_compute_shader_derivatives 2024-09-10 2024-09-11 2024-09-10 2024-09-10 2024-10-10
VK_KHR_cooperative_matrix 2024-01-29
VK_KHR_deferred_host_operations 2024-03-06
VK_KHR_display 2024-02-16
VK_KHR_display_swapchain
VK_KHR_dynamic_rendering_local_read 2024-01-30 2024-05-07 2024-11-20 2024-09-05 2024-10-17 2024-01-30
VK_KHR_external_fence_fd 2024-10-16
VK_KHR_external_fence_win32
VK_KHR_external_memory_fd 2024-10-16
VK_KHR_external_memory_win32
VK_KHR_external_semaphore_fd 2024-10-16
VK_KHR_external_semaphore_win32
VK_KHR_fragment_shader_barycentric
VK_KHR_fragment_shading_rate 2024-10-10 2024-11-21 2024-03-04
VK_KHR_get_display_properties2 2024-02-16
VK_KHR_get_surface_capabilities2
VK_KHR_global_priority 2024-11-12 2024-01-29
VK_KHR_incremental_present 2024-02-25
VK_KHR_index_type_uint8 2024-01-26 2024-01-26 2024-11-20 2024-03-11 2024-01-29 2024-01-27 2024-03-27 2024-03-08
VK_KHR_line_rasterization 2024-01-26 2024-01-26 2024-03-11 2024-01-29 2024-01-27 2024-03-08
VK_KHR_load_store_op_none 2024-01-26 2024-01-26 2024-03-11 2024-01-29 2024-01-27 2024-03-08
VK_KHR_maintenance5 2024-06-17 2024-02-26 2024-05-22
VK_KHR_maintenance6 2024-01-09 2024-04-09 2024-01-29 2024-03-29 2024-05-28 2024-01-09
VK_KHR_maintenance7 2024-07-03 2024-07-03 2024-07-03 2024-08-29 2024-07-03
VK_KHR_performance_query 2024-01-29
VK_KHR_pipeline_binary 2024-09-10 2024-09-10
VK_KHR_pipeline_executable_properties 2024-06-17
VK_KHR_pipeline_library 2024-06-17 2024-02-29
VK_KHR_present_wait 2024-02-25
VK_KHR_push_descriptor 2024-10-30
VK_KHR_ray_query 2024-03-06
VK_KHR_ray_tracing_maintenance1
VK_KHR_ray_tracing_pipeline 2024-04-09
VK_KHR_ray_tracing_position_fetch 2024-01-29
VK_KHR_shader_clock
VK_KHR_shader_expect_assume 2024-01-30 2024-01-30 2024-01-30 2024-01-30 2024-01-30 2024-01-30 2024-01-30 2024-01-30 2024-01-30 2024-01-30 2024-01-30 2024-01-30
VK_KHR_shader_float_controls2 2024-06-24 2024-09-18 2024-06-24 2024-09-20 2024-06-24
VK_KHR_shader_maximal_reconvergence 2024-02-09 2024-02-09 2024-03-26 2024-03-26 2024-02-22
VK_KHR_shader_subgroup_rotate 2024-01-25 2024-01-25 2024-01-29 2024-04-19 2024-09-26
VK_KHR_shader_subgroup_uniform_control_flow 2024-03-25 2024-07-19
VK_KHR_shader_quad_control 2024-02-09 2024-02-09 2024-05-07 2024-10-02
VK_KHR_shared_presentable_image
VK_KHR_surface
VK_KHR_surface_protected_capabilities 2024-03-26
VK_KHR_swapchain
VK_KHR_swapchain_mutable_format
VK_KHR_vertex_attribute_divisor 2024-11-21 2024-03-11 2024-01-29 2024-03-13 2024-03-14
VK_KHR_wayland_surface
VK_KHR_workgroup_memory_explicit_layout 2024-08-20
VK_KHR_win32_keyed_mutex
VK_KHR_win32_surface
VK_KHR_xcb_surface 2024-10-30
VK_KHR_xlib_surface 2024-10-30
VK_EXT_acquire_xlib_display 2024-10-30
VK_EXT_attachment_feedback_loop_dynamic_state 2024-01-29 2024-08-01
VK_EXT_attachment_feedback_loop_layout 2024-01-29 2024-03-04
VK_EXT_border_color_swizzle
VK_EXT_buffer_device_address 2024-06-17 2024-01-29
VK_EXT_calibrated_timestamps 2024-03-21 2024-09-23
VK_EXT_color_write_enable
VK_EXT_conditional_rendering
VK_EXT_conservative_rasterization 2024-01-29 2024-05-14
VK_EXT_custom_border_color
VK_EXT_debug_marker
VK_EXT_debug_report 2024-10-30
VK_EXT_debug_utils 2024-06-26 2024-06-26 2024-06-26 2024-06-26 2024-06-26 2024-06-26 2024-06-26 2024-06-26 2024-06-26 2024-06-26 2024-06-26
VK_EXT_depth_bias_control
VK_EXT_depth_clamp_control 2024-09-30 2024-09-30 2024-09-30 2024-09-30 2024-09-30
VK_EXT_depth_clip_control
VK_EXT_depth_clip_enable 2024-10-30 2024-07-17
VK_EXT_depth_range_unrestricted 2024-05-02
VK_EXT_descriptor_buffer 2024-02-29 2024-08-13
VK_EXT_device_address_binding_report 2024-04-03 2024-04-03 2024-07-22
VK_EXT_device_fault
VK_EXT_device_generated_commands 2024-09-26 2024-10-28 2024-09-26
VK_EXT_device_memory_report
VK_EXT_direct_mode_display 2024-02-16
VK_EXT_discard_rectangles
VK_EXT_display_control 2024-03-15
VK_EXT_display_surface_counter 2024-02-16
VK_EXT_dynamic_rendering_unused_attachments
VK_EXT_extended_dynamic_state3
VK_EXT_external_memory_acquire_unmodified 2024-07-10
VK_EXT_external_memory_dma_buf 2024-10-16 2024-04-05
VK_EXT_external_memory_host
VK_EXT_filter_cubic 2024-03-26
VK_EXT_fragment_density_map 2024-08-01 2024-08-01
VK_EXT_fragment_shader_interlock 2024-01-29
VK_EXT_global_priority 2024-11-12
VK_EXT_global_priority_query 2024-11-12
VK_EXT_graphics_pipeline_library 2024-06-17 2024-02-27
VK_EXT_headless_surface 2024-02-06 2024-02-06 2024-02-06 2024-02-06 2024-02-06 2024-02-06 2024-02-06 2024-02-06 2024-02-06 2024-02-06 2024-02-06 2024-02-06
VK_EXT_host_image_copy 2024-09-28 2024-11-20 2024-09-28
VK_EXT_image_2d_view_of_3d
VK_EXT_image_compression_control
VK_EXT_image_drm_format_modifier 2024-10-22 2024-05-14
VK_EXT_image_sliced_view_of_3d
VK_EXT_image_view_min_lod
VK_EXT_index_type_uint8 2024-03-27
VK_EXT_legacy_vertex_attributes 2024-05-07 2024-05-13 2024-05-07 2024-08-24 2024-05-13 2024-05-07
VK_EXT_line_rasterization
VK_EXT_load_store_op_none
VK_EXT_memory_budget 2024-02-23 2024-01-26
VK_EXT_memory_priority
VK_EXT_mesh_shader
VK_EXT_multi_draw
VK_EXT_multisampled_render_to_single_sampled
VK_EXT_nested_command_buffer 2024-04-23 2024-01-29 2024-04-18 2024-05-24
VK_EXT_non_seamless_cube_map
VK_EXT_pageable_device_local_memory
VK_EXT_pci_bus_info
VK_EXT_physical_device_drm 2024-10-15
VK_EXT_pipeline_library_group_handles
VK_EXT_pipeline_protected_access 2024-11-20 2024-11-20
VK_EXT_pipeline_robustness 2024-11-25 2024-05-06 2024-10-17
VK_EXT_post_depth_coverage 2024-01-29 2024-08-13 2024-03-26
VK_EXT_primitive_topology_list_restart
VK_EXT_primitives_generated_query
VK_EXT_provoking_vertex 2024-12-06
VK_EXT_queue_family_foreign 2024-11-18 2024-09-05 2024-05-14 2024-04-05
VK_EXT_rasterization_order_attachment_access
VK_EXT_robustness2
VK_EXT_sample_locations 2024-03-26
VK_EXT_shader_atomic_float
VK_EXT_shader_atomic_float2 2024-01-29
VK_EXT_shader_image_atomic_int64
VK_EXT_shader_object 2024-04-08 2024-02-27
VK_EXT_shader_replicated_composites 2024-06-04 2024-06-04 2024-06-04 2024-06-04 2024-06-04 2024-06-04 2024-06-04 2024-06-04
VK_EXT_shader_stencil_export 2024-01-29
VK_EXT_shader_subgroup_ballot
VK_EXT_shader_subgroup_vote
VK_EXT_shader_module_identifier 2024-06-17 2024-01-09
VK_EXT_surface_maintenance1 2024-03-15 2024-03-15 2024-03-20 2024-03-20 2024-03-15 2024-04-16 2024-03-20
VK_EXT_swapchain_maintenance1 2024-03-15 2024-03-15 2024-03-20 2024-03-20 2024-03-15 2024-04-16 2024-03-20
VK_EXT_transform_feedback
VK_EXT_vertex_attribute_divisor
VK_EXT_vertex_input_dynamic_state
VK_EXT_ycbcr_image_arrays
VK_ANDROID_external_memory_android_hardware_buffer 2024-05-21
VK_ANDROID_native_buffer
VK_GOOGLE_decorate_string 2024-08-21 2024-03-21 2024-03-26
VK_GOOGLE_hlsl_functionality1 2024-08-21 2024-03-21 2024-03-26
VK_GOOGLE_user_type 2024-08-21 2024-03-21 2024-03-26
VK_IMG_filter_cubic 2024-03-26
VK_NV_compute_shader_derivatives 2024-09-10
VK_EXT_acquire_drm_display 2024-02-16
VK_VALVE_mutable_descriptor_type 2024-03-21
VK_AMD_buffer_marker 2024-01-29
VK_AMD_device_coherent_memory
VK_AMD_draw_indirect_count
VK_AMD_gcn_shader
VK_AMD_gpu_shader_half_float
VK_AMD_gpu_shader_int16
VK_AMD_memory_overallocation_behavior
VK_AMD_mixed_attachment_samples
VK_AMD_rasterization_order
VK_AMD_shader_ballot
VK_AMD_shader_core_properties
VK_AMD_shader_core_properties2
VK_AMD_shader_early_and_late_fragment_tests
VK_AMD_shader_explicit_vertex_parameter
VK_AMD_shader_fragment_mask
VK_AMD_shader_image_load_store_lod
VK_AMD_shader_trinary_minmax
VK_AMD_texture_gather_bias_lod 2024-02-27
VK_ARM_rasterization_order_attachment_access
VK_EXT_mutable_descriptor_type
VK_EXT_swapchain_colorspace 2024-03-20 2024-03-15 2024-03-20
VK_EXT_depth_clamp_zero_one 2024-07-17 2024-10-18 2024-06-12
VK_INTEL_shader_integer_functions2
VK_KHR_map_memory2 2024-11-20 2024-03-14
VK_EXT_map_memory_placed 2024-05-05 2024-05-05 2024-05-05 2024-05-05 2024-05-05
VK_MESA_image_alignment_control 2024-05-14 2024-05-14 2024-11-20
VK_EXT_legacy_dithering 2024-05-15 2024-05-15 2024-08-16

OpenGL

There are a total of 160 extensions to implement. The ranking is based on the current number of extensions implemented per driver.

# Driver Extensions Version
1 asahi (100.0%) 160 4.6
1 radeonsi (100.0%) 160 4.6
1 crocus (100.0%) 160 4.6
1 mesa (100.0%) 160 4.6
1 zink (100.0%) 160 4.6
1 d3d12 (100.0%) 160 4.6
1 virgl (100.0%) 160 4.6
1 llvmpipe (100.0%) 160 4.6
1 iris (100.0%) 160 4.6
1 freedreno (100.0%) 160 4.6
11 nvc0 (98.8%) 158 4.5
12 r600 (96.2%) 154 4.5
13 softpipe (88.8%) 142 3.3
14 panfrost (77.5%) 124 3.1
15 nv50 (74.4%) 119 3.3
16 v3d (70.6%) 113 3.1
17 vc4 (40.0%) 64 N/A
18 lima (39.4%) 63 N/A
19 etnaviv (38.8%) 62 N/A
Drivers details

OpenGL 4.6 - GLSL 4.60

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 45.5% 100.0% 100.0% 9.1% 36.4% 36.4% 9.1% 100.0% 100.0% 27.3% 81.8% 100.0% 100.0% 45.5% 100.0% 100.0% 100.0% 18.2%
GL_ARB_gl_spirv 2024-02-14
GL_ARB_indirect_parameters
GL_ARB_pipeline_statistics_query 2024-02-14
GL_ARB_polygon_offset_clamp 2024-02-14
GL_ARB_shader_atomic_counter_ops 2024-02-14 2024-11-25
GL_ARB_shader_draw_parameters 2024-02-14
GL_ARB_shader_group_vote 2024-02-14
GL_ARB_spirv_extensions 2024-02-14
GL_ARB_texture_filter_anisotropic 2024-11-25
GL_ARB_transform_feedback_overflow_query 2024-01-10
GL_KHR_no_error

OpenGL 4.5 - GLSL 4.50

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 50.0% 50.0% 41.7% 41.7% 100.0% 100.0% 75.0% 100.0% 100.0% 100.0% 75.0% 100.0% 100.0% 100.0% 33.3%
GL_ARB_ES3_1_compatibility 2024-02-14
GL_ARB_clip_control 2024-11-25
GL_ARB_conditional_render_inverted
GL_ARB_cull_distance
GL_ARB_derivative_control
GL_ARB_direct_state_access
GL_ARB_get_texture_sub_image
GL_ARB_shader_texture_image_samples
GL_ARB_texture_barrier 2024-02-14 2024-02-22
GL_KHR_context_flush_control
GL_KHR_robustness 2024-02-14
GL_EXT_shader_integer_mix

OpenGL 4.4 - GLSL 4.40

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 66.7% 93.3% 80.0% 66.7% 100.0% 100.0% 93.3% 100.0% 100.0% 100.0% 93.3% 100.0% 100.0% 100.0% 66.7%
GL_MAX_VERTEX_ATTRIB_STRIDE
GL_ARB_buffer_storage
GL_ARB_clear_texture
GL_ARB_enhanced_layouts 2024-11-25
- compile-time constant expressions
- explicit byte offsets for blocks
- forced alignment within blocks
- specified vec4-slot component numbers
- specified transform/feedback layout
- input/output block locations
GL_ARB_multi_bind
GL_ARB_query_buffer_object 2024-02-14
GL_ARB_texture_mirror_clamp_to_edge
GL_ARB_texture_stencil8
GL_ARB_vertex_type_10f_11f_11f_rev

OpenGL 4.3 - GLSL 4.30

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 45.5% 86.4% 86.4% 50.0% 100.0% 100.0% 72.7% 100.0% 100.0% 100.0% 90.9% 100.0% 100.0% 100.0% 50.0%
GL_ARB_arrays_of_arrays
GL_ARB_ES3_compatibility
GL_ARB_clear_buffer_object
GL_ARB_compute_shader
GL_ARB_copy_image 2024-02-14 2024-11-25
GL_KHR_debug
GL_ARB_explicit_uniform_location
GL_ARB_fragment_layer_viewport
GL_ARB_framebuffer_no_attachments 2024-11-25 2024-10-21
GL_ARB_internalformat_query2
GL_ARB_invalidate_subdata
GL_ARB_multi_draw_indirect 2024-11-25 2024-11-25
GL_ARB_program_interface_query
GL_ARB_robust_buffer_access_behavior 2024-02-14
GL_ARB_shader_image_size
GL_ARB_shader_storage_buffer_object
GL_ARB_stencil_texturing
GL_ARB_texture_buffer_range 2024-02-14 2024-11-25
GL_ARB_texture_query_levels
GL_ARB_texture_storage_multisample
GL_ARB_texture_view 2024-11-25
GL_ARB_vertex_attrib_binding

OpenGL 4.2 - GLSL 4.20

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 58.3% 83.3% 83.3% 58.3% 100.0% 100.0% 75.0% 100.0% 100.0% 100.0% 91.7% 100.0% 100.0% 100.0% 50.0%
GL_ARB_texture_compression_bptc
GL_ARB_compressed_texture_pixel_storage
GL_ARB_shader_atomic_counters
GL_ARB_texture_storage
GL_ARB_transform_feedback_instanced 2024-11-25
GL_ARB_base_instance
GL_ARB_shader_image_load_store
GL_ARB_conservative_depth
GL_ARB_shading_language_420pack
GL_ARB_shading_language_packing
GL_ARB_internalformat_query
GL_ARB_map_buffer_alignment

OpenGL 4.1 - GLSL 4.10

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 50.0% 50.0% 50.0% 50.0% 100.0% 100.0% 66.7% 100.0% 100.0% 100.0% 83.3% 100.0% 100.0% 100.0% 33.3%
GL_ARB_ES2_compatibility
GL_ARB_get_program_binary 2024-11-25 2024-11-25 2024-11-25 2024-11-25 2024-11-25 2024-11-25 2024-11-25
GL_ARB_separate_shader_objects
GL_ARB_shader_precision
GL_ARB_vertex_attrib_64bit 2024-02-14
GL_ARB_viewport_array

OpenGL 4.0 - GLSL 4.00

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 4.0% 48.0% 28.0% 4.0% 100.0% 100.0% 28.0% 100.0% 100.0% 100.0% 84.0% 100.0% 100.0% 100.0% 12.0%
GL_ARB_draw_buffers_blend 2024-10-04
GL_ARB_draw_indirect 2024-11-25 2024-10-11
GL_ARB_gpu_shader5
- 'precise' qualifier
- Dynamically uniform sampler array indices
- Dynamically uniform UBO array indices
- Implicit signed -> unsigned conversions
- Fused multiply-add
- Packing/bitfield/conversion functions
- Enhanced textureGather
- Geometry shader instancing
- Geometry shader multiple streams
- Enhanced per-sample shading
- Interpolation functions
- New overload resolution rules
GL_ARB_gpu_shader_fp64 2024-02-14
GL_ARB_sample_shading
GL_ARB_shader_subroutine 2024-02-14 2024-11-25 2024-11-25 2024-11-25 2024-11-25 2024-11-25 2024-11-25
GL_ARB_tessellation_shader 2024-02-14
GL_ARB_texture_buffer_object_rgb32
GL_ARB_texture_cube_map_array 2024-11-25
GL_ARB_texture_gather
GL_ARB_texture_query_lod 2024-02-14
GL_ARB_transform_feedback2
GL_ARB_transform_feedback3 2024-11-25

OpenGL 3.3 - GLSL 3.30

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 40.0% 100.0% 80.0% 30.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 40.0%
GL_ARB_blend_func_extended
GL_ARB_explicit_attrib_location
GL_ARB_occlusion_query2
GL_ARB_sampler_objects
GL_ARB_shader_bit_encoding
GL_ARB_texture_rgb10_a2ui
GL_ARB_texture_swizzle
GL_ARB_timer_query 2024-09-09
GL_ARB_instanced_arrays
GL_ARB_vertex_type_2_10_10_10_rev

OpenGL 3.2 - GLSL 1.50

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 54.5% 90.9% 81.8% 63.6% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 18.2%
Core/compatibility profiles
Geometry shaders
GL_ARB_vertex_array_bgra (BGRA vertex order)
GL_ARB_draw_elements_base_vertex (Base vertex offset)
GL_ARB_fragment_coord_conventions (Frag shader coord)
GL_ARB_provoking_vertex (Provoking vertex)
GL_ARB_seamless_cube_map (Seamless cubemaps)
GL_ARB_texture_multisample (Multisample textures)
GL_ARB_depth_clamp (Frag depth clamp) 2024-07-17
GL_ARB_sync (Fence objects)
GLX_ARB_create_context_profile

OpenGL 3.1 - GLSL 1.40

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 33.3% 100.0% 100.0% 33.3% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 33.3%
Forward compatible context support/deprecations
GL_ARB_draw_instanced (Instanced drawing)
GL_ARB_copy_buffer (Buffer copying)
GL_NV_primitive_restart (Primitive restart)
16 vertex texture image units
GL_ARB_texture_buffer_object (Texture buffer objs)
GL_ARB_texture_rectangle (Rectangular textures)
GL_ARB_uniform_buffer_object (Uniform buffer objs)
GL_EXT_texture_snorm (Signed normalized textures)

OpenGL 3.0 - GLSL 1.30

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 44.4% 100.0% 100.0% 48.1% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 55.6%
glBindFragDataLocation, glGetFragDataLocation
GL_NV_conditional_render (Conditional rendering)
GL_ARB_map_buffer_range (Map buffer subranges)
GL_ARB_color_buffer_float (Clamping controls)
GL_ARB_texture_float (Float textures, renderbuffers)
GL_EXT_packed_float
GL_EXT_texture_shared_exponent
GL_ARB_depth_buffer_float (Float depth buffers)
GL_ARB_framebuffer_object (Framebuffer objects)
GL_ARB_half_float_pixel
GL_ARB_half_float_vertex
GL_EXT_texture_integer
GL_EXT_texture_array
GL_EXT_draw_buffers2 (Per-buffer blend and masks) 2024-10-04
GL_EXT_texture_compression_rgtc
GL_ARB_texture_rg
GL_EXT_transform_feedback (Transform feedback)
GL_ARB_vertex_array_object (Vertex array objects)
GL_EXT_framebuffer_sRGB (sRGB framebuffer format)
glClearBuffer commands
glGetStringi command
glTexParameterI, glGetTexParameterI commands
glVertexAttribI commands
Depth format cube textures
GLX_ARB_create_context (GLX 1.4 is required)
Multisample anti-aliasing
8 draw buffers 2024-11-25

OpenGL ES

There are a total of 41 extensions to implement. The ranking is based on the current number of extensions implemented per driver.

# Driver Extensions Version
1 asahi (100.0%) 41 3.2
1 radeonsi (100.0%) 41 3.2
1 crocus (100.0%) 41 3.2
1 mesa (100.0%) 41 3.2
1 zink (100.0%) 41 3.2
1 llvmpipe (100.0%) 41 3.2
1 virgl (100.0%) 41 3.2
1 iris (100.0%) 41 3.2
1 freedreno (100.0%) 41 3.2
10 nvc0 (97.6%) 40 3.1
10 r600 (97.6%) 40 3.1
12 panfrost (90.2%) 37 3.1
13 softpipe (82.9%) 34 3.1
14 d3d12 (78.0%) 32 3.1
14 v3d (78.0%) 32 3.1
16 nv50 (43.9%) 18 N/A
17 vc4 (36.6%) 15 N/A
18 etnaviv (34.1%) 14 N/A
19 lima (31.7%) 13 N/A
Drivers details

OpenGL ES 3.2 - GLSL ES 3.2

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 95.5% 100.0% 100.0% 27.3% 81.8% 59.1% 31.8% 100.0% 100.0% 36.4% 95.5% 100.0% 100.0% 68.2% 59.1% 100.0% 100.0% 27.3%
GL_EXT_color_buffer_float
GL_KHR_blend_equation_advanced
GL_KHR_debug
GL_KHR_robustness 2024-02-14
GL_KHR_texture_compression_astc_ldr
GL_OES_copy_image
GL_OES_draw_buffers_indexed 2024-10-04
GL_OES_draw_elements_base_vertex
GL_OES_geometry_shader
GL_OES_gpu_shader5 2024-11-25
GL_OES_primitive_bounding_box 2024-02-14 2024-11-25
GL_OES_sample_shading 2024-11-25
GL_OES_sample_variables 2024-11-25
GL_OES_shader_image_atomic 2024-11-25 2024-11-25 2024-11-25 2024-11-25 2024-11-25 2024-11-25 2024-11-25
GL_OES_shader_io_blocks 2024-02-14
GL_OES_shader_multisample_interpolation 2024-11-25
GL_OES_tessellation_shader 2024-02-14
GL_OES_texture_border_clamp
GL_OES_texture_buffer
GL_OES_texture_cube_map_array
GL_OES_texture_stencil8
GL_OES_texture_storage_multisample_2d_array

OpenGL ES 3.1 - GLSL ES 3.1

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
100.0% 100.0% 100.0% 100.0% 36.8% 100.0% 100.0% 42.1% 100.0% 100.0% 52.6% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 42.1%
GL_ARB_arrays_of_arrays
GL_ARB_compute_shader
GL_ARB_draw_indirect
GL_ARB_explicit_uniform_location
GL_ARB_framebuffer_no_attachments 2024-10-21
GL_ARB_program_interface_query
GL_ARB_shader_atomic_counters
GL_ARB_shader_image_load_store
GL_ARB_shader_image_size
GL_ARB_shader_storage_buffer_object
GL_ARB_shading_language_packing
GL_ARB_separate_shader_objects
GL_ARB_stencil_texturing
GL_ARB_texture_multisample (Multisample textures)
GL_ARB_texture_storage_multisample
GL_ARB_vertex_attrib_binding
GS5 Enhanced textureGather
GS5 Packing/bitfield/conversion functions
GL_EXT_shader_integer_mix

Extensions that are not part of any OpenGL or OpenGL ES version

There are a total of 62 extensions to implement. The ranking is based on the current number of extensions implemented per driver.

# Driver Extensions
1 mesa (93.5%) 58
2 zink (82.3%) 51
3 radeonsi (64.5%) 40
4 iris (61.3%) 38
5 freedreno (56.5%) 35
6 crocus (46.8%) 29
7 asahi (45.2%) 28
7 nvc0 (45.2%) 28
9 llvmpipe (38.7%) 24
10 softpipe (33.9%) 21
11 r600 (32.3%) 20
11 panfrost (32.3%) 20
13 nv50 (25.8%) 16
13 d3d12 (25.8%) 16
15 virgl (24.2%) 15
16 v3d (21.0%) 13
17 lima (19.4%) 12
17 etnaviv (19.4%) 12
19 vc4 (12.9%) 8
Drivers details

Extensions that are not part of any OpenGL or OpenGL ES version

AMD Apple Arm Broadcom Intel Nvidia Qualcomm Software Translation Vivante
Extension mesa r600 radeonsi asahi lima panfrost v3d vc4 iris crocus nv50 nvc0 freedreno llvmpipe softpipe d3d12 virgl zink etnaviv
93.5% 32.3% 64.5% 45.2% 19.4% 32.3% 21.0% 12.9% 61.3% 46.8% 25.8% 45.2% 56.5% 38.7% 33.9% 25.8% 24.2% 82.3% 19.4%
GL_ARB_bindless_texture
GL_ARB_cl_event
GL_ARB_compute_variable_group_size 2024-02-14
GL_ARB_ES3_2_compatibility 2024-02-14
GL_ARB_fragment_shader_interlock
GL_ARB_gpu_shader_int64 2024-02-14
GL_ARB_parallel_shader_compile 2024-02-14
GL_ARB_post_depth_coverage
GL_ARB_robustness_isolation
GL_ARB_sample_locations
GL_ARB_seamless_cubemap_per_texture
GL_ARB_shader_ballot 2024-02-14 2024-02-08
GL_ARB_shader_clock
GL_ARB_shader_stencil_export
GL_ARB_shader_viewport_layer_array 2024-02-14
GL_ARB_shading_language_include
GL_ARB_sparse_buffer
GL_ARB_sparse_texture
GL_ARB_sparse_texture2
GL_ARB_sparse_texture_clamp
GL_ARB_texture_filter_minmax
GL_ARM_shader_framebuffer_fetch_depth_stencil
GL_EXT_shader_framebuffer_fetch
GL_EXT_shader_framebuffer_fetch_non_coherent
GL_EXT_color_buffer_half_float 2024-02-14
GL_EXT_depth_bounds_test
GL_EXT_memory_object
GL_EXT_memory_object_fd
GL_EXT_memory_object_win32
GL_EXT_multisampled_render_to_texture
GL_EXT_render_snorm 2024-02-14 2024-11-25
GL_EXT_semaphore
GL_EXT_semaphore_fd
GL_EXT_semaphore_win32
GL_EXT_shader_group_vote 2024-02-14
GL_EXT_sRGB_write_control
GL_EXT_texture_compression_astc_decode_mode 2024-08-20 2024-08-20
GL_EXT_texture_norm16
GL_EXT_texture_sRGB_R8
GL_KHR_blend_equation_advanced_coherent
GL_KHR_shader_subgroup 2024-08-26 2024-08-26
GL_KHR_texture_compression_astc_hdr
GL_KHR_texture_compression_astc_sliced_3d
GL_OES_depth_texture_cube_map
GL_OES_EGL_image
GL_OES_EGL_image_external
GL_OES_EGL_image_external_essl3
GL_OES_required_internalformat
GL_OES_surfaceless_context
GL_OES_texture_compression_astc
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_texture_view
GL_OES_viewport_array
GL_OVR_multiview 2024-09-18 2024-09-18
GL_OVR_multiview2 2024-09-18 2024-09-18
GL_OVR_multiview_multisampled_render_to_texture 2024-09-20 2024-09-20
GLX_ARB_context_flush_control
GLX_ARB_robustness_application_isolation
GLX_ARB_robustness_share_group_isolation

Rusticl OpenCL

There are a total of 123 extensions to implement. The ranking is based on the current number of extensions implemented per driver.

# Driver Extensions Version
1 iris (56.1%) 69 1.0
2 radeonsi (54.5%) 67 1.0
2 mesa (54.5%) 67 N/A
4 llvmpipe (53.7%) 66 1.0
5 zink (51.2%) 63 1.0
6 nvc0 (48.8%) 60 1.0
7 panfrost (48.0%) 59 1.0
7 asahi (48.0%) 59 1.0
9 freedreno (47.2%) 58 1.0
Drivers details

Rusticl OpenCL 3.0

AMD Apple Arm Intel Nvidia Qualcomm Software Translation
Extension mesa radeonsi asahi panfrost iris nvc0 freedreno llvmpipe zink
100.0% 90.0% 100.0% 90.0% 100.0% 90.0% 90.0% 90.0% 100.0%
Optional device capabilities queries
cl_khr_extended_versioning
clSetContextDestructorCallback
clCreateBufferWithProperties
clCreateImageWithProperties
Query properties arrays
Supported OpenCL C versions and features queries
CL_COMMAND_SVM_MIGRATE_MEM for clGetEventInfo
OpenCL C 3.0
Latest conformance version passed for devices 2024-10-10 2024-10-15

Rusticl OpenCL 2.2

AMD Apple Arm Intel Nvidia Qualcomm Software Translation
Extension mesa radeonsi asahi panfrost iris nvc0 freedreno llvmpipe zink
40.0% 40.0% 40.0% 40.0% 40.0% 40.0% 40.0% 40.0% 40.0%
clSetProgramSpecializationConstant
clSetProgramReleaseCallback
Initialization and clean-up kernels
CL_MAX_SIZE_RESTRICTION_EXCEEDED for clSetKernelArg
Support SPIR-V 1.1 and 1.2

Rusticl OpenCL 2.1

AMD Apple Arm Intel Nvidia Qualcomm Software Translation
Extension mesa radeonsi asahi panfrost iris nvc0 freedreno llvmpipe zink
50.0% 62.5% 25.0% 25.0% 62.5% 25.0% 25.0% 62.5% 37.5%
Sub groups
- cl_khr_subgroups
cl_khr_il_program
Device and host timer synchronization
clEnqueueSVMMigrateMem
clCloneKernel
Default device command queue
CL_UNORM_INT_101010_2

Rusticl OpenCL 2.0

AMD Apple Arm Intel Nvidia Qualcomm Software Translation
Extension mesa radeonsi asahi panfrost iris nvc0 freedreno llvmpipe zink
43.8% 37.5% 31.2% 37.5% 43.8% 37.5% 31.2% 43.8% 37.5%
Shared virtual memory
Device queues
- cl_khr_create_command_queue
- Additional queries for clGetDeviceInfo
Pipes
Extended 2D images creation
- CL_ABGR
- cl_khr_image2d_from_buffer
- cl_khr_depth_images 2024-11-18 2024-11-18 2024-11-18 2024-11-18 2024-11-18 2024-11-18 2024-11-18 2024-11-18 2024-11-18
- from sRGB images
clCreateSamplerWithProperties
Non-uniform work-group sizes
cl_khr_3d_image_writes
OpenCL C 2.0
- Work-group Collective Functions
- Generic address space

Rusticl OpenCL 1.2

AMD Apple Arm Intel Nvidia Qualcomm Software Translation
Extension mesa radeonsi asahi panfrost iris nvc0 freedreno llvmpipe zink
84.2% 84.2% 84.2% 84.2% 84.2% 84.2% 84.2% 84.2% 84.2%
Custom devices
Built-in kernels
Device partitioning
Separate compilation and linking of programs
Extend cl_mem_flags
clEnqueueFillBuffer, clEnqueueFillImage
Add CL_MAP_WRITE_INVALIDATE_REGION to cl_map_flags 2024-07-10 2024-07-10 2024-07-10 2024-07-10 2024-07-10 2024-07-10 2024-07-10 2024-07-10 2024-07-10
New image types
clCreateImage
clEnqueueMigrateMemObjects
Retrieve kernels information from a program
clGetKernelArgInfo
clEnqueueMarkerWithWaitList
clEnqueueBarrierWithWaitList
clUnloadPlatformCompiler
cl_khr_fp64
printf
CL_KERNEL_ATTRIBUTES for clGetKernelInfo
OpenCL C 1.2

Rusticl OpenCL 1.1

AMD Apple Arm Intel Nvidia Qualcomm Software Translation
Extension mesa radeonsi asahi panfrost iris nvc0 freedreno llvmpipe zink
81.8% 81.8% 81.8% 81.8% 81.8% 81.8% 81.8% 81.8% 81.8%
Additional queries for clGetDeviceInfo
CL_CONTEXT_NUM_DEVICES for clGetContextInfo
New optional image formats
- CL_Rx
- CL_RGx
- CL_RGBx
clCreateSubBuffer
Read from, write to, copy rectangular regions
clSetMemObjectDestructorCallback
Control OpenCL C version when building
Query for preferred work-group size multiple
Support user events
clSetEventCallback
Minimum requirement changes for clGetDeviceInfo
Arg prerequisite change for clEnqueueNDRangeKernel
OpenCL C 1.1
- 3-component vector data types
- cl_khr_byte_addressable_store
- cl_khr_global_int32_base_atomics
- cl_khr_global_int32_extended_atomics
- cl_khr_local_int32_base_atomics
- cl_khr_local_int32_extended_atomics

Rusticl OpenCL 1.0

AMD Apple Arm Intel Nvidia Qualcomm Software Translation
Extension mesa radeonsi asahi panfrost iris nvc0 freedreno llvmpipe zink
50.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0%
Image support
- Optional image formats

Rusticl Extensions that are not part of any OpenCL version

AMD Apple Arm Intel Nvidia Qualcomm Software Translation
Extension mesa radeonsi asahi panfrost iris nvc0 freedreno llvmpipe zink
22.0% 22.0% 9.8% 9.8% 22.0% 12.2% 9.8% 17.1% 14.6%
cl_khr_async_copy_fence
cl_khr_async_work_group_copy_fence
cl_khr_device_enqueue_local_arg_types
cl_khr_device_uuid
cl_khr_egl_event
cl_khr_egl_image
cl_khr_expect_assume
cl_khr_extended_async_copies
cl_khr_extended_bit_ops
cl_khr_fp16
cl_khr_gl_depth_images
cl_khr_gl_msaa_sharing
cl_khr_gl_sharing
cl_khr_icd
cl_khr_initialize_memory
cl_khr_int64_base_atomics
cl_khr_int64_extended_atomics
cl_khr_integer_dot_product
cl_khr_mipmap_image
cl_khr_pci_bus_info
cl_khr_priority_hints
cl_khr_spirv_extended_debug_info
cl_khr_spirv_linkonce_odr
cl_khr_spirv_no_integer_wrap_decoration
cl_khr_srgb_image_writes
cl_khr_subgroup_ballot
cl_khr_subgroup_clustered_reduce
cl_khr_subgroup_extended_types
cl_khr_subgroup_named_barrier
cl_khr_subgroup_non_uniform_arithmetic
cl_khr_subgroup_non_uniform_vote
cl_khr_subgroup_rotate
cl_khr_subgroup_shuffle
cl_khr_subgroup_shuffle_relative
cl_khr_suggested_local_work_size 2024-03-13 2024-03-13 2024-03-13 2024-03-13 2024-03-13 2024-03-13 2024-03-13 2024-03-13 2024-03-13
cl_khr_terminate_context
cl_khr_throttle_hints
cl_khr_work_group_uniform_arithmetic
cl_arm_non_uniform_work_group_size
cl_arm_shared_virtual_memory
cl_intel_unified_shared_memory

Clover OpenCL

There are a total of 123 extensions to implement. The ranking is based on the current number of extensions implemented per driver.

# Driver Extensions Version
1 mesa (39.8%) 49 N/A
2 nvc0 (36.6%) 45 N/A
3 r600 (33.3%) 41 N/A
3 radeonsi (33.3%) 41 N/A
Drivers details

Clover OpenCL 3.0

AMD Nvidia
Extension mesa r600 radeonsi nvc0
60.0% 60.0% 60.0% 60.0%
Optional device capabilities queries
cl_khr_extended_versioning
clSetContextDestructorCallback
clCreateBufferWithProperties
clCreateImageWithProperties
Query properties arrays
Supported OpenCL C versions and features queries
CL_COMMAND_SVM_MIGRATE_MEM for clGetEventInfo
OpenCL C 3.0
Latest conformance version passed for devices

Clover OpenCL 2.2

AMD Nvidia
Extension mesa r600 radeonsi nvc0
0.0% 0.0% 0.0% 0.0%
clSetProgramSpecializationConstant
clSetProgramReleaseCallback
Initialization and clean-up kernels
CL_MAX_SIZE_RESTRICTION_EXCEEDED for clSetKernelArg
Support SPIR-V 1.1 and 1.2

Clover OpenCL 2.1

AMD Nvidia
Extension mesa r600 radeonsi nvc0
25.0% 12.5% 12.5% 25.0%
Sub groups
- cl_khr_subgroups
cl_khr_il_program
Device and host timer synchronization
clEnqueueSVMMigrateMem
clCloneKernel
Default device command queue
CL_UNORM_INT_101010_2

Clover OpenCL 2.0

AMD Nvidia
Extension mesa r600 radeonsi nvc0
12.5% 6.2% 6.2% 12.5%
Shared virtual memory
Device queues
- cl_khr_create_command_queue
- Additional queries for clGetDeviceInfo
Pipes
Extended 2D images creation
- CL_ABGR
- cl_khr_image2d_from_buffer
- cl_khr_depth_images
- from sRGB images
clCreateSamplerWithProperties
Non-uniform work-group sizes
cl_khr_3d_image_writes
OpenCL C 2.0
- Work-group Collective Functions
- Generic address space

Clover OpenCL 1.2

AMD Nvidia
Extension mesa r600 radeonsi nvc0
84.2% 78.9% 78.9% 84.2%
Custom devices
Built-in kernels
Device partitioning
Separate compilation and linking of programs
Extend cl_mem_flags
clEnqueueFillBuffer, clEnqueueFillImage
Add CL_MAP_WRITE_INVALIDATE_REGION to cl_map_flags
New image types
clCreateImage
clEnqueueMigrateMemObjects
Retrieve kernels information from a program
clGetKernelArgInfo
clEnqueueMarkerWithWaitList
clEnqueueBarrierWithWaitList
clUnloadPlatformCompiler
cl_khr_fp64
printf
CL_KERNEL_ATTRIBUTES for clGetKernelInfo
OpenCL C 1.2

Clover OpenCL 1.1

AMD Nvidia
Extension mesa r600 radeonsi nvc0
81.8% 77.3% 77.3% 77.3%
Additional queries for clGetDeviceInfo
CL_CONTEXT_NUM_DEVICES for clGetContextInfo
New optional image formats
- CL_Rx
- CL_RGx
- CL_RGBx
clCreateSubBuffer
Read from, write to, copy rectangular regions
clSetMemObjectDestructorCallback
Control OpenCL C version when building
Query for preferred work-group size multiple
Support user events
clSetEventCallback
Minimum requirement changes for clGetDeviceInfo
Arg prerequisite change for clEnqueueNDRangeKernel
OpenCL C 1.1
- 3-component vector data types
- cl_khr_byte_addressable_store
- cl_khr_global_int32_base_atomics
- cl_khr_global_int32_extended_atomics
- cl_khr_local_int32_base_atomics
- cl_khr_local_int32_extended_atomics

Clover OpenCL 1.0

AMD Nvidia
Extension mesa r600 radeonsi nvc0
0.0% 0.0% 0.0% 0.0%
Image support
- Optional image formats

Clover Extensions that are not part of any OpenCL version

AMD Nvidia
Extension mesa r600 radeonsi nvc0
12.2% 2.4% 2.4% 4.9%
cl_khr_async_copy_fence
cl_khr_async_work_group_copy_fence
cl_khr_device_enqueue_local_arg_types
cl_khr_device_uuid
cl_khr_egl_event
cl_khr_egl_image
cl_khr_expect_assume
cl_khr_extended_async_copies
cl_khr_extended_bit_ops
cl_khr_fp16
cl_khr_gl_depth_images
cl_khr_gl_msaa_sharing
cl_khr_gl_sharing
cl_khr_icd
cl_khr_initialize_memory
cl_khr_int64_base_atomics
cl_khr_int64_extended_atomics
cl_khr_integer_dot_product
cl_khr_mipmap_image
cl_khr_pci_bus_info
cl_khr_priority_hints
cl_khr_spirv_extended_debug_info
cl_khr_spirv_linkonce_odr
cl_khr_spirv_no_integer_wrap_decoration
cl_khr_srgb_image_writes
cl_khr_subgroup_ballot
cl_khr_subgroup_clustered_reduce
cl_khr_subgroup_extended_types
cl_khr_subgroup_named_barrier
cl_khr_subgroup_non_uniform_arithmetic
cl_khr_subgroup_non_uniform_vote
cl_khr_subgroup_rotate
cl_khr_subgroup_shuffle
cl_khr_subgroup_shuffle_relative
cl_khr_suggested_local_work_size
cl_khr_terminate_context
cl_khr_throttle_hints
cl_khr_work_group_uniform_arithmetic
cl_arm_non_uniform_work_group_size
cl_arm_shared_virtual_memory
cl_intel_unified_shared_memory