diff --git a/docs/features.txt b/docs/features.txt index e70fdb85119..f3004f61fd8 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -560,6 +560,7 @@ Khronos extensions that are not part of any Vulkan version: VK_GOOGLE_user_type DONE (anv, radv) VK_IMG_filter_cubic DONE (tu/a650) VK_NV_compute_shader_derivatives DONE (anv, radv) + VK_EXT_acquire_drm_display DONE (radv) OpenCL 1.0 -- all DONE: diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 15c04e13aaa..b49ef0be5f1 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -5,3 +5,4 @@ VK_EXT_global_priority_query on RADV. VK_EXT_physical_device_drm on RADV. 32-bit x86 builds now default disable x87 math and use sse2. GL ES 3.1 on GT21x hardware. +VK_EXT_acquire_drm_display on RADV. diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index e64a4cebf9c..321dff3e5d5 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -380,6 +380,7 @@ static const struct vk_instance_extension_table radv_instance_extensions_support .KHR_get_display_properties2 = true, .EXT_direct_mode_display = true, .EXT_display_surface_counter = true, + .EXT_acquire_drm_display = true, #endif }; diff --git a/src/amd/vulkan/radv_wsi_display.c b/src/amd/vulkan/radv_wsi_display.c index 6548466e5b5..3f1a41aafd1 100644 --- a/src/amd/vulkan/radv_wsi_display.c +++ b/src/amd/vulkan/radv_wsi_display.c @@ -291,3 +291,20 @@ radv_GetSwapchainCounterEXT(VkDevice _device, VkSwapchainKHR swapchain, return wsi_get_swapchain_counter(_device, &device->physical_device->wsi_device, swapchain, flag_bits, value); } + +VkResult +radv_AcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display) +{ + RADV_FROM_HANDLE(radv_physical_device, pdevice, physicalDevice); + + return wsi_acquire_drm_display(physicalDevice, &pdevice->wsi_device, drmFd, display); +} + +VkResult radv_GetDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, + VkDisplayKHR* display) +{ + RADV_FROM_HANDLE(radv_physical_device, pdevice, physicalDevice); + + return wsi_get_drm_display(physicalDevice, &pdevice->wsi_device, drmFd, connectorId, display); +} +