dri_interface: add interface for EGL_EXT_image_flush_external
authorMarek Olšák <marek.olsak@amd.com>
Thu, 17 Oct 2019 20:48:48 +0000 (16:48 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 25 Oct 2019 23:59:04 +0000 (19:59 -0400)
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-By: Tapani Pälli <tapani.palli@intel.com>
include/GL/internal/dri_interface.h

index f19ec5168a52a1726b0aa2729c9233f5097b98c8..c1d54a1a9c65f494eaf4573438417e8162e4b2f8 100644 (file)
@@ -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);
 };