commit 134e4da

Michael Forney  ·  2013-09-05 23:02:46 +0000 UTC
parent 049c414
drm: Add method to get buffer handle
4 files changed,  +21, -3
M drm.c
M drm.h
+1, -0
1@@ -61,6 +61,7 @@ struct drm_drawable
2 {
3     struct wld_drawable base;
4     struct wld_drm_context * drm;
5+    uint32_t handle;
6 };
7 
8 _Static_assert(offsetof(struct drm_drawable, base) == 0,
M drm.c
+7, -0
 1@@ -163,3 +163,10 @@ int wld_drm_export(struct wld_drawable * drawable)
 2     return drm_drawable->drm->interface->export(drm_drawable);
 3 }
 4 
 5+uint32_t wld_drm_drawable_get_handle(struct wld_drawable * drawable)
 6+{
 7+    struct drm_drawable * drm_drawable = (void *) drawable;
 8+
 9+    return drm_drawable->handle;
10+}
11+
M drm.h
+7, -0
 1@@ -72,5 +72,12 @@ struct wld_drawable * wld_drm_import_gem(struct wld_drm_context * context,
 2  */
 3 int wld_drm_export(struct wld_drawable * drawable);
 4 
 5+/**
 6+ * Get the handle of a DRM drawable.
 7+ *
 8+ * This can be used with various DRM ioctls.
 9+ */
10+uint32_t wld_drm_drawable_get_handle(struct wld_drawable * drawable);
11+
12 #endif
13 
+6, -3
 1@@ -66,9 +66,9 @@ static void intel_flush(struct wld_drawable * drawable);
 2 static void intel_destroy(struct wld_drawable * drawable);
 3 
 4 /* DRM implementation */
 5+static bool intel_device_supported(uint32_t vendor_id, uint32_t device_id);
 6 static struct wld_intel_context * intel_create_context(int drm_fd);
 7 static void intel_destroy_context(struct wld_intel_context * context);
 8-static bool intel_device_supported(uint32_t vendor_id, uint32_t device_id);
 9 static struct drm_drawable * intel_create_drawable
10     (struct wld_intel_context * context, uint32_t width, uint32_t height,
11      uint32_t format);
12@@ -155,6 +155,7 @@ struct drm_drawable * intel_create_drawable
13     intel->bo = drm_intel_bo_alloc_tiled(context->bufmgr, "drawable",
14                                          width, height, 4, &tiling_mode,
15                                          &intel->drm.base.pitch, 0);
16+    intel->drm.handle = intel->bo->handle;
17 
18     return &intel->drm;
19 }
20@@ -170,9 +171,10 @@ struct drm_drawable * intel_import(struct wld_intel_context * context,
21     if (!(intel = new_drawable(context, width, height)))
22         return NULL;
23 
24-    intel->drm.base.pitch = pitch;
25     intel->bo = drm_intel_bo_gem_create_from_prime(context->bufmgr,
26                                                    prime_fd, size);
27+    intel->drm.base.pitch = pitch;
28+    intel->drm.handle = intel->bo->handle;
29 
30     return &intel->drm;
31 }
32@@ -187,9 +189,10 @@ struct drm_drawable * intel_import_gem(struct wld_intel_context * context,
33     if (!(intel = new_drawable(context, width, height)))
34         return NULL;
35 
36-    intel->drm.base.pitch = pitch;
37     intel->bo = drm_intel_bo_gem_create_from_name(context->bufmgr, "drawable",
38                                                   gem_name);
39+    intel->drm.base.pitch = pitch;
40+    intel->drm.handle = intel->bo->handle;
41 
42     return &intel->drm;
43 }