From 82db518f1519cec9e3842f23455a105e2006afbd Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Wed, 24 Feb 2016 18:51:15 +0100 Subject: gallium: add external usage flags to resource_from(get)_handle (v2) This will allow drivers to make better decisions about texture sharing for DRI2, DRI3, Wayland, and OpenCL. v2: add read/write flags, take advantage of __DRI_IMAGE_USE_BACKBUFFER Reviewed-by: Axel Davy --- src/gallium/auxiliary/util/u_transfer.c | 3 ++- src/gallium/auxiliary/util/u_transfer.h | 3 ++- src/gallium/auxiliary/vl/vl_winsys_dri.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/gallium/auxiliary') diff --git a/src/gallium/auxiliary/util/u_transfer.c b/src/gallium/auxiliary/util/u_transfer.c index adae84bbfab..0610535cd2c 100644 --- a/src/gallium/auxiliary/util/u_transfer.c +++ b/src/gallium/auxiliary/util/u_transfer.c @@ -98,7 +98,8 @@ u_resource( struct pipe_resource *res ) boolean u_resource_get_handle_vtbl(struct pipe_screen *screen, struct pipe_resource *resource, - struct winsys_handle *handle) + struct winsys_handle *handle, + unsigned usage) { struct u_resource *ur = u_resource(resource); return ur->vtbl->resource_get_handle(screen, resource, handle); diff --git a/src/gallium/auxiliary/util/u_transfer.h b/src/gallium/auxiliary/util/u_transfer.h index 6c25ee0f024..660dc161d33 100644 --- a/src/gallium/auxiliary/util/u_transfer.h +++ b/src/gallium/auxiliary/util/u_transfer.h @@ -78,7 +78,8 @@ struct u_resource { boolean u_resource_get_handle_vtbl(struct pipe_screen *screen, struct pipe_resource *resource, - struct winsys_handle *handle); + struct winsys_handle *handle, + unsigned usage); void u_resource_destroy_vtbl(struct pipe_screen *screen, struct pipe_resource *resource); diff --git a/src/gallium/auxiliary/vl/vl_winsys_dri.c b/src/gallium/auxiliary/vl/vl_winsys_dri.c index 758f50d7c23..01365260312 100644 --- a/src/gallium/auxiliary/vl/vl_winsys_dri.c +++ b/src/gallium/auxiliary/vl/vl_winsys_dri.c @@ -248,7 +248,8 @@ vl_dri2_screen_texture_from_drawable(struct vl_screen *vscreen, void *drawable) template.flags = 0; tex = scrn->base.pscreen->resource_from_handle(scrn->base.pscreen, &template, - &dri2_handle); + &dri2_handle, + PIPE_HANDLE_USAGE_READ_WRITE); free(reply); return tex; -- cgit v1.2.3