[Mesa-dev] [RFC 2/7] xa: add handle type parameter to get handle
Rob Clark
robdclark at gmail.com
Tue May 28 07:13:27 PDT 2013
From: Jerome Glisse <jglisse at redhat.com>
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
--
1.8.1.4
More information about the mesa-dev
mailing list