diff options
author | Iago Toral Quiroga <itoral@igalia.com> | 2021-06-09 12:00:18 +0200 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2021-06-10 11:01:28 +0000 |
commit | f884c2e3be363903a59dbee01868c7ad0bf0f346 (patch) | |
tree | 1ac7f5f0c9849ee2ba3deb134855f2259f852e7c | |
parent | 30115d0038d3977ad1d5c62d5804d5fe6d6f9535 (diff) |
v3dv: implement VK_KHR_get_display_properties2
This is entirely implemented in the common WSI code, we just need to
implement the API entry points.
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11287>
-rw-r--r-- | docs/features.txt | 2 | ||||
-rw-r--r-- | src/broadcom/vulkan/v3dv_device.c | 1 | ||||
-rw-r--r-- | src/broadcom/vulkan/v3dv_wsi_display.c | 59 |
3 files changed, 61 insertions, 1 deletions
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, |