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