intel: Allow CCS_E on R11G11B10_FLOAT for TGL+
authorNanley Chery <nanley.g.chery@intel.com>
Mon, 21 Nov 2022 21:58:12 +0000 (13:58 -0800)
committerMarge Bot <emma+marge@anholt.net>
Wed, 14 Dec 2022 03:05:24 +0000 (03:05 +0000)
We now support blorp_copy with this format.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jianxun Zhang <jianxun.zhang@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19937>

src/intel/blorp/blorp_blit.c
src/intel/isl/isl_format.c

index 14ef27f..33a83f3 100644 (file)
@@ -2724,6 +2724,9 @@ get_ccs_compatible_copy_format(const struct isl_format_layout *fmtl)
    case ISL_FORMAT_R32_SNORM:
       return ISL_FORMAT_R32_UINT;
 
+   case ISL_FORMAT_R11G11B10_FLOAT:
+      return ISL_FORMAT_R32_UINT;
+
    case ISL_FORMAT_B10G10R10A2_UNORM:
    case ISL_FORMAT_B10G10R10A2_UNORM_SRGB:
    case ISL_FORMAT_R10G10B10A2_UNORM:
index e974580..729feec 100644 (file)
@@ -888,11 +888,12 @@ isl_format_supports_ccs_e(const struct intel_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.
-    * 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.
+    * Unfortunately, R11G11B10_FLOAT is in a compression class of its own, and
+    * on ICL, 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.
     */
-   if (format == ISL_FORMAT_R11G11B10_FLOAT)
+   if (devinfo->ver == 11 && format == ISL_FORMAT_R11G11B10_FLOAT)
       return false;
 
    return devinfo->verx10 >= format_info[format].ccs_e;