gallium: introduce format modifier querying
authorVarad Gautam <varad.gautam@collabora.com>
Tue, 30 May 2017 11:53:46 +0000 (17:23 +0530)
committerEmil Velikov <emil.l.velikov@gmail.com>
Fri, 9 Jun 2017 13:12:37 +0000 (14:12 +0100)
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 <varad.gautam@collabora.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
src/gallium/include/pipe/p_screen.h

index 5102827440ee08185d3aa8850776129cb362e7ad..65e954aa87e7fbcf266be7c96a4532a207485e9a 100644 (file)
@@ -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);
 };