Use the common pipe_screen ref counting and fd hashing functions for vc4. This is necessary to only create a single pipe_screen for a process and avoid multiple imports of same prime fd among other things (probably).
Cc: Eric Anholt <[email protected]> Signed-off-by: Rob Herring <[email protected]> --- src/gallium/winsys/vc4/drm/vc4_drm_winsys.c | 11 ++++++++++- 1 file changed, 10 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..e0d9cc2 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,13 @@ struct pipe_screen * vc4_drm_screen_create(int fd) { - return vc4_screen_create(dup(fd)); + int dupfd; + struct pipe_screen *pscreen = pipe_screen_reference(fd); + if (pscreen) + return pscreen; + + dupfd = dup(fd); + pscreen = vc4_screen_create(dupfd); + pipe_screen_reference_init(pscreen, dupfd); + return pscreen; } -- 2.9.2 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
