[Mesa-dev] [PATCH] vulkan: simplify VK_USE_PLATFORM_*_KHR handling

Emil Velikov emil.l.velikov at gmail.com
Fri Mar 9 15:24:18 UTC 2018


From: Emil Velikov <emil.velikov at collabora.com>

Instead of having multiple guards littered through the code, simply
introduce static inline no-op functions when the respective macros are
not set.

Inspired by the same convention from the kernel.

Cc: Eric Engestrom <eric.engestrom at imgtec.com>
Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
---
Here is an example of my earlier suggestion.
NOTE: not even compile tested!
---
 src/vulkan/wsi/wsi_common.c         |  8 --------
 src/vulkan/wsi/wsi_common_private.h | 27 +++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c
index fe262b4968d..c91075325b9 100644
--- a/src/vulkan/wsi/wsi_common.c
+++ b/src/vulkan/wsi/wsi_common.c
@@ -79,17 +79,13 @@ wsi_device_init(struct wsi_device *wsi,
    WSI_GET_CB(WaitForFences);
 #undef WSI_GET_CB
 
-#ifdef VK_USE_PLATFORM_XCB_KHR
    result = wsi_x11_init_wsi(wsi, alloc);
    if (result != VK_SUCCESS)
       goto fail;
-#endif
 
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
    result = wsi_wl_init_wsi(wsi, alloc, pdevice);
    if (result != VK_SUCCESS)
       goto fail;
-#endif
 
    return VK_SUCCESS;
 
@@ -102,12 +98,8 @@ void
 wsi_device_finish(struct wsi_device *wsi,
                   const VkAllocationCallbacks *alloc)
 {
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
    wsi_wl_finish_wsi(wsi, alloc);
-#endif
-#ifdef VK_USE_PLATFORM_XCB_KHR
    wsi_x11_finish_wsi(wsi, alloc);
-#endif
 }
 
 VkResult
diff --git a/src/vulkan/wsi/wsi_common_private.h b/src/vulkan/wsi/wsi_common_private.h
index b608119b969..501bbf0498e 100644
--- a/src/vulkan/wsi/wsi_common_private.h
+++ b/src/vulkan/wsi/wsi_common_private.h
@@ -129,16 +129,43 @@ struct wsi_interface {
                                 struct wsi_swapchain **swapchain);
 };
 
+#ifdef VK_USE_PLATFORM_XCB_KHR
 VkResult wsi_x11_init_wsi(struct wsi_device *wsi_device,
                           const VkAllocationCallbacks *alloc);
 void wsi_x11_finish_wsi(struct wsi_device *wsi_device,
                         const VkAllocationCallbacks *alloc);
+#else
+static inline
+VkResult wsi_x11_init_wsi(struct wsi_device *wsi_device,
+                          const VkAllocationCallbacks *alloc)
+{
+   return VK_SUCCESS;
+}
+
+static inline
+void wsi_x11_finish_wsi(struct wsi_device *wsi_device,
+                        const VkAllocationCallbacks *alloc) { }
+#endif
+
+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
 VkResult wsi_wl_init_wsi(struct wsi_device *wsi_device,
                          const VkAllocationCallbacks *alloc,
                          VkPhysicalDevice physical_device);
 void wsi_wl_finish_wsi(struct wsi_device *wsi_device,
                        const VkAllocationCallbacks *alloc);
+#else
+static inline
+VkResult wsi_wl_init_wsi(struct wsi_device *wsi_device,
+                         const VkAllocationCallbacks *alloc,
+                         VkPhysicalDevice physical_device);
+{
+   return VK_SUCCESS;
+}
 
+static inline
+void wsi_wl_finish_wsi(struct wsi_device *wsi_device,
+                       const VkAllocationCallbacks *alloc) {}
+#endif
 
 #define WSI_DEFINE_NONDISP_HANDLE_CASTS(__wsi_type, __VkType)              \
                                                                            \
-- 
2.16.0



More information about the mesa-dev mailing list