Hi,
I measured with PresentMon that my full screen borderless Vulkan application’s swap chain was being composited with a GPU copy. To eliminate the unnecessary one frame of added latency, in addition to following official Nvidia advice: “On Windows systems, use the VK_EXT_full_screen_exclusive
extension to bypass compositing” here: https://developer.nvidia.com/blog/advanced-api-performance-vulkan-clearing-and-presenting/ I found constructing a swap chain surface with full screen exclusive mode either:
Did not crash but did not acquire full screen exclusive (as reported by PresentMon).
or
Crashed in vkCreateSwapchainKHR
with the unhelpful message “VK_ERROR_INITIALIZATION_FAILED”.
My application satisfies the validation layers (.BEST_PRACTICES, .GPU_ASSISTED, .GPU_ASSISTED_RESERVE_BINDING_SLOT, .SYNCHRONIZATION_VALIDATION). I’ve tried presentation modes with and without vsync semantics to no avail. After reporting this issue to the Khronos Vulkan Discord, the general consensus was that this appears to be a driver bug.
As a clue, my debugger shows me which field members of a structure have changed since the last line of source was stepped over (indicated in red from the image below after calling vkGetPhysicalDeviceSurfaceCapabilities2KHR
with the expected pNext extension chain structures supplied. Notice how fullScreenExclusive
did not change.
Please advise,
Jesse
Vulkan 1.3.224
NV 3060 517.55 (latest vulkan beta driver as of 9/29/2022)
Win10 10.0.19044