i965/screen: Report the correct number of image planes
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 16 Aug 2017 19:01:15 +0000 (12:01 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 14 Sep 2017 21:47:40 +0000 (14:47 -0700)
For non-CCS images, we were reporting just one plane even though they
may have multiple in the case of YUV.

Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
src/mesa/drivers/dri/i965/intel_screen.c

index b11c22d038e1497c6b717852758eb4bbd59b2984..1ec79088815a1e077242e9f1b8840422fdf72e25 100644 (file)
@@ -799,7 +799,14 @@ intel_query_image(__DRIimage *image, int attrib, int *value)
    case __DRI_IMAGE_ATTRIB_FOURCC:
       return intel_lookup_fourcc(image->dri_format, value);
    case __DRI_IMAGE_ATTRIB_NUM_PLANES:
-      *value = isl_drm_modifier_has_aux(image->modifier) ? 2 : 1;
+      if (isl_drm_modifier_has_aux(image->modifier)) {
+         assert(!image->planar_format || image->planar_format->nplanes == 1);
+         *value = 2;
+      } else if (image->planar_format) {
+         *value = image->planar_format->nplanes;
+      } else {
+         *value = 1;
+      }
       return true;
    case __DRI_IMAGE_ATTRIB_OFFSET:
       *value = image->offset;