[Mesa-dev] [PATCH v4 11/11] vc4: use common screen ref counting

Rob Herring robh at kernel.org
Fri Jul 22 16:22:22 UTC 2016


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 <eric at anholt.net>
Signed-off-by: Rob Herring <robh at kernel.org>
---
 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



More information about the mesa-dev mailing list