Mesa (main): v3dv: implement VK_KHR_get_display_properties2

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 10 11:20:46 UTC 2021


Module: Mesa
Branch: main
Commit: f884c2e3be363903a59dbee01868c7ad0bf0f346
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f884c2e3be363903a59dbee01868c7ad0bf0f346

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Wed Jun  9 12:00:18 2021 +0200

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 at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11287>

---

 docs/features.txt                      |  2 +-
 src/broadcom/vulkan/v3dv_device.c      |  1 +
 src/broadcom/vulkan/v3dv_wsi_display.c | 59 ++++++++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+), 1 deletion(-)

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,



More information about the mesa-commit mailing list