I’ve been silent here for quite some time, so here is a quick summary of some of the new functionality we have been exposing in V3DV, the Vulkan driver for Raspberry PI 4, over the last few months:
- VK_KHR_bind_memory2
- VK_KHR_copy_commands2
- VK_KHR_dedicated_allocation
- VK_KHR_descriptor_update_template
- VK_KHR_device_group
- VK_KHR_device_group_creation
- VK_KHR_external_fence
- VK_KHR_external_fence_capabilities
- VK_KHR_external_fence_fd
- VK_KHR_external_semaphore
- VK_KHR_external_semaphore_capabilities
- VK_KHR_external_semaphore_fd
- VK_KHR_get_display_properties2
- VK_KHR_get_memory_requirements2
- VK_KHR_get_surface_capabilities2
- VK_KHR_image_format_list
- VK_KHR_incremental_present
- VK_KHR_maintenance2
- VK_KHR_maintenance3
- VK_KHR_multiview
- VK_KHR_relaxed_block_layout
- VK_KHR_sampler_mirror_clamp_to_edge
- VK_KHR_storage_buffer_storage_class
- VK_KHR_uniform_buffer_standard_layout
- VK_KHR_variable_pointers
- VK_EXT_custom_border_color
- VK_EXT_external_memory_dma_buf
- VK_EXT_index_type_uint8
- VK_EXT_physical_device_drm
Besides that list of extensions, we have also added basic support for Vulkan subgroups (this is a Vulkan 1.1 feature) and Geometry Shaders (we use this to implement multiview).
I think we now meet most (if not all) of the Vulkan 1.1 mandatory feature requirements, but we still need to check this properly and we also need to start doing Vulkan 1.1 CTS runs and fix test failures. In any case, the bottom line is that Vulkan 1.1 should be fairly close now.