diff options
author | Varad Gautam <[email protected]> | 2017-05-30 17:23:46 +0530 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2017-06-09 14:12:37 +0100 |
commit | e0965a2c8e0b6ed7de23ce359af14ad74c670e8f (patch) | |
tree | b553f7b5fc4ade293902d35780fa58302c93559f /src/gallium | |
parent | cf748242d154994c2405e0e6092b2ae549162f69 (diff) |
gallium: introduce format modifier querying
format modifiers tokens are driver specific, and hence, need to come
in from the driver. this allows drivers to be queried for supported
format modifiers for EGL_EXT_image_dma_buf_import_modifiers.
v2: rebase to master.
v3: drivers must return false on query failure.
v4: use pscreen->is_format_supported instead of adding a separate
format query handle, remove PIPE_CAP_QUERY_DMABUF_ATTRIBS.
(Lucas Stach)
v5: add external_only parameter.
Signed-off-by: Varad Gautam <[email protected]>
Cc: Lucas Stach <[email protected]>
Reviewed-by: Lucas Stach <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/include/pipe/p_screen.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h index 5102827440e..65e954aa87e 100644 --- a/src/gallium/include/pipe/p_screen.h +++ b/src/gallium/include/pipe/p_screen.h @@ -343,6 +343,20 @@ struct pipe_screen { struct pipe_screen *, const struct pipe_resource *templat, const uint64_t *modifiers, int count); + + /** + * Get supported modifiers for a format. + * If \p max is 0, the total number of supported modifiers for the supplied + * format is returned in \p count, with no modification to \p modifiers. + * Otherwise, \p modifiers is filled with upto \p max supported modifier + * codes, and \p count with the number of modifiers copied. + * The \p external_only array is used to return whether the format and + * modifier combination can only be used with an external texture target. + */ + void (*query_dmabuf_modifiers)(struct pipe_screen *screen, + enum pipe_format format, int max, + uint64_t *modifiers, + unsigned int *external_only, int *count); }; |