[PATCH i-g-t 09/23] lib/rendercopy: Extract {dg2, lnl}_compression_format()

Ville Syrjala ville.syrjala at linux.intel.com
Mon Sep 2 14:37:44 UTC 2024


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

Extract the code to determine the SURFACE_STATE compression
format for dg2/lnl+ into helper. We'll need more formats here
soon.

Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 lib/rendercopy_gen9.c | 41 ++++++++++++++++++++++++++---------------
 1 file changed, 26 insertions(+), 15 deletions(-)

diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
index 11f456a70d2f..eafdf50581d3 100644
--- a/lib/rendercopy_gen9.c
+++ b/lib/rendercopy_gen9.c
@@ -146,6 +146,28 @@ static const uint32_t xe2_render_copy[][4] = {
 	{ 0x8010c031, 0x00000004, 0x58000c24, 0x00c40000 },
 };
 
+static uint32_t lnl_compression_format(const struct intel_buf *buf)
+{
+	switch (buf->bpp) {
+	case 32:
+		return 0x2; /* CMF_R8_G8_B8_A8 */
+	default:
+		igt_assert(0);
+		return 0;
+	}
+}
+
+static uint32_t dg2_compression_format(const struct intel_buf *buf)
+{
+	switch (buf->bpp) {
+	case 32:
+		return 0x8;
+	default:
+		igt_assert(0);
+		return 0;
+	}
+}
+
 /* Mostly copy+paste from gen6, except height, width, pitch moved */
 static uint32_t
 gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
@@ -272,21 +294,10 @@ gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
 			ss->ss7.dg2.disable_support_for_multi_gpu_partial_writes = 1;
 			ss->ss7.dg2.disable_support_for_multi_gpu_atomics = 1;
 
-			if (AT_LEAST_GEN(ibb->devid, 20)) {
-				/*
-				 * For Xe2+ R8G8B8A8 best compression ratio is
-				 * achieved with compression format = '2'
-				 */
-				ss->ss12.lnl.compression_format = 2;
-			} else {
-				/*
-				 * For now here is coming only 32bpp rgb format
-				 * which is marked below as B8G8R8X8_UNORM = '8'
-				 * If here ever arrive other formats below need to be
-				 * fixed to take that into account.
-				 */
-				ss->ss12.dg2.compression_format = 8;
-			}
+			if (AT_LEAST_GEN(ibb->devid, 20))
+				ss->ss12.lnl.compression_format = lnl_compression_format(buf);
+			else
+				ss->ss12.dg2.compression_format = dg2_compression_format(buf);
 		}
 	}
 
-- 
2.44.2



More information about the igt-dev mailing list