mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
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 <airlied@redhat.com> Reviewed-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
parent
2e3e55110b
commit
0a10e3770f
5 changed files with 64 additions and 74 deletions
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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) \
|
||||
\
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue