mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2024-12-26 17:37:34 +00:00
11 KiB
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_utils
is also used.
Notes
Kept out of the preceding table 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
:- Linux and Android:
VK_KHR_external_fence_fd
- Windows:
VK_KHR_external_fence_win32
- Note: These platform-specific extensions were not promoted to Core in Vulkan 1.1, only the platform-independent base extension.
- Linux and Android:
- 6: Platform-specific extensions building on
VK_KHR_external_memory
:- Linux:
VK_KHR_external_memory_fd
- Android:
VK_ANDROID_external_memory_android_hardware_buffer
(fd
also usually available?) - Windows:
VK_KHR_external_memory_win32
- Note: These platform-specific extensions were not promoted to Core in Vulkan 1.1, only the platform-independent base extension.
- Linux:
- 7: Platform-specific extensions building on
VK_KHR_external_semaphore
:- Linux and Android:
VK_KHR_external_semaphore_fd
- Windows:
VK_KHR_external_semaphore_win32
- Note: These platform-specific extensions were not promoted to Core in Vulkan 1.1, only the platform-independent base extension.
- Linux and Android:
- 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
- All these are in [comp_compositor.c](@ref comp_compositor.c), with the
extensions required by all servers defined in