From b4ef984ef3f5ff2ab1e762231f490e7407b01e00 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 1 Jun 2022 11:30:32 -0400 Subject: Revert "zink: remove drm_fd" This reverts commit c5960f64b139605dbefa34c2cc2a089ba00ae1e2. Reviewed-by: Adam Jackson Part-of: --- src/gallium/drivers/zink/zink_screen.c | 7 +++++++ src/gallium/drivers/zink/zink_screen.h | 1 + 2 files changed, 8 insertions(+) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index b1e47f17aca..3645c7fb8ca 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -1275,6 +1275,8 @@ zink_destroy_screen(struct pipe_screen *pscreen) util_idalloc_mt_fini(&screen->buffer_ids); util_dl_close(screen->loader_lib); + if (screen->drm_fd != -1) + close(screen->drm_fd); slab_destroy_parent(&screen->transfer_pool); ralloc_free(screen); @@ -2348,6 +2350,9 @@ struct pipe_screen * zink_create_screen(struct sw_winsys *winsys, const struct pipe_screen_config *config) { struct zink_screen *ret = zink_internal_create_screen(config); + if (ret) { + ret->drm_fd = -1; + } return &ret->base; } @@ -2357,6 +2362,8 @@ zink_drm_create_screen(int fd, const struct pipe_screen_config *config) { struct zink_screen *ret = zink_internal_create_screen(config); + if (ret) + ret->drm_fd = os_dupfd_cloexec(fd); if (ret && !ret->info.have_KHR_external_memory_fd) { debug_printf("ZINK: KHR_external_memory_fd required!\n"); zink_destroy_screen(&ret->base); diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h index 3dc925108e9..142c127f3c5 100644 --- a/src/gallium/drivers/zink/zink_screen.h +++ b/src/gallium/drivers/zink/zink_screen.h @@ -113,6 +113,7 @@ struct zink_screen { simple_mtx_t dt_lock; bool device_lost; + int drm_fd; struct hash_table framebuffer_cache; -- cgit v1.2.3