monado/doc/vulkan-extensions.md
2022-03-14 19:53:05 +00:00

11 KiB

Vulkan extensions used by Monado

Client XCB server (a) Wayland server (a) Xlib-xrandr server (b) NVIDIA xrandr server (b) Android server Windows server
Instance extensions
VK_KHR_external_fence_capabilities (8) yes?
VK_KHR_external_memory_capabilities (8) yes?
VK_KHR_external_semaphore_capabilities (8) yes?
VK_KHR_get_physical_device_properties2 (8) yes
VK_KHR_surface yes
VK_KHR_display yes (2) (requires VK_KHR_surface)
Platform-specific instance extensions
VK_KHR_xcb_surface yes (1, 4)
VK_KHR_wayland_surface yes (1, 4)
VK_EXT_direct_mode_display yes (1) yes (2)
VK_EXT_acquire_xlib_display yes (1) (in shared code)
VK_KHR_android_surface yes (1, 4)
VK_KHR_win32_surface yes (1, 4)
Device Extensions
VK_KHR_get_memory_requirements2 (8) yes
VK_KHR_dedicated_allocation (8) yes? (requires VK_KHR_get_memory_requirements2)
VK_KHR_external_fence (8) (+platform: 5) yes (soon)
VK_KHR_external_memory (8) (+platform: 6) yes
VK_KHR_external_semaphore (8) (+platform: 7) yes (soon)
VK_KHR_swapchain yes
[VK_KHR_timeline_semaphore][] opt opt opt opt opt opt opt

VK_EXT_debug_report is also used.

Notes

Kept out of the table above to limit its width.

  • Server type:
    • a: Windowed
    • b: Direct mode
  • Usage details/reason:
    • 1: Used directly
    • 2: Dependency of VK_EXT_direct_mode_display
    • 3: Dependency of VK_EXT_acquire_xlib_display
    • 4: Platform extension building on VK_KHR_surface
    • 5: Platform-specific extensions building on VK_KHR_external_fence:
    • 6: Platform-specific extensions building on VK_KHR_external_memory:
    • 7: Platform-specific extensions building on VK_KHR_external_semaphore:
    • 8: Promoted to Vulkan 1.1 Core

Reasons

  • Instance extensions:

    • VK_KHR_surface - for configuring output surface.
    • VK_KHR_get_physical_device_properties2 - for getting device UUID to share between client compositor and main/native compositor.
  • Device extensions:

    • VK_KHR_swapchain - for displaying output on a display output.

Code locations

  • Client

    • Instance extensions: [xrt_gfx_vk_instance_extensions](@ref xrt_gfx_vk_instance_extensions)
    • Device extensions: [xrt_gfx_vk_device_extensions](@ref xrt_gfx_vk_device_extensions)
  • Server

    • All these are in [comp_compositor.c](@ref comp_compositor.c), with the extensions required by all servers defined in COMP_INSTANCE_EXTENSIONS_COMMON
    • XCB (Windowed) Server: instance_extensions_xcb
    • Wayland (Windowed) Server: instance_extensions_wayland
    • Xlib-xrandr direct mode server and NVIDIA direct mode server: instance_extensions_direct_mode
    • Android server: instance_extensions_android
    • Windows server: instance_extensions_windows