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:
@@ -468,6 +468,7 @@ xa_tracker_version(int *major, int *minor, int *patch)
|
|||||||
|
|
||||||
XA_EXPORT int
|
XA_EXPORT int
|
||||||
xa_surface_handle(struct xa_surface *srf,
|
xa_surface_handle(struct xa_surface *srf,
|
||||||
|
enum xa_handle_type type,
|
||||||
uint32_t * handle, unsigned int *stride)
|
uint32_t * handle, unsigned int *stride)
|
||||||
{
|
{
|
||||||
struct winsys_handle whandle;
|
struct winsys_handle whandle;
|
||||||
@@ -476,7 +477,15 @@ xa_surface_handle(struct xa_surface *srf,
|
|||||||
boolean res;
|
boolean res;
|
||||||
|
|
||||||
memset(&whandle, 0, sizeof(whandle));
|
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);
|
res = screen->resource_get_handle(screen, srf->tex, &whandle);
|
||||||
if (!res)
|
if (!res)
|
||||||
return -XA_ERR_INVAL;
|
return -XA_ERR_INVAL;
|
||||||
|
@@ -142,6 +142,11 @@ struct xa_box {
|
|||||||
uint16_t x1, y1, x2, y2;
|
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 void xa_tracker_version(int *major, int *minor, int *patch);
|
||||||
|
|
||||||
extern struct xa_tracker *xa_tracker_create(int drm_fd);
|
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);
|
int copy_contents);
|
||||||
|
|
||||||
extern int xa_surface_handle(struct xa_surface *srf,
|
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
|
#endif
|
||||||
|
Reference in New Issue
Block a user