intel/isl: Allow CCS_E on more formats
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 7 Mar 2018 00:35:47 +0000 (16:35 -0800)
committerMarge Bot <eric+marge@anholt.net>
Sat, 25 Jan 2020 17:48:54 +0000 (17:48 +0000)
Now that BLORP supports copies on everything except R11G11B10_FLOAT,
we should be able to support CCS_E those formats.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3554>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3554>

src/intel/isl/isl_format.c

index ae6df522359c2c24b1f0cac876a4ae48fc8d7208..b7989720aeeeefbef912115f0eed159aee18571b 100644 (file)
@@ -562,31 +562,12 @@ isl_format_supports_ccs_e(const struct gen_device_info *devinfo,
 
    /* For simplicity, only report that a format supports CCS_E if blorp can
     * perform bit-for-bit copies with an image of that format while compressed.
-    * This allows ISL users to avoid having to resolve the image before
-    * performing such a copy. We may want to change this behavior in the
-    * future.
-    *
-    * The following formats have no equivalent UINT format. Given how
-    * blorp_copy currently works, bit-for-bit copy operations are not possible
-    * without an intermediate resolve.
+    * Unfortunately, R11G11B10_FLOAT is in a compression class of its own and
+    * there is no way to copy to/from it which doesn't potentially loose data
+    * if one of the bit patterns being copied isn't valid finite floats.
     */
-   switch (format) {
-   case ISL_FORMAT_R11G11B10_FLOAT:
-   case ISL_FORMAT_B5G5R5X1_UNORM:
-   case ISL_FORMAT_B5G5R5X1_UNORM_SRGB:
-   case ISL_FORMAT_B5G5R5A1_UNORM:
-   case ISL_FORMAT_B5G5R5A1_UNORM_SRGB:
-   case ISL_FORMAT_A4B4G4R4_UNORM:
-   case ISL_FORMAT_B4G4R4A4_UNORM:
-   case ISL_FORMAT_B4G4R4A4_UNORM_SRGB:
-   case ISL_FORMAT_B5G6R5_UNORM:
-   case ISL_FORMAT_B5G6R5_UNORM_SRGB:
-   case ISL_FORMAT_A1B5G5R5_UNORM:
-   case ISL_FORMAT_A8_UNORM:
+   if (format == ISL_FORMAT_R11G11B10_FLOAT)
       return false;
-   default:
-      break;
-   }
 
    return format_gen(devinfo) >= format_info[format].ccs_e;
 }