Use the common pipe_screen ref counting and fd hashing functions. The mutex can be dropped as the pipe loader protects the create_screen() calls.
Cc: Eric Anholt <e...@anholt.net> Signed-off-by: Rob Herring <r...@kernel.org> --- src/gallium/winsys/vc4/drm/vc4_drm_winsys.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gallium/winsys/vc4/drm/vc4_drm_winsys.c b/src/gallium/winsys/vc4/drm/vc4_drm_winsys.c index c5434ad..acda743 100644 --- a/src/gallium/winsys/vc4/drm/vc4_drm_winsys.c +++ b/src/gallium/winsys/vc4/drm/vc4_drm_winsys.c @@ -22,6 +22,7 @@ */ #include <unistd.h> +#include "util/u_screen.h" #include "vc4_drm_public.h" @@ -30,5 +31,11 @@ struct pipe_screen * vc4_drm_screen_create(int fd) { - return vc4_screen_create(dup(fd)); + struct pipe_screen *pscreen = pipe_screen_reference(fd); + if (pscreen) + return pscreen; + + pscreen = vc4_screen_create(dup(fd)); + pipe_screen_reference_init(pscreen, fd); + return pscreen; } -- 2.9.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev