mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-05 11:10:10 +01:00
anv/wsi/x11: push anv_device out of the init/finish routines
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
7c10258567
commit
36e6be2e0d
3 changed files with 19 additions and 15 deletions
|
|
@ -31,7 +31,7 @@ anv_init_wsi(struct anv_physical_device *physical_device)
|
|||
memset(physical_device->wsi_device.wsi, 0, sizeof(physical_device->wsi_device.wsi));
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
result = anv_x11_init_wsi(physical_device);
|
||||
result = anv_x11_init_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
#endif
|
||||
|
|
@ -40,7 +40,7 @@ anv_init_wsi(struct anv_physical_device *physical_device)
|
|||
result = anv_wl_init_wsi(physical_device);
|
||||
if (result != VK_SUCCESS) {
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
anv_x11_finish_wsi(physical_device);
|
||||
anv_x11_finish_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
|
|
@ -56,7 +56,7 @@ anv_finish_wsi(struct anv_physical_device *physical_device)
|
|||
anv_wl_finish_wsi(physical_device);
|
||||
#endif
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
anv_x11_finish_wsi(physical_device);
|
||||
anv_x11_finish_wsi(&physical_device->wsi_device, &physical_device->instance->alloc);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,8 +70,10 @@ struct anv_swapchain {
|
|||
ANV_DEFINE_NONDISP_HANDLE_CASTS(_VkIcdSurfaceBase, VkSurfaceKHR)
|
||||
ANV_DEFINE_NONDISP_HANDLE_CASTS(anv_swapchain, VkSwapchainKHR)
|
||||
|
||||
VkResult anv_x11_init_wsi(struct anv_physical_device *physical_device);
|
||||
void anv_x11_finish_wsi(struct anv_physical_device *physical_device);
|
||||
VkResult anv_x11_init_wsi(struct anv_wsi_device *wsi_device,
|
||||
const VkAllocationCallbacks *alloc);
|
||||
void anv_x11_finish_wsi(struct anv_wsi_device *wsi_device,
|
||||
const VkAllocationCallbacks *alloc);
|
||||
VkResult anv_wl_init_wsi(struct anv_physical_device *physical_device);
|
||||
void anv_wl_finish_wsi(struct anv_physical_device *physical_device);
|
||||
|
||||
|
|
|
|||
|
|
@ -897,12 +897,13 @@ fail_register:
|
|||
}
|
||||
|
||||
VkResult
|
||||
anv_x11_init_wsi(struct anv_physical_device *device)
|
||||
anv_x11_init_wsi(struct anv_wsi_device *wsi_device,
|
||||
const VkAllocationCallbacks *alloc)
|
||||
{
|
||||
struct wsi_x11 *wsi;
|
||||
VkResult result;
|
||||
|
||||
wsi = vk_alloc(&device->instance->alloc, sizeof(*wsi), 8,
|
||||
wsi = vk_alloc(alloc, sizeof(*wsi), 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
|
||||
if (!wsi) {
|
||||
result = vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
|
@ -934,33 +935,34 @@ anv_x11_init_wsi(struct anv_physical_device *device)
|
|||
wsi->base.get_present_modes = x11_surface_get_present_modes;
|
||||
wsi->base.create_swapchain = x11_surface_create_swapchain;
|
||||
|
||||
device->wsi_device.wsi[VK_ICD_WSI_PLATFORM_XCB] = &wsi->base;
|
||||
device->wsi_device.wsi[VK_ICD_WSI_PLATFORM_XLIB] = &wsi->base;
|
||||
wsi_device->wsi[VK_ICD_WSI_PLATFORM_XCB] = &wsi->base;
|
||||
wsi_device->wsi[VK_ICD_WSI_PLATFORM_XLIB] = &wsi->base;
|
||||
|
||||
return VK_SUCCESS;
|
||||
|
||||
fail_mutex:
|
||||
pthread_mutex_destroy(&wsi->mutex);
|
||||
fail_alloc:
|
||||
vk_free(&device->instance->alloc, wsi);
|
||||
vk_free(alloc, wsi);
|
||||
fail:
|
||||
device->wsi_device.wsi[VK_ICD_WSI_PLATFORM_XCB] = NULL;
|
||||
device->wsi_device.wsi[VK_ICD_WSI_PLATFORM_XLIB] = NULL;
|
||||
wsi_device->wsi[VK_ICD_WSI_PLATFORM_XCB] = NULL;
|
||||
wsi_device->wsi[VK_ICD_WSI_PLATFORM_XLIB] = NULL;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
anv_x11_finish_wsi(struct anv_physical_device *device)
|
||||
anv_x11_finish_wsi(struct anv_wsi_device *wsi_device,
|
||||
const VkAllocationCallbacks *alloc)
|
||||
{
|
||||
struct wsi_x11 *wsi =
|
||||
(struct wsi_x11 *)device->wsi_device.wsi[VK_ICD_WSI_PLATFORM_XCB];
|
||||
(struct wsi_x11 *)wsi_device->wsi[VK_ICD_WSI_PLATFORM_XCB];
|
||||
|
||||
if (wsi) {
|
||||
_mesa_hash_table_destroy(wsi->connections, NULL);
|
||||
|
||||
pthread_mutex_destroy(&wsi->mutex);
|
||||
|
||||
vk_free(&device->instance->alloc, wsi);
|
||||
vk_free(alloc, wsi);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue