zink: add a screen cache for fd semaphores
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 30 Aug 2023 20:09:54 +0000 (16:09 -0400)
committerMarge Bot <emma+marge@anholt.net>
Sat, 9 Sep 2023 03:44:05 +0000 (03:44 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24962>

src/gallium/drivers/zink/zink_screen.c
src/gallium/drivers/zink/zink_types.h

index 634182e..6da99be 100644 (file)
@@ -1511,6 +1511,8 @@ zink_destroy_screen(struct pipe_screen *pscreen)
    simple_mtx_destroy(&screen->semaphores_lock);
    while (util_dynarray_contains(&screen->semaphores, VkSemaphore))
       VKSCR(DestroySemaphore)(screen->dev, util_dynarray_pop(&screen->semaphores, VkSemaphore), NULL);
+   while (util_dynarray_contains(&screen->fd_semaphores, VkSemaphore))
+      VKSCR(DestroySemaphore)(screen->dev, util_dynarray_pop(&screen->fd_semaphores, VkSemaphore), NULL);
    if (screen->bindless_layout)
       VKSCR(DestroyDescriptorSetLayout)(screen->dev, screen->bindless_layout, NULL);
 
@@ -3248,6 +3250,7 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
 
    simple_mtx_init(&screen->semaphores_lock, mtx_plain);
    util_dynarray_init(&screen->semaphores, screen);
+   util_dynarray_init(&screen->fd_semaphores, screen);
 
    util_vertex_state_cache_init(&screen->vertex_state_cache,
                                 zink_create_vertex_state, zink_vertex_state_destroy);
index 0dcf7af..8399bca 100644 (file)
@@ -1387,6 +1387,7 @@ struct zink_screen {
 
    simple_mtx_t semaphores_lock;
    struct util_dynarray semaphores;
+   struct util_dynarray fd_semaphores;
 
    unsigned buffer_rebind_counter;
    unsigned image_rebind_counter;