Valve Implements Opt-In VK_KHR_present_wait For Mesa Vulkan Drivers
Landing this week within Mesa 23.0 is an initial implementation of Vulkan's VK_KHR_present_wait extension, which Hans-Kristian Arntzen of Valve's Linux team and VKD3D-Proton notoriety has referred to as a "very useful" extension but due to current spec limitations is for now only being made opt-in via a DriConf option so it can be handled on a per-game/app basis.
VK_KHR_present_wait dates back to 2019 though awas added last year in Vulkan 1.2.185. VK_KHR_present_wait was devised by Keith Packard for his contract work for Valve. This extension allows for an application to wait for present operations to complete in conjunction with the KHR_swapchain usage. VK_KHR_present_wait can be used for monitoring and controlling the pacing of the application via the number of outstanding images not yet presented. Useful for frame pacing for games and presumably of interest for Valve to push out to the Steam Deck for software making use of this extension.
The issue right now with the VK_KHR_present_wait spec is the lack of a surface query for checking support for it on a per-surface basis. Until there is the present-wait ability to query on a per-surface type basis for support, the extension is being hidden behind a DriConf option.
This merge gets KHR_present_wait exposed when "vk_khr_present_wait=true" is set for DriConf. This currently is wired up for the Radeon RADV, Intel ANV, and Qualcomm TURNIP Vulkan drivers. This code will be found in next quarter's Mesa 23.0 release.
VK_KHR_present_wait dates back to 2019 though awas added last year in Vulkan 1.2.185. VK_KHR_present_wait was devised by Keith Packard for his contract work for Valve. This extension allows for an application to wait for present operations to complete in conjunction with the KHR_swapchain usage. VK_KHR_present_wait can be used for monitoring and controlling the pacing of the application via the number of outstanding images not yet presented. Useful for frame pacing for games and presumably of interest for Valve to push out to the Steam Deck for software making use of this extension.
The issue right now with the VK_KHR_present_wait spec is the lack of a surface query for checking support for it on a per-surface basis. Until there is the present-wait ability to query on a per-surface type basis for support, the extension is being hidden behind a DriConf option.
This merge gets KHR_present_wait exposed when "vk_khr_present_wait=true" is set for DriConf. This currently is wired up for the Radeon RADV, Intel ANV, and Qualcomm TURNIP Vulkan drivers. This code will be found in next quarter's Mesa 23.0 release.
5 Comments