diff options
author | Varad Gautam <varadgautam@gmail.com> | 2017-05-30 17:23:36 +0530 |
---|---|---|
committer | Eric Engestrom <eric.engestrom@imgtec.com> | 2017-05-30 13:56:20 +0100 |
commit | c5929634a01eb0adcc0cc59c4c9b6304492d74f5 (patch) | |
tree | c71a19f09fe9d9d9de4e0f9af9be259317cd10dc /include | |
parent | fb2a1c2327bef00014210097e7e805247f37b33d (diff) |
dri: introduce dmabuf format modifier related handles
these allow dmabuf import with modifiers, and supported format and
modifier queries, which are used to implement
EGL_EXT_image_dma_buf_import_modifiers.
v2:
- squash dmabuf queries into DRIimage version 15 (Jason Ekstrand).
- add external_only param to queryDmaBufModifiers (Emil, Daniel Stone)
- pass a single modifier form createImageFromDmaBufs2 since all planes have
the same modifier (Jason Ekstrand)
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Varad Gautam <varad.gautam@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/GL/internal/dri_interface.h | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index ffe99499fc..fc2d4bbe22 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -1137,7 +1137,7 @@ struct __DRIdri2ExtensionRec { * extensions. */ #define __DRI_IMAGE "DRI_IMAGE" -#define __DRI_IMAGE_VERSION 14 +#define __DRI_IMAGE_VERSION 15 /** * These formats correspond to the similarly named MESA_FORMAT_* @@ -1494,6 +1494,67 @@ struct __DRIimageExtensionRec { const uint64_t *modifiers, const unsigned int modifier_count, void *loaderPrivate); + + /* + * Like createImageFromDmaBufs, but takes also format modifiers. + * + * For EGL_EXT_image_dma_buf_import_modifiers. + * + * \since 15 + */ + __DRIimage *(*createImageFromDmaBufs2)(__DRIscreen *screen, + int width, int height, int fourcc, + uint64_t modifier, + int *fds, int num_fds, + int *strides, int *offsets, + enum __DRIYUVColorSpace color_space, + enum __DRISampleRange sample_range, + enum __DRIChromaSiting horiz_siting, + enum __DRIChromaSiting vert_siting, + unsigned *error, + void *loaderPrivate); + + /* + * dmabuf format query to support EGL_EXT_image_dma_buf_import_modifiers. + * + * \param max Maximum number of formats that can be accomodated into + * \param formats. If zero, no formats are returned - + * instead, the driver returns the total number of + * supported dmabuf formats in \param count. + * \param formats Buffer to fill formats into. + * \param count Count of formats returned, or, total number of + * supported formats in case \param max is zero. + * + * Returns true on success. + * + * \since 15 + */ + GLboolean (*queryDmaBufFormats)(__DRIscreen *screen, int max, + int *formats, int *count); + + /* + * dmabuf format modifier query for a given format to support + * EGL_EXT_image_dma_buf_import_modifiers. + * + * \param fourcc The format to query modifiers for. If this format + * is not supported by the driver, return false. + * \param max Maximum number of modifiers that can be accomodated in + * \param modifiers. If zero, no modifiers are returned - + * instead, the driver returns the total number of + * modifiers for \param format in \param count. + * \param modifiers Buffer to fill modifiers into. + * \param count Count of the modifiers returned, or, total number of + * supported modifiers for \param fourcc in case + * \param max is zero. + * + * Returns true upon success. + * + * \since 15 + */ + GLboolean (*queryDmaBufModifiers)(__DRIscreen *screen, int fourcc, + int max, uint64_t *modifiers, + unsigned int *external_only, + int *count); }; |