VK_KHR_display_swapchain not present on Linux

I’m trying to make use of VK_KHR_display and VK_KHR_display_swapchain on Linux with the 418.43 drivers (GTX 1080 Ti). I’ve used the vulkan sdk version 1.1.97 and 1.1.101 with the same result.

The problem is the latter extension doesn’t appear to exist. vulkanCapsViewer doesn’t list it as being available either. When I try to load the device extension the validation layers give me this message.

loader_validate_device_extensions: Device extension VK_KHR_display_swapchain not supported by
selected physical device or enabled layers.

Of course ignoring this leads to a segfault when trying to create the swapchain.

Should VK_KHR_display_swapchain be supported for my configuration? Are there any other prerequisites I should check to get this working?

I was very confused by this as well when i tried to implement direct mode rendering.

I got it to work by using vkAcquireXlibDisplayEXT from VK_EXT_acquire_xlib_display.

Then i was able to create and render to a direct mode swapchain without needing to enable the VK_KHR_display_swapchain extension.

To get vkAcquireXlibDisplayEXT to work i also had to configure ubuntu to not use the display. Basically set ubuntu to use a single display then it worked :)

I meet same problem like @ Breavyn at Ubuntu 20.04.
Driver:

Sun Apr 25 18:20:06 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.73.01    Driver Version: 460.73.01    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce GTX 780     Off  | 00000000:01:00.0 N/A |                  N/A |
| 17%   40C    P8    N/A /  N/A |    653MiB /  3018MiB |     N/A      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Vulkan: 1.2.176
I build&install vulkan sdk from src of https://github.com/KhronosGroup/Vulkan-*.git

I got 15-extension at instance, I enabled 4 of then(bold):

  1. VK_KHR_device_group_creation
  2. VK_KHR_display
  3. VK_KHR_external_fence_capabilities
  4. VK_KHR_external_memory_capabilities
  5. VK_KHR_external_semaphore_capabilities
  6. VK_KHR_get_display_properties2
  7. VK_KHR_get_physical_device_properties2
  8. VK_KHR_get_surface_capabilities2
  9. VK_KHR_surface
  10. VK_KHR_surface_protected_capabilities
  11. VK_KHR_xcb_surface
  12. VK_EXT_debug_report
  13. VK_EXT_debug_utils
  14. VK_EXT_direct_mode_display
  15. VK_EXT_display_surface_counter

I got 89-extension at device(GeForce GTX 780).
I want to enable VK_KHR_sampler_ycbcr_conversion, VK_KHR_swapchain and VK_KHR_display_swapchain.
But there is no VK_KHR_display_swapchain.

When I call vkCreateDevice(), I got:
“Device extension VK_KHR_display_swapchain not supported by selected physical device or enabled layers”

Anything wrong?

Thank you jonathanbyzw4, I tried vkAcquireXlibDisplayEXT, it works!

  • Compile&Install Vulkan-Loader with “BUILD_WSI_XLIB_SUPPORT=ON”, then I can additionally enable VK_KHR_xlib_surface&VK_EXT_acquire_xlib_display.
  • configure ubuntu to not use the aim display.
  • create and render to a direct mode swapchain without needing to enable the VK_KHR_display_swapchain extension(still not present).

It’s the direct_display mode I need, thanks again.