public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
From: swati2.sharma@intel.com
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev]  [RFC] tests/kms_color: Change in commit style
Date: Thu,  4 Oct 2018 13:55:55 +0530	[thread overview]
Message-ID: <1538641555-32346-1-git-send-email-swati2.sharma@intel.com> (raw)

From: Swati Sharma <swati2.sharma@intel.com>

Existing kms_color i-g-t, commit style by default is legacy for
all the ctm/gamma/degamma subtests.

In this patch, provision for both legacy and atomic commit is
provided. Patch is floated as RFC to gather feedback on the idea
and infrastructure proposed.

Other approach could be getting the value of is_atomic as done in
kms_available_modes_crc like
data.commit = data.display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY
However with this approach we won't be able to test both the paths.

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
---
 lib/igt_kms.c     |  14 ++++++++
 lib/igt_kms.h     |   1 +
 tests/kms_color.c | 102 ++++++++++++++++++++++++++++++++++--------------------
 3 files changed, 80 insertions(+), 37 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 4563bfd..fd1f4dc 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -4229,3 +4229,17 @@ bool igt_display_has_format_mod(igt_display_t *display, uint32_t format,
 
 	return false;
 }
+
+/**
+ * kmstest_commit_style_name:
+ * @commit: commit style LEGACY/ATOMIC
+ *
+ * Returns: String representing @commit, e.g. "commit-legacy".
+ */
+const char *kmstest_commit_style_name(enum igt_commit_style commit)
+{
+	if (commit == COMMIT_LEGACY)
+		return "commit-legacy";
+	else if (commit == COMMIT_ATOMIC)
+		return "commit-atomic";
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 3862efa..50bb965 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -243,6 +243,7 @@ enum igt_commit_style {
 	COMMIT_UNIVERSAL,
 	COMMIT_ATOMIC,
 };
+const char *kmstest_commit_style_name(enum igt_commit_style commit);
 
 enum igt_atomic_plane_properties {
        IGT_PLANE_SRC_X = 0,
diff --git a/tests/kms_color.c b/tests/kms_color.c
index bb106dd..581361e 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -61,9 +61,9 @@ typedef struct {
 	uint32_t color_depth;
 	uint64_t degamma_lut_size;
 	uint64_t gamma_lut_size;
+	enum igt_commit_style commit;
 } data_t;
 
-
 static void paint_gradient_rectangles(data_t *data,
 				      drmModeModeInfo *mode,
 				      color_t *colors,
@@ -304,12 +304,12 @@ static void test_pipe_degamma(data_t *data,
 		disable_ctm(primary->pipe);
 		disable_degamma(primary->pipe);
 		set_gamma(data, primary->pipe, gamma_linear);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		/* Draw solid colors with no degamma transformation. */
 		paint_rectangles(data, mode, red_green_blue, &fb);
 		igt_plane_set_fb(primary, &fb);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
 
@@ -319,7 +319,7 @@ static void test_pipe_degamma(data_t *data,
 		paint_gradient_rectangles(data, mode, red_green_blue, &fb);
 		igt_plane_set_fb(primary, &fb);
 		set_degamma(data, primary->pipe, degamma_full);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
 
@@ -384,12 +384,12 @@ static void test_pipe_gamma(data_t *data,
 		disable_ctm(primary->pipe);
 		disable_degamma(primary->pipe);
 		set_gamma(data, primary->pipe, gamma_full);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		/* Draw solid colors with no gamma transformation. */
 		paint_rectangles(data, mode, red_green_blue, &fb);
 		igt_plane_set_fb(primary, &fb);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
 
@@ -398,7 +398,7 @@ static void test_pipe_gamma(data_t *data,
 		 */
 		paint_gradient_rectangles(data, mode, red_green_blue, &fb);
 		igt_plane_set_fb(primary, &fb);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
 
@@ -470,12 +470,12 @@ static void test_pipe_legacy_gamma(data_t *data,
 		disable_degamma(primary->pipe);
 		disable_gamma(primary->pipe);
 		disable_ctm(primary->pipe);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		/* Draw solid colors with no gamma transformation. */
 		paint_rectangles(data, mode, red_green_blue, &fb);
 		igt_plane_set_fb(primary, &fb);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullcolors);
 
@@ -490,7 +490,7 @@ static void test_pipe_legacy_gamma(data_t *data,
 			red_lut[i] = green_lut[i] = blue_lut[i] = 0xffff;
 		igt_assert_eq(drmModeCrtcSetGamma(data->drm_fd, primary->pipe->crtc_id,
 						  legacy_lut_size, red_lut, green_lut, blue_lut), 0);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_fullgamma);
 
@@ -505,7 +505,7 @@ static void test_pipe_legacy_gamma(data_t *data,
 
 		igt_assert_eq(drmModeCrtcSetGamma(data->drm_fd, primary->pipe->crtc_id,
 						  legacy_lut_size, red_lut, green_lut, blue_lut), 0);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		igt_plane_set_fb(primary, NULL);
 		igt_output_set_pipe(output, PIPE_NONE);
@@ -559,7 +559,7 @@ static void test_pipe_legacy_gamma_reset(data_t *data,
 		disable_degamma(primary->pipe);
 		disable_ctm(primary->pipe);
 		disable_gamma(primary->pipe);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		/* Set a degama & gamma LUT and a CTM using the
 		 * properties and verify the content of the
@@ -567,7 +567,7 @@ static void test_pipe_legacy_gamma_reset(data_t *data,
 		set_degamma(data, primary->pipe, degamma_linear);
 		set_ctm(primary->pipe, ctm_identity);
 		set_gamma(data, primary->pipe, gamma_zero);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		blob = get_blob(data, primary->pipe, IGT_CRTC_DEGAMMA_LUT);
 		igt_assert(blob &&
@@ -610,7 +610,7 @@ static void test_pipe_legacy_gamma_reset(data_t *data,
 						  legacy_lut_size,
 						  red_lut, green_lut, blue_lut),
 			      0);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		igt_assert(get_blob(data, primary->pipe,
 				    IGT_CRTC_DEGAMMA_LUT) == NULL);
@@ -692,12 +692,12 @@ static bool test_pipe_ctm(data_t *data,
 		set_degamma(data, primary->pipe, degamma_linear);
 		set_gamma(data, primary->pipe, gamma_linear);
 		disable_ctm(primary->pipe);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		paint_rectangles(data, mode, after, &fb);
 		igt_plane_set_fb(primary, &fb);
 		set_ctm(primary->pipe, ctm_identity);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_software);
 
@@ -705,7 +705,7 @@ static bool test_pipe_ctm(data_t *data,
 		paint_rectangles(data, mode, before, &fb);
 		igt_plane_set_fb(primary, &fb);
 		set_ctm(primary->pipe, ctm_matrix);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_hardware);
 
@@ -800,7 +800,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
 		igt_output_set_prop_value(output, IGT_CONNECTOR_BROADCAST_RGB, BROADCAST_RGB_FULL);
 		paint_rectangles(data, mode, red_green_blue_limited, &fb);
 		igt_plane_set_fb(primary, &fb);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_full);
 
@@ -808,7 +808,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
 		igt_output_set_prop_value(output, IGT_CONNECTOR_BROADCAST_RGB, BROADCAST_RGB_16_235);
 		paint_rectangles(data, mode, red_green_blue_full, &fb);
 		igt_plane_set_fb(primary, &fb);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 		igt_wait_for_vblank(data->drm_fd, primary->pipe->pipe);
 		igt_pipe_crc_collect_crc(data->pipe_crc, &crc_limited);
 
@@ -876,7 +876,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 	data->color_depth = 8;
 	delta = 1.0 / (1 << data->color_depth);
 
-	igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
+	igt_subtest_f("pipe-%s-ctm-red-to-blue-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit)) {
 		color_t blue_green_blue[] = {
 			{ 0.0, 0.0, 1.0 },
 			{ 0.0, 1.0, 0.0 },
@@ -889,7 +890,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 					 blue_green_blue, ctm));
 	}
 
-	igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
+	igt_subtest_f("pipe-%s-ctm-green-to-red-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit)) {
 		color_t red_red_blue[] = {
 			{ 1.0, 0.0, 0.0 },
 			{ 1.0, 0.0, 0.0 },
@@ -902,7 +904,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 					 red_red_blue, ctm));
 	}
 
-	igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
+	igt_subtest_f("pipe-%s-ctm-blue-to-red-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit)) {
 		color_t red_green_red[] = {
 			{ 1.0, 0.0, 0.0 },
 			{ 0.0, 1.0, 0.0 },
@@ -919,7 +922,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 	 * the it depends on the hardware we're dealing with, we can
 	 * either get clamped or rounded values and we also need to
 	 * account for odd number of items in the LUTs. */
-	igt_subtest_f("pipe-%s-ctm-0-25", kmstest_pipe_name(p)) {
+	igt_subtest_f("pipe-%s-ctm-0-25-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit)) {
 		color_t expected_colors[] = {
 			{ 0.0, }, { 0.0, }, { 0.0, }
 		};
@@ -940,7 +944,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 		igt_assert(success);
 	}
 
-	igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
+	igt_subtest_f("pipe-%s-ctm-0-5-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit)) {
 		color_t expected_colors[] = {
 			{ 0.0, }, { 0.0, }, { 0.0, }
 		};
@@ -961,7 +966,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 		igt_assert(success);
 	}
 
-	igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
+	igt_subtest_f("pipe-%s-ctm-0-75-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit)) {
 		color_t expected_colors[] = {
 			{ 0.0, }, { 0.0, }, { 0.0, }
 		};
@@ -982,7 +988,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 		igt_assert(success);
 	}
 
-	igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
+	igt_subtest_f("pipe-%s-ctm-max-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit)) {
 		color_t full_rgb[] = {
 			{ 1.0, 0.0, 0.0 },
 			{ 0.0, 1.0, 0.0 },
@@ -1000,7 +1007,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 					 full_rgb, ctm));
 	}
 
-	igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
+	igt_subtest_f("pipe-%s-ctm-negative-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit)) {
 		color_t all_black[] = {
 			{ 0.0, 0.0, 0.0 },
 			{ 0.0, 0.0, 0.0 },
@@ -1014,27 +1022,32 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 	}
 
 #if 0
-	igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
+	igt_subtest_f("pipe-%s-ctm-limited-range-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit))
 		test_pipe_limited_range_ctm(data, primary);
 #endif
 
-	igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
+	igt_subtest_f("pipe-%s-degamma-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit))
 		test_pipe_degamma(data, primary);
 
-	igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
+	igt_subtest_f("pipe-%s-gamma-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit))
 		test_pipe_gamma(data, primary);
 
-	igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
+	igt_subtest_f("pipe-%s-legacy-gamma-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit))
 		test_pipe_legacy_gamma(data, primary);
 
-	igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
+	igt_subtest_f("pipe-%s-legacy-gamma-reset-%s", kmstest_pipe_name(p),
+		       kmstest_commit_style_name(data->commit))
 		test_pipe_legacy_gamma_reset(data, primary);
 
 	igt_fixture {
 		disable_degamma(primary->pipe);
 		disable_gamma(primary->pipe);
 		disable_ctm(primary->pipe);
-		igt_display_commit(&data->display);
+		igt_display_commit2(&data->display, data->commit);
 
 		igt_pipe_crc_free(data->pipe_crc);
 		data->pipe_crc = NULL;
@@ -1076,7 +1089,7 @@ invalid_lut_sizes(data_t *data)
 	struct _drm_color_lut *degamma_lut = malloc(data->degamma_lut_size * sizeof(struct _drm_color_lut) * 2);
 	struct _drm_color_lut *gamma_lut = malloc(data->gamma_lut_size * sizeof(struct _drm_color_lut) * 2);
 
-	igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+	igt_display_commit2(&data->display, data->commit);
 
 	if (igt_pipe_obj_has_prop(pipe, IGT_CRTC_DEGAMMA_LUT)) {
 		igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
@@ -1166,15 +1179,30 @@ igt_main
 		igt_display_init(&data.display, data.drm_fd);
 	}
 
+	igt_subtest_f("pipe-invalid-ctm-matrix-sizes")
+		invalid_ctm_matrix_sizes(&data);
+
+	data.commit = COMMIT_LEGACY;
+
 	for_each_pipe_static(pipe)
 		igt_subtest_group
 			run_tests_for_pipe(&data, pipe);
 
-	igt_subtest_f("pipe-invalid-lut-sizes")
+	igt_subtest_f("pipe-invalid-lut-sizes-%s",
+		       kmstest_commit_style_name(data.commit))
 		invalid_lut_sizes(&data);
 
-	igt_subtest_f("pipe-invalid-ctm-matrix-sizes")
-		invalid_ctm_matrix_sizes(&data);
+	if (data.is_atomic == 1) {
+		data.commit =  COMMIT_ATOMIC;
+
+		for_each_pipe_static(pipe)
+			igt_subtest_group
+				run_tests_for_pipe(&data, pipe);
+
+		igt_subtest_f("pipe-invalid-lut-sizes-%s",
+		    	       kmstest_commit_style_name(data.commit))
+			invalid_lut_sizes(&data);
+	}
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-- 
1.9.1

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

             reply	other threads:[~2018-10-04  8:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-04  8:25 swati2.sharma [this message]
2018-10-04  9:35 ` [igt-dev] [RFC] tests/kms_color: Change in commit style Daniel Vetter
2018-10-04 12:14 ` [igt-dev] ✗ Fi.CI.BAT: failure for " 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=1538641555-32346-1-git-send-email-swati2.sharma@intel.com \
    --to=swati2.sharma@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /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