dri/image: Add a format modifier attributes query
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 16 Aug 2017 18:53:38 +0000 (11:53 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 14 Sep 2017 21:47:18 +0000 (14:47 -0700)
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
include/GL/internal/dri_interface.h

index 1c91bde9203c302e23a4c4d46f283c6f9d3dd645..783ff1c70d54ada3f27dbc13ee619477b7224edc 100644 (file)
@@ -1180,7 +1180,7 @@ struct __DRIdri2ExtensionRec {
  * extensions.
  */
 #define __DRI_IMAGE "DRI_IMAGE"
-#define __DRI_IMAGE_VERSION 15
+#define __DRI_IMAGE_VERSION 16
 
 /**
  * These formats correspond to the similarly named MESA_FORMAT_*
@@ -1360,6 +1360,13 @@ enum __DRIChromaSiting {
 #define __BLIT_FLAG_FLUSH              0x0001
 #define __BLIT_FLAG_FINISH             0x0002
 
+/**
+ * queryDmaBufFormatModifierAttribs attributes
+ */
+
+/* Available in version 16 */
+#define __DRI_IMAGE_FORMAT_MODIFIER_ATTRIB_PLANE_COUNT   0x0001
+
 typedef struct __DRIimageRec          __DRIimage;
 typedef struct __DRIimageExtensionRec __DRIimageExtension;
 struct __DRIimageExtensionRec {
@@ -1600,6 +1607,24 @@ struct __DRIimageExtensionRec {
                                      int max, uint64_t *modifiers,
                                      unsigned int *external_only,
                                      int *count);
+
+   /**
+    * dmabuf format modifier attribute query for a given format and modifier.
+    *
+    * \param fourcc    The format to query. If this format is not supported by
+    *                  the driver, return false.
+    * \param modifier  The modifier to query. If this format+modifier is not
+    *                  supported by the driver, return false.
+    * \param attrib    The __DRI_IMAGE_FORMAT_MODIFIER_ATTRIB to query.
+    * \param value     A pointer to where to store the result of the query.
+    *
+    * Returns true upon success.
+    *
+    * \since 16
+    */
+   GLboolean (*queryDmaBufFormatModifierAttribs)(__DRIscreen *screen,
+                                                 uint32_t fourcc, uint64_t modifier,
+                                                 int attrib, uint64_t *value);
 };