All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
@ 2019-12-11 20:46 sunpeng.li
  2019-12-11 20:54 ` Kazlauskas, Nicholas
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: sunpeng.li @ 2019-12-11 20:46 UTC (permalink / raw)
  To: igt-dev

From: Leo Li <sunpeng.li@amd.com>

We'd like to test the hardware pipe's color management with 10bit
surfaces. This change parameterizes the hardcoded formats within each
test, and ennumerates the additional subtests within a for loop. To
avoid renaming existing tests, the 10bpc tests will have '-10bpc'
inserted after the pipe name, while the 8bpc test names remain
unchanged.

Signed-off-by: Leo Li <sunpeng.li@amd.com>
---
 tests/kms_color.c | 353 ++++++++++++++++++++++++++--------------------
 1 file changed, 198 insertions(+), 155 deletions(-)

diff --git a/tests/kms_color.c b/tests/kms_color.c
index b4b578a7..3c76a0d2 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -52,6 +52,12 @@ typedef struct {
 	double coeffs[];
 } gamma_lut_t;
 
+typedef struct {
+	uint32_t format;
+	int bpc;
+	char name[16];
+} fb_format_t;
+
 static void paint_gradient_rectangles(data_t *data,
 				      drmModeModeInfo *mode,
 				      color_t *colors,
@@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
  * rectangles with linear degamma LUT.
  */
 static void test_pipe_degamma(data_t *data,
-			      igt_plane_t *primary)
+			      igt_plane_t *primary,
+			      uint32_t fb_format)
 {
 	igt_output_t *output;
 	gamma_lut_t *degamma_linear, *degamma_full;
@@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data,
 		fb_id = igt_create_fb(data->drm_fd,
 				      mode->hdisplay,
 				      mode->vdisplay,
-				      DRM_FORMAT_XRGB8888,
+				      fb_format,
 				      LOCAL_DRM_FORMAT_MOD_NONE,
 				      &fb);
 		igt_assert(fb_id);
@@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data,
 		fb_modeset_id = igt_create_fb(data->drm_fd,
 					      mode->hdisplay,
 					      mode->vdisplay,
-					      DRM_FORMAT_XRGB8888,
+					      fb_format,
 					      LOCAL_DRM_FORMAT_MOD_NONE,
 					      &fb_modeset);
 		igt_assert(fb_modeset_id);
@@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data,
  * LUT and verify we have the same CRC as drawing solid color rectangles.
  */
 static void test_pipe_gamma(data_t *data,
-			    igt_plane_t *primary)
+			    igt_plane_t *primary,
+			    uint32_t fb_format)
 {
 	igt_output_t *output;
 	gamma_lut_t *gamma_full;
@@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data,
 		fb_id = igt_create_fb(data->drm_fd,
 				      mode->hdisplay,
 				      mode->vdisplay,
-				      DRM_FORMAT_XRGB8888,
+				      fb_format,
 				      LOCAL_DRM_FORMAT_MOD_NONE,
 				      &fb);
 		igt_assert(fb_id);
@@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data,
 		fb_modeset_id = igt_create_fb(data->drm_fd,
 					      mode->hdisplay,
 					      mode->vdisplay,
-					      DRM_FORMAT_XRGB8888,
+					      fb_format,
 					      LOCAL_DRM_FORMAT_MOD_NONE,
 					      &fb_modeset);
 		igt_assert(fb_modeset_id);
@@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data,
  * with linear legacy gamma LUT.
  */
 static void test_pipe_legacy_gamma(data_t *data,
-				   igt_plane_t *primary)
+				   igt_plane_t *primary,
+				   uint32_t fb_format)
 {
 	igt_output_t *output;
 	color_t red_green_blue[] = {
@@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data,
 		fb_id = igt_create_fb(data->drm_fd,
 				      mode->hdisplay,
 				      mode->vdisplay,
-				      DRM_FORMAT_XRGB8888,
+				      fb_format,
 				      LOCAL_DRM_FORMAT_MOD_NONE,
 				      &fb);
 		igt_assert(fb_id);
@@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data,
 		fb_modeset_id = igt_create_fb(data->drm_fd,
 					      mode->hdisplay,
 					      mode->vdisplay,
-					      DRM_FORMAT_XRGB8888,
+					      fb_format,
 					      LOCAL_DRM_FORMAT_MOD_NONE,
 					      &fb_modeset);
 		igt_assert(fb_modeset_id);
@@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data,
 			  igt_plane_t *primary,
 			  color_t *before,
 			  color_t *after,
-			  double *ctm_matrix)
+			  double *ctm_matrix,
+			  uint32_t fb_format)
 {
 	const double ctm_identity[] = {
 		1.0, 0.0, 0.0,
@@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data,
 		fb_id = igt_create_fb(data->drm_fd,
 				      mode->hdisplay,
 				      mode->vdisplay,
-				      DRM_FORMAT_XRGB8888,
+				      fb_format,
 				      LOCAL_DRM_FORMAT_MOD_NONE,
 				      &fb);
 		igt_assert(fb_id);
@@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data,
 		fb_modeset_id = igt_create_fb(data->drm_fd,
 					      mode->hdisplay,
 					      mode->vdisplay,
-					      DRM_FORMAT_XRGB8888,
+					      fb_format,
 					      LOCAL_DRM_FORMAT_MOD_NONE,
 					      &fb_modeset);
 		igt_assert(fb_modeset_id);
@@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data,
  */
 #if 0
 static void test_pipe_limited_range_ctm(data_t *data,
-					igt_plane_t *primary)
+					igt_plane_t *primary,
+					uint32_t fb_format)
 {
 	double limited_result = 235.0 / 255.0;
 	color_t red_green_blue_limited[] = {
@@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
 		fb_id = igt_create_fb(data->drm_fd,
 				      mode->hdisplay,
 				      mode->vdisplay,
-				      DRM_FORMAT_XRGB8888,
+				      fb_format,
 				      LOCAL_DRM_FORMAT_MOD_NONE,
 				      &fb);
 		igt_assert(fb_id);
@@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
 		fb_modeset_id = igt_create_fb(data->drm_fd,
 					      mode->hdisplay,
 					      mode->vdisplay,
-					      DRM_FORMAT_XRGB8888,
+					      fb_format,
 					      LOCAL_DRM_FORMAT_MOD_NONE,
 					      &fb_modeset);
 		igt_assert(fb_modeset_id);
@@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 	igt_pipe_t *pipe;
 	igt_plane_t *primary;
 	double delta;
-	int i;
+	int i, j;
 	color_t red_green_blue[] = {
 		{ 1.0, 0.0, 0.0 },
 		{ 0.0, 1.0, 0.0 },
 		{ 0.0, 0.0, 1.0 }
 	};
 
+	fb_format_t fb_formats[] = {
+		{ DRM_FORMAT_XRGB8888, 8 , ""},
+		{ DRM_FORMAT_XRGB2101010, 10 , "-10bpc"}
+	};
+
 	igt_fixture {
 		igt_require_pipe_crc(data->drm_fd);
 
@@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 		igt_display_require_output_on_pipe(&data->display, p);
 	}
 
-	/* We assume an 8bits depth per color for degamma/gamma LUTs
-	 * for CRC checks with framebuffer references. */
-	data->color_depth = 8;
-	delta = 1.0 / (1 << data->color_depth);
-
-	igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
-		color_t blue_green_blue[] = {
-			{ 0.0, 0.0, 1.0 },
-			{ 0.0, 1.0, 0.0 },
-			{ 0.0, 0.0, 1.0 }
-		};
-		double ctm[] = { 0.0, 0.0, 0.0,
-				0.0, 1.0, 0.0,
-				1.0, 0.0, 1.0 };
-		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
-					 blue_green_blue, ctm));
-	}
+	/* Iterate over fb formats to test */
+	for (j = 0; j < ARRAY_SIZE(fb_formats); j++) {
+
+		fb_format_t *fb_format = &fb_formats[j];
+		data->color_depth = fb_format->bpc;
+		delta = 1.0 / (1 << data->color_depth);
+
+		igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p),
+			      fb_format->name) {
+			color_t blue_green_blue[] = {
+				{ 0.0, 0.0, 1.0 },
+				{ 0.0, 1.0, 0.0 },
+				{ 0.0, 0.0, 1.0 }
+			};
+			double ctm[] = { 0.0, 0.0, 0.0,
+					0.0, 1.0, 0.0,
+					1.0, 0.0, 1.0 };
+			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+						 blue_green_blue, ctm,
+						 fb_format->format));
+		}
 
-	igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
-		color_t red_red_blue[] = {
-			{ 1.0, 0.0, 0.0 },
-			{ 1.0, 0.0, 0.0 },
-			{ 0.0, 0.0, 1.0 }
-		};
-		double ctm[] = { 1.0, 1.0, 0.0,
-				0.0, 0.0, 0.0,
-				0.0, 0.0, 1.0 };
-		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
-					 red_red_blue, ctm));
-	}
+		igt_subtest_f("pipe-%s%s-ctm-green-to-red",
+			      kmstest_pipe_name(p), fb_format->name) {
+			color_t red_red_blue[] = {
+				{ 1.0, 0.0, 0.0 },
+				{ 1.0, 0.0, 0.0 },
+				{ 0.0, 0.0, 1.0 }
+			};
+			double ctm[] = { 1.0, 1.0, 0.0,
+					0.0, 0.0, 0.0,
+					0.0, 0.0, 1.0 };
+			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+						 red_red_blue, ctm,
+						 fb_format->format));
+		}
 
-	igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
-		color_t red_green_red[] = {
-			{ 1.0, 0.0, 0.0 },
-			{ 0.0, 1.0, 0.0 },
-			{ 1.0, 0.0, 0.0 }
-		};
-		double ctm[] = { 1.0, 0.0, 1.0,
-				0.0, 1.0, 0.0,
-				0.0, 0.0, 0.0 };
-		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
-					 red_green_red, ctm));
-	}
+		igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p),
+			      fb_format->name) {
+			color_t red_green_red[] = {
+				{ 1.0, 0.0, 0.0 },
+				{ 0.0, 1.0, 0.0 },
+				{ 1.0, 0.0, 0.0 }
+			};
+			double ctm[] = { 1.0, 0.0, 1.0,
+					0.0, 1.0, 0.0,
+					0.0, 0.0, 0.0 };
+			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+						 red_green_red, ctm,
+						 fb_format->format));
+		}
 
-	/* We tests a few values around the expected result because
-	 * 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)) {
-		color_t expected_colors[] = {
-			{ 0.0, }, { 0.0, }, { 0.0, }
-		};
-		double ctm[] = { 0.25, 0.0,  0.0,
-				 0.0,  0.25, 0.0,
-				 0.0,  0.0,  0.25 };
-		bool success = false;
-
-		for (i = 0; i < 5; i++) {
-			expected_colors[0].r =
-				expected_colors[1].g =
-				expected_colors[2].b =
-				0.25 + delta * (i - 2);
-			success |= test_pipe_ctm(data, primary,
-						 red_green_blue,
-						 expected_colors, ctm);
+		/* We tests a few values around the expected result because
+		 * 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%s-ctm-0-25", kmstest_pipe_name(p),
+			      fb_format->name) {
+			color_t expected_colors[] = {
+				{ 0.0, }, { 0.0, }, { 0.0, }
+			};
+			double ctm[] = { 0.25, 0.0,  0.0,
+					 0.0,  0.25, 0.0,
+					 0.0,  0.0,  0.25 };
+			bool success = false;
+
+			for (i = 0; i < 5; i++) {
+				expected_colors[0].r =
+					expected_colors[1].g =
+					expected_colors[2].b =
+					0.25 + delta * (i - 2);
+				success |= test_pipe_ctm(data, primary,
+							 red_green_blue,
+							 expected_colors, ctm,
+							 fb_format->format);
+			}
+			igt_assert(success);
 		}
-		igt_assert(success);
-	}
 
-	igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
-		color_t expected_colors[] = {
-			{ 0.0, }, { 0.0, }, { 0.0, }
-		};
-		double ctm[] = { 0.5, 0.0, 0.0,
-				 0.0, 0.5, 0.0,
-				 0.0, 0.0, 0.5 };
-		bool success = false;
-
-		for (i = 0; i < 5; i++) {
-			expected_colors[0].r =
-				expected_colors[1].g =
-				expected_colors[2].b =
-				0.5 + delta * (i - 2);
-			success |= test_pipe_ctm(data, primary,
-						 red_green_blue,
-						 expected_colors, ctm);
+		igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p),
+			      fb_format->name) {
+			color_t expected_colors[] = {
+				{ 0.0, }, { 0.0, }, { 0.0, }
+			};
+			double ctm[] = { 0.5, 0.0, 0.0,
+					 0.0, 0.5, 0.0,
+					 0.0, 0.0, 0.5 };
+			bool success = false;
+
+			for (i = 0; i < 5; i++) {
+				expected_colors[0].r =
+					expected_colors[1].g =
+					expected_colors[2].b =
+					0.5 + delta * (i - 2);
+				success |= test_pipe_ctm(data, primary,
+							 red_green_blue,
+							 expected_colors, ctm,
+							 fb_format->format);
+			}
+			igt_assert(success);
 		}
-		igt_assert(success);
-	}
 
-	igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
-		color_t expected_colors[] = {
-			{ 0.0, }, { 0.0, }, { 0.0, }
-		};
-		double ctm[] = { 0.75, 0.0,  0.0,
-				 0.0,  0.75, 0.0,
-				 0.0,  0.0,  0.75 };
-		bool success = false;
-
-		for (i = 0; i < 7; i++) {
-			expected_colors[0].r =
-				expected_colors[1].g =
-				expected_colors[2].b =
-				0.75 + delta * (i - 3);
-			success |= test_pipe_ctm(data, primary,
-						 red_green_blue,
-						 expected_colors, ctm);
+		igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p),
+			      fb_format->name) {
+			color_t expected_colors[] = {
+				{ 0.0, }, { 0.0, }, { 0.0, }
+			};
+			double ctm[] = { 0.75, 0.0,  0.0,
+					 0.0,  0.75, 0.0,
+					 0.0,  0.0,  0.75 };
+			bool success = false;
+
+			for (i = 0; i < 7; i++) {
+				expected_colors[0].r =
+					expected_colors[1].g =
+					expected_colors[2].b =
+					0.75 + delta * (i - 3);
+				success |= test_pipe_ctm(data, primary,
+							 red_green_blue,
+							 expected_colors, ctm,
+							 fb_format->format);
+			}
+			igt_assert(success);
 		}
-		igt_assert(success);
-	}
 
-	igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
-		color_t full_rgb[] = {
-			{ 1.0, 0.0, 0.0 },
-			{ 0.0, 1.0, 0.0 },
-			{ 0.0, 0.0, 1.0 }
-		};
-		double ctm[] = { 100.0,   0.0,   0.0,
-				 0.0,   100.0,   0.0,
-				 0.0,     0.0, 100.0 };
-
-		/* CherryView generates values on 10bits that we
-		 * produce with an 8 bits per color framebuffer. */
-		igt_require(!IS_CHERRYVIEW(data->devid));
-
-		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
-					 full_rgb, ctm));
-	}
+		igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p),
+			      fb_format->name) {
+			color_t full_rgb[] = {
+				{ 1.0, 0.0, 0.0 },
+				{ 0.0, 1.0, 0.0 },
+				{ 0.0, 0.0, 1.0 }
+			};
+			double ctm[] = { 100.0,   0.0,   0.0,
+					 0.0,   100.0,   0.0,
+					 0.0,     0.0, 100.0 };
+
+			/* CherryView generates values on 10bits that we
+			 * produce with an 8 bits per color framebuffer. */
+			igt_require(!IS_CHERRYVIEW(data->devid));
+
+			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+						 full_rgb, ctm,
+						 fb_format->format));
+		}
 
-	igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
-		color_t all_black[] = {
-			{ 0.0, 0.0, 0.0 },
-			{ 0.0, 0.0, 0.0 },
-			{ 0.0, 0.0, 0.0 }
-		};
-		double ctm[] = { -1.0,  0.0,  0.0,
-				 0.0, -1.0,  0.0,
-				 0.0,  0.0, -1.0 };
-		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
-					 all_black, ctm));
-	}
+		igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p),
+			      fb_format->name) {
+			color_t all_black[] = {
+				{ 0.0, 0.0, 0.0 },
+				{ 0.0, 0.0, 0.0 },
+				{ 0.0, 0.0, 0.0 }
+			};
+			double ctm[] = { -1.0,  0.0,  0.0,
+					 0.0, -1.0,  0.0,
+					 0.0,  0.0, -1.0 };
+			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+						 all_black, ctm,
+						 fb_format->format));
+		}
 
 #if 0
-	igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
-		test_pipe_limited_range_ctm(data, primary);
+		igt_subtest_f("pipe-%s-ctm-limited-range%s",
+			      kmstest_pipe_name(p), fb_format->name)
+			test_pipe_limited_range_ctm(data, primary,
+						    fb_format->format);
 #endif
 
-	igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
-		test_pipe_degamma(data, primary);
+		igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p),
+			      fb_format->name)
+			test_pipe_degamma(data, primary, fb_format->format);
 
-	igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
-		test_pipe_gamma(data, primary);
+		igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p),
+			      fb_format->name)
+			test_pipe_gamma(data, primary, fb_format->format);
 
-	igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
-		test_pipe_legacy_gamma(data, primary);
+		igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p),
+			      fb_format->name)
+			test_pipe_legacy_gamma(data, primary,
+					       fb_format->format);
 
+	} // End of fb_formats iterator
+
+	data->color_depth = 8;
 	igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
 		test_pipe_legacy_gamma_reset(data, primary);
 
-- 
2.24.0

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

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li
@ 2019-12-11 20:54 ` Kazlauskas, Nicholas
  2019-12-11 21:15 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Kazlauskas, Nicholas @ 2019-12-11 20:54 UTC (permalink / raw)
  To: sunpeng.li, igt-dev

On 2019-12-11 3:46 p.m., sunpeng.li@amd.com wrote:
> From: Leo Li <sunpeng.li@amd.com>
> 
> We'd like to test the hardware pipe's color management with 10bit
> surfaces. This change parameterizes the hardcoded formats within each
> test, and ennumerates the additional subtests within a for loop. To
> avoid renaming existing tests, the 10bpc tests will have '-10bpc'
> inserted after the pipe name, while the 8bpc test names remain
> unchanged.
> 
> Signed-off-by: Leo Li <sunpeng.li@amd.com>
> ---
>   tests/kms_color.c | 353 ++++++++++++++++++++++++++--------------------
>   1 file changed, 198 insertions(+), 155 deletions(-)
> 
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index b4b578a7..3c76a0d2 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -52,6 +52,12 @@ typedef struct {
>   	double coeffs[];
>   } gamma_lut_t;
>   
> +typedef struct {
> +	uint32_t format;
> +	int bpc;
> +	char name[16];
> +} fb_format_t;
> +
>   static void paint_gradient_rectangles(data_t *data,
>   				      drmModeModeInfo *mode,
>   				      color_t *colors,
> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
>    * rectangles with linear degamma LUT.
>    */
>   static void test_pipe_degamma(data_t *data,
> -			      igt_plane_t *primary)
> +			      igt_plane_t *primary,
> +			      uint32_t fb_format)
>   {
>   	igt_output_t *output;
>   	gamma_lut_t *degamma_linear, *degamma_full;
> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data,
>   		fb_id = igt_create_fb(data->drm_fd,
>   				      mode->hdisplay,
>   				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>   				      LOCAL_DRM_FORMAT_MOD_NONE,
>   				      &fb);
>   		igt_assert(fb_id);
> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data,
>   		fb_modeset_id = igt_create_fb(data->drm_fd,
>   					      mode->hdisplay,
>   					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>   					      LOCAL_DRM_FORMAT_MOD_NONE,
>   					      &fb_modeset);
>   		igt_assert(fb_modeset_id);
> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data,
>    * LUT and verify we have the same CRC as drawing solid color rectangles.
>    */
>   static void test_pipe_gamma(data_t *data,
> -			    igt_plane_t *primary)
> +			    igt_plane_t *primary,
> +			    uint32_t fb_format)
>   {
>   	igt_output_t *output;
>   	gamma_lut_t *gamma_full;
> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data,
>   		fb_id = igt_create_fb(data->drm_fd,
>   				      mode->hdisplay,
>   				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>   				      LOCAL_DRM_FORMAT_MOD_NONE,
>   				      &fb);
>   		igt_assert(fb_id);
> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data,
>   		fb_modeset_id = igt_create_fb(data->drm_fd,
>   					      mode->hdisplay,
>   					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>   					      LOCAL_DRM_FORMAT_MOD_NONE,
>   					      &fb_modeset);
>   		igt_assert(fb_modeset_id);
> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data,
>    * with linear legacy gamma LUT.
>    */
>   static void test_pipe_legacy_gamma(data_t *data,
> -				   igt_plane_t *primary)
> +				   igt_plane_t *primary,
> +				   uint32_t fb_format)
>   {
>   	igt_output_t *output;
>   	color_t red_green_blue[] = {
> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>   		fb_id = igt_create_fb(data->drm_fd,
>   				      mode->hdisplay,
>   				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>   				      LOCAL_DRM_FORMAT_MOD_NONE,
>   				      &fb);
>   		igt_assert(fb_id);
> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>   		fb_modeset_id = igt_create_fb(data->drm_fd,
>   					      mode->hdisplay,
>   					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>   					      LOCAL_DRM_FORMAT_MOD_NONE,
>   					      &fb_modeset);
>   		igt_assert(fb_modeset_id);
> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data,
>   			  igt_plane_t *primary,
>   			  color_t *before,
>   			  color_t *after,
> -			  double *ctm_matrix)
> +			  double *ctm_matrix,
> +			  uint32_t fb_format)
>   {
>   	const double ctm_identity[] = {
>   		1.0, 0.0, 0.0,
> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data,
>   		fb_id = igt_create_fb(data->drm_fd,
>   				      mode->hdisplay,
>   				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>   				      LOCAL_DRM_FORMAT_MOD_NONE,
>   				      &fb);
>   		igt_assert(fb_id);
> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data,
>   		fb_modeset_id = igt_create_fb(data->drm_fd,
>   					      mode->hdisplay,
>   					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>   					      LOCAL_DRM_FORMAT_MOD_NONE,
>   					      &fb_modeset);
>   		igt_assert(fb_modeset_id);
> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data,
>    */
>   #if 0
>   static void test_pipe_limited_range_ctm(data_t *data,
> -					igt_plane_t *primary)
> +					igt_plane_t *primary,
> +					uint32_t fb_format)
>   {
>   	double limited_result = 235.0 / 255.0;
>   	color_t red_green_blue_limited[] = {
> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>   		fb_id = igt_create_fb(data->drm_fd,
>   				      mode->hdisplay,
>   				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>   				      LOCAL_DRM_FORMAT_MOD_NONE,
>   				      &fb);
>   		igt_assert(fb_id);
> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>   		fb_modeset_id = igt_create_fb(data->drm_fd,
>   					      mode->hdisplay,
>   					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>   					      LOCAL_DRM_FORMAT_MOD_NONE,
>   					      &fb_modeset);
>   		igt_assert(fb_modeset_id);
> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>   	igt_pipe_t *pipe;
>   	igt_plane_t *primary;
>   	double delta;
> -	int i;
> +	int i, j;
>   	color_t red_green_blue[] = {
>   		{ 1.0, 0.0, 0.0 },
>   		{ 0.0, 1.0, 0.0 },
>   		{ 0.0, 0.0, 1.0 }
>   	};
>   
> +	fb_format_t fb_formats[] = {
> +		{ DRM_FORMAT_XRGB8888, 8 , ""},
> +		{ DRM_FORMAT_XRGB2101010, 10 , "-10bpc"}
> +	};
> +
>   	igt_fixture {
>   		igt_require_pipe_crc(data->drm_fd);
>   
> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>   		igt_display_require_output_on_pipe(&data->display, p);
>   	}
>   
> -	/* We assume an 8bits depth per color for degamma/gamma LUTs
> -	 * for CRC checks with framebuffer references. */
> -	data->color_depth = 8;
> -	delta = 1.0 / (1 << data->color_depth);
> -
> -	igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
> -		color_t blue_green_blue[] = {
> -			{ 0.0, 0.0, 1.0 },
> -			{ 0.0, 1.0, 0.0 },
> -			{ 0.0, 0.0, 1.0 }
> -		};
> -		double ctm[] = { 0.0, 0.0, 0.0,
> -				0.0, 1.0, 0.0,
> -				1.0, 0.0, 1.0 };
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 blue_green_blue, ctm));
> -	}
> +	/* Iterate over fb formats to test */
> +	for (j = 0; j < ARRAY_SIZE(fb_formats); j++) {
> +
> +		fb_format_t *fb_format = &fb_formats[j];
> +		data->color_depth = fb_format->bpc;
> +		delta = 1.0 / (1 << data->color_depth);
> +
> +		igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t blue_green_blue[] = {
> +				{ 0.0, 0.0, 1.0 },
> +				{ 0.0, 1.0, 0.0 },
> +				{ 0.0, 0.0, 1.0 }
> +			};
> +			double ctm[] = { 0.0, 0.0, 0.0,
> +					0.0, 1.0, 0.0,
> +					1.0, 0.0, 1.0 };
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 blue_green_blue, ctm,
> +						 fb_format->format));
> +		}
>   
> -	igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
> -		color_t red_red_blue[] = {
> -			{ 1.0, 0.0, 0.0 },
> -			{ 1.0, 0.0, 0.0 },
> -			{ 0.0, 0.0, 1.0 }
> -		};
> -		double ctm[] = { 1.0, 1.0, 0.0,
> -				0.0, 0.0, 0.0,
> -				0.0, 0.0, 1.0 };
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 red_red_blue, ctm));
> -	}
> +		igt_subtest_f("pipe-%s%s-ctm-green-to-red",
> +			      kmstest_pipe_name(p), fb_format->name) {
> +			color_t red_red_blue[] = {
> +				{ 1.0, 0.0, 0.0 },
> +				{ 1.0, 0.0, 0.0 },
> +				{ 0.0, 0.0, 1.0 }
> +			};
> +			double ctm[] = { 1.0, 1.0, 0.0,
> +					0.0, 0.0, 0.0,
> +					0.0, 0.0, 1.0 };
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 red_red_blue, ctm,
> +						 fb_format->format));
> +		}
>   
> -	igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
> -		color_t red_green_red[] = {
> -			{ 1.0, 0.0, 0.0 },
> -			{ 0.0, 1.0, 0.0 },
> -			{ 1.0, 0.0, 0.0 }
> -		};
> -		double ctm[] = { 1.0, 0.0, 1.0,
> -				0.0, 1.0, 0.0,
> -				0.0, 0.0, 0.0 };
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 red_green_red, ctm));
> -	}
> +		igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t red_green_red[] = {
> +				{ 1.0, 0.0, 0.0 },
> +				{ 0.0, 1.0, 0.0 },
> +				{ 1.0, 0.0, 0.0 }
> +			};
> +			double ctm[] = { 1.0, 0.0, 1.0,
> +					0.0, 1.0, 0.0,
> +					0.0, 0.0, 0.0 };
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 red_green_red, ctm,
> +						 fb_format->format));
> +		}
>   
> -	/* We tests a few values around the expected result because
> -	 * 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)) {
> -		color_t expected_colors[] = {
> -			{ 0.0, }, { 0.0, }, { 0.0, }
> -		};
> -		double ctm[] = { 0.25, 0.0,  0.0,
> -				 0.0,  0.25, 0.0,
> -				 0.0,  0.0,  0.25 };
> -		bool success = false;
> -
> -		for (i = 0; i < 5; i++) {
> -			expected_colors[0].r =
> -				expected_colors[1].g =
> -				expected_colors[2].b =
> -				0.25 + delta * (i - 2);
> -			success |= test_pipe_ctm(data, primary,
> -						 red_green_blue,
> -						 expected_colors, ctm);
> +		/* We tests a few values around the expected result because

nit: s/tests/test

> +		 * 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%s-ctm-0-25", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t expected_colors[] = {
> +				{ 0.0, }, { 0.0, }, { 0.0, }
> +			};
> +			double ctm[] = { 0.25, 0.0,  0.0,
> +					 0.0,  0.25, 0.0,
> +					 0.0,  0.0,  0.25 };
> +			bool success = false;
> +
> +			for (i = 0; i < 5; i++) {
> +				expected_colors[0].r =
> +					expected_colors[1].g =
> +					expected_colors[2].b =
> +					0.25 + delta * (i - 2);
> +				success |= test_pipe_ctm(data, primary,
> +							 red_green_blue,
> +							 expected_colors, ctm,
> +							 fb_format->format);
> +			}
> +			igt_assert(success);
>   		}
> -		igt_assert(success);
> -	}
>   
> -	igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
> -		color_t expected_colors[] = {
> -			{ 0.0, }, { 0.0, }, { 0.0, }
> -		};
> -		double ctm[] = { 0.5, 0.0, 0.0,
> -				 0.0, 0.5, 0.0,
> -				 0.0, 0.0, 0.5 };
> -		bool success = false;
> -
> -		for (i = 0; i < 5; i++) {
> -			expected_colors[0].r =
> -				expected_colors[1].g =
> -				expected_colors[2].b =
> -				0.5 + delta * (i - 2);
> -			success |= test_pipe_ctm(data, primary,
> -						 red_green_blue,
> -						 expected_colors, ctm);
> +		igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t expected_colors[] = {
> +				{ 0.0, }, { 0.0, }, { 0.0, }
> +			};
> +			double ctm[] = { 0.5, 0.0, 0.0,
> +					 0.0, 0.5, 0.0,
> +					 0.0, 0.0, 0.5 };
> +			bool success = false;
> +
> +			for (i = 0; i < 5; i++) {
> +				expected_colors[0].r =
> +					expected_colors[1].g =
> +					expected_colors[2].b =
> +					0.5 + delta * (i - 2);
> +				success |= test_pipe_ctm(data, primary,
> +							 red_green_blue,
> +							 expected_colors, ctm,
> +							 fb_format->format);
> +			}
> +			igt_assert(success);
>   		}
> -		igt_assert(success);
> -	}
>   
> -	igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
> -		color_t expected_colors[] = {
> -			{ 0.0, }, { 0.0, }, { 0.0, }
> -		};
> -		double ctm[] = { 0.75, 0.0,  0.0,
> -				 0.0,  0.75, 0.0,
> -				 0.0,  0.0,  0.75 };
> -		bool success = false;
> -
> -		for (i = 0; i < 7; i++) {
> -			expected_colors[0].r =
> -				expected_colors[1].g =
> -				expected_colors[2].b =
> -				0.75 + delta * (i - 3);
> -			success |= test_pipe_ctm(data, primary,
> -						 red_green_blue,
> -						 expected_colors, ctm);
> +		igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t expected_colors[] = {
> +				{ 0.0, }, { 0.0, }, { 0.0, }
> +			};
> +			double ctm[] = { 0.75, 0.0,  0.0,
> +					 0.0,  0.75, 0.0,
> +					 0.0,  0.0,  0.75 };
> +			bool success = false;
> +
> +			for (i = 0; i < 7; i++) {
> +				expected_colors[0].r =
> +					expected_colors[1].g =
> +					expected_colors[2].b =
> +					0.75 + delta * (i - 3);
> +				success |= test_pipe_ctm(data, primary,
> +							 red_green_blue,
> +							 expected_colors, ctm,
> +							 fb_format->format);
> +			}
> +			igt_assert(success);
>   		}
> -		igt_assert(success);
> -	}
>   
> -	igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
> -		color_t full_rgb[] = {
> -			{ 1.0, 0.0, 0.0 },
> -			{ 0.0, 1.0, 0.0 },
> -			{ 0.0, 0.0, 1.0 }
> -		};
> -		double ctm[] = { 100.0,   0.0,   0.0,
> -				 0.0,   100.0,   0.0,
> -				 0.0,     0.0, 100.0 };
> -
> -		/* CherryView generates values on 10bits that we
> -		 * produce with an 8 bits per color framebuffer. */
> -		igt_require(!IS_CHERRYVIEW(data->devid));
> -
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 full_rgb, ctm));
> -	}
> +		igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t full_rgb[] = {
> +				{ 1.0, 0.0, 0.0 },
> +				{ 0.0, 1.0, 0.0 },
> +				{ 0.0, 0.0, 1.0 }
> +			};
> +			double ctm[] = { 100.0,   0.0,   0.0,
> +					 0.0,   100.0,   0.0,
> +					 0.0,     0.0, 100.0 };
> +
> +			/* CherryView generates values on 10bits that we
> +			 * produce with an 8 bits per color framebuffer. */
> +			igt_require(!IS_CHERRYVIEW(data->devid));
> +
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 full_rgb, ctm,
> +						 fb_format->format));
> +		}
>   
> -	igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
> -		color_t all_black[] = {
> -			{ 0.0, 0.0, 0.0 },
> -			{ 0.0, 0.0, 0.0 },
> -			{ 0.0, 0.0, 0.0 }
> -		};
> -		double ctm[] = { -1.0,  0.0,  0.0,
> -				 0.0, -1.0,  0.0,
> -				 0.0,  0.0, -1.0 };
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 all_black, ctm));
> -	}
> +		igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t all_black[] = {
> +				{ 0.0, 0.0, 0.0 },
> +				{ 0.0, 0.0, 0.0 },
> +				{ 0.0, 0.0, 0.0 }
> +			};
> +			double ctm[] = { -1.0,  0.0,  0.0,
> +					 0.0, -1.0,  0.0,
> +					 0.0,  0.0, -1.0 };
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 all_black, ctm,
> +						 fb_format->format));
> +		}
>   
>   #if 0
> -	igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
> -		test_pipe_limited_range_ctm(data, primary);
> +		igt_subtest_f("pipe-%s-ctm-limited-range%s",
> +			      kmstest_pipe_name(p), fb_format->name)
> +			test_pipe_limited_range_ctm(data, primary,
> +						    fb_format->format);
>   #endif
>   
> -	igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
> -		test_pipe_degamma(data, primary);
> +		igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p),
> +			      fb_format->name)
> +			test_pipe_degamma(data, primary, fb_format->format);
>   
> -	igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
> -		test_pipe_gamma(data, primary);
> +		igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p),
> +			      fb_format->name)
> +			test_pipe_gamma(data, primary, fb_format->format);
>   
> -	igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
> -		test_pipe_legacy_gamma(data, primary);
> +		igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p),
> +			      fb_format->name)
> +			test_pipe_legacy_gamma(data, primary,
> +					       fb_format->format);
>   
> +	} // End of fb_formats iterator
> +
> +	data->color_depth = 8;

Might want a comment here explaining why this line was added.

Rest is Acked-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>

>   	igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
>   		test_pipe_legacy_gamma_reset(data, primary);
>   
> 

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li
  2019-12-11 20:54 ` Kazlauskas, Nicholas
@ 2019-12-11 21:15 ` Patchwork
  2019-12-12  8:12 ` [igt-dev] ✗ GitLab.Pipeline: " Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2019-12-11 21:15 UTC (permalink / raw)
  To: sunpeng.li; +Cc: igt-dev

== Series Details ==

Series: tests/kms_color: Add 10bpc frame buffer parameterization to subtests
URL   : https://patchwork.freedesktop.org/series/70782/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7543 -> IGTPW_3850
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_3850 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_3850, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_3850:

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live_hangcheck:
    - fi-hsw-4770r:       NOTRUN -> [INCOMPLETE][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-hsw-4770r/igt@i915_selftest@live_hangcheck.html

  
Known issues
------------

  Here are the changes found in IGTPW_3850 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live_blt:
    - fi-byt-j1900:       [PASS][2] -> [DMESG-FAIL][3] ([i915#725])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-byt-j1900/igt@i915_selftest@live_blt.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-byt-j1900/igt@i915_selftest@live_blt.html

  * igt@kms_busy@basic-flip-pipe-a:
    - fi-icl-u2:          [PASS][4] -> [TIMEOUT][5] ([i915#449])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-icl-u2/igt@kms_busy@basic-flip-pipe-a.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-icl-u2/igt@kms_busy@basic-flip-pipe-a.html

  
#### Possible fixes ####

  * igt@gem_exec_gttfill@basic:
    - {fi-tgl-u}:         [INCOMPLETE][6] ([fdo#111593]) -> [PASS][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-tgl-u/igt@gem_exec_gttfill@basic.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-tgl-u/igt@gem_exec_gttfill@basic.html

  * igt@i915_pm_rpm@module-reload:
    - fi-skl-6770hq:      [FAIL][8] ([i915#178]) -> [PASS][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live_requests:
    - fi-ivb-3770:        [INCOMPLETE][10] ([i915#773]) -> [PASS][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-ivb-3770/igt@i915_selftest@live_requests.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-ivb-3770/igt@i915_selftest@live_requests.html
    - fi-hsw-4770:        [INCOMPLETE][12] ([i915#773]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-hsw-4770/igt@i915_selftest@live_requests.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-hsw-4770/igt@i915_selftest@live_requests.html

  * igt@kms_busy@basic-flip-pipe-a:
    - fi-kbl-soraka:      [DMESG-WARN][14] ([i915#95]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-kbl-soraka/igt@kms_busy@basic-flip-pipe-a.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-kbl-soraka/igt@kms_busy@basic-flip-pipe-a.html

  
#### Warnings ####

  * igt@kms_busy@basic-flip-pipe-a:
    - fi-kbl-x1275:       [DMESG-WARN][16] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][17] ([i915#62] / [i915#92]) +4 similar issues
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-kbl-x1275/igt@kms_busy@basic-flip-pipe-a.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-kbl-x1275/igt@kms_busy@basic-flip-pipe-a.html

  * igt@kms_busy@basic-flip-pipe-b:
    - fi-kbl-x1275:       [DMESG-WARN][18] ([i915#62] / [i915#92]) -> [DMESG-WARN][19] ([i915#62] / [i915#92] / [i915#95]) +5 similar issues
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-kbl-x1275/igt@kms_busy@basic-flip-pipe-b.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-kbl-x1275/igt@kms_busy@basic-flip-pipe-b.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#111593]: https://bugs.freedesktop.org/show_bug.cgi?id=111593
  [i915#178]: https://gitlab.freedesktop.org/drm/intel/issues/178
  [i915#449]: https://gitlab.freedesktop.org/drm/intel/issues/449
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#773]: https://gitlab.freedesktop.org/drm/intel/issues/773
  [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (51 -> 46)
------------------------------

  Additional (3): fi-hsw-4770r fi-tgl-guc fi-tgl-y 
  Missing    (8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-skl-lmem fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5345 -> IGTPW_3850

  CI-20190529: 20190529
  CI_DRM_7543: 91752f80df9b582561be6bbac12ef780b12f606c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_3850: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/index.html
  IGT_5345: 9e0c82b6d70065db894ececf2be8de372e983cf0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@kms_color@pipe-a-10bpc-ctm-0-5
+igt@kms_color@pipe-a-10bpc-ctm-0-25
+igt@kms_color@pipe-a-10bpc-ctm-0-75
+igt@kms_color@pipe-a-10bpc-ctm-blue-to-red
+igt@kms_color@pipe-a-10bpc-ctm-green-to-red
+igt@kms_color@pipe-a-10bpc-ctm-max
+igt@kms_color@pipe-a-10bpc-ctm-negative
+igt@kms_color@pipe-a-10bpc-ctm-red-to-blue
+igt@kms_color@pipe-a-10bpc-degamma
+igt@kms_color@pipe-a-10bpc-gamma
+igt@kms_color@pipe-a-10bpc-legacy-gamma
+igt@kms_color@pipe-b-10bpc-ctm-0-5
+igt@kms_color@pipe-b-10bpc-ctm-0-25
+igt@kms_color@pipe-b-10bpc-ctm-0-75
+igt@kms_color@pipe-b-10bpc-ctm-blue-to-red
+igt@kms_color@pipe-b-10bpc-ctm-green-to-red
+igt@kms_color@pipe-b-10bpc-ctm-max
+igt@kms_color@pipe-b-10bpc-ctm-negative
+igt@kms_color@pipe-b-10bpc-ctm-red-to-blue
+igt@kms_color@pipe-b-10bpc-degamma
+igt@kms_color@pipe-b-10bpc-gamma
+igt@kms_color@pipe-b-10bpc-legacy-gamma
+igt@kms_color@pipe-c-10bpc-ctm-0-5
+igt@kms_color@pipe-c-10bpc-ctm-0-25
+igt@kms_color@pipe-c-10bpc-ctm-0-75
+igt@kms_color@pipe-c-10bpc-ctm-blue-to-red
+igt@kms_color@pipe-c-10bpc-ctm-green-to-red
+igt@kms_color@pipe-c-10bpc-ctm-max
+igt@kms_color@pipe-c-10bpc-ctm-negative
+igt@kms_color@pipe-c-10bpc-ctm-red-to-blue
+igt@kms_color@pipe-c-10bpc-degamma
+igt@kms_color@pipe-c-10bpc-gamma
+igt@kms_color@pipe-c-10bpc-legacy-gamma
+igt@kms_color@pipe-d-10bpc-ctm-0-5
+igt@kms_color@pipe-d-10bpc-ctm-0-25
+igt@kms_color@pipe-d-10bpc-ctm-0-75
+igt@kms_color@pipe-d-10bpc-ctm-blue-to-red
+igt@kms_color@pipe-d-10bpc-ctm-green-to-red
+igt@kms_color@pipe-d-10bpc-ctm-max
+igt@kms_color@pipe-d-10bpc-ctm-negative
+igt@kms_color@pipe-d-10bpc-ctm-red-to-blue
+igt@kms_color@pipe-d-10bpc-degamma
+igt@kms_color@pipe-d-10bpc-gamma
+igt@kms_color@pipe-d-10bpc-legacy-gamma
+igt@kms_color@pipe-e-10bpc-ctm-0-5
+igt@kms_color@pipe-e-10bpc-ctm-0-25
+igt@kms_color@pipe-e-10bpc-ctm-0-75
+igt@kms_color@pipe-e-10bpc-ctm-blue-to-red
+igt@kms_color@pipe-e-10bpc-ctm-green-to-red
+igt@kms_color@pipe-e-10bpc-ctm-max
+igt@kms_color@pipe-e-10bpc-ctm-negative
+igt@kms_color@pipe-e-10bpc-ctm-red-to-blue
+igt@kms_color@pipe-e-10bpc-degamma
+igt@kms_color@pipe-e-10bpc-gamma
+igt@kms_color@pipe-e-10bpc-legacy-gamma
+igt@kms_color@pipe-f-10bpc-ctm-0-5
+igt@kms_color@pipe-f-10bpc-ctm-0-25
+igt@kms_color@pipe-f-10bpc-ctm-0-75
+igt@kms_color@pipe-f-10bpc-ctm-blue-to-red
+igt@kms_color@pipe-f-10bpc-ctm-green-to-red
+igt@kms_color@pipe-f-10bpc-ctm-max
+igt@kms_color@pipe-f-10bpc-ctm-negative
+igt@kms_color@pipe-f-10bpc-ctm-red-to-blue
+igt@kms_color@pipe-f-10bpc-degamma
+igt@kms_color@pipe-f-10bpc-gamma
+igt@kms_color@pipe-f-10bpc-legacy-gamma

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [igt-dev] ✗ GitLab.Pipeline: failure for tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li
  2019-12-11 20:54 ` Kazlauskas, Nicholas
  2019-12-11 21:15 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
@ 2019-12-12  8:12 ` Patchwork
  2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
  2020-01-08 14:44 ` Leo
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2019-12-12  8:12 UTC (permalink / raw)
  To: sunpeng.li; +Cc: igt-dev

== Series Details ==

Series: tests/kms_color: Add 10bpc frame buffer parameterization to subtests
URL   : https://patchwork.freedesktop.org/series/70782/
State : failure

== Summary ==

ERROR! This series introduces new undocumented tests:

kms_color@pipe-A-10bpc-ctm-0-25
kms_color@pipe-A-10bpc-ctm-0-5
kms_color@pipe-A-10bpc-ctm-0-75
kms_color@pipe-A-10bpc-ctm-blue-to-red
kms_color@pipe-A-10bpc-ctm-green-to-red
kms_color@pipe-A-10bpc-ctm-max
kms_color@pipe-A-10bpc-ctm-negative
kms_color@pipe-A-10bpc-ctm-red-to-blue
kms_color@pipe-A-10bpc-degamma
kms_color@pipe-A-10bpc-gamma
kms_color@pipe-A-10bpc-legacy-gamma
kms_color@pipe-B-10bpc-ctm-0-25
kms_color@pipe-B-10bpc-ctm-0-5
kms_color@pipe-B-10bpc-ctm-0-75
kms_color@pipe-B-10bpc-ctm-blue-to-red
kms_color@pipe-B-10bpc-ctm-green-to-red
kms_color@pipe-B-10bpc-ctm-max
kms_color@pipe-B-10bpc-ctm-negative
kms_color@pipe-B-10bpc-ctm-red-to-blue
kms_color@pipe-B-10bpc-degamma
kms_color@pipe-B-10bpc-gamma
kms_color@pipe-B-10bpc-legacy-gamma
kms_color@pipe-C-10bpc-ctm-0-25
kms_color@pipe-C-10bpc-ctm-0-5
kms_color@pipe-C-10bpc-ctm-0-75
kms_color@pipe-C-10bpc-ctm-blue-to-red
kms_color@pipe-C-10bpc-ctm-green-to-red
kms_color@pipe-C-10bpc-ctm-max
kms_color@pipe-C-10bpc-ctm-negative
kms_color@pipe-C-10bpc-ctm-red-to-blue
kms_color@pipe-C-10bpc-degamma
kms_color@pipe-C-10bpc-gamma
kms_color@pipe-C-10bpc-legacy-gamma
kms_color@pipe-D-10bpc-ctm-0-25
kms_color@pipe-D-10bpc-ctm-0-5
kms_color@pipe-D-10bpc-ctm-0-75
kms_color@pipe-D-10bpc-ctm-blue-to-red
kms_color@pipe-D-10bpc-ctm-green-to-red
kms_color@pipe-D-10bpc-ctm-max
kms_color@pipe-D-10bpc-ctm-negative
kms_color@pipe-D-10bpc-ctm-red-to-blue
kms_color@pipe-D-10bpc-degamma
kms_color@pipe-D-10bpc-gamma
kms_color@pipe-D-10bpc-legacy-gamma
kms_color@pipe-E-10bpc-ctm-0-25
kms_color@pipe-E-10bpc-ctm-0-5
kms_color@pipe-E-10bpc-ctm-0-75
kms_color@pipe-E-10bpc-ctm-blue-to-red
kms_color@pipe-E-10bpc-ctm-green-to-red
kms_color@pipe-E-10bpc-ctm-max
kms_color@pipe-E-10bpc-ctm-negative
kms_color@pipe-E-10bpc-ctm-red-to-blue
kms_color@pipe-E-10bpc-degamma
kms_color@pipe-E-10bpc-gamma
kms_color@pipe-E-10bpc-legacy-gamma
kms_color@pipe-F-10bpc-ctm-0-25
kms_color@pipe-F-10bpc-ctm-0-5
kms_color@pipe-F-10bpc-ctm-0-75
kms_color@pipe-F-10bpc-ctm-blue-to-red
kms_color@pipe-F-10bpc-ctm-green-to-red
kms_color@pipe-F-10bpc-ctm-max
kms_color@pipe-F-10bpc-ctm-negative
kms_color@pipe-F-10bpc-ctm-red-to-blue
kms_color@pipe-F-10bpc-degamma
kms_color@pipe-F-10bpc-gamma
kms_color@pipe-F-10bpc-legacy-gamma

Can you document them as per the requirement in the [CONTRIBUTING.md]?

[Documentation] has more details on how to do this.

Here are few examples:
https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/0316695d03aa46108296b27f3982ec93200c7a6e
https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/443cc658e1e6b492ee17bf4f4d891029eb7a205d

Thanks in advance!

[CONTRIBUTING.md]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/blob/master/CONTRIBUTING.md#L19
[Documentation]: https://drm.pages.freedesktop.org/igt-gpu-tools/igt-gpu-tools-Core.html#igt-describe

Other than that, pipeline status: SUCCESS.

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/pipelines/87844 for the overview.

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/pipelines/87844
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li
                   ` (2 preceding siblings ...)
  2019-12-12  8:12 ` [igt-dev] ✗ GitLab.Pipeline: " Patchwork
@ 2019-12-12 15:03 ` Ville Syrjälä
  2019-12-12 20:53   ` Leo
  2020-01-02 22:59   ` Harry Wentland
  2020-01-08 14:44 ` Leo
  4 siblings, 2 replies; 11+ messages in thread
From: Ville Syrjälä @ 2019-12-12 15:03 UTC (permalink / raw)
  To: sunpeng.li; +Cc: igt-dev

On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote:
> From: Leo Li <sunpeng.li@amd.com>
> 
> We'd like to test the hardware pipe's color management with 10bit
> surfaces.

Why exactly? The pipe color management stuff doesn't care what
pixel format the plane used.

> This change parameterizes the hardcoded formats within each
> test, and ennumerates the additional subtests within a for loop. To
> avoid renaming existing tests, the 10bpc tests will have '-10bpc'
> inserted after the pipe name, while the 8bpc test names remain
> unchanged.
> 
> Signed-off-by: Leo Li <sunpeng.li@amd.com>
> ---
>  tests/kms_color.c | 353 ++++++++++++++++++++++++++--------------------
>  1 file changed, 198 insertions(+), 155 deletions(-)
> 
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index b4b578a7..3c76a0d2 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -52,6 +52,12 @@ typedef struct {
>  	double coeffs[];
>  } gamma_lut_t;
>  
> +typedef struct {
> +	uint32_t format;
> +	int bpc;
> +	char name[16];
> +} fb_format_t;
> +
>  static void paint_gradient_rectangles(data_t *data,
>  				      drmModeModeInfo *mode,
>  				      color_t *colors,
> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
>   * rectangles with linear degamma LUT.
>   */
>  static void test_pipe_degamma(data_t *data,
> -			      igt_plane_t *primary)
> +			      igt_plane_t *primary,
> +			      uint32_t fb_format)
>  {
>  	igt_output_t *output;
>  	gamma_lut_t *degamma_linear, *degamma_full;
> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data,
>  		fb_id = igt_create_fb(data->drm_fd,
>  				      mode->hdisplay,
>  				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>  				      &fb);
>  		igt_assert(fb_id);
> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data,
>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>  					      mode->hdisplay,
>  					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>  					      &fb_modeset);
>  		igt_assert(fb_modeset_id);
> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data,
>   * LUT and verify we have the same CRC as drawing solid color rectangles.
>   */
>  static void test_pipe_gamma(data_t *data,
> -			    igt_plane_t *primary)
> +			    igt_plane_t *primary,
> +			    uint32_t fb_format)
>  {
>  	igt_output_t *output;
>  	gamma_lut_t *gamma_full;
> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data,
>  		fb_id = igt_create_fb(data->drm_fd,
>  				      mode->hdisplay,
>  				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>  				      &fb);
>  		igt_assert(fb_id);
> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data,
>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>  					      mode->hdisplay,
>  					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>  					      &fb_modeset);
>  		igt_assert(fb_modeset_id);
> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data,
>   * with linear legacy gamma LUT.
>   */
>  static void test_pipe_legacy_gamma(data_t *data,
> -				   igt_plane_t *primary)
> +				   igt_plane_t *primary,
> +				   uint32_t fb_format)
>  {
>  	igt_output_t *output;
>  	color_t red_green_blue[] = {
> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>  		fb_id = igt_create_fb(data->drm_fd,
>  				      mode->hdisplay,
>  				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>  				      &fb);
>  		igt_assert(fb_id);
> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>  					      mode->hdisplay,
>  					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>  					      &fb_modeset);
>  		igt_assert(fb_modeset_id);
> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data,
>  			  igt_plane_t *primary,
>  			  color_t *before,
>  			  color_t *after,
> -			  double *ctm_matrix)
> +			  double *ctm_matrix,
> +			  uint32_t fb_format)
>  {
>  	const double ctm_identity[] = {
>  		1.0, 0.0, 0.0,
> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data,
>  		fb_id = igt_create_fb(data->drm_fd,
>  				      mode->hdisplay,
>  				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>  				      &fb);
>  		igt_assert(fb_id);
> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data,
>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>  					      mode->hdisplay,
>  					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>  					      &fb_modeset);
>  		igt_assert(fb_modeset_id);
> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data,
>   */
>  #if 0
>  static void test_pipe_limited_range_ctm(data_t *data,
> -					igt_plane_t *primary)
> +					igt_plane_t *primary,
> +					uint32_t fb_format)
>  {
>  	double limited_result = 235.0 / 255.0;
>  	color_t red_green_blue_limited[] = {
> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>  		fb_id = igt_create_fb(data->drm_fd,
>  				      mode->hdisplay,
>  				      mode->vdisplay,
> -				      DRM_FORMAT_XRGB8888,
> +				      fb_format,
>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>  				      &fb);
>  		igt_assert(fb_id);
> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>  					      mode->hdisplay,
>  					      mode->vdisplay,
> -					      DRM_FORMAT_XRGB8888,
> +					      fb_format,
>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>  					      &fb_modeset);
>  		igt_assert(fb_modeset_id);
> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>  	igt_pipe_t *pipe;
>  	igt_plane_t *primary;
>  	double delta;
> -	int i;
> +	int i, j;
>  	color_t red_green_blue[] = {
>  		{ 1.0, 0.0, 0.0 },
>  		{ 0.0, 1.0, 0.0 },
>  		{ 0.0, 0.0, 1.0 }
>  	};
>  
> +	fb_format_t fb_formats[] = {
> +		{ DRM_FORMAT_XRGB8888, 8 , ""},
> +		{ DRM_FORMAT_XRGB2101010, 10 , "-10bpc"}
> +	};
> +
>  	igt_fixture {
>  		igt_require_pipe_crc(data->drm_fd);
>  
> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>  		igt_display_require_output_on_pipe(&data->display, p);
>  	}
>  
> -	/* We assume an 8bits depth per color for degamma/gamma LUTs
> -	 * for CRC checks with framebuffer references. */
> -	data->color_depth = 8;
> -	delta = 1.0 / (1 << data->color_depth);
> -
> -	igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
> -		color_t blue_green_blue[] = {
> -			{ 0.0, 0.0, 1.0 },
> -			{ 0.0, 1.0, 0.0 },
> -			{ 0.0, 0.0, 1.0 }
> -		};
> -		double ctm[] = { 0.0, 0.0, 0.0,
> -				0.0, 1.0, 0.0,
> -				1.0, 0.0, 1.0 };
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 blue_green_blue, ctm));
> -	}
> +	/* Iterate over fb formats to test */
> +	for (j = 0; j < ARRAY_SIZE(fb_formats); j++) {
> +
> +		fb_format_t *fb_format = &fb_formats[j];
> +		data->color_depth = fb_format->bpc;
> +		delta = 1.0 / (1 << data->color_depth);
> +
> +		igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t blue_green_blue[] = {
> +				{ 0.0, 0.0, 1.0 },
> +				{ 0.0, 1.0, 0.0 },
> +				{ 0.0, 0.0, 1.0 }
> +			};
> +			double ctm[] = { 0.0, 0.0, 0.0,
> +					0.0, 1.0, 0.0,
> +					1.0, 0.0, 1.0 };
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 blue_green_blue, ctm,
> +						 fb_format->format));
> +		}
>  
> -	igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
> -		color_t red_red_blue[] = {
> -			{ 1.0, 0.0, 0.0 },
> -			{ 1.0, 0.0, 0.0 },
> -			{ 0.0, 0.0, 1.0 }
> -		};
> -		double ctm[] = { 1.0, 1.0, 0.0,
> -				0.0, 0.0, 0.0,
> -				0.0, 0.0, 1.0 };
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 red_red_blue, ctm));
> -	}
> +		igt_subtest_f("pipe-%s%s-ctm-green-to-red",
> +			      kmstest_pipe_name(p), fb_format->name) {
> +			color_t red_red_blue[] = {
> +				{ 1.0, 0.0, 0.0 },
> +				{ 1.0, 0.0, 0.0 },
> +				{ 0.0, 0.0, 1.0 }
> +			};
> +			double ctm[] = { 1.0, 1.0, 0.0,
> +					0.0, 0.0, 0.0,
> +					0.0, 0.0, 1.0 };
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 red_red_blue, ctm,
> +						 fb_format->format));
> +		}
>  
> -	igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
> -		color_t red_green_red[] = {
> -			{ 1.0, 0.0, 0.0 },
> -			{ 0.0, 1.0, 0.0 },
> -			{ 1.0, 0.0, 0.0 }
> -		};
> -		double ctm[] = { 1.0, 0.0, 1.0,
> -				0.0, 1.0, 0.0,
> -				0.0, 0.0, 0.0 };
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 red_green_red, ctm));
> -	}
> +		igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t red_green_red[] = {
> +				{ 1.0, 0.0, 0.0 },
> +				{ 0.0, 1.0, 0.0 },
> +				{ 1.0, 0.0, 0.0 }
> +			};
> +			double ctm[] = { 1.0, 0.0, 1.0,
> +					0.0, 1.0, 0.0,
> +					0.0, 0.0, 0.0 };
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 red_green_red, ctm,
> +						 fb_format->format));
> +		}
>  
> -	/* We tests a few values around the expected result because
> -	 * 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)) {
> -		color_t expected_colors[] = {
> -			{ 0.0, }, { 0.0, }, { 0.0, }
> -		};
> -		double ctm[] = { 0.25, 0.0,  0.0,
> -				 0.0,  0.25, 0.0,
> -				 0.0,  0.0,  0.25 };
> -		bool success = false;
> -
> -		for (i = 0; i < 5; i++) {
> -			expected_colors[0].r =
> -				expected_colors[1].g =
> -				expected_colors[2].b =
> -				0.25 + delta * (i - 2);
> -			success |= test_pipe_ctm(data, primary,
> -						 red_green_blue,
> -						 expected_colors, ctm);
> +		/* We tests a few values around the expected result because
> +		 * 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%s-ctm-0-25", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t expected_colors[] = {
> +				{ 0.0, }, { 0.0, }, { 0.0, }
> +			};
> +			double ctm[] = { 0.25, 0.0,  0.0,
> +					 0.0,  0.25, 0.0,
> +					 0.0,  0.0,  0.25 };
> +			bool success = false;
> +
> +			for (i = 0; i < 5; i++) {
> +				expected_colors[0].r =
> +					expected_colors[1].g =
> +					expected_colors[2].b =
> +					0.25 + delta * (i - 2);
> +				success |= test_pipe_ctm(data, primary,
> +							 red_green_blue,
> +							 expected_colors, ctm,
> +							 fb_format->format);
> +			}
> +			igt_assert(success);
>  		}
> -		igt_assert(success);
> -	}
>  
> -	igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
> -		color_t expected_colors[] = {
> -			{ 0.0, }, { 0.0, }, { 0.0, }
> -		};
> -		double ctm[] = { 0.5, 0.0, 0.0,
> -				 0.0, 0.5, 0.0,
> -				 0.0, 0.0, 0.5 };
> -		bool success = false;
> -
> -		for (i = 0; i < 5; i++) {
> -			expected_colors[0].r =
> -				expected_colors[1].g =
> -				expected_colors[2].b =
> -				0.5 + delta * (i - 2);
> -			success |= test_pipe_ctm(data, primary,
> -						 red_green_blue,
> -						 expected_colors, ctm);
> +		igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t expected_colors[] = {
> +				{ 0.0, }, { 0.0, }, { 0.0, }
> +			};
> +			double ctm[] = { 0.5, 0.0, 0.0,
> +					 0.0, 0.5, 0.0,
> +					 0.0, 0.0, 0.5 };
> +			bool success = false;
> +
> +			for (i = 0; i < 5; i++) {
> +				expected_colors[0].r =
> +					expected_colors[1].g =
> +					expected_colors[2].b =
> +					0.5 + delta * (i - 2);
> +				success |= test_pipe_ctm(data, primary,
> +							 red_green_blue,
> +							 expected_colors, ctm,
> +							 fb_format->format);
> +			}
> +			igt_assert(success);
>  		}
> -		igt_assert(success);
> -	}
>  
> -	igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
> -		color_t expected_colors[] = {
> -			{ 0.0, }, { 0.0, }, { 0.0, }
> -		};
> -		double ctm[] = { 0.75, 0.0,  0.0,
> -				 0.0,  0.75, 0.0,
> -				 0.0,  0.0,  0.75 };
> -		bool success = false;
> -
> -		for (i = 0; i < 7; i++) {
> -			expected_colors[0].r =
> -				expected_colors[1].g =
> -				expected_colors[2].b =
> -				0.75 + delta * (i - 3);
> -			success |= test_pipe_ctm(data, primary,
> -						 red_green_blue,
> -						 expected_colors, ctm);
> +		igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t expected_colors[] = {
> +				{ 0.0, }, { 0.0, }, { 0.0, }
> +			};
> +			double ctm[] = { 0.75, 0.0,  0.0,
> +					 0.0,  0.75, 0.0,
> +					 0.0,  0.0,  0.75 };
> +			bool success = false;
> +
> +			for (i = 0; i < 7; i++) {
> +				expected_colors[0].r =
> +					expected_colors[1].g =
> +					expected_colors[2].b =
> +					0.75 + delta * (i - 3);
> +				success |= test_pipe_ctm(data, primary,
> +							 red_green_blue,
> +							 expected_colors, ctm,
> +							 fb_format->format);
> +			}
> +			igt_assert(success);
>  		}
> -		igt_assert(success);
> -	}
>  
> -	igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
> -		color_t full_rgb[] = {
> -			{ 1.0, 0.0, 0.0 },
> -			{ 0.0, 1.0, 0.0 },
> -			{ 0.0, 0.0, 1.0 }
> -		};
> -		double ctm[] = { 100.0,   0.0,   0.0,
> -				 0.0,   100.0,   0.0,
> -				 0.0,     0.0, 100.0 };
> -
> -		/* CherryView generates values on 10bits that we
> -		 * produce with an 8 bits per color framebuffer. */
> -		igt_require(!IS_CHERRYVIEW(data->devid));
> -
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 full_rgb, ctm));
> -	}
> +		igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t full_rgb[] = {
> +				{ 1.0, 0.0, 0.0 },
> +				{ 0.0, 1.0, 0.0 },
> +				{ 0.0, 0.0, 1.0 }
> +			};
> +			double ctm[] = { 100.0,   0.0,   0.0,
> +					 0.0,   100.0,   0.0,
> +					 0.0,     0.0, 100.0 };
> +
> +			/* CherryView generates values on 10bits that we
> +			 * produce with an 8 bits per color framebuffer. */
> +			igt_require(!IS_CHERRYVIEW(data->devid));
> +
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 full_rgb, ctm,
> +						 fb_format->format));
> +		}
>  
> -	igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
> -		color_t all_black[] = {
> -			{ 0.0, 0.0, 0.0 },
> -			{ 0.0, 0.0, 0.0 },
> -			{ 0.0, 0.0, 0.0 }
> -		};
> -		double ctm[] = { -1.0,  0.0,  0.0,
> -				 0.0, -1.0,  0.0,
> -				 0.0,  0.0, -1.0 };
> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> -					 all_black, ctm));
> -	}
> +		igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p),
> +			      fb_format->name) {
> +			color_t all_black[] = {
> +				{ 0.0, 0.0, 0.0 },
> +				{ 0.0, 0.0, 0.0 },
> +				{ 0.0, 0.0, 0.0 }
> +			};
> +			double ctm[] = { -1.0,  0.0,  0.0,
> +					 0.0, -1.0,  0.0,
> +					 0.0,  0.0, -1.0 };
> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> +						 all_black, ctm,
> +						 fb_format->format));
> +		}
>  
>  #if 0
> -	igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
> -		test_pipe_limited_range_ctm(data, primary);
> +		igt_subtest_f("pipe-%s-ctm-limited-range%s",
> +			      kmstest_pipe_name(p), fb_format->name)
> +			test_pipe_limited_range_ctm(data, primary,
> +						    fb_format->format);
>  #endif
>  
> -	igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
> -		test_pipe_degamma(data, primary);
> +		igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p),
> +			      fb_format->name)
> +			test_pipe_degamma(data, primary, fb_format->format);
>  
> -	igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
> -		test_pipe_gamma(data, primary);
> +		igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p),
> +			      fb_format->name)
> +			test_pipe_gamma(data, primary, fb_format->format);
>  
> -	igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
> -		test_pipe_legacy_gamma(data, primary);
> +		igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p),
> +			      fb_format->name)
> +			test_pipe_legacy_gamma(data, primary,
> +					       fb_format->format);
>  
> +	} // End of fb_formats iterator
> +
> +	data->color_depth = 8;
>  	igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
>  		test_pipe_legacy_gamma_reset(data, primary);
>  
> -- 
> 2.24.0
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev

-- 
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
@ 2019-12-12 20:53   ` Leo
  2019-12-12 21:13     ` Ville Syrjälä
  2020-01-02 22:59   ` Harry Wentland
  1 sibling, 1 reply; 11+ messages in thread
From: Leo @ 2019-12-12 20:53 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev



On 2019-12-12 10:03 a.m., Ville Syrjälä wrote:
> On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote:
>> From: Leo Li <sunpeng.li@amd.com>
>>
>> We'd like to test the hardware pipe's color management with 10bit
>> surfaces.
> 
> Why exactly? The pipe color management stuff doesn't care what
> pixel format the plane used.
> 

We expose 10bpc support to usermode with color management, so it'd be
good to cover it with a test.

With amdpgu, color management indeed doesn't care about surface format,
since it's all converted to fixed point in hardware beforehand. But I
think it's best to not assume hardware behavior, and test the actual
use case instead.

Leo

>> This change parameterizes the hardcoded formats within each
>> test, and ennumerates the additional subtests within a for loop. To
>> avoid renaming existing tests, the 10bpc tests will have '-10bpc'
>> inserted after the pipe name, while the 8bpc test names remain
>> unchanged.
>>
>> Signed-off-by: Leo Li <sunpeng.li@amd.com>
>> ---
>>  tests/kms_color.c | 353 ++++++++++++++++++++++++++--------------------
>>  1 file changed, 198 insertions(+), 155 deletions(-)
>>
>> diff --git a/tests/kms_color.c b/tests/kms_color.c
>> index b4b578a7..3c76a0d2 100644
>> --- a/tests/kms_color.c
>> +++ b/tests/kms_color.c
>> @@ -52,6 +52,12 @@ typedef struct {
>>  	double coeffs[];
>>  } gamma_lut_t;
>>  
>> +typedef struct {
>> +	uint32_t format;
>> +	int bpc;
>> +	char name[16];
>> +} fb_format_t;
>> +
>>  static void paint_gradient_rectangles(data_t *data,
>>  				      drmModeModeInfo *mode,
>>  				      color_t *colors,
>> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
>>   * rectangles with linear degamma LUT.
>>   */
>>  static void test_pipe_degamma(data_t *data,
>> -			      igt_plane_t *primary)
>> +			      igt_plane_t *primary,
>> +			      uint32_t fb_format)
>>  {
>>  	igt_output_t *output;
>>  	gamma_lut_t *degamma_linear, *degamma_full;
>> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data,
>>   * LUT and verify we have the same CRC as drawing solid color rectangles.
>>   */
>>  static void test_pipe_gamma(data_t *data,
>> -			    igt_plane_t *primary)
>> +			    igt_plane_t *primary,
>> +			    uint32_t fb_format)
>>  {
>>  	igt_output_t *output;
>>  	gamma_lut_t *gamma_full;
>> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data,
>>   * with linear legacy gamma LUT.
>>   */
>>  static void test_pipe_legacy_gamma(data_t *data,
>> -				   igt_plane_t *primary)
>> +				   igt_plane_t *primary,
>> +				   uint32_t fb_format)
>>  {
>>  	igt_output_t *output;
>>  	color_t red_green_blue[] = {
>> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data,
>>  			  igt_plane_t *primary,
>>  			  color_t *before,
>>  			  color_t *after,
>> -			  double *ctm_matrix)
>> +			  double *ctm_matrix,
>> +			  uint32_t fb_format)
>>  {
>>  	const double ctm_identity[] = {
>>  		1.0, 0.0, 0.0,
>> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data,
>>   */
>>  #if 0
>>  static void test_pipe_limited_range_ctm(data_t *data,
>> -					igt_plane_t *primary)
>> +					igt_plane_t *primary,
>> +					uint32_t fb_format)
>>  {
>>  	double limited_result = 235.0 / 255.0;
>>  	color_t red_green_blue_limited[] = {
>> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>>  	igt_pipe_t *pipe;
>>  	igt_plane_t *primary;
>>  	double delta;
>> -	int i;
>> +	int i, j;
>>  	color_t red_green_blue[] = {
>>  		{ 1.0, 0.0, 0.0 },
>>  		{ 0.0, 1.0, 0.0 },
>>  		{ 0.0, 0.0, 1.0 }
>>  	};
>>  
>> +	fb_format_t fb_formats[] = {
>> +		{ DRM_FORMAT_XRGB8888, 8 , ""},
>> +		{ DRM_FORMAT_XRGB2101010, 10 , "-10bpc"}
>> +	};
>> +
>>  	igt_fixture {
>>  		igt_require_pipe_crc(data->drm_fd);
>>  
>> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>>  		igt_display_require_output_on_pipe(&data->display, p);
>>  	}
>>  
>> -	/* We assume an 8bits depth per color for degamma/gamma LUTs
>> -	 * for CRC checks with framebuffer references. */
>> -	data->color_depth = 8;
>> -	delta = 1.0 / (1 << data->color_depth);
>> -
>> -	igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
>> -		color_t blue_green_blue[] = {
>> -			{ 0.0, 0.0, 1.0 },
>> -			{ 0.0, 1.0, 0.0 },
>> -			{ 0.0, 0.0, 1.0 }
>> -		};
>> -		double ctm[] = { 0.0, 0.0, 0.0,
>> -				0.0, 1.0, 0.0,
>> -				1.0, 0.0, 1.0 };
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 blue_green_blue, ctm));
>> -	}
>> +	/* Iterate over fb formats to test */
>> +	for (j = 0; j < ARRAY_SIZE(fb_formats); j++) {
>> +
>> +		fb_format_t *fb_format = &fb_formats[j];
>> +		data->color_depth = fb_format->bpc;
>> +		delta = 1.0 / (1 << data->color_depth);
>> +
>> +		igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t blue_green_blue[] = {
>> +				{ 0.0, 0.0, 1.0 },
>> +				{ 0.0, 1.0, 0.0 },
>> +				{ 0.0, 0.0, 1.0 }
>> +			};
>> +			double ctm[] = { 0.0, 0.0, 0.0,
>> +					0.0, 1.0, 0.0,
>> +					1.0, 0.0, 1.0 };
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 blue_green_blue, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
>> -		color_t red_red_blue[] = {
>> -			{ 1.0, 0.0, 0.0 },
>> -			{ 1.0, 0.0, 0.0 },
>> -			{ 0.0, 0.0, 1.0 }
>> -		};
>> -		double ctm[] = { 1.0, 1.0, 0.0,
>> -				0.0, 0.0, 0.0,
>> -				0.0, 0.0, 1.0 };
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 red_red_blue, ctm));
>> -	}
>> +		igt_subtest_f("pipe-%s%s-ctm-green-to-red",
>> +			      kmstest_pipe_name(p), fb_format->name) {
>> +			color_t red_red_blue[] = {
>> +				{ 1.0, 0.0, 0.0 },
>> +				{ 1.0, 0.0, 0.0 },
>> +				{ 0.0, 0.0, 1.0 }
>> +			};
>> +			double ctm[] = { 1.0, 1.0, 0.0,
>> +					0.0, 0.0, 0.0,
>> +					0.0, 0.0, 1.0 };
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 red_red_blue, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
>> -		color_t red_green_red[] = {
>> -			{ 1.0, 0.0, 0.0 },
>> -			{ 0.0, 1.0, 0.0 },
>> -			{ 1.0, 0.0, 0.0 }
>> -		};
>> -		double ctm[] = { 1.0, 0.0, 1.0,
>> -				0.0, 1.0, 0.0,
>> -				0.0, 0.0, 0.0 };
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 red_green_red, ctm));
>> -	}
>> +		igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t red_green_red[] = {
>> +				{ 1.0, 0.0, 0.0 },
>> +				{ 0.0, 1.0, 0.0 },
>> +				{ 1.0, 0.0, 0.0 }
>> +			};
>> +			double ctm[] = { 1.0, 0.0, 1.0,
>> +					0.0, 1.0, 0.0,
>> +					0.0, 0.0, 0.0 };
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 red_green_red, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>> -	/* We tests a few values around the expected result because
>> -	 * 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)) {
>> -		color_t expected_colors[] = {
>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>> -		};
>> -		double ctm[] = { 0.25, 0.0,  0.0,
>> -				 0.0,  0.25, 0.0,
>> -				 0.0,  0.0,  0.25 };
>> -		bool success = false;
>> -
>> -		for (i = 0; i < 5; i++) {
>> -			expected_colors[0].r =
>> -				expected_colors[1].g =
>> -				expected_colors[2].b =
>> -				0.25 + delta * (i - 2);
>> -			success |= test_pipe_ctm(data, primary,
>> -						 red_green_blue,
>> -						 expected_colors, ctm);
>> +		/* We tests a few values around the expected result because
>> +		 * 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%s-ctm-0-25", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t expected_colors[] = {
>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>> +			};
>> +			double ctm[] = { 0.25, 0.0,  0.0,
>> +					 0.0,  0.25, 0.0,
>> +					 0.0,  0.0,  0.25 };
>> +			bool success = false;
>> +
>> +			for (i = 0; i < 5; i++) {
>> +				expected_colors[0].r =
>> +					expected_colors[1].g =
>> +					expected_colors[2].b =
>> +					0.25 + delta * (i - 2);
>> +				success |= test_pipe_ctm(data, primary,
>> +							 red_green_blue,
>> +							 expected_colors, ctm,
>> +							 fb_format->format);
>> +			}
>> +			igt_assert(success);
>>  		}
>> -		igt_assert(success);
>> -	}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
>> -		color_t expected_colors[] = {
>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>> -		};
>> -		double ctm[] = { 0.5, 0.0, 0.0,
>> -				 0.0, 0.5, 0.0,
>> -				 0.0, 0.0, 0.5 };
>> -		bool success = false;
>> -
>> -		for (i = 0; i < 5; i++) {
>> -			expected_colors[0].r =
>> -				expected_colors[1].g =
>> -				expected_colors[2].b =
>> -				0.5 + delta * (i - 2);
>> -			success |= test_pipe_ctm(data, primary,
>> -						 red_green_blue,
>> -						 expected_colors, ctm);
>> +		igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t expected_colors[] = {
>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>> +			};
>> +			double ctm[] = { 0.5, 0.0, 0.0,
>> +					 0.0, 0.5, 0.0,
>> +					 0.0, 0.0, 0.5 };
>> +			bool success = false;
>> +
>> +			for (i = 0; i < 5; i++) {
>> +				expected_colors[0].r =
>> +					expected_colors[1].g =
>> +					expected_colors[2].b =
>> +					0.5 + delta * (i - 2);
>> +				success |= test_pipe_ctm(data, primary,
>> +							 red_green_blue,
>> +							 expected_colors, ctm,
>> +							 fb_format->format);
>> +			}
>> +			igt_assert(success);
>>  		}
>> -		igt_assert(success);
>> -	}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
>> -		color_t expected_colors[] = {
>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>> -		};
>> -		double ctm[] = { 0.75, 0.0,  0.0,
>> -				 0.0,  0.75, 0.0,
>> -				 0.0,  0.0,  0.75 };
>> -		bool success = false;
>> -
>> -		for (i = 0; i < 7; i++) {
>> -			expected_colors[0].r =
>> -				expected_colors[1].g =
>> -				expected_colors[2].b =
>> -				0.75 + delta * (i - 3);
>> -			success |= test_pipe_ctm(data, primary,
>> -						 red_green_blue,
>> -						 expected_colors, ctm);
>> +		igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t expected_colors[] = {
>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>> +			};
>> +			double ctm[] = { 0.75, 0.0,  0.0,
>> +					 0.0,  0.75, 0.0,
>> +					 0.0,  0.0,  0.75 };
>> +			bool success = false;
>> +
>> +			for (i = 0; i < 7; i++) {
>> +				expected_colors[0].r =
>> +					expected_colors[1].g =
>> +					expected_colors[2].b =
>> +					0.75 + delta * (i - 3);
>> +				success |= test_pipe_ctm(data, primary,
>> +							 red_green_blue,
>> +							 expected_colors, ctm,
>> +							 fb_format->format);
>> +			}
>> +			igt_assert(success);
>>  		}
>> -		igt_assert(success);
>> -	}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
>> -		color_t full_rgb[] = {
>> -			{ 1.0, 0.0, 0.0 },
>> -			{ 0.0, 1.0, 0.0 },
>> -			{ 0.0, 0.0, 1.0 }
>> -		};
>> -		double ctm[] = { 100.0,   0.0,   0.0,
>> -				 0.0,   100.0,   0.0,
>> -				 0.0,     0.0, 100.0 };
>> -
>> -		/* CherryView generates values on 10bits that we
>> -		 * produce with an 8 bits per color framebuffer. */
>> -		igt_require(!IS_CHERRYVIEW(data->devid));
>> -
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 full_rgb, ctm));
>> -	}
>> +		igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t full_rgb[] = {
>> +				{ 1.0, 0.0, 0.0 },
>> +				{ 0.0, 1.0, 0.0 },
>> +				{ 0.0, 0.0, 1.0 }
>> +			};
>> +			double ctm[] = { 100.0,   0.0,   0.0,
>> +					 0.0,   100.0,   0.0,
>> +					 0.0,     0.0, 100.0 };
>> +
>> +			/* CherryView generates values on 10bits that we
>> +			 * produce with an 8 bits per color framebuffer. */
>> +			igt_require(!IS_CHERRYVIEW(data->devid));
>> +
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 full_rgb, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
>> -		color_t all_black[] = {
>> -			{ 0.0, 0.0, 0.0 },
>> -			{ 0.0, 0.0, 0.0 },
>> -			{ 0.0, 0.0, 0.0 }
>> -		};
>> -		double ctm[] = { -1.0,  0.0,  0.0,
>> -				 0.0, -1.0,  0.0,
>> -				 0.0,  0.0, -1.0 };
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 all_black, ctm));
>> -	}
>> +		igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t all_black[] = {
>> +				{ 0.0, 0.0, 0.0 },
>> +				{ 0.0, 0.0, 0.0 },
>> +				{ 0.0, 0.0, 0.0 }
>> +			};
>> +			double ctm[] = { -1.0,  0.0,  0.0,
>> +					 0.0, -1.0,  0.0,
>> +					 0.0,  0.0, -1.0 };
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 all_black, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>>  #if 0
>> -	igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
>> -		test_pipe_limited_range_ctm(data, primary);
>> +		igt_subtest_f("pipe-%s-ctm-limited-range%s",
>> +			      kmstest_pipe_name(p), fb_format->name)
>> +			test_pipe_limited_range_ctm(data, primary,
>> +						    fb_format->format);
>>  #endif
>>  
>> -	igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
>> -		test_pipe_degamma(data, primary);
>> +		igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p),
>> +			      fb_format->name)
>> +			test_pipe_degamma(data, primary, fb_format->format);
>>  
>> -	igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
>> -		test_pipe_gamma(data, primary);
>> +		igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p),
>> +			      fb_format->name)
>> +			test_pipe_gamma(data, primary, fb_format->format);
>>  
>> -	igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
>> -		test_pipe_legacy_gamma(data, primary);
>> +		igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p),
>> +			      fb_format->name)
>> +			test_pipe_legacy_gamma(data, primary,
>> +					       fb_format->format);
>>  
>> +	} // End of fb_formats iterator
>> +
>> +	data->color_depth = 8;
>>  	igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
>>  		test_pipe_legacy_gamma_reset(data, primary);
>>  
>> -- 
>> 2.24.0
>>
>> _______________________________________________
>> igt-dev mailing list
>> igt-dev@lists.freedesktop.org
>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Figt-dev&amp;data=02%7C01%7Csunpeng.li%40amd.com%7C6845b4a0d5234b72e7be08d77f146f66%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637117598052178406&amp;sdata=0UanaNxDYRv0jGZHsgdfj0w%2BEBvejAAHAkXWarL3YXI%3D&amp;reserved=0
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-12 20:53   ` Leo
@ 2019-12-12 21:13     ` Ville Syrjälä
  2019-12-17 14:00       ` Leo
  0 siblings, 1 reply; 11+ messages in thread
From: Ville Syrjälä @ 2019-12-12 21:13 UTC (permalink / raw)
  To: Leo; +Cc: igt-dev

On Thu, Dec 12, 2019 at 03:53:34PM -0500, Leo wrote:
> 
> 
> On 2019-12-12 10:03 a.m., Ville Syrjälä wrote:
> > On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote:
> >> From: Leo Li <sunpeng.li@amd.com>
> >>
> >> We'd like to test the hardware pipe's color management with 10bit
> >> surfaces.
> > 
> > Why exactly? The pipe color management stuff doesn't care what
> > pixel format the plane used.
> > 
> 
> We expose 10bpc support to usermode with color management, so it'd be
> good to cover it with a test.
> 
> With amdpgu, color management indeed doesn't care about surface format,
> since it's all converted to fixed point in hardware beforehand.

Totally missed this came from AMD folks. Good thing I was still
correct with my statement then :)

> But I
> think it's best to not assume hardware behavior, and test the actual
> use case instead.

I think what we would really want is a test that makes sure we can
achieve the desired precision in the output for some fb depth and
gamma configuration (sadly the gamma uapi doesn't let us do that
ATM in a hardware agnostic way). I don't think this test currently
checks anything like that. But maybe I'm misremebering what it
actually does.

-- 
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-12 21:13     ` Ville Syrjälä
@ 2019-12-17 14:00       ` Leo
  0 siblings, 0 replies; 11+ messages in thread
From: Leo @ 2019-12-17 14:00 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev



On 2019-12-12 4:13 p.m., Ville Syrjälä wrote:
> On Thu, Dec 12, 2019 at 03:53:34PM -0500, Leo wrote:
>>
>>
>> On 2019-12-12 10:03 a.m., Ville Syrjälä wrote:
>>> On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote:
>>>> From: Leo Li <sunpeng.li@amd.com>
>>>>
>>>> We'd like to test the hardware pipe's color management with 10bit
>>>> surfaces.
>>>
>>> Why exactly? The pipe color management stuff doesn't care what
>>> pixel format the plane used.
>>>
>>
>> We expose 10bpc support to usermode with color management, so it'd be
>> good to cover it with a test.
>>
>> With amdpgu, color management indeed doesn't care about surface format,
>> since it's all converted to fixed point in hardware beforehand.
> 
> Totally missed this came from AMD folks. Good thing I was still
> correct with my statement then :)
> 
>> But I
>> think it's best to not assume hardware behavior, and test the actual
>> use case instead.
> 
> I think what we would really want is a test that makes sure we can
> achieve the desired precision in the output for some fb depth and
> gamma configuration (sadly the gamma uapi doesn't let us do that
> ATM in a hardware agnostic way). I don't think this test currently
> checks anything like that. But maybe I'm misremebering what it
> actually does.
> 

kms_color does a min and max gamma test where all values are mapped to 0
or 1, so no precision check there... However, it looks like CTM
precision is checked to be within some reasonable threshold, according
to the bpc tested.

I'm not sure if testing LUT precision would make sense as a hw agnostic
test. For AMD hardware at least, the internal representation wasn't designed to
be precise, but to follow human color perception. i.e. precision is lost at
higher color values. So any LUT precision test will have to take vendor-specific
quarks into account. Perhaps this isn't the case for the CTM since the concept
for hw is simpler? At least it works well with i915 and amdgpu FWICT.

Perhaps it's better to have vendor specific tests for LUT precision and
accuracy. I think these tests will at least show that gamma is operational with
10bpc surfaces, which is hw-agnostic enough of a test.

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
  2019-12-12 20:53   ` Leo
@ 2020-01-02 22:59   ` Harry Wentland
  2020-01-02 23:03     ` Harry Wentland
  1 sibling, 1 reply; 11+ messages in thread
From: Harry Wentland @ 2020-01-02 22:59 UTC (permalink / raw)
  To: Ville Syrjälä, sunpeng.li; +Cc: igt-dev

On 2019-12-12 10:03 a.m., Ville Syrjälä wrote:
> On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote:
>> From: Leo Li <sunpeng.li@amd.com>
>>
>> We'd like to test the hardware pipe's color management with 10bit
>> surfaces.
> 
> Why exactly? The pipe color management stuff doesn't care what
> pixel format the plane used.

Not sure how this works for Intel but for us there's a fair amount of
logic between color management and the pixel format.

In general, not sure if IGT should be designed based on assumptions of a
certain KMS driver implementation.

Harry

> 
>> This change parameterizes the hardcoded formats within each
>> test, and ennumerates the additional subtests within a for loop. To
>> avoid renaming existing tests, the 10bpc tests will have '-10bpc'
>> inserted after the pipe name, while the 8bpc test names remain
>> unchanged.
>>
>> Signed-off-by: Leo Li <sunpeng.li@amd.com>
>> ---
>>  tests/kms_color.c | 353 ++++++++++++++++++++++++++--------------------
>>  1 file changed, 198 insertions(+), 155 deletions(-)
>>
>> diff --git a/tests/kms_color.c b/tests/kms_color.c
>> index b4b578a7..3c76a0d2 100644
>> --- a/tests/kms_color.c
>> +++ b/tests/kms_color.c
>> @@ -52,6 +52,12 @@ typedef struct {
>>  	double coeffs[];
>>  } gamma_lut_t;
>>  
>> +typedef struct {
>> +	uint32_t format;
>> +	int bpc;
>> +	char name[16];
>> +} fb_format_t;
>> +
>>  static void paint_gradient_rectangles(data_t *data,
>>  				      drmModeModeInfo *mode,
>>  				      color_t *colors,
>> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
>>   * rectangles with linear degamma LUT.
>>   */
>>  static void test_pipe_degamma(data_t *data,
>> -			      igt_plane_t *primary)
>> +			      igt_plane_t *primary,
>> +			      uint32_t fb_format)
>>  {
>>  	igt_output_t *output;
>>  	gamma_lut_t *degamma_linear, *degamma_full;
>> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data,
>>   * LUT and verify we have the same CRC as drawing solid color rectangles.
>>   */
>>  static void test_pipe_gamma(data_t *data,
>> -			    igt_plane_t *primary)
>> +			    igt_plane_t *primary,
>> +			    uint32_t fb_format)
>>  {
>>  	igt_output_t *output;
>>  	gamma_lut_t *gamma_full;
>> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data,
>>   * with linear legacy gamma LUT.
>>   */
>>  static void test_pipe_legacy_gamma(data_t *data,
>> -				   igt_plane_t *primary)
>> +				   igt_plane_t *primary,
>> +				   uint32_t fb_format)
>>  {
>>  	igt_output_t *output;
>>  	color_t red_green_blue[] = {
>> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data,
>>  			  igt_plane_t *primary,
>>  			  color_t *before,
>>  			  color_t *after,
>> -			  double *ctm_matrix)
>> +			  double *ctm_matrix,
>> +			  uint32_t fb_format)
>>  {
>>  	const double ctm_identity[] = {
>>  		1.0, 0.0, 0.0,
>> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data,
>>   */
>>  #if 0
>>  static void test_pipe_limited_range_ctm(data_t *data,
>> -					igt_plane_t *primary)
>> +					igt_plane_t *primary,
>> +					uint32_t fb_format)
>>  {
>>  	double limited_result = 235.0 / 255.0;
>>  	color_t red_green_blue_limited[] = {
>> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>>  		fb_id = igt_create_fb(data->drm_fd,
>>  				      mode->hdisplay,
>>  				      mode->vdisplay,
>> -				      DRM_FORMAT_XRGB8888,
>> +				      fb_format,
>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>  				      &fb);
>>  		igt_assert(fb_id);
>> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>  					      mode->hdisplay,
>>  					      mode->vdisplay,
>> -					      DRM_FORMAT_XRGB8888,
>> +					      fb_format,
>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>  					      &fb_modeset);
>>  		igt_assert(fb_modeset_id);
>> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>>  	igt_pipe_t *pipe;
>>  	igt_plane_t *primary;
>>  	double delta;
>> -	int i;
>> +	int i, j;
>>  	color_t red_green_blue[] = {
>>  		{ 1.0, 0.0, 0.0 },
>>  		{ 0.0, 1.0, 0.0 },
>>  		{ 0.0, 0.0, 1.0 }
>>  	};
>>  
>> +	fb_format_t fb_formats[] = {
>> +		{ DRM_FORMAT_XRGB8888, 8 , ""},
>> +		{ DRM_FORMAT_XRGB2101010, 10 , "-10bpc"}
>> +	};
>> +
>>  	igt_fixture {
>>  		igt_require_pipe_crc(data->drm_fd);
>>  
>> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>>  		igt_display_require_output_on_pipe(&data->display, p);
>>  	}
>>  
>> -	/* We assume an 8bits depth per color for degamma/gamma LUTs
>> -	 * for CRC checks with framebuffer references. */
>> -	data->color_depth = 8;
>> -	delta = 1.0 / (1 << data->color_depth);
>> -
>> -	igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
>> -		color_t blue_green_blue[] = {
>> -			{ 0.0, 0.0, 1.0 },
>> -			{ 0.0, 1.0, 0.0 },
>> -			{ 0.0, 0.0, 1.0 }
>> -		};
>> -		double ctm[] = { 0.0, 0.0, 0.0,
>> -				0.0, 1.0, 0.0,
>> -				1.0, 0.0, 1.0 };
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 blue_green_blue, ctm));
>> -	}
>> +	/* Iterate over fb formats to test */
>> +	for (j = 0; j < ARRAY_SIZE(fb_formats); j++) {
>> +
>> +		fb_format_t *fb_format = &fb_formats[j];
>> +		data->color_depth = fb_format->bpc;
>> +		delta = 1.0 / (1 << data->color_depth);
>> +
>> +		igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t blue_green_blue[] = {
>> +				{ 0.0, 0.0, 1.0 },
>> +				{ 0.0, 1.0, 0.0 },
>> +				{ 0.0, 0.0, 1.0 }
>> +			};
>> +			double ctm[] = { 0.0, 0.0, 0.0,
>> +					0.0, 1.0, 0.0,
>> +					1.0, 0.0, 1.0 };
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 blue_green_blue, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
>> -		color_t red_red_blue[] = {
>> -			{ 1.0, 0.0, 0.0 },
>> -			{ 1.0, 0.0, 0.0 },
>> -			{ 0.0, 0.0, 1.0 }
>> -		};
>> -		double ctm[] = { 1.0, 1.0, 0.0,
>> -				0.0, 0.0, 0.0,
>> -				0.0, 0.0, 1.0 };
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 red_red_blue, ctm));
>> -	}
>> +		igt_subtest_f("pipe-%s%s-ctm-green-to-red",
>> +			      kmstest_pipe_name(p), fb_format->name) {
>> +			color_t red_red_blue[] = {
>> +				{ 1.0, 0.0, 0.0 },
>> +				{ 1.0, 0.0, 0.0 },
>> +				{ 0.0, 0.0, 1.0 }
>> +			};
>> +			double ctm[] = { 1.0, 1.0, 0.0,
>> +					0.0, 0.0, 0.0,
>> +					0.0, 0.0, 1.0 };
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 red_red_blue, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
>> -		color_t red_green_red[] = {
>> -			{ 1.0, 0.0, 0.0 },
>> -			{ 0.0, 1.0, 0.0 },
>> -			{ 1.0, 0.0, 0.0 }
>> -		};
>> -		double ctm[] = { 1.0, 0.0, 1.0,
>> -				0.0, 1.0, 0.0,
>> -				0.0, 0.0, 0.0 };
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 red_green_red, ctm));
>> -	}
>> +		igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t red_green_red[] = {
>> +				{ 1.0, 0.0, 0.0 },
>> +				{ 0.0, 1.0, 0.0 },
>> +				{ 1.0, 0.0, 0.0 }
>> +			};
>> +			double ctm[] = { 1.0, 0.0, 1.0,
>> +					0.0, 1.0, 0.0,
>> +					0.0, 0.0, 0.0 };
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 red_green_red, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>> -	/* We tests a few values around the expected result because
>> -	 * 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)) {
>> -		color_t expected_colors[] = {
>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>> -		};
>> -		double ctm[] = { 0.25, 0.0,  0.0,
>> -				 0.0,  0.25, 0.0,
>> -				 0.0,  0.0,  0.25 };
>> -		bool success = false;
>> -
>> -		for (i = 0; i < 5; i++) {
>> -			expected_colors[0].r =
>> -				expected_colors[1].g =
>> -				expected_colors[2].b =
>> -				0.25 + delta * (i - 2);
>> -			success |= test_pipe_ctm(data, primary,
>> -						 red_green_blue,
>> -						 expected_colors, ctm);
>> +		/* We tests a few values around the expected result because
>> +		 * 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%s-ctm-0-25", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t expected_colors[] = {
>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>> +			};
>> +			double ctm[] = { 0.25, 0.0,  0.0,
>> +					 0.0,  0.25, 0.0,
>> +					 0.0,  0.0,  0.25 };
>> +			bool success = false;
>> +
>> +			for (i = 0; i < 5; i++) {
>> +				expected_colors[0].r =
>> +					expected_colors[1].g =
>> +					expected_colors[2].b =
>> +					0.25 + delta * (i - 2);
>> +				success |= test_pipe_ctm(data, primary,
>> +							 red_green_blue,
>> +							 expected_colors, ctm,
>> +							 fb_format->format);
>> +			}
>> +			igt_assert(success);
>>  		}
>> -		igt_assert(success);
>> -	}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
>> -		color_t expected_colors[] = {
>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>> -		};
>> -		double ctm[] = { 0.5, 0.0, 0.0,
>> -				 0.0, 0.5, 0.0,
>> -				 0.0, 0.0, 0.5 };
>> -		bool success = false;
>> -
>> -		for (i = 0; i < 5; i++) {
>> -			expected_colors[0].r =
>> -				expected_colors[1].g =
>> -				expected_colors[2].b =
>> -				0.5 + delta * (i - 2);
>> -			success |= test_pipe_ctm(data, primary,
>> -						 red_green_blue,
>> -						 expected_colors, ctm);
>> +		igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t expected_colors[] = {
>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>> +			};
>> +			double ctm[] = { 0.5, 0.0, 0.0,
>> +					 0.0, 0.5, 0.0,
>> +					 0.0, 0.0, 0.5 };
>> +			bool success = false;
>> +
>> +			for (i = 0; i < 5; i++) {
>> +				expected_colors[0].r =
>> +					expected_colors[1].g =
>> +					expected_colors[2].b =
>> +					0.5 + delta * (i - 2);
>> +				success |= test_pipe_ctm(data, primary,
>> +							 red_green_blue,
>> +							 expected_colors, ctm,
>> +							 fb_format->format);
>> +			}
>> +			igt_assert(success);
>>  		}
>> -		igt_assert(success);
>> -	}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
>> -		color_t expected_colors[] = {
>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>> -		};
>> -		double ctm[] = { 0.75, 0.0,  0.0,
>> -				 0.0,  0.75, 0.0,
>> -				 0.0,  0.0,  0.75 };
>> -		bool success = false;
>> -
>> -		for (i = 0; i < 7; i++) {
>> -			expected_colors[0].r =
>> -				expected_colors[1].g =
>> -				expected_colors[2].b =
>> -				0.75 + delta * (i - 3);
>> -			success |= test_pipe_ctm(data, primary,
>> -						 red_green_blue,
>> -						 expected_colors, ctm);
>> +		igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t expected_colors[] = {
>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>> +			};
>> +			double ctm[] = { 0.75, 0.0,  0.0,
>> +					 0.0,  0.75, 0.0,
>> +					 0.0,  0.0,  0.75 };
>> +			bool success = false;
>> +
>> +			for (i = 0; i < 7; i++) {
>> +				expected_colors[0].r =
>> +					expected_colors[1].g =
>> +					expected_colors[2].b =
>> +					0.75 + delta * (i - 3);
>> +				success |= test_pipe_ctm(data, primary,
>> +							 red_green_blue,
>> +							 expected_colors, ctm,
>> +							 fb_format->format);
>> +			}
>> +			igt_assert(success);
>>  		}
>> -		igt_assert(success);
>> -	}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
>> -		color_t full_rgb[] = {
>> -			{ 1.0, 0.0, 0.0 },
>> -			{ 0.0, 1.0, 0.0 },
>> -			{ 0.0, 0.0, 1.0 }
>> -		};
>> -		double ctm[] = { 100.0,   0.0,   0.0,
>> -				 0.0,   100.0,   0.0,
>> -				 0.0,     0.0, 100.0 };
>> -
>> -		/* CherryView generates values on 10bits that we
>> -		 * produce with an 8 bits per color framebuffer. */
>> -		igt_require(!IS_CHERRYVIEW(data->devid));
>> -
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 full_rgb, ctm));
>> -	}
>> +		igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t full_rgb[] = {
>> +				{ 1.0, 0.0, 0.0 },
>> +				{ 0.0, 1.0, 0.0 },
>> +				{ 0.0, 0.0, 1.0 }
>> +			};
>> +			double ctm[] = { 100.0,   0.0,   0.0,
>> +					 0.0,   100.0,   0.0,
>> +					 0.0,     0.0, 100.0 };
>> +
>> +			/* CherryView generates values on 10bits that we
>> +			 * produce with an 8 bits per color framebuffer. */
>> +			igt_require(!IS_CHERRYVIEW(data->devid));
>> +
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 full_rgb, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>> -	igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
>> -		color_t all_black[] = {
>> -			{ 0.0, 0.0, 0.0 },
>> -			{ 0.0, 0.0, 0.0 },
>> -			{ 0.0, 0.0, 0.0 }
>> -		};
>> -		double ctm[] = { -1.0,  0.0,  0.0,
>> -				 0.0, -1.0,  0.0,
>> -				 0.0,  0.0, -1.0 };
>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> -					 all_black, ctm));
>> -	}
>> +		igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p),
>> +			      fb_format->name) {
>> +			color_t all_black[] = {
>> +				{ 0.0, 0.0, 0.0 },
>> +				{ 0.0, 0.0, 0.0 },
>> +				{ 0.0, 0.0, 0.0 }
>> +			};
>> +			double ctm[] = { -1.0,  0.0,  0.0,
>> +					 0.0, -1.0,  0.0,
>> +					 0.0,  0.0, -1.0 };
>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>> +						 all_black, ctm,
>> +						 fb_format->format));
>> +		}
>>  
>>  #if 0
>> -	igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
>> -		test_pipe_limited_range_ctm(data, primary);
>> +		igt_subtest_f("pipe-%s-ctm-limited-range%s",
>> +			      kmstest_pipe_name(p), fb_format->name)
>> +			test_pipe_limited_range_ctm(data, primary,
>> +						    fb_format->format);
>>  #endif
>>  
>> -	igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
>> -		test_pipe_degamma(data, primary);
>> +		igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p),
>> +			      fb_format->name)
>> +			test_pipe_degamma(data, primary, fb_format->format);
>>  
>> -	igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
>> -		test_pipe_gamma(data, primary);
>> +		igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p),
>> +			      fb_format->name)
>> +			test_pipe_gamma(data, primary, fb_format->format);
>>  
>> -	igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
>> -		test_pipe_legacy_gamma(data, primary);
>> +		igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p),
>> +			      fb_format->name)
>> +			test_pipe_legacy_gamma(data, primary,
>> +					       fb_format->format);
>>  
>> +	} // End of fb_formats iterator
>> +
>> +	data->color_depth = 8;
>>  	igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
>>  		test_pipe_legacy_gamma_reset(data, primary);
>>  
>> -- 
>> 2.24.0
>>
>> _______________________________________________
>> igt-dev mailing list
>> igt-dev@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/igt-dev
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2020-01-02 22:59   ` Harry Wentland
@ 2020-01-02 23:03     ` Harry Wentland
  0 siblings, 0 replies; 11+ messages in thread
From: Harry Wentland @ 2020-01-02 23:03 UTC (permalink / raw)
  To: Ville Syrjälä, sunpeng.li; +Cc: igt-dev

On 2020-01-02 5:59 p.m., Harry Wentland wrote:
> On 2019-12-12 10:03 a.m., Ville Syrjälä wrote:
>> On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote:
>>> From: Leo Li <sunpeng.li@amd.com>
>>>
>>> We'd like to test the hardware pipe's color management with 10bit
>>> surfaces.
>>
>> Why exactly? The pipe color management stuff doesn't care what
>> pixel format the plane used.
> 
> Not sure how this works for Intel but for us there's a fair amount of
> logic between color management and the pixel format.
> 

To clarify, Leo is still correct in that in AMD HW these shouldn't be
related but this doesn't really guarantee that the driver doesn't do
something funky here.

Harry

> In general, not sure if IGT should be designed based on assumptions of a
> certain KMS driver implementation.
> 
> Harry
> 
>>
>>> This change parameterizes the hardcoded formats within each
>>> test, and ennumerates the additional subtests within a for loop. To
>>> avoid renaming existing tests, the 10bpc tests will have '-10bpc'
>>> inserted after the pipe name, while the 8bpc test names remain
>>> unchanged.
>>>
>>> Signed-off-by: Leo Li <sunpeng.li@amd.com>
>>> ---
>>>  tests/kms_color.c | 353 ++++++++++++++++++++++++++--------------------
>>>  1 file changed, 198 insertions(+), 155 deletions(-)
>>>
>>> diff --git a/tests/kms_color.c b/tests/kms_color.c
>>> index b4b578a7..3c76a0d2 100644
>>> --- a/tests/kms_color.c
>>> +++ b/tests/kms_color.c
>>> @@ -52,6 +52,12 @@ typedef struct {
>>>  	double coeffs[];
>>>  } gamma_lut_t;
>>>  
>>> +typedef struct {
>>> +	uint32_t format;
>>> +	int bpc;
>>> +	char name[16];
>>> +} fb_format_t;
>>> +
>>>  static void paint_gradient_rectangles(data_t *data,
>>>  				      drmModeModeInfo *mode,
>>>  				      color_t *colors,
>>> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
>>>   * rectangles with linear degamma LUT.
>>>   */
>>>  static void test_pipe_degamma(data_t *data,
>>> -			      igt_plane_t *primary)
>>> +			      igt_plane_t *primary,
>>> +			      uint32_t fb_format)
>>>  {
>>>  	igt_output_t *output;
>>>  	gamma_lut_t *degamma_linear, *degamma_full;
>>> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data,
>>>  		fb_id = igt_create_fb(data->drm_fd,
>>>  				      mode->hdisplay,
>>>  				      mode->vdisplay,
>>> -				      DRM_FORMAT_XRGB8888,
>>> +				      fb_format,
>>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  				      &fb);
>>>  		igt_assert(fb_id);
>>> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data,
>>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>>  					      mode->hdisplay,
>>>  					      mode->vdisplay,
>>> -					      DRM_FORMAT_XRGB8888,
>>> +					      fb_format,
>>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  					      &fb_modeset);
>>>  		igt_assert(fb_modeset_id);
>>> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data,
>>>   * LUT and verify we have the same CRC as drawing solid color rectangles.
>>>   */
>>>  static void test_pipe_gamma(data_t *data,
>>> -			    igt_plane_t *primary)
>>> +			    igt_plane_t *primary,
>>> +			    uint32_t fb_format)
>>>  {
>>>  	igt_output_t *output;
>>>  	gamma_lut_t *gamma_full;
>>> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data,
>>>  		fb_id = igt_create_fb(data->drm_fd,
>>>  				      mode->hdisplay,
>>>  				      mode->vdisplay,
>>> -				      DRM_FORMAT_XRGB8888,
>>> +				      fb_format,
>>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  				      &fb);
>>>  		igt_assert(fb_id);
>>> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data,
>>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>>  					      mode->hdisplay,
>>>  					      mode->vdisplay,
>>> -					      DRM_FORMAT_XRGB8888,
>>> +					      fb_format,
>>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  					      &fb_modeset);
>>>  		igt_assert(fb_modeset_id);
>>> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data,
>>>   * with linear legacy gamma LUT.
>>>   */
>>>  static void test_pipe_legacy_gamma(data_t *data,
>>> -				   igt_plane_t *primary)
>>> +				   igt_plane_t *primary,
>>> +				   uint32_t fb_format)
>>>  {
>>>  	igt_output_t *output;
>>>  	color_t red_green_blue[] = {
>>> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>>>  		fb_id = igt_create_fb(data->drm_fd,
>>>  				      mode->hdisplay,
>>>  				      mode->vdisplay,
>>> -				      DRM_FORMAT_XRGB8888,
>>> +				      fb_format,
>>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  				      &fb);
>>>  		igt_assert(fb_id);
>>> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>>  					      mode->hdisplay,
>>>  					      mode->vdisplay,
>>> -					      DRM_FORMAT_XRGB8888,
>>> +					      fb_format,
>>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  					      &fb_modeset);
>>>  		igt_assert(fb_modeset_id);
>>> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data,
>>>  			  igt_plane_t *primary,
>>>  			  color_t *before,
>>>  			  color_t *after,
>>> -			  double *ctm_matrix)
>>> +			  double *ctm_matrix,
>>> +			  uint32_t fb_format)
>>>  {
>>>  	const double ctm_identity[] = {
>>>  		1.0, 0.0, 0.0,
>>> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data,
>>>  		fb_id = igt_create_fb(data->drm_fd,
>>>  				      mode->hdisplay,
>>>  				      mode->vdisplay,
>>> -				      DRM_FORMAT_XRGB8888,
>>> +				      fb_format,
>>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  				      &fb);
>>>  		igt_assert(fb_id);
>>> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data,
>>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>>  					      mode->hdisplay,
>>>  					      mode->vdisplay,
>>> -					      DRM_FORMAT_XRGB8888,
>>> +					      fb_format,
>>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  					      &fb_modeset);
>>>  		igt_assert(fb_modeset_id);
>>> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data,
>>>   */
>>>  #if 0
>>>  static void test_pipe_limited_range_ctm(data_t *data,
>>> -					igt_plane_t *primary)
>>> +					igt_plane_t *primary,
>>> +					uint32_t fb_format)
>>>  {
>>>  	double limited_result = 235.0 / 255.0;
>>>  	color_t red_green_blue_limited[] = {
>>> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>>>  		fb_id = igt_create_fb(data->drm_fd,
>>>  				      mode->hdisplay,
>>>  				      mode->vdisplay,
>>> -				      DRM_FORMAT_XRGB8888,
>>> +				      fb_format,
>>>  				      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  				      &fb);
>>>  		igt_assert(fb_id);
>>> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>>>  		fb_modeset_id = igt_create_fb(data->drm_fd,
>>>  					      mode->hdisplay,
>>>  					      mode->vdisplay,
>>> -					      DRM_FORMAT_XRGB8888,
>>> +					      fb_format,
>>>  					      LOCAL_DRM_FORMAT_MOD_NONE,
>>>  					      &fb_modeset);
>>>  		igt_assert(fb_modeset_id);
>>> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>>>  	igt_pipe_t *pipe;
>>>  	igt_plane_t *primary;
>>>  	double delta;
>>> -	int i;
>>> +	int i, j;
>>>  	color_t red_green_blue[] = {
>>>  		{ 1.0, 0.0, 0.0 },
>>>  		{ 0.0, 1.0, 0.0 },
>>>  		{ 0.0, 0.0, 1.0 }
>>>  	};
>>>  
>>> +	fb_format_t fb_formats[] = {
>>> +		{ DRM_FORMAT_XRGB8888, 8 , ""},
>>> +		{ DRM_FORMAT_XRGB2101010, 10 , "-10bpc"}
>>> +	};
>>> +
>>>  	igt_fixture {
>>>  		igt_require_pipe_crc(data->drm_fd);
>>>  
>>> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>>>  		igt_display_require_output_on_pipe(&data->display, p);
>>>  	}
>>>  
>>> -	/* We assume an 8bits depth per color for degamma/gamma LUTs
>>> -	 * for CRC checks with framebuffer references. */
>>> -	data->color_depth = 8;
>>> -	delta = 1.0 / (1 << data->color_depth);
>>> -
>>> -	igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
>>> -		color_t blue_green_blue[] = {
>>> -			{ 0.0, 0.0, 1.0 },
>>> -			{ 0.0, 1.0, 0.0 },
>>> -			{ 0.0, 0.0, 1.0 }
>>> -		};
>>> -		double ctm[] = { 0.0, 0.0, 0.0,
>>> -				0.0, 1.0, 0.0,
>>> -				1.0, 0.0, 1.0 };
>>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> -					 blue_green_blue, ctm));
>>> -	}
>>> +	/* Iterate over fb formats to test */
>>> +	for (j = 0; j < ARRAY_SIZE(fb_formats); j++) {
>>> +
>>> +		fb_format_t *fb_format = &fb_formats[j];
>>> +		data->color_depth = fb_format->bpc;
>>> +		delta = 1.0 / (1 << data->color_depth);
>>> +
>>> +		igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p),
>>> +			      fb_format->name) {
>>> +			color_t blue_green_blue[] = {
>>> +				{ 0.0, 0.0, 1.0 },
>>> +				{ 0.0, 1.0, 0.0 },
>>> +				{ 0.0, 0.0, 1.0 }
>>> +			};
>>> +			double ctm[] = { 0.0, 0.0, 0.0,
>>> +					0.0, 1.0, 0.0,
>>> +					1.0, 0.0, 1.0 };
>>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> +						 blue_green_blue, ctm,
>>> +						 fb_format->format));
>>> +		}
>>>  
>>> -	igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
>>> -		color_t red_red_blue[] = {
>>> -			{ 1.0, 0.0, 0.0 },
>>> -			{ 1.0, 0.0, 0.0 },
>>> -			{ 0.0, 0.0, 1.0 }
>>> -		};
>>> -		double ctm[] = { 1.0, 1.0, 0.0,
>>> -				0.0, 0.0, 0.0,
>>> -				0.0, 0.0, 1.0 };
>>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> -					 red_red_blue, ctm));
>>> -	}
>>> +		igt_subtest_f("pipe-%s%s-ctm-green-to-red",
>>> +			      kmstest_pipe_name(p), fb_format->name) {
>>> +			color_t red_red_blue[] = {
>>> +				{ 1.0, 0.0, 0.0 },
>>> +				{ 1.0, 0.0, 0.0 },
>>> +				{ 0.0, 0.0, 1.0 }
>>> +			};
>>> +			double ctm[] = { 1.0, 1.0, 0.0,
>>> +					0.0, 0.0, 0.0,
>>> +					0.0, 0.0, 1.0 };
>>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> +						 red_red_blue, ctm,
>>> +						 fb_format->format));
>>> +		}
>>>  
>>> -	igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
>>> -		color_t red_green_red[] = {
>>> -			{ 1.0, 0.0, 0.0 },
>>> -			{ 0.0, 1.0, 0.0 },
>>> -			{ 1.0, 0.0, 0.0 }
>>> -		};
>>> -		double ctm[] = { 1.0, 0.0, 1.0,
>>> -				0.0, 1.0, 0.0,
>>> -				0.0, 0.0, 0.0 };
>>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> -					 red_green_red, ctm));
>>> -	}
>>> +		igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p),
>>> +			      fb_format->name) {
>>> +			color_t red_green_red[] = {
>>> +				{ 1.0, 0.0, 0.0 },
>>> +				{ 0.0, 1.0, 0.0 },
>>> +				{ 1.0, 0.0, 0.0 }
>>> +			};
>>> +			double ctm[] = { 1.0, 0.0, 1.0,
>>> +					0.0, 1.0, 0.0,
>>> +					0.0, 0.0, 0.0 };
>>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> +						 red_green_red, ctm,
>>> +						 fb_format->format));
>>> +		}
>>>  
>>> -	/* We tests a few values around the expected result because
>>> -	 * 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)) {
>>> -		color_t expected_colors[] = {
>>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>>> -		};
>>> -		double ctm[] = { 0.25, 0.0,  0.0,
>>> -				 0.0,  0.25, 0.0,
>>> -				 0.0,  0.0,  0.25 };
>>> -		bool success = false;
>>> -
>>> -		for (i = 0; i < 5; i++) {
>>> -			expected_colors[0].r =
>>> -				expected_colors[1].g =
>>> -				expected_colors[2].b =
>>> -				0.25 + delta * (i - 2);
>>> -			success |= test_pipe_ctm(data, primary,
>>> -						 red_green_blue,
>>> -						 expected_colors, ctm);
>>> +		/* We tests a few values around the expected result because
>>> +		 * 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%s-ctm-0-25", kmstest_pipe_name(p),
>>> +			      fb_format->name) {
>>> +			color_t expected_colors[] = {
>>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>>> +			};
>>> +			double ctm[] = { 0.25, 0.0,  0.0,
>>> +					 0.0,  0.25, 0.0,
>>> +					 0.0,  0.0,  0.25 };
>>> +			bool success = false;
>>> +
>>> +			for (i = 0; i < 5; i++) {
>>> +				expected_colors[0].r =
>>> +					expected_colors[1].g =
>>> +					expected_colors[2].b =
>>> +					0.25 + delta * (i - 2);
>>> +				success |= test_pipe_ctm(data, primary,
>>> +							 red_green_blue,
>>> +							 expected_colors, ctm,
>>> +							 fb_format->format);
>>> +			}
>>> +			igt_assert(success);
>>>  		}
>>> -		igt_assert(success);
>>> -	}
>>>  
>>> -	igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
>>> -		color_t expected_colors[] = {
>>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>>> -		};
>>> -		double ctm[] = { 0.5, 0.0, 0.0,
>>> -				 0.0, 0.5, 0.0,
>>> -				 0.0, 0.0, 0.5 };
>>> -		bool success = false;
>>> -
>>> -		for (i = 0; i < 5; i++) {
>>> -			expected_colors[0].r =
>>> -				expected_colors[1].g =
>>> -				expected_colors[2].b =
>>> -				0.5 + delta * (i - 2);
>>> -			success |= test_pipe_ctm(data, primary,
>>> -						 red_green_blue,
>>> -						 expected_colors, ctm);
>>> +		igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p),
>>> +			      fb_format->name) {
>>> +			color_t expected_colors[] = {
>>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>>> +			};
>>> +			double ctm[] = { 0.5, 0.0, 0.0,
>>> +					 0.0, 0.5, 0.0,
>>> +					 0.0, 0.0, 0.5 };
>>> +			bool success = false;
>>> +
>>> +			for (i = 0; i < 5; i++) {
>>> +				expected_colors[0].r =
>>> +					expected_colors[1].g =
>>> +					expected_colors[2].b =
>>> +					0.5 + delta * (i - 2);
>>> +				success |= test_pipe_ctm(data, primary,
>>> +							 red_green_blue,
>>> +							 expected_colors, ctm,
>>> +							 fb_format->format);
>>> +			}
>>> +			igt_assert(success);
>>>  		}
>>> -		igt_assert(success);
>>> -	}
>>>  
>>> -	igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
>>> -		color_t expected_colors[] = {
>>> -			{ 0.0, }, { 0.0, }, { 0.0, }
>>> -		};
>>> -		double ctm[] = { 0.75, 0.0,  0.0,
>>> -				 0.0,  0.75, 0.0,
>>> -				 0.0,  0.0,  0.75 };
>>> -		bool success = false;
>>> -
>>> -		for (i = 0; i < 7; i++) {
>>> -			expected_colors[0].r =
>>> -				expected_colors[1].g =
>>> -				expected_colors[2].b =
>>> -				0.75 + delta * (i - 3);
>>> -			success |= test_pipe_ctm(data, primary,
>>> -						 red_green_blue,
>>> -						 expected_colors, ctm);
>>> +		igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p),
>>> +			      fb_format->name) {
>>> +			color_t expected_colors[] = {
>>> +				{ 0.0, }, { 0.0, }, { 0.0, }
>>> +			};
>>> +			double ctm[] = { 0.75, 0.0,  0.0,
>>> +					 0.0,  0.75, 0.0,
>>> +					 0.0,  0.0,  0.75 };
>>> +			bool success = false;
>>> +
>>> +			for (i = 0; i < 7; i++) {
>>> +				expected_colors[0].r =
>>> +					expected_colors[1].g =
>>> +					expected_colors[2].b =
>>> +					0.75 + delta * (i - 3);
>>> +				success |= test_pipe_ctm(data, primary,
>>> +							 red_green_blue,
>>> +							 expected_colors, ctm,
>>> +							 fb_format->format);
>>> +			}
>>> +			igt_assert(success);
>>>  		}
>>> -		igt_assert(success);
>>> -	}
>>>  
>>> -	igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
>>> -		color_t full_rgb[] = {
>>> -			{ 1.0, 0.0, 0.0 },
>>> -			{ 0.0, 1.0, 0.0 },
>>> -			{ 0.0, 0.0, 1.0 }
>>> -		};
>>> -		double ctm[] = { 100.0,   0.0,   0.0,
>>> -				 0.0,   100.0,   0.0,
>>> -				 0.0,     0.0, 100.0 };
>>> -
>>> -		/* CherryView generates values on 10bits that we
>>> -		 * produce with an 8 bits per color framebuffer. */
>>> -		igt_require(!IS_CHERRYVIEW(data->devid));
>>> -
>>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> -					 full_rgb, ctm));
>>> -	}
>>> +		igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p),
>>> +			      fb_format->name) {
>>> +			color_t full_rgb[] = {
>>> +				{ 1.0, 0.0, 0.0 },
>>> +				{ 0.0, 1.0, 0.0 },
>>> +				{ 0.0, 0.0, 1.0 }
>>> +			};
>>> +			double ctm[] = { 100.0,   0.0,   0.0,
>>> +					 0.0,   100.0,   0.0,
>>> +					 0.0,     0.0, 100.0 };
>>> +
>>> +			/* CherryView generates values on 10bits that we
>>> +			 * produce with an 8 bits per color framebuffer. */
>>> +			igt_require(!IS_CHERRYVIEW(data->devid));
>>> +
>>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> +						 full_rgb, ctm,
>>> +						 fb_format->format));
>>> +		}
>>>  
>>> -	igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
>>> -		color_t all_black[] = {
>>> -			{ 0.0, 0.0, 0.0 },
>>> -			{ 0.0, 0.0, 0.0 },
>>> -			{ 0.0, 0.0, 0.0 }
>>> -		};
>>> -		double ctm[] = { -1.0,  0.0,  0.0,
>>> -				 0.0, -1.0,  0.0,
>>> -				 0.0,  0.0, -1.0 };
>>> -		igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> -					 all_black, ctm));
>>> -	}
>>> +		igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p),
>>> +			      fb_format->name) {
>>> +			color_t all_black[] = {
>>> +				{ 0.0, 0.0, 0.0 },
>>> +				{ 0.0, 0.0, 0.0 },
>>> +				{ 0.0, 0.0, 0.0 }
>>> +			};
>>> +			double ctm[] = { -1.0,  0.0,  0.0,
>>> +					 0.0, -1.0,  0.0,
>>> +					 0.0,  0.0, -1.0 };
>>> +			igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> +						 all_black, ctm,
>>> +						 fb_format->format));
>>> +		}
>>>  
>>>  #if 0
>>> -	igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
>>> -		test_pipe_limited_range_ctm(data, primary);
>>> +		igt_subtest_f("pipe-%s-ctm-limited-range%s",
>>> +			      kmstest_pipe_name(p), fb_format->name)
>>> +			test_pipe_limited_range_ctm(data, primary,
>>> +						    fb_format->format);
>>>  #endif
>>>  
>>> -	igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
>>> -		test_pipe_degamma(data, primary);
>>> +		igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p),
>>> +			      fb_format->name)
>>> +			test_pipe_degamma(data, primary, fb_format->format);
>>>  
>>> -	igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
>>> -		test_pipe_gamma(data, primary);
>>> +		igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p),
>>> +			      fb_format->name)
>>> +			test_pipe_gamma(data, primary, fb_format->format);
>>>  
>>> -	igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
>>> -		test_pipe_legacy_gamma(data, primary);
>>> +		igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p),
>>> +			      fb_format->name)
>>> +			test_pipe_legacy_gamma(data, primary,
>>> +					       fb_format->format);
>>>  
>>> +	} // End of fb_formats iterator
>>> +
>>> +	data->color_depth = 8;
>>>  	igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
>>>  		test_pipe_legacy_gamma_reset(data, primary);
>>>  
>>> -- 
>>> 2.24.0
>>>
>>> _______________________________________________
>>> igt-dev mailing list
>>> igt-dev@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/igt-dev
>>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
  2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li
                   ` (3 preceding siblings ...)
  2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
@ 2020-01-08 14:44 ` Leo
  4 siblings, 0 replies; 11+ messages in thread
From: Leo @ 2020-01-08 14:44 UTC (permalink / raw)
  To: igt-dev

A gentle ping for review.
I will be addressing Nicholas's comments on merge, or v2, whichever happens first :)

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-01-08 14:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li
2019-12-11 20:54 ` Kazlauskas, Nicholas
2019-12-11 21:15 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
2019-12-12  8:12 ` [igt-dev] ✗ GitLab.Pipeline: " Patchwork
2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
2019-12-12 20:53   ` Leo
2019-12-12 21:13     ` Ville Syrjälä
2019-12-17 14:00       ` Leo
2020-01-02 22:59   ` Harry Wentland
2020-01-02 23:03     ` Harry Wentland
2020-01-08 14:44 ` Leo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.