gbm/dri: Propagate queryDmaBufModifiers return value
authorMichel Dänzer <mdaenzer@redhat.com>
Wed, 15 Apr 2020 16:13:54 +0000 (18:13 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 16 Apr 2020 10:19:35 +0000 (10:19 +0000)
We were treating count == 0 as the format not being supported at all,
but queryDmaBufModifiers would return false in that case.

Fixes spuriously reporting all formats as unsupported with radeonsi
(which doesn't support modifiers yet), which would e.g. cause mutter
to think the HW cursor format isn't supported and fall back to SW
cursor.

Suggested-by: Daniel Stone <daniels@collabora.com>
Fixes: 4e3a7dcf6ee4 "gallium: enable
                     EGL_EXT_image_dma_buf_import_modifiers
                     unconditionally"

Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4532>

src/gbm/backends/dri/gbm_dri.c

index 8fe6a0265fbfc5e32fe15c9a47ce561cc5d4dadf..bc68f66766ecdec92c898ecb24cc1c528639faf9 100644 (file)
@@ -618,14 +618,12 @@ gbm_dri_is_format_supported(struct gbm_device *gbm,
       }
    }
 
-   /* Check if the driver returns any modifiers for this format; since linear
-    * is counted as a modifier, we will have at least one modifier for any
-    * supported format. */
+   /* This returns false if the format isn't supported */
    if (!dri->image->queryDmaBufModifiers(dri->screen, format, 0, NULL, NULL,
                                          &count))
       return 0;
 
-   return (count > 0);
+   return 1;
 }
 
 static int