diff options
author | Marek Olšák <[email protected]> | 2016-02-24 18:51:15 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2016-03-09 15:02:25 +0100 |
commit | 82db518f1519cec9e3842f23455a105e2006afbd (patch) | |
tree | 5baa1ddfa03e94f1edc53b10473c67b9dce26fee /src/gallium/include/pipe | |
parent | d943ac432de1f46cea47bdbf5ffe5365e2aef386 (diff) |
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 <[email protected]>
Diffstat (limited to 'src/gallium/include/pipe')
-rw-r--r-- | src/gallium/include/pipe/p_defines.h | 11 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_screen.h | 10 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index a91e6e55055..c9149bea309 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -530,6 +530,17 @@ enum pipe_reset_status /** + * resource_get_handle flags. + */ +/* Requires pipe_context::flush_resource before external use. */ +#define PIPE_HANDLE_USAGE_EXPLICIT_FLUSH (1 << 0) +/* Expected external use of the resource: */ +#define PIPE_HANDLE_USAGE_READ (1 << 1) +#define PIPE_HANDLE_USAGE_WRITE (1 << 2) +#define PIPE_HANDLE_USAGE_READ_WRITE (PIPE_HANDLE_USAGE_READ | \ + PIPE_HANDLE_USAGE_WRITE) + +/** * Implementation capabilities/limits which are queried through * pipe_screen::get_param() */ diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h index 211bc2440f9..4f30e75ab49 100644 --- a/src/gallium/include/pipe/p_screen.h +++ b/src/gallium/include/pipe/p_screen.h @@ -182,10 +182,13 @@ struct pipe_screen { * NOTE: in the case of DRM_API_HANDLE_TYPE_FD handles, the caller * retains ownership of the FD. (This is consistent with * EGL_EXT_image_dma_buf_import) + * + * \param usage A combination of PIPE_HANDLE_USAGE_* flags. */ struct pipe_resource * (*resource_from_handle)(struct pipe_screen *, const struct pipe_resource *templat, - struct winsys_handle *handle); + struct winsys_handle *handle, + unsigned usage); /** * Create a resource from user memory. This maps the user memory into @@ -203,10 +206,13 @@ struct pipe_screen { * NOTE: in the case of DRM_API_HANDLE_TYPE_FD handles, the caller * takes ownership of the FD. (This is consistent with * EGL_MESA_image_dma_buf_export) + * + * \param usage A combination of PIPE_HANDLE_USAGE_* flags. */ boolean (*resource_get_handle)(struct pipe_screen *, struct pipe_resource *tex, - struct winsys_handle *handle); + struct winsys_handle *handle, + unsigned usage); void (*resource_destroy)(struct pipe_screen *, |