[i-g-t V2] tests/kms_color: Fix ctm-0.* tests

Bhanuprakash Modem bhanuprakash.modem at intel.com
Mon Sep 26 14:17:57 UTC 2022


As we are testing with a few values around the expected result
because of the hardware rounded values, fix the logic to generate
the expected values to deal with those hardware rounding issues.

V2:
- Other cleanup

Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 tests/kms_color.c        | 37 +++++++++++++++++++------------------
 tests/kms_color_helper.c |  4 ++--
 tests/kms_color_helper.h |  4 ++--
 3 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/tests/kms_color.c b/tests/kms_color.c
index ab285af8..d98524b0 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -452,9 +452,9 @@ end:
  */
 static bool test_pipe_ctm(data_t *data,
 			  igt_plane_t *primary,
-			  color_t *before,
-			  color_t *after,
-			  double *ctm_matrix)
+			  const color_t *before,
+			  const color_t *after,
+			  const double *ctm_matrix)
 {
 	const double ctm_identity[] = {
 		1.0, 0.0, 0.0,
@@ -730,12 +730,12 @@ run_gamma_degamma_tests_for_pipe(data_t *data, enum pipe p,
 
 static void
 run_ctm_tests_for_pipe(data_t *data, enum pipe p,
-		       color_t *expected_colors,
-		       double *ctm,
-		       int iter)
+		       const color_t *expected_colors,
+		       const double *ctm,
+		       const int iterator)
 {
 	double delta;
-	color_t red_green_blue[] = {
+	const color_t red_green_blue[] = {
 		{ 1.0, 0.0, 0.0 },
 		{ 0.0, 1.0, 0.0 },
 		{ 0.0, 0.0, 1.0 }
@@ -754,9 +754,10 @@ run_ctm_tests_for_pipe(data_t *data, enum pipe p,
 
 	igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(p), data->output->name) {
 		bool success = false;
+		color_t expected[3];
 		int i;
 
-		if (!iter)
+		if (!iterator)
 			success = test_pipe_ctm(data, data->primary, red_green_blue,
 						expected_colors, ctm);
 
@@ -766,13 +767,13 @@ run_ctm_tests_for_pipe(data_t *data, enum pipe p,
 		 * get clamped or rounded values and we also need to account
 		 * for odd number of items in the LUTs.
 		 */
-		for (i = 0; i < iter; i++) {
-			expected_colors[0].r =
-				expected_colors[1].g =
-				expected_colors[2].b =
-				0.5 + delta * (i - 2);
+		for (i = 0; i < iterator; i++) {
+			expected[0].r =
+			expected[1].g =
+			expected[2].b =
+				ctm[0] + delta * (i - (iterator / 2));
 			if (test_pipe_ctm(data, data->primary, red_green_blue,
-					  expected_colors, ctm)) {
+					  expected, ctm)) {
 				success = true;
 				break;
 			}
@@ -930,9 +931,9 @@ run_tests_for_pipe(data_t *data)
 	};
 	struct {
 		const char *name;
-		int iter;
-		color_t colors[3];
-		double ctm[9];
+		const int iterator;
+		const color_t colors[3];
+		const double ctm[9];
 		const char *desc;
 	} ctm_tests[] = {
 		{ "ctm-red-to-blue", 0,
@@ -1021,7 +1022,7 @@ run_tests_for_pipe(data_t *data)
 				run_ctm_tests_for_pipe(data, pipe,
 						       ctm_tests[i].colors,
 						       ctm_tests[i].ctm,
-						       ctm_tests[i].iter);
+						       ctm_tests[i].iterator);
 			}
 		}
 	}
diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
index 55f3e409..bd1f58c6 100644
--- a/tests/kms_color_helper.c
+++ b/tests/kms_color_helper.c
@@ -42,7 +42,7 @@ uint64_t get_max_bpc(igt_output_t *output)
 
 void paint_gradient_rectangles(data_t *data,
 			       drmModeModeInfo *mode,
-			       color_t *colors,
+			       const color_t *colors,
 			       struct igt_fb *fb)
 {
 	cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, fb);
@@ -78,7 +78,7 @@ void paint_gradient_rectangles(data_t *data,
 
 void paint_rectangles(data_t *data,
 		      drmModeModeInfo *mode,
-		      color_t *colors,
+		      const color_t *colors,
 		      struct igt_fb *fb)
 {
 	cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, fb);
diff --git a/tests/kms_color_helper.h b/tests/kms_color_helper.h
index f0ae30e3..59be7dc1 100644
--- a/tests/kms_color_helper.h
+++ b/tests/kms_color_helper.h
@@ -73,11 +73,11 @@ bool panel_supports_deep_color(int fd, char *output_name);
 uint64_t get_max_bpc(igt_output_t *output);
 void paint_gradient_rectangles(data_t *data,
 			       drmModeModeInfo *mode,
-			       color_t *colors,
+			       const color_t *colors,
 			       struct igt_fb *fb);
 void paint_rectangles(data_t *data,
 		      drmModeModeInfo *mode,
-		      color_t *colors,
+		      const color_t *colors,
 		      struct igt_fb *fb);
 gamma_lut_t *alloc_lut(int lut_size);
 void free_lut(gamma_lut_t *gamma);
-- 
2.37.3



More information about the Intel-gfx-trybot mailing list