[PATCH 1/2] Move get_pixmap_handle helper to radeon_bo_helper.c

Michel Dänzer michel at daenzer.net
Thu Mar 26 20:37:27 PDT 2015


From: Michel Dänzer <michel.daenzer at amd.com>

No functional change.

Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
 src/radeon_bo_helper.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++
 src/radeon_bo_helper.h |  3 +++
 src/radeon_present.c   | 53 +++-----------------------------------------------
 3 files changed, 55 insertions(+), 50 deletions(-)

diff --git a/src/radeon_bo_helper.c b/src/radeon_bo_helper.c
index c3a2d63..f45aa76 100644
--- a/src/radeon_bo_helper.c
+++ b/src/radeon_bo_helper.c
@@ -25,6 +25,7 @@
 #endif
 
 #include "radeon.h"
+#include "radeon_glamor.h"
 
 #ifdef RADEON_PIXMAP_SHARING
 #include "radeon_bo_gem.h"
@@ -187,6 +188,54 @@ radeon_alloc_pixmap_bo(ScrnInfoPtr pScrn, int width, int height, int depth,
     return bo;
 }
 
+/* Get GEM handle for the pixmap */
+Bool radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t *handle)
+{
+    struct radeon_bo *bo = radeon_get_pixmap_bo(pixmap);
+#ifdef USE_GLAMOR
+    ScreenPtr screen = pixmap->drawable.pScreen;
+    RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(screen));
+#endif
+
+    if (bo) {
+	*handle = bo->handle;
+	return TRUE;
+    }
+
+#ifdef USE_GLAMOR
+    if (info->use_glamor) {
+	struct radeon_pixmap *priv = radeon_get_pixmap_private(pixmap);
+	CARD16 stride;
+	CARD32 size;
+	int fd, r;
+
+	if (!priv) {
+	    priv = calloc(1, sizeof(*priv));
+	    radeon_set_pixmap_private(pixmap, priv);
+	}
+
+	if (priv->handle_valid) {
+	    *handle = priv->handle;
+	    return TRUE;
+	}
+
+	fd = glamor_fd_from_pixmap(screen, pixmap, &stride, &size);
+	if (fd < 0)
+	    return FALSE;
+
+	r = drmPrimeFDToHandle(info->dri2.drm_fd, fd, &priv->handle);
+	close(fd);
+	if (r == 0) {
+	    priv->handle_valid = TRUE;
+	    *handle = priv->handle;
+	    return TRUE;
+	}
+    }
+#endif
+
+    return FALSE;
+}
+
 #ifdef RADEON_PIXMAP_SHARING
 
 Bool radeon_share_pixmap_backing(struct radeon_bo *bo, void **handle_p)
diff --git a/src/radeon_bo_helper.h b/src/radeon_bo_helper.h
index 9c3d73f..89ad4be 100644
--- a/src/radeon_bo_helper.h
+++ b/src/radeon_bo_helper.h
@@ -29,6 +29,9 @@ radeon_alloc_pixmap_bo(ScrnInfoPtr pScrn, int width, int height, int depth,
 		       struct radeon_surface *new_surface, uint32_t *new_tiling);
 
 extern Bool
+radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t *handle);
+
+extern Bool
 radeon_share_pixmap_backing(struct radeon_bo *bo, void **handle_p);
 
 extern Bool
diff --git a/src/radeon_present.c b/src/radeon_present.c
index 711b45d..b402110 100644
--- a/src/radeon_present.c
+++ b/src/radeon_present.c
@@ -42,6 +42,7 @@
 #include <time.h>
 #include <errno.h>
 
+#include "radeon_bo_helper.h"
 #include "radeon_glamor.h"
 #include "radeon_video.h"
 
@@ -217,54 +218,6 @@ get_drmmode_crtc(ScrnInfoPtr scrn, RRCrtcPtr crtc)
     return NULL;
 }
 
-static Bool
-radeon_present_get_pixmap_handle(PixmapPtr pixmap, uint32_t *handle)
-{
-    struct radeon_bo *bo = radeon_get_pixmap_bo(pixmap);
-#ifdef USE_GLAMOR
-    ScreenPtr screen = pixmap->drawable.pScreen;
-    RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(screen));
-#endif
-
-    if (bo) {
-	*handle = bo->handle;
-	return TRUE;
-    }
-
-#ifdef USE_GLAMOR
-    if (info->use_glamor) {
-	struct radeon_pixmap *priv = radeon_get_pixmap_private(pixmap);
-	CARD16 stride;
-	CARD32 size;
-	int fd, r;
-
-	if (!priv) {
-	    priv = calloc(1, sizeof(*priv));
-	    radeon_set_pixmap_private(pixmap, priv);
-	}
-
-	if (priv->handle_valid) {
-	    *handle = priv->handle;
-	    return TRUE;
-	}
-
-	fd = glamor_fd_from_pixmap(screen, pixmap, &stride, &size);
-	if (fd < 0)
-	    return FALSE;
-
-	r = drmPrimeFDToHandle(info->dri2.drm_fd, fd, &priv->handle);
-	close(fd);
-	if (r == 0) {
-	    priv->handle_valid = TRUE;
-	    *handle = priv->handle;
-	    return TRUE;
-	}
-    }
-#endif
-
-    return FALSE;
-}
-
 /*
  * Test to see if page flipping is possible on the target crtc
  */
@@ -340,7 +293,7 @@ radeon_present_flip(RRCrtcPtr crtc, uint64_t event_id, uint64_t target_msc,
     if (!radeon_present_check_flip(crtc, screen->root, pixmap, sync_flip))
 	return FALSE;
 
-    if (!radeon_present_get_pixmap_handle(pixmap, &handle))
+    if (!radeon_get_pixmap_handle(pixmap, &handle))
 	return FALSE;
 
     event = calloc(1, sizeof(struct radeon_present_vblank_event));
@@ -374,7 +327,7 @@ radeon_present_unflip(ScreenPtr screen, uint64_t event_id)
     if (!radeon_present_check_flip(NULL, screen->root, pixmap, TRUE))
 	return;
 
-    if (!radeon_present_get_pixmap_handle(pixmap, &handle))
+    if (!radeon_get_pixmap_handle(pixmap, &handle))
 	return;
 
     event = calloc(1, sizeof(struct radeon_present_vblank_event));
-- 
2.1.4



More information about the xorg-driver-ati mailing list