diff --git a/docs/features.txt b/docs/features.txt index f6591bd4c84..295c5638a83 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -486,7 +486,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_external_semaphore_fd DONE (anv, radv, tu, v3dv) VK_KHR_external_semaphore_win32 not started VK_KHR_fragment_shading_rate not started - VK_KHR_get_display_properties2 DONE (anv, lvp, radv, tu) + VK_KHR_get_display_properties2 DONE (anv, lvp, radv, tu, v3dv) VK_KHR_get_surface_capabilities2 DONE (anv, lvp, radv, tu, vn) VK_KHR_incremental_present DONE (anv, lvp, radv, tu) VK_KHR_performance_query DONE (anv/gen8+, tu) diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 2ff1ea3dd4d..331c0fcb168 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -84,6 +84,7 @@ static const struct vk_instance_extension_table instance_extensions = { .KHR_external_fence_capabilities = true, .KHR_external_memory_capabilities = true, .KHR_external_semaphore_capabilities = true, + .KHR_get_display_properties2 = true, .KHR_get_physical_device_properties2 = true, #ifdef V3DV_HAS_SURFACE .KHR_get_surface_capabilities2 = true, diff --git a/src/broadcom/vulkan/v3dv_wsi_display.c b/src/broadcom/vulkan/v3dv_wsi_display.c index 02cdb92404c..3d1cf91ecbe 100644 --- a/src/broadcom/vulkan/v3dv_wsi_display.c +++ b/src/broadcom/vulkan/v3dv_wsi_display.c @@ -38,6 +38,21 @@ v3dv_GetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physical_device, properties); } +VkResult +v3dv_GetPhysicalDeviceDisplayProperties2KHR( + VkPhysicalDevice physical_device, + uint32_t *pPropertyCount, + VkDisplayProperties2KHR *pProperties) +{ + V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device); + + return wsi_display_get_physical_device_display_properties2( + physical_device, + &pdevice->wsi_device, + pPropertyCount, + pProperties); +} + VKAPI_ATTR VkResult VKAPI_CALL v3dv_GetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physical_device, @@ -53,6 +68,21 @@ v3dv_GetPhysicalDeviceDisplayPlanePropertiesKHR( properties); } +VkResult +v3dv_GetPhysicalDeviceDisplayPlaneProperties2KHR( + VkPhysicalDevice physical_device, + uint32_t *pPropertyCount, + VkDisplayPlaneProperties2KHR *pProperties) +{ + V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device); + + return wsi_display_get_physical_device_display_plane_properties2( + physical_device, + &pdevice->wsi_device, + pPropertyCount, + pProperties); +} + VKAPI_ATTR VkResult VKAPI_CALL v3dv_GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physical_device, uint32_t plane_index, @@ -84,6 +114,21 @@ v3dv_GetDisplayModePropertiesKHR(VkPhysicalDevice physical_device, properties); } +VkResult +v3dv_GetDisplayModeProperties2KHR(VkPhysicalDevice physical_device, + VkDisplayKHR display, + uint32_t *pPropertyCount, + VkDisplayModeProperties2KHR *pProperties) +{ + V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device); + + return wsi_display_get_display_mode_properties2(physical_device, + &pdevice->wsi_device, + display, + pPropertyCount, + pProperties); +} + VKAPI_ATTR VkResult VKAPI_CALL v3dv_CreateDisplayModeKHR(VkPhysicalDevice physical_device, VkDisplayKHR display, @@ -116,6 +161,20 @@ v3dv_GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physical_device, capabilities); } +VkResult +v3dv_GetDisplayPlaneCapabilities2KHR( + VkPhysicalDevice physical_device, + const VkDisplayPlaneInfo2KHR *pDisplayPlaneInfo, + VkDisplayPlaneCapabilities2KHR *pCapabilities) +{ + V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device); + + return wsi_get_display_plane_capabilities2(physical_device, + &pdevice->wsi_device, + pDisplayPlaneInfo, + pCapabilities); +} + VKAPI_ATTR VkResult VKAPI_CALL v3dv_CreateDisplayPlaneSurfaceKHR( VkInstance _instance,