Vulkan 1.3.237 Released With Two New Extensions
With today's Vulkan 1.3.237 spec update there are a handful of issues resolved both from the public GitHub as well as the Vulkan working group's internal tracker. But besides the mostly mundane fixes and clarifications to the spec, there are two new extensions being introduced today.
VK_EXT_surface_maintenance1 is one of the new extensions today and was worked on by NVIDIA, Intel, Google, Valve, and Collabora. With VK_EXT_surface_maintenance1 are adding some new features for the Vulkan Windowing System Integration (WSI) not previously covered. VK_EXT_surface_maintenance1 allows to query the number of min/max images from a surface for a particular presentation mode, querying a surface's scaled presentation capabilities, and querying a surface for the set of presentation modes that can be easily switched without requiring swapchain recreation.
The other new extension today is VK_EXT_swapchain_maintenance1 and worked on by NVIDIA, Google, Samsung, Valve, Arm, Collabora, and Huawei. With VK_EXT_swapchain_maintenance1 are also more WSI features previously not covered, albeit on the swapchain side as implied by the extension name. The new swapchain features include the ability to specify a fence to be signaled when the resources associated with a present operation can be safely destroyed, changing the present mode a swapchain is using at per-present granularity, letting applications define a behavior when presenting a swapchain image to a surface with different dimensions than the image, deferring swapchain memory allocation for improved start-up time and memory footprint, and allowing applications to release previously acquired images without presenting them.
Overall a nice collection of additional features are now available with these new Vulkan extensions around swapchains and surfaces. In turn the new extension work should also help address the problems Valve encountered with VK_KHR_present_wait for Mesa drivers too.
The Vulkan 1.3.237 changes are outlined via this commit.
Meanwhile slipping under my radar last week was Vulkan 1.3.236. That update introduced VK_QCOM_multiview_per_view_viewports and VK_LUNARG_direct_driver_loading. The VK_LUNARG_direct_driver_loading extension is a bit interesting and provides a means for applications to add drivers to the Vulkan implementation. This allows drivers to be included with an application without requiring them to be installed and is capable of being used in any execution environment.