i965/screen: Return false for unsupported formats in query_modifiers
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 6 Jun 2018 17:24:01 +0000 (10:24 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 7 Jun 2018 18:23:34 +0000 (11:23 -0700)
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/mesa/drivers/dri/i965/intel_screen.c

index 2c7835912028b86d6f10c8b36a2381f4c90b6edf..5f0eeb41779156f9caf72507b2baf3111c032c05 100644 (file)
@@ -1262,6 +1262,16 @@ intel_create_image_from_dma_bufs(__DRIscreen *dri_screen,
                                             loaderPrivate);
 }
 
+static bool
+intel_image_format_is_supported(const struct intel_image_format *fmt)
+{
+   if (fmt->fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||
+       fmt->fourcc == __DRI_IMAGE_FOURCC_SABGR8888)
+      return false;
+
+   return true;
+}
+
 static GLboolean
 intel_query_dma_buf_formats(__DRIscreen *screen, int max,
                             int *formats, int *count)
@@ -1269,8 +1279,7 @@ intel_query_dma_buf_formats(__DRIscreen *screen, int max,
    int num_formats = 0, i;
 
    for (i = 0; i < ARRAY_SIZE(intel_image_formats); i++) {
-      if (intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||
-          intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SABGR8888)
+      if (!intel_image_format_is_supported(&intel_image_formats[i]))
          continue;
 
       num_formats++;
@@ -1300,6 +1309,9 @@ intel_query_dma_buf_modifiers(__DRIscreen *_screen, int fourcc, int max,
    if (f == NULL)
       return false;
 
+   if (!intel_image_format_is_supported(f))
+      return false;
+
    for (i = 0; i < ARRAY_SIZE(supported_modifiers); i++) {
       uint64_t modifier = supported_modifiers[i].modifier;
       if (!modifier_is_supported(&screen->devinfo, f, 0, modifier))