From 7520478461d8ab1cda415ff689d6b9058213ff43 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 17 Oct 2019 16:48:48 -0400 Subject: [PATCH] dri_interface: add interface for EGL_EXT_image_flush_external MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Kristian H. Kristensen Reviewed-By: Tapani Pälli --- include/GL/internal/dri_interface.h | 51 ++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index f19ec5168a5..c1d54a1a9c6 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -1306,7 +1306,7 @@ struct __DRIdri2ExtensionRec { * extensions. */ #define __DRI_IMAGE "DRI_IMAGE" -#define __DRI_IMAGE_VERSION 17 +#define __DRI_IMAGE_VERSION 18 /** * These formats correspond to the similarly named MESA_FORMAT_* @@ -1353,6 +1353,8 @@ struct __DRIdri2ExtensionRec { * could be read after a flush." */ #define __DRI_IMAGE_USE_BACKBUFFER 0x0010 +/* Whether to expect explicit flushes for external consumers. */ +#define __DRI_IMAGE_USE_FLUSH_EXTERNAL 0x0020 #define __DRI_IMAGE_TRANSFER_READ 0x1 @@ -1753,6 +1755,53 @@ struct __DRIimageExtensionRec { int renderbuffer, void *loaderPrivate, unsigned *error); + + /** + * Flush the image for external consumers. This is called when + * the current context is the producer. + * + * \since 18 + */ + void (*imageFlushExternal)(__DRIcontext *context, __DRIimage *image, + unsigned flags); + + /** + * This call indicates that the image has been modified outside of + * the current context. This is called when the current context is + * the consumer of the image. + * + * \since 18 + */ + void (*imageInvalidateExternal)(__DRIcontext *context, __DRIimage *image, + unsigned flags); + + /** + * Same as createImageFromName, but also specifies use. + * + * \since 18 + */ + __DRIimage *(*createImageFromName2)(__DRIscreen *screen, + int width, int height, int format, + int name, int pitch, unsigned use, + void *loaderPrivate); + + /** + * Same as createImageFromDmaBufs, but also specifies modifier and use. + * Set modifier to DRM_FORMAT_MOD_INVALID if not using it. + * + * \since 18 + */ + __DRIimage *(*createImageFromDmaBufs3)(__DRIscreen *screen, + int width, int height, int fourcc, + uint64_t modifier, unsigned use, + 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); }; -- 2.30.2