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 18/23] lib/igt_fb: Fix blitter compression format handling
Date: Mon,  2 Sep 2024 17:37:53 +0300	[thread overview]
Message-ID: <20240902143758.21036-19-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20240902143758.21036-1-ville.syrjala@linux.intel.com>

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

For some reason blt_compression_format() sets up both the
source and destination with the same compression format.
This doesn't make sense to me as one or the other could
at least be uncompressed. Decouple the src vs. dst
compression formats so that they can be set independently.

Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 lib/igt_fb.c | 33 ++++++++++-----------------------
 1 file changed, 10 insertions(+), 23 deletions(-)

diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 2d53b317afc2..1ec16ab9d813 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -2897,12 +2897,6 @@ static enum blt_color_depth blt_get_bpp(const struct igt_fb *fb,
 	}
 }
 
-#define BLT_TARGET_RC(x) (x.compression == COMPRESSION_ENABLED && \
-			  x.compression_type == COMPRESSION_TYPE_3D)
-
-#define BLT_TARGET_MC(x) (x.compression == COMPRESSION_ENABLED && \
-			  x.compression_type == COMPRESSION_TYPE_MEDIA)
-
 const struct {
 	uint32_t format;
 	enum blt_compression_type type;
@@ -2928,25 +2922,14 @@ static uint32_t get_compression_return_value(uint32_t format,
 	return 0; // This line is to avoid compilation warnings, it will not be reached.
 }
 
-static uint32_t blt_compression_format(struct blt_copy_data *blt,
+static uint32_t blt_compression_format(const struct blt_copy_object *obj,
 				       const struct igt_fb *fb)
 {
-	if (blt->src.compression == COMPRESSION_DISABLED &&
-	    blt->dst.compression == COMPRESSION_DISABLED)
+	if (obj->compression == COMPRESSION_DISABLED)
 		return 0;
 
-	if (BLT_TARGET_RC(blt->src) || BLT_TARGET_RC(blt->dst))
-		return get_compression_return_value(igt_reduce_format(fb->drm_format),
-						    COMPRESSION_TYPE_3D);
-
-	if (BLT_TARGET_MC(blt->src))
-		return get_compression_return_value(igt_reduce_format(fb->drm_format),
-						    COMPRESSION_TYPE_MEDIA);
-
-	if (BLT_TARGET_MC(blt->dst))
-		igt_assert_f(0, "Destination compression not supported on mc ccs\n");
-
-	igt_assert_f(0, "unknown compression\n");
+	return get_compression_return_value(igt_reduce_format(fb->drm_format),
+					    obj->compression_type);
 }
 
 static void setup_context_and_memory_region(const struct igt_fb *fb, uint32_t *ctx,
@@ -3021,6 +3004,10 @@ static void do_block_copy(const struct igt_fb *src_fb,
 
 	igt_assert(src && dst);
 
+	igt_assert_f(blt.dst.compression == COMPRESSION_DISABLED ||
+		     blt.dst.compression_type !=  COMPRESSION_TYPE_MEDIA,
+		     "Destination compression not supported on mc ccs\n");
+
 	blt_copy_init(src_fb->fd, &blt);
 	blt.color_depth = blt_get_bpp(src_fb, i);
 	blt_set_copy_object(&blt.src, src);
@@ -3028,12 +3015,12 @@ static void do_block_copy(const struct igt_fb *src_fb,
 
 	if (blt_uses_extended_block_copy(src_fb->fd)) {
 		blt_set_object_ext(&ext.src,
-				   blt_compression_format(&blt, src_fb),
+				   blt_compression_format(&blt.src, src_fb),
 				   src_fb->plane_width[i], src_fb->plane_height[i],
 				   SURFACE_TYPE_2D);
 
 		blt_set_object_ext(&ext.dst,
-				   blt_compression_format(&blt, dst_fb),
+				   blt_compression_format(&blt.dst, dst_fb),
 				   dst_fb->plane_width[i], dst_fb->plane_height[i],
 				   SURFACE_TYPE_2D);
 		pext = &ext;
-- 
2.44.2


  parent reply	other threads:[~2024-09-02 14:38 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-02 14:37 [PATCH i-g-t 00/23] Intel format/modifier stuff Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 01/23] lib/rendercopy: Add deltas to all surface relocs Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 02/23] tests/kms_big_fb: Use igt_fb_create_intel_buf() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 03/23] tests/kms_frontbuffer_tracking: Use igt_create_fb() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 04/23] lib/igt_fb: Make igt_calc_fb_size() somewhat usable Ville Syrjala
2024-09-06 13:13   ` Juha-Pekka Heikkila
2024-09-02 14:37 ` [PATCH i-g-t 05/23] lib/rendercopy: Always setup clear color for TGL Ville Syrjala
2024-09-06 13:09   ` Juha-Pekka Heikkila
2024-09-06 13:45     ` Ville Syrjälä
2024-09-07  8:26       ` Juha-Pekka Heikkila
2024-09-12 11:34         ` Ville Syrjälä
2024-09-02 14:37 ` [PATCH i-g-t 06/23] lib/rendercopy: Don't skip clearcolor on flat CCS Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 07/23] lib/rendercopy: Fix fastclear scaling Ville Syrjala
2024-09-06 13:09   ` Juha-Pekka Heikkila
2024-09-02 14:37 ` [PATCH i-g-t 08/23] lib/rendercopy: Extract gen4_surface_format() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 09/23] lib/rendercopy: Extract {dg2, lnl}_compression_format() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 10/23] lib/igt_fb: Extract is_gen12_rc_ccs_cc_modifier() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 11/23] lib/igt_fb: Extract ccs_needs_enginecopy() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 12/23] lib/igt_fb: Require enginecopy for clear color Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 13/23] lib/igt_fb: Expose igt_fb_is_ccs_modifier() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 14/23] lib/igt_fb: Expose igt_fb_is_gen12_rc_ccs_cc_modifier() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 15/23] lib/igt_fb: Expose igt_fb_is_gen12_mc_ccs_modifier() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 16/23] lib/igt_fb: Adjust how we pick the blitter compression format Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 17/23] lib/igt_fb: Fix planar block copy Ville Syrjala
2024-09-02 14:37 ` Ville Syrjala [this message]
2024-09-02 14:37 ` [PATCH i-g-t 19/23] lib/igt_fb: Assert that we have no clear color when using the bltter Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 20/23] tests/kms_plane: Extract skip_format_mod() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 21/23] tests/kms_ccs: Reuse igt_fb_is_gen12_rc_ccs_cc_modifier() Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 22/23] tests/kms_ccs: Skip testing on identical plane types Ville Syrjala
2024-09-02 14:37 ` [PATCH i-g-t 23/23] tests/kms_ccs: Provide a hint as to what we're testing Ville Syrjala
2024-09-02 20:17 ` ✓ Fi.CI.BAT: success for Intel format/modifier stuff Patchwork
2024-09-02 20:49 ` ✓ CI.xeBAT: " Patchwork
2024-09-03  4:07 ` ✗ CI.xeFULL: failure " Patchwork
2024-09-04  8:39 ` ✗ 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=20240902143758.21036-19-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