public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
To: bhanuprakash.modem@intel.com, igt-dev@lists.freedesktop.org
Cc: Petri Latvala <petri.latvala@intel.com>
Subject: [igt-dev] [PATCH v2] tests/kms_pipe_crc_basic: Sanity check for CRC mismatches
Date: Thu,  6 Aug 2020 18:14:50 +0530	[thread overview]
Message-ID: <20200806124450.29360-1-bhanuprakash.modem@intel.com> (raw)
In-Reply-To: <20200729222938.6038-1-bhanuprakash.modem@intel.com>

We’ve seen multiple CRC related issues on older platforms and
pre-silicon environment, most of the time we end up with debugging.

This patch works as a crc-sanity test, which can verify that the
CRC mechanism is clean from the platform side before debugging the
actual CRC mismatches or other CRC related issues.

This patch will create two framebuffers (fb0 & fb1) with the same
color info, flip fb0 with primary plane & collect CRC as reference.
Then flip fb1 with primary plane, collect the CRC and compare with
the reference CRC. There should be no CRC mismatch.

v2:
* Run subtest to all pipes (Karthik & Swati)
* Fix commit message & few comments (Karthik)
* Use meaningful name for functions (Swati)
* Remove unwanted checks (Karthik)

Cc: Swati Sharma <swati2.sharma@intel.com>
Cc: Karthik B S <karthik.b.s@intel.com>
Cc: Jeevan B <jeevan.b@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_pipe_crc_basic.c | 73 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)

diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index cb93c1ad..599047cb 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -154,6 +154,75 @@ static void test_read_crc(data_t *data, enum pipe pipe, unsigned flags)
 	}
 }
 
+/*
+ * CRC-sanity test, to make sure there would be no CRC mismatches
+ *
+ * - Create two framebuffers (FB0 & FB1) with same color info
+ * - Flip FB0 with the Primary plane & collect the CRC as ref CRC.
+ * - Flip FB1 with the Primary plane, collect the CRC & compare with
+ *   the ref CRC.
+ *
+ *   No CRC mismatch should happen
+ */
+static void test_compare_crc(data_t *data, enum pipe pipe)
+{
+	igt_display_t *display = &data->display;
+	igt_plane_t *primary;
+	drmModeModeInfo *mode;
+	igt_crc_t ref_crc, crc;
+	igt_pipe_crc_t *pipe_crc = NULL;
+	struct igt_fb fb0, fb1;
+	igt_output_t *output = igt_get_single_output_for_pipe(display, pipe);
+
+	igt_require_f(output, "No connector found for pipe %s\n",
+			kmstest_pipe_name(pipe));
+
+	igt_require_pipe(display, pipe);
+	igt_display_reset(display);
+	igt_output_set_pipe(output, pipe);
+
+	mode = igt_output_get_mode(output);
+
+	/* Create two framebuffers with the same color info. */
+	igt_create_color_fb(data->drm_fd,
+			mode->hdisplay, mode->vdisplay,
+			DRM_FORMAT_XRGB8888,
+			LOCAL_DRM_FORMAT_MOD_NONE,
+			1.0, 1.0, 1.0,
+			&fb0);
+	igt_create_color_fb(data->drm_fd,
+			mode->hdisplay, mode->vdisplay,
+			DRM_FORMAT_XRGB8888,
+			LOCAL_DRM_FORMAT_MOD_NONE,
+			1.0, 1.0, 1.0,
+			&fb1);
+
+	/* Flip FB0 with the Primary plane & collect the CRC as ref CRC. */
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_plane_set_fb(primary, &fb0);
+	igt_display_commit(display);
+
+	pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
+				    INTEL_PIPE_CRC_SOURCE_AUTO);
+	igt_pipe_crc_collect_crc(pipe_crc, &ref_crc);
+
+	/* Flip FB1 with the Primary plane & compare the CRC with ref CRC. */
+	igt_plane_set_fb(primary, &fb1);
+	igt_display_commit(display);
+
+	igt_pipe_crc_collect_crc(pipe_crc, &crc);
+	igt_assert_crc_equal(&crc, &ref_crc);
+
+	/* Clean-up */
+	igt_pipe_crc_free(pipe_crc);
+	igt_plane_set_fb(primary, NULL);
+	igt_output_set_pipe(output, PIPE_NONE);
+	igt_display_commit(display);
+
+	igt_remove_fb(data->drm_fd, &fb0);
+	igt_remove_fb(data->drm_fd, &fb1);
+}
+
 data_t data = {0, };
 
 igt_main
@@ -209,6 +278,10 @@ igt_main
 
 			igt_disallow_hang(data.drm_fd, hang);
 		}
+
+		igt_describe("Basic sanity check for CRC mismatches");
+		igt_subtest_f("compare-crc-basic-%s", kmstest_pipe_name(pipe))
+			test_compare_crc(&data, pipe);
 	}
 
 	igt_fixture {
-- 
2.20.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  parent reply	other threads:[~2020-08-06  4:49 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-29 22:29 [igt-dev] [PATCH] tests/kms_pipe_crc_basic: Sanity check for CRC mismatches Bhanuprakash Modem
2020-07-29 15:03 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
2020-07-30 11:27 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_pipe_crc_basic: Sanity check for CRC mismatches (rev2) Patchwork
2020-07-30 13:26 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2020-08-05 11:43 ` [igt-dev] [PATCH] tests/kms_pipe_crc_basic: Sanity check for CRC mismatches Karthik B S
2020-08-05 12:32   ` Sharma, Swati2
2020-08-06  5:16 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_pipe_crc_basic: Sanity check for CRC mismatches (rev3) Patchwork
2020-08-06  6:19 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2020-08-06 12:44 ` Bhanuprakash Modem [this message]
2020-08-06  8:16   ` [igt-dev] [PATCH v2] tests/kms_pipe_crc_basic: Sanity check for CRC mismatches Petri Latvala
2020-08-06  8:30     ` Modem, Bhanuprakash
2020-08-06 18:04   ` [igt-dev] [PATCH v3 1/2] " Bhanuprakash Modem
2020-08-06 18:04   ` [igt-dev] [PATCH v1 2/2] intel-ci: Add compare CRC sanity test to BAT Bhanuprakash Modem
2020-08-06 10:20     ` Petri Latvala
2020-08-06 18:04 ` [igt-dev] [PATCH v3 0/2] tests/kms_pipe_crc_basic: Sanity check for CRC mismatches Bhanuprakash Modem

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=20200806124450.29360-1-bhanuprakash.modem@intel.com \
    --to=bhanuprakash.modem@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=petri.latvala@intel.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