aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-11-16 12:49:27 -0800
committerJason Ekstrand <[email protected]>2017-12-04 10:04:19 -0800
commit0a10e3770f79e5e5c450e31ff1bfc2d045940b56 (patch)
tree0fc4cf9b249721814b9bc7bf57d7d6f90b8b4c4d /src
parent2e3e55110b0b528f23339453e9acf73513dfd6bb (diff)
vulkan/wsi: Initialize individual WSI interfaces in wsi_device_init
Now that we have anv_device_init/finish functions, there's no reason to have the individual driver do any more work than that. Reviewed-by: Dave Airlie <[email protected]> Reviewed-by: Chad Versace <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/amd/vulkan/radv_wsi.c36
-rw-r--r--src/intel/vulkan/anv_wsi.c36
-rw-r--r--src/vulkan/wsi/wsi_common.c37
-rw-r--r--src/vulkan/wsi/wsi_common.h19
-rw-r--r--src/vulkan/wsi/wsi_common_private.h10
5 files changed, 64 insertions, 74 deletions
diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
index aa06944e95e..cb61eb66024 100644
--- a/src/amd/vulkan/radv_wsi.c
+++ b/src/amd/vulkan/radv_wsi.c
@@ -38,41 +38,17 @@ radv_wsi_proc_addr(VkPhysicalDevice physicalDevice, const char *pName)
VkResult
radv_init_wsi(struct radv_physical_device *physical_device)
{
- VkResult result;
-
- wsi_device_init(&physical_device->wsi_device,
- radv_physical_device_to_handle(physical_device),
- radv_wsi_proc_addr);
-
-#ifdef VK_USE_PLATFORM_XCB_KHR
- result = wsi_x11_init_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
- if (result != VK_SUCCESS)
- return result;
-#endif
-
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
- result = wsi_wl_init_wsi(&physical_device->wsi_device, &physical_device->instance->alloc,
- radv_physical_device_to_handle(physical_device));
- if (result != VK_SUCCESS) {
-#ifdef VK_USE_PLATFORM_XCB_KHR
- wsi_x11_finish_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
-#endif
- return result;
- }
-#endif
-
- return VK_SUCCESS;
+ return wsi_device_init(&physical_device->wsi_device,
+ radv_physical_device_to_handle(physical_device),
+ radv_wsi_proc_addr,
+ &physical_device->instance->alloc);
}
void
radv_finish_wsi(struct radv_physical_device *physical_device)
{
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
- wsi_wl_finish_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
-#endif
-#ifdef VK_USE_PLATFORM_XCB_KHR
- wsi_x11_finish_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
-#endif
+ wsi_device_finish(&physical_device->wsi_device,
+ &physical_device->instance->alloc);
}
void radv_DestroySurfaceKHR(
diff --git a/src/intel/vulkan/anv_wsi.c b/src/intel/vulkan/anv_wsi.c
index add983f4ab2..6082c3dd093 100644
--- a/src/intel/vulkan/anv_wsi.c
+++ b/src/intel/vulkan/anv_wsi.c
@@ -36,41 +36,17 @@ anv_wsi_proc_addr(VkPhysicalDevice physicalDevice, const char *pName)
VkResult
anv_init_wsi(struct anv_physical_device *physical_device)
{
- VkResult result;
-
- wsi_device_init(&physical_device->wsi_device,
- anv_physical_device_to_handle(physical_device),
- anv_wsi_proc_addr);
-
-#ifdef VK_USE_PLATFORM_XCB_KHR
- result = wsi_x11_init_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
- if (result != VK_SUCCESS)
- return result;
-#endif
-
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
- result = wsi_wl_init_wsi(&physical_device->wsi_device, &physical_device->instance->alloc,
- anv_physical_device_to_handle(physical_device));
- if (result != VK_SUCCESS) {
-#ifdef VK_USE_PLATFORM_XCB_KHR
- wsi_x11_finish_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
-#endif
- return result;
- }
-#endif
-
- return VK_SUCCESS;
+ return wsi_device_init(&physical_device->wsi_device,
+ anv_physical_device_to_handle(physical_device),
+ anv_wsi_proc_addr,
+ &physical_device->instance->alloc);
}
void
anv_finish_wsi(struct anv_physical_device *physical_device)
{
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
- wsi_wl_finish_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
-#endif
-#ifdef VK_USE_PLATFORM_XCB_KHR
- wsi_x11_finish_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
-#endif
+ wsi_device_finish(&physical_device->wsi_device,
+ &physical_device->instance->alloc);
}
void anv_DestroySurfaceKHR(
diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c
index 9a5c78381ce..2de5f154c8a 100644
--- a/src/vulkan/wsi/wsi_common.c
+++ b/src/vulkan/wsi/wsi_common.c
@@ -25,11 +25,14 @@
#include "util/macros.h"
#include "vk_util.h"
-void
+VkResult
wsi_device_init(struct wsi_device *wsi,
VkPhysicalDevice pdevice,
- WSI_FN_GetPhysicalDeviceProcAddr proc_addr)
+ WSI_FN_GetPhysicalDeviceProcAddr proc_addr,
+ const VkAllocationCallbacks *alloc)
{
+ VkResult result;
+
memset(wsi, 0, sizeof(*wsi));
#define WSI_GET_CB(func) \
@@ -69,6 +72,36 @@ wsi_device_init(struct wsi_device *wsi,
WSI_GET_CB(QueueSubmit);
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)
+ return result;
+#endif
+
+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
+ result = wsi_wl_init_wsi(wsi, alloc, pdevice);
+ if (result != VK_SUCCESS) {
+#ifdef VK_USE_PLATFORM_XCB_KHR
+ wsi_x11_finish_wsi(wsi, alloc);
+#endif
+ return result;
+ }
+#endif
+
+ return VK_SUCCESS;
+}
+
+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.h b/src/vulkan/wsi/wsi_common.h
index 65814435ce4..3e0d3be1c24 100644
--- a/src/vulkan/wsi/wsi_common.h
+++ b/src/vulkan/wsi/wsi_common.h
@@ -89,10 +89,15 @@ struct wsi_device {
typedef PFN_vkVoidFunction (VKAPI_PTR *WSI_FN_GetPhysicalDeviceProcAddr)(VkPhysicalDevice physicalDevice, const char* pName);
-void
+VkResult
wsi_device_init(struct wsi_device *wsi,
VkPhysicalDevice pdevice,
- WSI_FN_GetPhysicalDeviceProcAddr proc_addr);
+ WSI_FN_GetPhysicalDeviceProcAddr proc_addr,
+ const VkAllocationCallbacks *alloc);
+
+void
+wsi_device_finish(struct wsi_device *wsi,
+ const VkAllocationCallbacks *alloc);
#define ICD_DEFINE_NONDISP_HANDLE_CASTS(__VkIcdType, __VkType) \
\
@@ -113,16 +118,6 @@ wsi_device_init(struct wsi_device *wsi,
ICD_DEFINE_NONDISP_HANDLE_CASTS(VkIcdSurfaceBase, VkSurfaceKHR)
-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);
-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);
-
VkResult
wsi_common_get_surface_support(struct wsi_device *wsi_device,
int local_fd,
diff --git a/src/vulkan/wsi/wsi_common_private.h b/src/vulkan/wsi/wsi_common_private.h
index e29a239bd78..503b2a015dc 100644
--- a/src/vulkan/wsi/wsi_common_private.h
+++ b/src/vulkan/wsi/wsi_common_private.h
@@ -124,6 +124,16 @@ struct wsi_interface {
struct wsi_swapchain **swapchain);
};
+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);
+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);
+
#define WSI_DEFINE_NONDISP_HANDLE_CASTS(__wsi_type, __VkType) \
\