xa: add handle type parameter to get handle
authorJerome Glisse <jglisse@redhat.com>
Wed, 27 Feb 2013 15:49:35 +0000 (10:49 -0500)
committerRob Clark <robclark@freedesktop.org>
Thu, 25 Jul 2013 17:59:55 +0000 (13:59 -0400)
Allow to retrieve non shared handle.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
src/gallium/state_trackers/xa/xa_tracker.c
src/gallium/state_trackers/xa/xa_tracker.h

index b49f0d9e18d1674e06ec5c4bc2b8dd23f9c9f615..945ed36a2920930d6702ca06293ce658ff8ae267 100644 (file)
@@ -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;
index 13486219562955c7f31324e15b5205fef9669fec..4d2452e9286de48199d859363af8dbdac2f44675 100644 (file)
@@ -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