From: Henri Verbeet Subject: [PATCH 2/5] wined3d: Destroy GPU resources from the CS thread in adapter_vk_uninit_3d(). Message-Id: <20191212173305.17086-2-hverbeet@codeweavers.com> Date: Thu, 12 Dec 2019 21:03:02 +0330 Signed-off-by: Henri Verbeet --- dlls/wined3d/adapter_vk.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 4a501292824..94eb1382c56 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -448,27 +448,42 @@ static HRESULT adapter_vk_init_3d(struct wined3d_device *device) return WINED3D_OK; } -static void adapter_vk_uninit_3d(struct wined3d_device *device) +static void adapter_vk_uninit_3d_cs(void *object) { + struct wined3d_device_vk *device_vk = object; struct wined3d_context_vk *context_vk; + struct wined3d_device *device; struct wined3d_shader *shader; - TRACE("device %p.\n", device); + TRACE("device_vk %p.\n", device_vk); - context_vk = &wined3d_device_vk(device)->context_vk; + context_vk = &device_vk->context_vk; + device = &device_vk->d; LIST_FOR_EACH_ENTRY(shader, &device->shaders, struct wined3d_shader, shader_list_entry) { device->shader_backend->shader_destroy(shader); } + device->blitter->ops->blitter_destroy(device->blitter, NULL); + device->shader_backend->shader_free_private(device, &context_vk->c); wined3d_device_destroy_default_samplers(device, &context_vk->c); +} - device->blitter->ops->blitter_destroy(device->blitter, NULL); +static void adapter_vk_uninit_3d(struct wined3d_device *device) +{ + struct wined3d_context_vk *context_vk; + struct wined3d_device_vk *device_vk; + + TRACE("device %p.\n", device); + device_vk = wined3d_device_vk(device); + context_vk = &device_vk->context_vk; + + wined3d_cs_destroy_object(device->cs, adapter_vk_uninit_3d_cs, device_vk); wined3d_cs_finish(device->cs, WINED3D_CS_QUEUE_DEFAULT); + device_context_remove(device, &context_vk->c); - device->shader_backend->shader_free_private(device, NULL); wined3d_context_vk_cleanup(context_vk); } -- 2.11.0