gallium/dri: implement createImageWithModifiers2
authorSimon Ser <contact@emersion.fr>
Sun, 22 Dec 2019 20:47:42 +0000 (21:47 +0100)
committerMarge Bot <eric+marge@anholt.net>
Wed, 19 May 2021 16:54:19 +0000 (16:54 +0000)
This implements __DRIimageExtension version 19.

Signed-off-by: Simon Ser <contact@emersion.fr>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8106>

src/gallium/frontends/dri/dri2.c

index 5969871..9999b31 100644 (file)
@@ -1089,6 +1089,17 @@ dri2_create_image_with_modifiers(__DRIscreen *dri_screen,
                                    loaderPrivate);
 }
 
+static __DRIimage *
+dri2_create_image_with_modifiers2(__DRIscreen *dri_screen,
+                                 int width, int height, int format,
+                                 const uint64_t *modifiers,
+                                 const unsigned count, unsigned int use,
+                                 void *loaderPrivate)
+{
+   return dri2_create_image_common(dri_screen, width, height, format, use,
+                                   modifiers, count, loaderPrivate);
+}
+
 static bool
 dri2_query_image_common(__DRIimage *image, int attrib, int *value)
 {
@@ -1679,7 +1690,7 @@ dri2_get_capabilities(__DRIscreen *_screen)
 
 /* The extension is modified during runtime if DRI_PRIME is detected */
 static const __DRIimageExtension dri2ImageExtensionTempl = {
-    .base = { __DRI_IMAGE, 18 },
+    .base = { __DRI_IMAGE, 19 },
 
     .createImageFromName          = dri2_create_image_from_name,
     .createImageFromRenderbuffer  = dri2_create_image_from_renderbuffer,
@@ -1704,6 +1715,7 @@ static const __DRIimageExtension dri2ImageExtensionTempl = {
     .queryDmaBufModifiers         = NULL,
     .queryDmaBufFormatModifierAttribs = NULL,
     .createImageFromRenderbuffer2 = dri2_create_image_from_renderbuffer2,
+    .createImageWithModifiers2    = NULL,
 };
 
 static const __DRIrobustnessExtension dri2Robustness = {
@@ -2165,9 +2177,12 @@ dri2_init_screen_extensions(struct dri_screen *screen,
    nExt = &screen->screen_extensions[ARRAY_SIZE(dri_screen_extensions_base)];
 
    screen->image_extension = dri2ImageExtensionTempl;
-   if (pscreen->resource_create_with_modifiers)
+   if (pscreen->resource_create_with_modifiers) {
       screen->image_extension.createImageWithModifiers =
          dri2_create_image_with_modifiers;
+      screen->image_extension.createImageWithModifiers2 =
+         dri2_create_image_with_modifiers2;
+   }
 
    if (pscreen->get_param(pscreen, PIPE_CAP_DMABUF)) {
       uint64_t cap;