diff --git a/.pick_status.json b/.pick_status.json index 28c7c67ce27..fc708385776 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1694,7 +1694,7 @@ "description": "zink: destroy batch states after copy context", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "b06f6e00fba6e33c28a198a1bb14b89e9dfbb4ae", "notes": null diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index ccbbf808d85..ee2f61d80ce 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -1466,12 +1466,6 @@ static void zink_destroy_screen(struct pipe_screen *pscreen) { struct zink_screen *screen = zink_screen(pscreen); - struct zink_batch_state *bs = screen->free_batch_states; - while (bs) { - struct zink_batch_state *bs_next = bs->next; - zink_batch_state_destroy(screen, bs); - bs = bs_next; - } #ifdef HAVE_RENDERDOC_APP_H if (screen->renderdoc_capture_all && p_atomic_dec_zero(&num_screens)) @@ -1484,6 +1478,13 @@ zink_destroy_screen(struct pipe_screen *pscreen) if (screen->copy_context) screen->copy_context->base.destroy(&screen->copy_context->base); + struct zink_batch_state *bs = screen->free_batch_states; + while (bs) { + struct zink_batch_state *bs_next = bs->next; + zink_batch_state_destroy(screen, bs); + bs = bs_next; + } + if (VK_NULL_HANDLE != screen->debugUtilsCallbackHandle) { VKSCR(DestroyDebugUtilsMessengerEXT)(screen->instance, screen->debugUtilsCallbackHandle, NULL); }