Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Subject: [PATCH i-g-t v2 02/18] lib/rendercopy: Add specific support for 2:10:10:10 formats
Date: Wed, 18 Sep 2024 15:05:02 +0300	[thread overview]
Message-ID: <20240918120518.30258-3-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20240918120518.30258-1-ville.syrjala@linux.intel.com>

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

Use B10G10R10A2_UNORM instead of B8G8R8A8_UNORM when dealing
with actual 10bpc pixel formats.

This is needed on tgl+ because the display hardware decompressor
expects some magic bit shuffling to have taken place. If the
compressor didn't do that we get garbage.

Also if the clear color is involved then the hardware needs
to know the actual pixel format in order to correctly generate
the native version of the clear color (which will be consumed
by the display hardware.

Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 lib/intel_bufops.h    | 2 +-
 lib/rendercopy_gen4.c | 2 +-
 lib/rendercopy_gen6.c | 2 +-
 lib/rendercopy_gen7.c | 2 +-
 lib/rendercopy_gen8.c | 2 +-
 lib/rendercopy_gen9.c | 2 +-
 lib/surfaceformat.h   | 8 ++++++--
 7 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/lib/intel_bufops.h b/lib/intel_bufops.h
index 06e72ba4ba93..d111346aaa86 100644
--- a/lib/intel_bufops.h
+++ b/lib/intel_bufops.h
@@ -21,7 +21,7 @@ struct intel_buf {
 	uint32_t width;
 	uint32_t height;
 	uint32_t tiling;
-	uint32_t bpp;
+	uint32_t bpp, depth;
 	uint32_t compression;
 	uint32_t swizzle_mode;
 	uint32_t yuv_semiplanar_bpp;
diff --git a/lib/rendercopy_gen4.c b/lib/rendercopy_gen4.c
index b8b7e5ad7e2c..951ddb5fbdc5 100644
--- a/lib/rendercopy_gen4.c
+++ b/lib/rendercopy_gen4.c
@@ -137,7 +137,7 @@ gen4_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst)
 	ss = intel_bb_ptr_align(ibb, 32);
 
 	ss->ss0.surface_type = SURFACE_2D;
-	ss->ss0.surface_format = gen4_surface_format(buf->bpp);
+	ss->ss0.surface_format = gen4_surface_format(buf->bpp, buf->depth);
 	ss->ss0.data_return_format = SURFACERETURNFORMAT_FLOAT32;
 	ss->ss0.color_blend = 1;
 
diff --git a/lib/rendercopy_gen6.c b/lib/rendercopy_gen6.c
index 0c71bd9cbf19..233ec3bf6e85 100644
--- a/lib/rendercopy_gen6.c
+++ b/lib/rendercopy_gen6.c
@@ -79,7 +79,7 @@ gen6_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst)
 
 	ss = intel_bb_ptr_align(ibb, 32);
 	ss->ss0.surface_type = SURFACE_2D;
-	ss->ss0.surface_format = gen4_surface_format(buf->bpp);
+	ss->ss0.surface_format = gen4_surface_format(buf->bpp, buf->depth);
 	ss->ss0.data_return_format = SURFACERETURNFORMAT_FLOAT32;
 	ss->ss0.color_blend = 1;
 
diff --git a/lib/rendercopy_gen7.c b/lib/rendercopy_gen7.c
index 8fcbbc21cdd8..0cd165809b69 100644
--- a/lib/rendercopy_gen7.c
+++ b/lib/rendercopy_gen7.c
@@ -76,7 +76,7 @@ gen7_bind_buf(struct intel_bb *ibb,
 
 	ss[0] = (SURFACE_2D << GEN7_SURFACE_TYPE_SHIFT |
 		 gen7_tiling_bits(buf->tiling) |
-		 gen4_surface_format(buf->bpp) << GEN7_SURFACE_FORMAT_SHIFT);
+		 gen4_surface_format(buf->bpp, buf->depth) << GEN7_SURFACE_FORMAT_SHIFT);
 
 	address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
 						   read_domain, write_domain,
diff --git a/lib/rendercopy_gen8.c b/lib/rendercopy_gen8.c
index 28c703fca393..206af226a346 100644
--- a/lib/rendercopy_gen8.c
+++ b/lib/rendercopy_gen8.c
@@ -88,7 +88,7 @@ gen8_bind_buf(struct intel_bb *ibb,
 	ss = intel_bb_ptr_align(ibb, 64);
 
 	ss->ss0.surface_type = SURFACE_2D;
-	ss->ss0.surface_format = gen4_surface_format(buf->bpp);
+	ss->ss0.surface_format = gen4_surface_format(buf->bpp, buf->depth);
 	ss->ss0.render_cache_read_write = 1;
 	ss->ss0.vertical_alignment = 1; /* align 4 */
 	ss->ss0.horizontal_alignment = 1; /* align 4 */
diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
index ab33b3f00bcf..9c68d3773b19 100644
--- a/lib/rendercopy_gen9.c
+++ b/lib/rendercopy_gen9.c
@@ -190,7 +190,7 @@ gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
 	ss = intel_bb_ptr_align(ibb, 64);
 
 	ss->ss0.surface_type = SURFACE_2D;
-	ss->ss0.surface_format = gen4_surface_format(buf->bpp);
+	ss->ss0.surface_format = gen4_surface_format(buf->bpp, buf->depth);
 	ss->ss0.vertical_alignment = 1; /* align 4 */
 	ss->ss0.horizontal_alignment = 1; /* align 4 or HALIGN_32 on display ver >= 13*/
 
diff --git a/lib/surfaceformat.h b/lib/surfaceformat.h
index 58ef41e6d3cd..9090d7707647 100644
--- a/lib/surfaceformat.h
+++ b/lib/surfaceformat.h
@@ -186,7 +186,7 @@
 #define SURFACE_MIPMAPLAYOUT_BELOW	0
 #define SURFACE_MIPMAPLAYOUT_RIGHT	1
 
-static inline uint32_t gen4_surface_format(int bpp)
+static inline uint32_t gen4_surface_format(int bpp, int depth)
 {
 	switch (bpp) {
 	case 8:
@@ -194,7 +194,11 @@ static inline uint32_t gen4_surface_format(int bpp)
 	case 16:
 		return SURFACEFORMAT_R8G8_UNORM;
 	case 32:
-		return SURFACEFORMAT_B8G8R8A8_UNORM;
+		/* only needed for proper CCS handling */
+		if (depth == 30)
+			return SURFACEFORMAT_B10G10R10A2_UNORM;
+		else
+			return SURFACEFORMAT_B8G8R8A8_UNORM;
 	case 64:
 		return SURFACEFORMAT_R16G16B16A16_FLOAT;
 	default:
-- 
2.44.2


  parent reply	other threads:[~2024-09-18 12:05 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-18 12:05 [PATCH i-g-t v2 00/18] Intel CCS + 10bpc/fp16 stuff Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 01/18] lib/intel_aux_pgtable: Library to add support for RGB16161616_64B format Ville Syrjala
2024-09-23  9:51   ` Juha-Pekka Heikkila
2024-09-18 12:05 ` Ville Syrjala [this message]
2024-09-18 12:05 ` [PATCH i-g-t v2 03/18] lib/rendercopy: Use the proper compression format for 10bpc on dg2/lnl+ Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 04/18] lib/rendercopy: Use the proper compression format for 16bpc " Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 05/18] lib/rendercopy: Skip AUX surface setup in TGL+ Ville Syrjala
2024-09-23  9:51   ` Juha-Pekka Heikkila
2024-09-23 20:04     ` Ville Syrjälä
2024-09-18 12:05 ` [PATCH i-g-t v2 06/18] lib/igt_fb: Add 10bpc compression format for the blitter Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 07/18] lib/igt_fb: Add 16bpc " Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 08/18] lib/igt_fb: Try to fix block copy media compression handling Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 09/18] tests/kms_plane: Skip 10bpc formats with media compression Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 10/18] tests/kms_ccs: " Ville Syrjala
2024-09-23  9:52   ` Juha-Pekka Heikkila
2024-09-18 12:05 ` [PATCH i-g-t v2 11/18] lib/igt_fb: Treat 2:10:10:10 properly Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 12/18] lib/vebox: Add support for fp16 RGB formats Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 13/18] lib/vebox: Document that 2:10:10:10 is unusable with VEBOX Ville Syrjala
2024-09-23  9:54   ` Juha-Pekka Heikkila
2024-09-18 12:05 ` [PATCH i-g-t v2 14/18] tests/kms_ccs: Correctly check clear color for 10bpc formats Ville Syrjala
2024-09-18 12:05 ` [PATCH i-g-t v2 15/18] tests/kms_ccs: Correctly check clear color for fp16 formats Ville Syrjala
2024-09-23 11:00   ` Juha-Pekka Heikkila
2024-09-23 16:39   ` Juha-Pekka Heikkila
2024-09-18 12:05 ` [PATCH i-g-t v2 16/18] tests/kms_ccs: Fix planar blits for xe2 Ville Syrjala
2024-09-23 16:53   ` Juha-Pekka Heikkila
2024-09-18 12:05 ` [PATCH i-g-t v2 17/18] tests/kms_ccs: Try to fix the xe2 blitter compression format Ville Syrjala
2024-09-23 17:28   ` Juha-Pekka Heikkila
2024-09-18 12:05 ` [PATCH i-g-t v2 18/18] lib/intel_aux_pgtable: Pick a more optimal aux format for 10bpc Ville Syrjala
2024-09-23 17:30   ` Juha-Pekka Heikkila
2024-09-18 13:59 ` ✓ Fi.CI.BAT: success for Intel CCS + 10bpc/fp16 stuff (rev4) Patchwork
2024-09-18 14:40 ` ✓ CI.xeBAT: " Patchwork
2024-09-18 20:53 ` ✗ CI.xeFULL: failure " Patchwork
2024-09-19  4:08 ` ✗ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240918120518.30258-3-ville.syrjala@linux.intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=juhapekka.heikkila@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox