Mesa (main): iris: Enable CCS_E on 32-bpc float formats on TGL+

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Dec 1 20:53:08 UTC 2021


Module: Mesa
Branch: main
Commit: 137a054c945d29a4a88ab6d758c161811db31e82
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=137a054c945d29a4a88ab6d758c161811db31e82

Author: Nanley Chery <nanley.g.chery at intel.com>
Date:   Mon Aug 16 08:57:35 2021 -0700

iris: Enable CCS_E on 32-bpc float formats on TGL+

Allow CCS_E on these formats on TGL+ for a couple reasons:

1) TGL doesn't have the option to fall back to CCS_D/fast-clears like
   prior platforms do.

2) The CCS compression scheme on TGL improves to encode more than 3
   levels of compression. This should help floating point formats.

In my measurements, enabling this on TGL results in a minor performance
improvement on Paraview (+0.06%) rather than a major regression like on
prior platforms. The improvement was measured by taking the average of 3
runs of: waveletvolume.py -d 256 -f 600.

Also, the Intel performance CI reports a 3.81% ±0.12% FPS improvement in
Bioshock Infinite.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12398>

---

 src/gallium/drivers/iris/iris_resource.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index 218ea85b7a7..79a8abcf56b 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -571,14 +571,15 @@ want_ccs_e_for_format(const struct intel_device_info *devinfo,
 
    const struct isl_format_layout *fmtl = isl_format_get_layout(format);
 
-   /* CCS_E seems to significantly hurt performance with 32-bit floating
-    * point formats.  For example, Paraview's "Wavelet Volume" case uses
-    * both R32_FLOAT and R32G32B32A32_FLOAT, and enabling CCS_E for those
+   /* Prior to TGL, CCS_E seems to significantly hurt performance with 32-bit
+    * floating point formats.  For example, Paraview's "Wavelet Volume" case
+    * uses both R32_FLOAT and R32G32B32A32_FLOAT, and enabling CCS_E for those
     * formats causes a 62% FPS drop.
     *
     * However, many benchmarks seem to use 16-bit float with no issues.
     */
-   if (fmtl->channels.r.bits == 32 && fmtl->channels.r.type == ISL_SFLOAT)
+   if (devinfo->ver <= 11 &&
+       fmtl->channels.r.bits == 32 && fmtl->channels.r.type == ISL_SFLOAT)
       return false;
 
    return true;



More information about the mesa-commit mailing list