xa: add handle type parameter to get handle

Allow to retrieve non shared handle.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
This commit is contained in:
Jerome Glisse
2013-02-27 10:49:35 -05:00
committed by Rob Clark
parent 984da46219
commit d1444225d3
2 changed files with 18 additions and 2 deletions

View 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;

View 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