Mesa (master): xa: add handle type parameter to get handle

Rob Clark robclark at kemper.freedesktop.org
Thu Jul 25 18:04:09 UTC 2013


Module: Mesa
Branch: master
Commit: d1444225d3a600be77602af35d1e9879e469c70e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1444225d3a600be77602af35d1e9879e469c70e

Author: Jerome Glisse <jglisse at redhat.com>
Date:   Wed Feb 27 10:49:35 2013 -0500

xa: add handle type parameter to get handle

Allow to retrieve non shared handle.

Signed-off-by: Jerome Glisse <jglisse at redhat.com>

---

 src/gallium/state_trackers/xa/xa_tracker.c |   11 ++++++++++-
 src/gallium/state_trackers/xa/xa_tracker.h |    9 ++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/gallium/state_trackers/xa/xa_tracker.c b/src/gallium/state_trackers/xa/xa_tracker.c
index b49f0d9..945ed36 100644
--- a/src/gallium/state_trackers/xa/xa_tracker.c
+++ b/src/gallium/state_trackers/xa/xa_tracker.c
@@ -468,6 +468,7 @@ xa_tracker_version(int *major, int *minor, int *patch)
 
 XA_EXPORT int
 xa_surface_handle(struct xa_surface *srf,
+		  enum xa_handle_type type,
 		  uint32_t * handle, unsigned int *stride)
 {
     struct winsys_handle whandle;
@@ -476,7 +477,15 @@ xa_surface_handle(struct xa_surface *srf,
     boolean res;
 
     memset(&whandle, 0, sizeof(whandle));
-    whandle.type = DRM_API_HANDLE_TYPE_SHARED;
+    switch (type) {
+    case xa_handle_type_kms:
+	whandle.type = DRM_API_HANDLE_TYPE_KMS;
+	break;
+    case xa_handle_type_shared:
+    default:
+	whandle.type = DRM_API_HANDLE_TYPE_SHARED;
+	break;
+    }
     res = screen->resource_get_handle(screen, srf->tex, &whandle);
     if (!res)
 	return -XA_ERR_INVAL;
diff --git a/src/gallium/state_trackers/xa/xa_tracker.h b/src/gallium/state_trackers/xa/xa_tracker.h
index 1348621..4d2452e 100644
--- a/src/gallium/state_trackers/xa/xa_tracker.h
+++ b/src/gallium/state_trackers/xa/xa_tracker.h
@@ -142,6 +142,11 @@ struct xa_box {
     uint16_t x1, y1, x2, y2;
 };
 
+enum xa_handle_type {
+    xa_handle_type_shared,
+    xa_handle_type_kms,
+};
+
 extern void xa_tracker_version(int *major, int *minor, int *patch);
 
 extern struct xa_tracker *xa_tracker_create(int drm_fd);
@@ -183,6 +188,8 @@ extern int xa_surface_redefine(struct xa_surface *srf,
 			       int copy_contents);
 
 extern int xa_surface_handle(struct xa_surface *srf,
-			     uint32_t * handle, unsigned int *byte_stride);
+			     enum xa_handle_type type,
+			     uint32_t * handle,
+			     unsigned int *byte_stride);
 
 #endif




More information about the mesa-commit mailing list