public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v4 0/4] validate color tests using chamelium.
@ 2020-01-23  8:00 Kunal Joshi
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 1/4] lib/igt_chamelium Added chamelium_frame_match_or_dumpn which returns bool that the captured frame matches with reference framebuffer Kunal Joshi
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Kunal Joshi @ 2020-01-23  8:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, ville.syrjala, petri.latvala, daniel.vetter

For gen11+ platforms, there are frequent crc mismatch issues observed
in color tests. This is happening due to hardware limitation
(pipe rounding). One of the solutions to fix this is by rewriting
color tests and making them compatible with chamelium.

In this patch series, color tests are modified to have frame dump
comparison instead of crc comparison using chamelium hooks. This
will be useful even for future platforms. Also, with this approach
we could enable limited-range subtest which was commented in kms_color
because of crc mismatch.

Kunal Joshi (4):
  lib/igt_chamelium Added chamelium_frame_match_or_dumpn which returns
    bool that the captured frame matches with reference framebuffer
  Moved common function in kms_color and kms_color_chamelium to
    kms_color_helper.c
  tests/kms_color_chamelium: add subtests to validate color
  HAX: Run in BAT

 lib/igt_chamelium.c                   |  25 +-
 lib/igt_chamelium.h                   |   5 +
 tests/Makefile.am                     |   3 +
 tests/Makefile.sources                |  13 +-
 tests/intel-ci/fast-feedback.testlist |  66 +++
 tests/kms_color.c                     | 383 +----------------
 tests/kms_color.h                     | 105 +++++
 tests/kms_color_chamelium.c           | 759 ++++++++++++++++++++++++++++++++++
 tests/kms_color_helper.c              | 386 +++++++++++++++++
 tests/meson.build                     |  19 +-
 10 files changed, 1378 insertions(+), 386 deletions(-)
 create mode 100644 tests/kms_color.h
 create mode 100644 tests/kms_color_chamelium.c
 create mode 100644 tests/kms_color_helper.c

-- 
2.7.4

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

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

* [igt-dev] [PATCH i-g-t v4 1/4] lib/igt_chamelium Added chamelium_frame_match_or_dumpn which returns bool that the captured frame matches with reference framebuffer
  2020-01-23  8:00 [igt-dev] [PATCH i-g-t v4 0/4] validate color tests using chamelium Kunal Joshi
@ 2020-01-23  8:00 ` Kunal Joshi
  2020-01-24 10:01   ` Petri Latvala
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 2/4] Moved common function in kms_color and kms_color_chamelium to kms_color_helper.c Kunal Joshi
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Kunal Joshi @ 2020-01-23  8:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, ville.syrjala, petri.latvala, daniel.vetter

Added chamelium_frame_match_or_dump which returns bool that the captured
frame matches with reference framebuffer.

(v2)
        Removed previously added function chamelium_assert_frame_dump_eq.

(v3)
        No change.

(v4)
        Removed duplicate function code chamelium_assert_frame_dump_match

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
Suggested-by: Uma Shankar <uma.shankar@intel.com>
---
 lib/igt_chamelium.c | 25 +++++++++++++++++++++++--
 lib/igt_chamelium.h |  5 +++++
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index 9971f51..95166e2 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -1583,6 +1583,27 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium,
 					  struct igt_fb *fb,
 					  enum chamelium_check check)
 {
+	igt_assert(chamelium_frame_match_or_dump(chamelium, port,
+						 frame, fb, check));
+}
+
+/**
+ * chamelium_assert_frame_match_or_dump:
+ * @chamelium: The chamelium instance the frame dump belongs to
+ * @frame: The chamelium frame dump to match
+ * @fb: pointer to an #igt_fb structure
+ * @check: the type of frame matching check to use
+ *
+ * Returns bool that the provided captured frame matches the reference
+ * frame from the framebuffer. If they do not, this saves the reference
+ * and captured frames to a png file.
+ */
+bool chamelium_frame_match_or_dump(struct chamelium *chamelium,
+				   struct chamelium_port *port,
+				   const struct chamelium_frame_dump *frame,
+				   struct igt_fb *fb,
+				   enum chamelium_check check)
+{
 	cairo_surface_t *reference;
 	cairo_surface_t *capture;
 	igt_crc_t *reference_crc;
@@ -1625,10 +1646,10 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium,
 		free(capture_crc);
 	}
 
-	igt_assert(match);
-
 	cairo_surface_destroy(reference);
 	cairo_surface_destroy(capture);
+
+	return match;
 }
 
 /**
diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h
index 08705a9..d03c924 100644
--- a/lib/igt_chamelium.h
+++ b/lib/igt_chamelium.h
@@ -204,6 +204,11 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium,
 					  const struct chamelium_frame_dump *frame,
 					  struct igt_fb *fb,
 					  enum chamelium_check check);
+bool chamelium_frame_match_or_dump(struct chamelium *chamelium,
+				   struct chamelium_port *port,
+				   const struct chamelium_frame_dump *frame,
+				   struct igt_fb *fb,
+				   enum chamelium_check check);
 void chamelium_crop_analog_frame(struct chamelium_frame_dump *dump, int width,
 				 int height);
 void chamelium_destroy_frame_dump(struct chamelium_frame_dump *dump);
-- 
2.7.4

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

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

* [igt-dev] [PATCH i-g-t v4 2/4] Moved common function in kms_color and kms_color_chamelium to kms_color_helper.c
  2020-01-23  8:00 [igt-dev] [PATCH i-g-t v4 0/4] validate color tests using chamelium Kunal Joshi
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 1/4] lib/igt_chamelium Added chamelium_frame_match_or_dumpn which returns bool that the captured frame matches with reference framebuffer Kunal Joshi
@ 2020-01-23  8:00 ` Kunal Joshi
  2020-01-24 10:07   ` Petri Latvala
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 3/4] tests/kms_color_chamelium: add subtests to validate color Kunal Joshi
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Kunal Joshi @ 2020-01-23  8:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, ville.syrjala, petri.latvala, daniel.vetter

kms_color and kms_color_chamelium shared common functions.
Moved them to tests/kms_color_helper.c to avoid code duplication.

(v4)
        Made a library kms_color_helper.c which is specific to
        kms_color and kms_color_chamelium.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
Suggested-by: Uma Shankar <uma.shankar@intel.com>
---
 tests/Makefile.am        |   3 +
 tests/Makefile.sources   |  13 +-
 tests/kms_color.c        | 383 +---------------------------------------------
 tests/kms_color.h        | 105 +++++++++++++
 tests/kms_color_helper.c | 386 +++++++++++++++++++++++++++++++++++++++++++++++
 tests/meson.build        |  19 ++-
 6 files changed, 525 insertions(+), 384 deletions(-)
 create mode 100644 tests/kms_color.h
 create mode 100644 tests/kms_color_helper.c

diff --git a/tests/Makefile.am b/tests/Makefile.am
index fc30524..87ffec2 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -13,11 +13,14 @@ endif
 if HAVE_CHAMELIUM
 TESTS_progs += \
 	kms_chamelium \
+	kms_color_chamelium \
 	$(NULL)
 endif
 
 TESTS_progs += testdisplay
 
+TESTS_progs += kms_color
+
 if BUILD_TESTS
 test-list.txt: Makefile
 	@echo TESTLIST > $@
diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index 806eb02..c9b7aea 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -35,7 +35,6 @@ TESTS_progs = \
 	kms_big_fb \
 	kms_busy \
 	kms_ccs \
-	kms_color \
 	kms_concurrent \
 	kms_content_protection\
 	kms_crtc_background_color \
@@ -590,6 +589,18 @@ testdisplay_SOURCES = \
 	testdisplay_hotplug.c \
 	$(NULL)
 
+kms_color_SOURCES = \
+        kms_color.c \
+        kms_color.h \
+        kms_color_helper.c \
+        $(NULL)
+
+kms_color_chamelium_SOURCES = \
+        kms_color_chamelium.c \
+        kms_color.h \
+        kms_color_helper.c \
+        $(NULL)
+
 check_SCRIPTS = igt_command_line.sh \
 	$(NULL)
 
diff --git a/tests/kms_color.c b/tests/kms_color.c
index b4b578a..864f42a 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -22,252 +22,10 @@
  *
  */
 
-#include <math.h>
-#include <unistd.h>
-
-#include "drm.h"
-#include "drmtest.h"
-#include "igt.h"
+#include "kms_color.h"
 
 IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
 
-/* Internal */
-typedef struct {
-	double r, g, b;
-} color_t;
-
-typedef struct {
-	int drm_fd;
-	uint32_t devid;
-	igt_display_t display;
-	igt_pipe_crc_t *pipe_crc;
-
-	uint32_t color_depth;
-	uint64_t degamma_lut_size;
-	uint64_t gamma_lut_size;
-} data_t;
-
-typedef struct {
-	int size;
-	double coeffs[];
-} gamma_lut_t;
-
-static void paint_gradient_rectangles(data_t *data,
-				      drmModeModeInfo *mode,
-				      color_t *colors,
-				      struct igt_fb *fb)
-{
-	cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, fb);
-	int i, l = mode->hdisplay / 3;
-	int rows_remaining = mode->hdisplay % 3;
-
-	/* Paint 3 gradient rectangles with red/green/blue between 1.0 and
-	 * 0.5. We want to avoid 0 so each max LUTs only affect their own
-	 * rectangle.
-	 */
-	for (i = 0 ; i < 3; i++) {
-		igt_paint_color_gradient_range(cr, i * l, 0, l, mode->vdisplay,
-					       colors[i].r != 0 ? 0.2 : 0,
-					       colors[i].g != 0 ? 0.2 : 0,
-					       colors[i].b != 0 ? 0.2 : 0,
-					       colors[i].r,
-					       colors[i].g,
-					       colors[i].b);
-	}
-
-	if (rows_remaining > 0)
-		igt_paint_color_gradient_range(cr, i * l, 0, rows_remaining,
-					       mode->vdisplay,
-					       colors[i-1].r != 0 ? 0.2 : 0,
-					       colors[i-1].g != 0 ? 0.2 : 0,
-					       colors[i-1].b != 0 ? 0.2 : 0,
-					       colors[i-1].r,
-					       colors[i-1].g,
-					       colors[i-1].b);
-
-	igt_put_cairo_ctx(data->drm_fd, fb, cr);
-}
-
-static void paint_rectangles(data_t *data,
-			     drmModeModeInfo *mode,
-			     color_t *colors,
-			     struct igt_fb *fb)
-{
-	cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, fb);
-	int i, l = mode->hdisplay / 3;
-	int rows_remaining = mode->hdisplay % 3;
-
-	/* Paint 3 solid rectangles. */
-	for (i = 0 ; i < 3; i++) {
-		igt_paint_color(cr, i * l, 0, l, mode->vdisplay,
-				colors[i].r, colors[i].g, colors[i].b);
-	}
-
-	if (rows_remaining > 0)
-		igt_paint_color(cr, i * l, 0, rows_remaining, mode->vdisplay,
-				colors[i-1].r, colors[i-1].g, colors[i-1].b);
-
-	igt_put_cairo_ctx(data->drm_fd, fb, cr);
-}
-
-static gamma_lut_t *alloc_lut(int lut_size)
-{
-	gamma_lut_t *gamma;
-
-	igt_assert_lt(0, lut_size);
-
-	gamma = malloc(sizeof(*gamma) + lut_size * sizeof(gamma->coeffs[0]));
-	igt_assert(gamma);
-	gamma->size = lut_size;
-
-	return gamma;
-}
-
-static void free_lut(gamma_lut_t *gamma)
-{
-	if (!gamma)
-		return;
-
-	free(gamma);
-}
-
-static gamma_lut_t *generate_table(int lut_size, double exp)
-{
-	gamma_lut_t *gamma = alloc_lut(lut_size);
-	int i;
-
-	gamma->coeffs[0] = 0.0;
-	for (i = 1; i < lut_size; i++)
-		gamma->coeffs[i] = pow(i * 1.0 / (lut_size - 1), exp);
-
-	return gamma;
-}
-
-static gamma_lut_t *generate_table_max(int lut_size)
-{
-	gamma_lut_t *gamma = alloc_lut(lut_size);
-	int i;
-
-	gamma->coeffs[0] = 0.0;
-	for (i = 1; i < lut_size; i++)
-		gamma->coeffs[i] = 1.0;
-
-	return gamma;
-}
-
-static gamma_lut_t *generate_table_zero(int lut_size)
-{
-	gamma_lut_t *gamma = alloc_lut(lut_size);
-	int i;
-
-	for (i = 0; i < lut_size; i++)
-		gamma->coeffs[i] = 0.0;
-
-	return gamma;
-}
-
-static struct drm_color_lut *coeffs_to_lut(data_t *data,
-					   const gamma_lut_t *gamma,
-					   uint32_t color_depth,
-					   int off)
-{
-	struct drm_color_lut *lut;
-	int i, lut_size = gamma->size;
-	uint32_t max_value = (1 << 16) - 1;
-	uint32_t mask;
-
-	if (is_i915_device(data->drm_fd))
-		mask = ((1 << color_depth) - 1) << 8;
-	else
-		mask = max_value;
-
-	lut = malloc(sizeof(struct drm_color_lut) * lut_size);
-
-	if (IS_CHERRYVIEW(data->devid))
-		lut_size -= 1;
-	for (i = 0; i < lut_size; i++) {
-		uint32_t v = (gamma->coeffs[i] * max_value);
-
-		/*
-		 * Hardware might encode colors on a different number of bits
-		 * than what is in our framebuffer (10 or 12bits for example).
-		 * Mask the lower bits not provided by the framebuffer so we
-		 * can do CRC comparisons.
-		 */
-		v &= mask;
-
-		lut[i].red = v;
-		lut[i].green = v;
-		lut[i].blue = v;
-	}
-
-	if (IS_CHERRYVIEW(data->devid))
-		lut[lut_size].red =
-			lut[lut_size].green =
-			lut[lut_size].blue = lut[lut_size - 1].red;
-
-	return lut;
-}
-
-static void set_degamma(data_t *data,
-			igt_pipe_t *pipe,
-			const gamma_lut_t *gamma)
-{
-	size_t size = sizeof(struct drm_color_lut) * gamma->size;
-	struct drm_color_lut *lut = coeffs_to_lut(data, gamma,
-						  data->color_depth, 0);
-
-	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_DEGAMMA_LUT, lut, size);
-
-	free(lut);
-}
-
-static void set_gamma(data_t *data,
-		      igt_pipe_t *pipe,
-		      const gamma_lut_t *gamma)
-{
-	size_t size = sizeof(struct drm_color_lut) * gamma->size;
-	struct drm_color_lut *lut = coeffs_to_lut(data, gamma,
-						  data->color_depth, 0);
-
-	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_GAMMA_LUT, lut, size);
-
-	free(lut);
-}
-
-static void set_ctm(igt_pipe_t *pipe, const double *coefficients)
-{
-	struct drm_color_ctm ctm;
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(ctm.matrix); i++) {
-		if (coefficients[i] < 0) {
-			ctm.matrix[i] =
-				(int64_t) (-coefficients[i] * ((int64_t) 1L << 32));
-			ctm.matrix[i] |= 1ULL << 63;
-		} else
-			ctm.matrix[i] =
-				(int64_t) (coefficients[i] * ((int64_t) 1L << 32));
-	}
-
-	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_CTM, &ctm, sizeof(ctm));
-}
-
-static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
-{
-	if (igt_pipe_obj_has_prop(pipe, prop))
-		igt_pipe_obj_replace_prop_blob(pipe, prop, NULL, 0);
-}
-
-#define disable_degamma(pipe) disable_prop(pipe, IGT_CRTC_DEGAMMA_LUT)
-#define disable_gamma(pipe) disable_prop(pipe, IGT_CRTC_GAMMA_LUT)
-#define disable_ctm(pipe) disable_prop(pipe, IGT_CRTC_CTM)
-
-/*
- * Draw 3 gradient rectangles in red, green and blue, with a maxed out
- * degamma LUT and verify we have the same CRC as drawing solid color
- * rectangles with linear degamma LUT.
- */
 static void test_pipe_degamma(data_t *data,
 			      igt_plane_t *primary)
 {
@@ -532,19 +290,6 @@ static void test_pipe_legacy_gamma(data_t *data,
 	free(blue_lut);
 }
 
-static drmModePropertyBlobPtr
-get_blob(data_t *data, igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
-{
-	uint64_t prop_value;
-
-	prop_value = igt_pipe_obj_get_prop(pipe, prop);
-
-	if (prop_value == 0)
-		return NULL;
-
-	return drmModeGetPropertyBlob(data->drm_fd, prop_value);
-}
-
 /*
  * Verify that setting the legacy gamma LUT resets the gamma LUT set
  * through the GAMMA_LUT property.
@@ -663,11 +408,6 @@ static void test_pipe_legacy_gamma_reset(data_t *data,
 	free_lut(gamma_zero);
 }
 
-static bool crc_equal(igt_crc_t *a, igt_crc_t *b)
-{
-  return memcmp(a->crc, b->crc, sizeof(a->crc[0]) * a->n_words) == 0;
-}
-
 /*
  * Draw 3 rectangles using before colors with the ctm matrix apply and verify
  * the CRC is equal to using after colors with an identify ctm matrix.
@@ -1086,127 +826,6 @@ run_tests_for_pipe(data_t *data, enum pipe p)
 	}
 }
 
-static int
-pipe_set_property_blob_id(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop, uint32_t blob_id)
-{
-	int ret;
-
-	igt_pipe_obj_replace_prop_blob(pipe, prop, NULL, 0);
-
-	igt_pipe_obj_set_prop_value(pipe, prop, blob_id);
-
-	ret = igt_display_try_commit2(pipe->display, pipe->display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
-
-	igt_pipe_obj_set_prop_value(pipe, prop, 0);
-
-	return ret;
-}
-
-static int
-pipe_set_property_blob(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop, void *ptr, size_t length)
-{
-	igt_pipe_obj_replace_prop_blob(pipe, prop, ptr, length);
-
-	return igt_display_try_commit2(pipe->display, pipe->display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
-}
-
-static void
-invalid_gamma_lut_sizes(data_t *data)
-{
-	igt_display_t *display = &data->display;
-	igt_pipe_t *pipe = &display->pipes[0];
-	size_t gamma_lut_size = data->gamma_lut_size * sizeof(struct drm_color_lut);
-	struct drm_color_lut *gamma_lut;
-
-	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_GAMMA_LUT));
-
-	gamma_lut = malloc(gamma_lut_size * 2);
-
-	igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
-
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
-					     gamma_lut, 1),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
-					     gamma_lut, gamma_lut_size + 1),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
-					     gamma_lut, gamma_lut_size - 1),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
-					     gamma_lut, gamma_lut_size + sizeof(struct drm_color_lut)),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_GAMMA_LUT, pipe->crtc_id),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_GAMMA_LUT, 4096 * 4096),
-		      -EINVAL);
-
-	free(gamma_lut);
-}
-
-static void
-invalid_degamma_lut_sizes(data_t *data)
-{
-	igt_display_t *display = &data->display;
-	igt_pipe_t *pipe = &display->pipes[0];
-	size_t degamma_lut_size = data->degamma_lut_size * sizeof(struct drm_color_lut);
-	struct drm_color_lut *degamma_lut;
-
-	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_DEGAMMA_LUT));
-
-	degamma_lut = malloc(degamma_lut_size * 2);
-
-	igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
-
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
-					     degamma_lut, 1), -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
-					     degamma_lut, degamma_lut_size + 1),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
-					     degamma_lut, degamma_lut_size - 1),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
-					     degamma_lut, degamma_lut_size + sizeof(struct drm_color_lut)),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_DEGAMMA_LUT, pipe->crtc_id),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_DEGAMMA_LUT, 4096 * 4096),
-		      -EINVAL);
-
-	free(degamma_lut);
-}
-
-static void
-invalid_ctm_matrix_sizes(data_t *data)
-{
-	igt_display_t *display = &data->display;
-	igt_pipe_t *pipe = &display->pipes[0];
-	void *ptr;
-
-	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_CTM));
-
-	ptr = malloc(sizeof(struct drm_color_ctm) * 4);
-
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr, 1),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
-					     sizeof(struct drm_color_ctm) + 1),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
-					     sizeof(struct drm_color_ctm) - 1),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
-					     sizeof(struct drm_color_ctm) * 2),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_CTM, pipe->crtc_id),
-		      -EINVAL);
-	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_CTM, 4096 * 4096),
-		      -EINVAL);
-
-	free(ptr);
-}
-
 igt_main
 {
 	data_t data = {};
diff --git a/tests/kms_color.h b/tests/kms_color.h
new file mode 100644
index 0000000..cee3859
--- /dev/null
+++ b/tests/kms_color.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright © 2020 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+#ifndef COLOR
+#define COLOR
+
+#include <math.h>
+#include <unistd.h>
+
+#include "drm.h"
+#include "drmtest.h"
+#include "igt.h"
+
+
+/* Internal */
+typedef struct {
+	double r, g, b;
+} color_t;
+
+typedef struct {
+	int drm_fd;
+	uint32_t devid;
+	igt_display_t display;
+	igt_pipe_crc_t *pipe_crc;
+
+	uint32_t color_depth;
+	uint64_t degamma_lut_size;
+	uint64_t gamma_lut_size;
+	#ifdef HAVE_CHAMELIUM
+	struct chamelium *chamelium;
+	struct chamelium_port **ports;
+	int port_count;
+	#endif
+} data_t;
+
+typedef struct {
+	int size;
+	double coeffs[];
+} gamma_lut_t;
+
+void paint_gradient_rectangles(data_t *data,
+			       drmModeModeInfo *mode,
+			       color_t *colors,
+			       struct igt_fb *fb);
+void paint_rectangles(data_t *data,
+		      drmModeModeInfo *mode,
+		      color_t *colors,
+		      struct igt_fb *fb);
+gamma_lut_t *alloc_lut(int lut_size);
+void free_lut(gamma_lut_t *gamma);
+gamma_lut_t *generate_table(int lut_size, double exp);
+gamma_lut_t *generate_table_max(int lut_size);
+gamma_lut_t *generate_table_zero(int lut_size);
+struct drm_color_lut *coeffs_to_lut(data_t *data,
+				    const gamma_lut_t *gamma,
+				    uint32_t color_depth,
+				    int off);
+void set_degamma(data_t *data,
+		 igt_pipe_t *pipe,
+		 const gamma_lut_t *gamma);
+void set_gamma(data_t *data,
+	       igt_pipe_t *pipe,
+	       const gamma_lut_t *gamma);
+void set_ctm(igt_pipe_t *pipe, const double *coefficients);
+void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop);
+
+#define disable_degamma(pipe) disable_prop(pipe, IGT_CRTC_DEGAMMA_LUT)
+#define disable_gamma(pipe) disable_prop(pipe, IGT_CRTC_GAMMA_LUT)
+#define disable_ctm(pipe) disable_prop(pipe, IGT_CRTC_CTM)
+
+drmModePropertyBlobPtr get_blob(data_t *data, igt_pipe_t *pipe,
+				enum igt_atomic_crtc_properties prop);
+bool crc_equal(igt_crc_t *a, igt_crc_t *b);
+int pipe_set_property_blob_id(igt_pipe_t *pipe,
+			      enum igt_atomic_crtc_properties prop,
+			      uint32_t blob_id);
+int pipe_set_property_blob(igt_pipe_t *pipe,
+			   enum igt_atomic_crtc_properties prop,
+			   void *ptr, size_t length);
+void invalid_gamma_lut_sizes(data_t *data);
+void invalid_degamma_lut_sizes(data_t *data);
+void invalid_ctm_matrix_sizes(data_t *data);
+#endif
+
diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
new file mode 100644
index 0000000..35e1ae8
--- /dev/null
+++ b/tests/kms_color_helper.c
@@ -0,0 +1,386 @@
+/*
+ * Copyright © 2020 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+#include "kms_color.h"
+
+void paint_gradient_rectangles(data_t *data,
+			       drmModeModeInfo *mode,
+			       color_t *colors,
+			       struct igt_fb *fb)
+{
+	cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, fb);
+	int i, l = mode->hdisplay / 3;
+	int rows_remaining = mode->hdisplay % 3;
+
+	/* Paint 3 gradient rectangles with red/green/blue between 1.0 and
+	 * 0.5. We want to avoid 0 so each max LUTs only affect their own
+	 * rectangle.
+	 */
+	for (i = 0 ; i < 3; i++) {
+		igt_paint_color_gradient_range(cr, i * l, 0, l, mode->vdisplay,
+					       colors[i].r != 0 ? 0.2 : 0,
+					       colors[i].g != 0 ? 0.2 : 0,
+					       colors[i].b != 0 ? 0.2 : 0,
+					       colors[i].r,
+					       colors[i].g,
+					       colors[i].b);
+	}
+
+	if (rows_remaining > 0)
+		igt_paint_color_gradient_range(cr, i * l, 0, rows_remaining,
+					       mode->vdisplay,
+					       colors[i-1].r != 0 ? 0.2 : 0,
+					       colors[i-1].g != 0 ? 0.2 : 0,
+					       colors[i-1].b != 0 ? 0.2 : 0,
+					       colors[i-1].r,
+					       colors[i-1].g,
+					       colors[i-1].b);
+
+	igt_put_cairo_ctx(data->drm_fd, fb, cr);
+}
+
+void paint_rectangles(data_t *data,
+		      drmModeModeInfo *mode,
+		      color_t *colors,
+		      struct igt_fb *fb)
+{
+	cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, fb);
+	int i, l = mode->hdisplay / 3;
+	int rows_remaining = mode->hdisplay % 3;
+
+	/* Paint 3 solid rectangles. */
+	for (i = 0 ; i < 3; i++) {
+		igt_paint_color(cr, i * l, 0, l, mode->vdisplay,
+				colors[i].r, colors[i].g, colors[i].b);
+	}
+
+	if (rows_remaining > 0)
+		igt_paint_color(cr, i * l, 0, rows_remaining, mode->vdisplay,
+				colors[i-1].r, colors[i-1].g, colors[i-1].b);
+
+	igt_put_cairo_ctx(data->drm_fd, fb, cr);
+}
+
+gamma_lut_t *alloc_lut(int lut_size)
+{
+	gamma_lut_t *gamma;
+
+	igt_assert_lt(0, lut_size);
+
+	gamma = malloc(sizeof(*gamma) + lut_size * sizeof(gamma->coeffs[0]));
+	igt_assert(gamma);
+	gamma->size = lut_size;
+
+	return gamma;
+}
+
+void free_lut(gamma_lut_t *gamma)
+{
+	if (!gamma)
+		return;
+
+	free(gamma);
+}
+
+gamma_lut_t *generate_table(int lut_size, double exp)
+{
+	gamma_lut_t *gamma = alloc_lut(lut_size);
+	int i;
+
+	gamma->coeffs[0] = 0.0;
+	for (i = 1; i < lut_size; i++)
+		gamma->coeffs[i] = pow(i * 1.0 / (lut_size - 1), exp);
+
+	return gamma;
+}
+
+gamma_lut_t *generate_table_max(int lut_size)
+{
+	gamma_lut_t *gamma = alloc_lut(lut_size);
+	int i;
+
+	gamma->coeffs[0] = 0.0;
+	for (i = 1; i < lut_size; i++)
+		gamma->coeffs[i] = 1.0;
+
+	return gamma;
+}
+
+gamma_lut_t *generate_table_zero(int lut_size)
+{
+	gamma_lut_t *gamma = alloc_lut(lut_size);
+	int i;
+
+	for (i = 0; i < lut_size; i++)
+		gamma->coeffs[i] = 0.0;
+
+	return gamma;
+}
+
+struct drm_color_lut *coeffs_to_lut(data_t *data,
+				    const gamma_lut_t *gamma,
+				    uint32_t color_depth,
+				    int off)
+{
+	struct drm_color_lut *lut;
+	int i, lut_size = gamma->size;
+	uint32_t max_value = (1 << 16) - 1;
+	uint32_t mask;
+
+	if (is_i915_device(data->drm_fd))
+		mask = ((1 << color_depth) - 1) << 8;
+	else
+		mask = max_value;
+
+	lut = malloc(sizeof(struct drm_color_lut) * lut_size);
+
+	if (IS_CHERRYVIEW(data->devid))
+		lut_size -= 1;
+	for (i = 0; i < lut_size; i++) {
+		uint32_t v = (gamma->coeffs[i] * max_value);
+
+		/*
+		 * Hardware might encode colors on a different number of bits
+		 * than what is in our framebuffer (10 or 12bits for example).
+		 * Mask the lower bits not provided by the framebuffer so we
+		 * can do CRC comparisons.
+		 */
+		v &= mask;
+
+		lut[i].red = v;
+		lut[i].green = v;
+		lut[i].blue = v;
+	}
+
+	if (IS_CHERRYVIEW(data->devid))
+		lut[lut_size].red =
+			lut[lut_size].green =
+			lut[lut_size].blue = lut[lut_size - 1].red;
+
+	return lut;
+}
+
+void set_degamma(data_t *data,
+		 igt_pipe_t *pipe,
+		 const gamma_lut_t *gamma)
+{
+	size_t size = sizeof(struct drm_color_lut) * gamma->size;
+	struct drm_color_lut *lut = coeffs_to_lut(data, gamma,
+						  data->color_depth, 0);
+
+	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_DEGAMMA_LUT, lut, size);
+
+	free(lut);
+}
+
+void set_gamma(data_t *data,
+	       igt_pipe_t *pipe, const gamma_lut_t *gamma)
+{
+	size_t size = sizeof(struct drm_color_lut) * gamma->size;
+	struct drm_color_lut *lut = coeffs_to_lut(data, gamma,
+						  data->color_depth, 0);
+
+	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_GAMMA_LUT, lut, size);
+
+	free(lut);
+}
+
+void set_ctm(igt_pipe_t *pipe, const double *coefficients)
+{
+	struct drm_color_ctm ctm;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(ctm.matrix); i++) {
+		if (coefficients[i] < 0) {
+			ctm.matrix[i] =
+				(int64_t) (-coefficients[i] *
+				((int64_t) 1L << 32));
+			ctm.matrix[i] |= 1ULL << 63;
+		} else
+			ctm.matrix[i] =
+				(int64_t) (coefficients[i] *
+				((int64_t) 1L << 32));
+	}
+
+	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_CTM, &ctm, sizeof(ctm));
+}
+
+void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
+{
+	if (igt_pipe_obj_has_prop(pipe, prop))
+		igt_pipe_obj_replace_prop_blob(pipe, prop, NULL, 0);
+}
+
+drmModePropertyBlobPtr
+get_blob(data_t *data, igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
+{
+	uint64_t prop_value;
+
+	prop_value = igt_pipe_obj_get_prop(pipe, prop);
+
+	if (prop_value == 0)
+		return NULL;
+
+	return drmModeGetPropertyBlob(data->drm_fd, prop_value);
+}
+
+bool crc_equal(igt_crc_t *a, igt_crc_t *b)
+{
+	return memcmp(a->crc, b->crc, sizeof(a->crc[0]) * a->n_words) == 0;
+}
+
+int
+pipe_set_property_blob_id(igt_pipe_t *pipe,
+			  enum igt_atomic_crtc_properties prop,
+			  uint32_t blob_id)
+{
+	int ret;
+
+	igt_pipe_obj_replace_prop_blob(pipe, prop, NULL, 0);
+
+	igt_pipe_obj_set_prop_value(pipe, prop, blob_id);
+
+	ret = igt_display_try_commit2(pipe->display,
+				      pipe->display->is_atomic ?
+				      COMMIT_ATOMIC : COMMIT_LEGACY);
+
+	igt_pipe_obj_set_prop_value(pipe, prop, 0);
+
+	return ret;
+}
+
+int
+pipe_set_property_blob(igt_pipe_t *pipe,
+		       enum igt_atomic_crtc_properties prop,
+		       void *ptr, size_t length)
+{
+	igt_pipe_obj_replace_prop_blob(pipe, prop, ptr, length);
+
+	return igt_display_try_commit2(pipe->display,
+				       pipe->display->is_atomic ?
+				       COMMIT_ATOMIC : COMMIT_LEGACY);
+}
+
+void
+invalid_gamma_lut_sizes(data_t *data)
+{
+	igt_display_t *display = &data->display;
+	igt_pipe_t *pipe = &display->pipes[0];
+	size_t gamma_lut_size = data->gamma_lut_size *
+				sizeof(struct drm_color_lut);
+	struct drm_color_lut *gamma_lut;
+
+	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_GAMMA_LUT));
+
+	gamma_lut = malloc(gamma_lut_size * 2);
+
+	igt_display_commit2(display,
+			    display->is_atomic ?
+			    COMMIT_ATOMIC : COMMIT_LEGACY);
+
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
+					     gamma_lut, 1), -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
+					     gamma_lut, gamma_lut_size + 1),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
+					     gamma_lut, gamma_lut_size - 1),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
+					     gamma_lut, gamma_lut_size +
+					     sizeof(struct drm_color_lut)),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_GAMMA_LUT,
+		      pipe->crtc_id), -EINVAL);
+	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_GAMMA_LUT,
+		      4096 * 4096), -EINVAL);
+
+	free(gamma_lut);
+}
+
+void
+invalid_degamma_lut_sizes(data_t *data)
+{
+	igt_display_t *display = &data->display;
+	igt_pipe_t *pipe = &display->pipes[0];
+	size_t degamma_lut_size = data->degamma_lut_size *
+				  sizeof(struct drm_color_lut);
+	struct drm_color_lut *degamma_lut;
+
+	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_DEGAMMA_LUT));
+
+	degamma_lut = malloc(degamma_lut_size * 2);
+
+	igt_display_commit2(display, display->is_atomic ?
+			    COMMIT_ATOMIC : COMMIT_LEGACY);
+
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
+					     degamma_lut, 1), -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
+					     degamma_lut, degamma_lut_size + 1),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
+					     degamma_lut, degamma_lut_size - 1),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
+					     degamma_lut, degamma_lut_size +
+					     sizeof(struct drm_color_lut)),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_DEGAMMA_LUT,
+						pipe->crtc_id), -EINVAL);
+	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_DEGAMMA_LUT,
+						4096 * 4096), -EINVAL);
+
+	free(degamma_lut);
+}
+
+void invalid_ctm_matrix_sizes(data_t *data)
+{
+	igt_display_t *display = &data->display;
+	igt_pipe_t *pipe = &display->pipes[0];
+	void *ptr;
+
+	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_CTM));
+
+	ptr = malloc(sizeof(struct drm_color_ctm) * 4);
+
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr, 1),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
+					     sizeof(struct drm_color_ctm) + 1),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
+					     sizeof(struct drm_color_ctm) - 1),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
+					     sizeof(struct drm_color_ctm) * 2),
+					     -EINVAL);
+	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_CTM,
+						pipe->crtc_id), -EINVAL);
+	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_CTM,
+						4096 * 4096), -EINVAL);
+
+	free(ptr);
+}
+
diff --git a/tests/meson.build b/tests/meson.build
index a79d22b..d80c1e8 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -19,7 +19,6 @@ test_progs = [
 	'kms_big_fb',
 	'kms_busy',
 	'kms_ccs',
-	'kms_color',
 	'kms_concurrent',
 	'kms_content_protection',
 	'kms_crtc_background_color',
@@ -357,6 +356,24 @@ executable('testdisplay', ['testdisplay.c', 'testdisplay_hotplug.c'],
 	   install : true)
 test_list += 'testdisplay'
 
+test_executables += executable('kms_color',
+	   [ 'kms_color.c', 'kms_color_helper.c' ],
+	   dependencies : test_deps,
+	   install_dir : libexecdir,
+	   install_rpath : libexecdir_rpathdir,
+	   install : true)
+test_list += 'kms_color'
+
+if chamelium.found()
+	test_executables += executable('kms_color_chamelium',
+			      [ 'kms_color_chamelium.c', 'kms_color_helper.c' ],
+			      dependencies : test_deps + [ chamelium ],
+			      install_dir : libexecdir,
+			      install_rpath : libexecdir_rpathdir,
+			      install : true)
+	test_list += 'kms_color_chamelium'
+endif
+
 test_executables += executable('sw_sync', 'sw_sync.c',
 	   dependencies : test_deps + [ libatomic ],
 	   install_dir : libexecdir,
-- 
2.7.4

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

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

* [igt-dev] [PATCH i-g-t v4 3/4] tests/kms_color_chamelium: add subtests to validate color
  2020-01-23  8:00 [igt-dev] [PATCH i-g-t v4 0/4] validate color tests using chamelium Kunal Joshi
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 1/4] lib/igt_chamelium Added chamelium_frame_match_or_dumpn which returns bool that the captured frame matches with reference framebuffer Kunal Joshi
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 2/4] Moved common function in kms_color and kms_color_chamelium to kms_color_helper.c Kunal Joshi
@ 2020-01-23  8:00 ` Kunal Joshi
  2020-01-24 10:11   ` Petri Latvala
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 4/4] HAX: Run in BAT Kunal Joshi
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Kunal Joshi @ 2020-01-23  8:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, ville.syrjala, petri.latvala, daniel.vetter

To validate color subtests using chamelium, subtests modified
to do frame dump comparison instead of crc comparison.
Tests require chamelium and will validate color features
at pipe level.

(v2)
        Comparing framedump with framebuffer reference instead of
        comparing two framedump.
(v3)
        Moved common functions with kms_color to lib/igt_color
(v4)
        Added changes to skip the tests if there is no connected port with
        chamelium.
        Rearranged position of valid_output.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
Suggested-by: Uma Shankar <uma.shankar@intel.com>
---
 tests/kms_color_chamelium.c | 759 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 759 insertions(+)
 create mode 100644 tests/kms_color_chamelium.c

diff --git a/tests/kms_color_chamelium.c b/tests/kms_color_chamelium.c
new file mode 100644
index 0000000..b6b6731
--- /dev/null
+++ b/tests/kms_color_chamelium.c
@@ -0,0 +1,759 @@
+/*
+ * Copyright © 2020 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+#include "kms_color.h"
+
+IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
+
+/*
+ * Draw 3 gradient rectangles in red, green and blue, with a maxed out
+ * degamma LUT and verify we have the same frame dump as drawing solid color
+ * rectangles with linear degamma LUT.
+ */
+static void test_pipe_degamma(data_t *data,
+			      igt_plane_t *primary)
+{
+	igt_output_t *output;
+	gamma_lut_t *degamma_linear, *degamma_full;
+	gamma_lut_t *gamma_linear;
+	color_t red_green_blue[] = {
+		{ 1.0, 0.0, 0.0 },
+		{ 0.0, 1.0, 0.0 },
+		{ 0.0, 0.0, 1.0 }
+	};
+
+	int i;
+	struct chamelium_port *port;
+	char *connected_ports[4];
+
+	for (i = 0; i < data->port_count; i++)
+		connected_ports[i] =
+			(char *) chamelium_port_get_name(data->ports[i]);
+
+	igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_DEGAMMA_LUT));
+	igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_LUT));
+
+	degamma_linear = generate_table(data->degamma_lut_size, 1.0);
+	degamma_full = generate_table_max(data->degamma_lut_size);
+
+	gamma_linear = generate_table(data->gamma_lut_size, 1.0);
+
+	for_each_valid_output_on_pipe(&data->display,
+				      primary->pipe->pipe,
+				      output) {
+		drmModeModeInfo *mode;
+		struct igt_fb fb_modeset, fb, fbref;
+		struct chamelium_frame_dump *frame_fullcolors;
+		int fb_id, fb_modeset_id, fbref_id;
+		bool valid_output = false;
+
+		for (i = 0; i < data->port_count; i++)
+			valid_output |=
+				(strcmp(output->name, connected_ports[i]) == 0);
+		if (!valid_output)
+			continue;
+		else
+			for (i = 0; i < data->port_count; i++)
+				if (strcmp(output->name,
+					   connected_ports[i]) == 0)
+					port = data->ports[i];
+
+		igt_output_set_pipe(output, primary->pipe->pipe);
+		mode = igt_output_get_mode(output);
+
+		/* Create a framebuffer at the size of the output. */
+		fb_id = igt_create_fb(data->drm_fd,
+				      mode->hdisplay,
+				      mode->vdisplay,
+				      DRM_FORMAT_XRGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE,
+				      &fb);
+		igt_assert(fb_id);
+
+		fb_modeset_id = igt_create_fb(data->drm_fd,
+					      mode->hdisplay,
+					      mode->vdisplay,
+					      DRM_FORMAT_XRGB8888,
+					      LOCAL_DRM_FORMAT_MOD_NONE,
+					      &fb_modeset);
+		igt_assert(fb_modeset_id);
+
+		fbref_id = igt_create_fb(data->drm_fd,
+					      mode->hdisplay,
+					      mode->vdisplay,
+					      DRM_FORMAT_XRGB8888,
+					      LOCAL_DRM_FORMAT_MOD_NONE,
+					      &fbref);
+		igt_assert(fbref_id);
+
+		igt_plane_set_fb(primary, &fb_modeset);
+		disable_ctm(primary->pipe);
+		disable_degamma(primary->pipe);
+		set_gamma(data, primary->pipe, gamma_linear);
+		igt_display_commit(&data->display);
+
+		/* Draw solid colors with no degamma transformation. */
+		paint_rectangles(data, mode, red_green_blue, &fbref);
+
+		/* Draw a gradient with degamma LUT to remap all
+		 * values to max red/green/blue.
+		 */
+		paint_gradient_rectangles(data, mode, red_green_blue, &fb);
+		igt_plane_set_fb(primary, &fb);
+		set_degamma(data, primary->pipe, degamma_full);
+		igt_display_commit(&data->display);
+		chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1);
+		frame_fullcolors =
+			chamelium_read_captured_frame(data->chamelium, 0);
+
+		/* Verify that the framebuffer reference of the software
+		 * computed output is equal to the frame dump of the degamma
+		 * LUT transformation output.
+		 */
+		chamelium_frame_match_or_dump(data->chamelium, port,
+					      frame_fullcolors, &fbref,
+					      CHAMELIUM_CHECK_ANALOG);
+
+		igt_plane_set_fb(primary, NULL);
+		igt_output_set_pipe(output, PIPE_NONE);
+	}
+
+	free_lut(degamma_linear);
+	free_lut(degamma_full);
+	free_lut(gamma_linear);
+}
+
+/*
+ * Draw 3 gradient rectangles in red, green and blue, with a maxed out
+ * gamma LUT and verify we have the same frame dump as drawing solid
+ * color rectangles.
+ */
+static void test_pipe_gamma(data_t *data,
+			    igt_plane_t *primary)
+{
+	igt_output_t *output;
+	gamma_lut_t *gamma_full;
+	color_t red_green_blue[] = {
+		{ 1.0, 0.0, 0.0 },
+		{ 0.0, 1.0, 0.0 },
+		{ 0.0, 0.0, 1.0 }
+	};
+
+	int i;
+	struct chamelium_port *port;
+	char *connected_ports[4];
+
+	for (i = 0; i < data->port_count; i++)
+		connected_ports[i] =
+			(char *) chamelium_port_get_name(data->ports[i]);
+
+	igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_LUT));
+
+	gamma_full = generate_table_max(data->gamma_lut_size);
+
+	for_each_valid_output_on_pipe(&data->display,
+				      primary->pipe->pipe,
+				      output) {
+		drmModeModeInfo *mode;
+		struct igt_fb fb_modeset, fb, fbref;
+		struct chamelium_frame_dump *frame_fullcolors;
+		int fb_id, fb_modeset_id, fbref_id;
+		bool valid_output = false;
+
+		for (i = 0; i < data->port_count; i++)
+			valid_output |=
+				(strcmp(output->name, connected_ports[i]) == 0);
+		if (!valid_output)
+			continue;
+		else
+			for (i = 0; i < data->port_count; i++)
+				if (strcmp(output->name,
+					   connected_ports[i]) == 0)
+					port = data->ports[i];
+
+		igt_output_set_pipe(output, primary->pipe->pipe);
+		mode = igt_output_get_mode(output);
+
+		/* Create a framebuffer at the size of the output. */
+		fb_id = igt_create_fb(data->drm_fd,
+				      mode->hdisplay,
+				      mode->vdisplay,
+				      DRM_FORMAT_XRGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE,
+				      &fb);
+		igt_assert(fb_id);
+
+		fb_modeset_id = igt_create_fb(data->drm_fd,
+					      mode->hdisplay,
+					      mode->vdisplay,
+					      DRM_FORMAT_XRGB8888,
+					      LOCAL_DRM_FORMAT_MOD_NONE,
+					      &fb_modeset);
+		igt_assert(fb_modeset_id);
+
+		fbref_id = igt_create_fb(data->drm_fd,
+				      mode->hdisplay,
+				      mode->vdisplay,
+				      DRM_FORMAT_XRGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE,
+				      &fbref);
+		igt_assert(fbref_id);
+
+		igt_plane_set_fb(primary, &fb_modeset);
+		disable_ctm(primary->pipe);
+		disable_degamma(primary->pipe);
+		set_gamma(data, primary->pipe, gamma_full);
+		igt_display_commit(&data->display);
+
+		/* Draw solid colors with no gamma transformation. */
+		paint_rectangles(data, mode, red_green_blue, &fbref);
+
+		/* Draw a gradient with gamma LUT to remap all values
+		 * to max red/green/blue.
+		 */
+		paint_gradient_rectangles(data, mode, red_green_blue, &fb);
+		igt_plane_set_fb(primary, &fb);
+		igt_display_commit(&data->display);
+		chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1);
+		frame_fullcolors =
+			chamelium_read_captured_frame(data->chamelium, 0);
+
+		/* Verify that the framebuffer reference of the software computed
+		 * output is equal to the frame dump of the degamma LUT
+		 * transformation output.
+		 */
+		chamelium_frame_match_or_dump(data->chamelium, port,
+					      frame_fullcolors, &fbref,
+					      CHAMELIUM_CHECK_ANALOG);
+
+		igt_plane_set_fb(primary, NULL);
+		igt_output_set_pipe(output, PIPE_NONE);
+	}
+
+	free_lut(gamma_full);
+}
+
+/*
+ * Draw 3 rectangles using before colors with the ctm matrix apply and verify
+ * the frame dump is equal to using after colors with an identify ctm matrix.
+ */
+static bool test_pipe_ctm(data_t *data,
+			  igt_plane_t *primary,
+			  color_t *before,
+			  color_t *after,
+			  double *ctm_matrix)
+{
+	gamma_lut_t *degamma_linear, *gamma_linear;
+	igt_output_t *output;
+
+	int i;
+	bool ret = true;
+	struct chamelium_port *port;
+	char *connected_ports[4];
+
+	igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_CTM));
+
+	for (i = 0; i < data->port_count; i++)
+		connected_ports[i] =
+			(char *) chamelium_port_get_name(data->ports[i]);
+
+	degamma_linear = generate_table(data->degamma_lut_size, 1.0);
+	gamma_linear = generate_table(data->gamma_lut_size, 1.0);
+
+	for_each_valid_output_on_pipe(&data->display,
+				      primary->pipe->pipe,
+				      output) {
+		drmModeModeInfo *mode;
+		struct igt_fb fb_modeset, fb, fbref;
+		struct chamelium_frame_dump *frame_hardware;
+		int fb_id, fb_modeset_id, fbref_id;
+		bool valid_output = false;
+
+		for (i = 0; i < data->port_count; i++)
+			valid_output |=
+				(strcmp(output->name, connected_ports[i]) == 0);
+		if (!valid_output)
+			continue;
+		else
+			for (i = 0; i < data->port_count; i++)
+				if (strcmp(output->name,
+					   connected_ports[i]) == 0)
+					port = data->ports[i];
+
+		igt_output_set_pipe(output, primary->pipe->pipe);
+		mode = igt_output_get_mode(output);
+
+		/* Create a framebuffer at the size of the output. */
+		fb_id = igt_create_fb(data->drm_fd,
+				      mode->hdisplay,
+				      mode->vdisplay,
+				      DRM_FORMAT_XRGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE,
+				      &fb);
+		igt_assert(fb_id);
+
+		fb_modeset_id = igt_create_fb(data->drm_fd,
+					      mode->hdisplay,
+					      mode->vdisplay,
+					      DRM_FORMAT_XRGB8888,
+					      LOCAL_DRM_FORMAT_MOD_NONE,
+					      &fb_modeset);
+		igt_assert(fb_modeset_id);
+
+		fbref_id = igt_create_fb(data->drm_fd,
+				      mode->hdisplay,
+				      mode->vdisplay,
+				      DRM_FORMAT_XRGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE,
+				      &fbref);
+		igt_assert(fbref_id);
+
+		igt_plane_set_fb(primary, &fb_modeset);
+
+		if (memcmp(before, after, sizeof(color_t))) {
+			set_degamma(data, primary->pipe, degamma_linear);
+			set_gamma(data, primary->pipe, gamma_linear);
+		} else {
+			/* Disable Degamma and Gamma for ctm max test */
+			disable_degamma(primary->pipe);
+			disable_gamma(primary->pipe);
+		}
+
+		disable_ctm(primary->pipe);
+		igt_display_commit(&data->display);
+
+		paint_rectangles(data, mode, after, &fbref);
+
+		/* With CTM transformation. */
+		paint_rectangles(data, mode, before, &fb);
+		igt_plane_set_fb(primary, &fb);
+		set_ctm(primary->pipe, ctm_matrix);
+		igt_display_commit(&data->display);
+		chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1);
+		frame_hardware =
+			chamelium_read_captured_frame(data->chamelium, 0);
+
+		/* Verify that the framebuffer reference of the software
+		 * computed output is equal to the frame dump of the CTM
+		 * matrix transformation output.
+		 */
+		ret &= chamelium_frame_match_or_dump(data->chamelium, port,
+						     frame_hardware,
+						     &fbref,
+						     CHAMELIUM_CHECK_ANALOG);
+
+		igt_plane_set_fb(primary, NULL);
+		igt_output_set_pipe(output, PIPE_NONE);
+	}
+
+	free_lut(degamma_linear);
+	free_lut(gamma_linear);
+
+	return ret;
+}
+
+static void test_pipe_limited_range_ctm(data_t *data,
+					igt_plane_t *primary)
+{
+	double limited_result = 235.0 / 255.0;
+	color_t red_green_blue_limited[] = {
+		{ limited_result, 0.0, 0.0 },
+		{ 0.0, limited_result, 0.0 },
+		{ 0.0, 0.0, limited_result }
+	};
+	color_t red_green_blue_full[] = {
+		{ 0.5, 0.0, 0.0 },
+		{ 0.0, 0.5, 0.0 },
+		{ 0.0, 0.0, 0.5 }
+	};
+	double ctm[] = { 1.0, 0.0, 0.0,
+			0.0, 1.0, 0.0,
+			0.0, 0.0, 1.0 };
+	gamma_lut_t *degamma_linear, *gamma_linear;
+	igt_output_t *output;
+	bool has_broadcast_rgb_output = false;
+
+	int i;
+	struct chamelium_port *port;
+	char *connected_ports[4];
+
+	degamma_linear = generate_table(data->degamma_lut_size, 1.0);
+	gamma_linear = generate_table(data->gamma_lut_size, 1.0);
+
+	for (i = 0; i < data->port_count; i++)
+		connected_ports[i] =
+			(char *) chamelium_port_get_name(data->ports[i]);
+
+	for_each_valid_output_on_pipe(&data->display,
+				      primary->pipe->pipe,
+				      output) {
+		drmModeModeInfo *mode;
+		struct igt_fb fb_modeset, fb, fbref;
+		struct chamelium_frame_dump *frame_limited;
+		int fb_id, fb_modeset_id, fbref_id;
+		bool valid_output = false;
+
+		for (i = 0; i < data->port_count; i++)
+			valid_output |=
+				(strcmp(output->name, connected_ports[i]) == 0);
+		if (!valid_output)
+			continue;
+		else
+			for (i = 0; i < data->port_count; i++)
+				if (strcmp(output->name,
+				    connected_ports[i]) == 0)
+					port = data->ports[i];
+
+		if (!igt_output_has_prop(output, IGT_CONNECTOR_BROADCAST_RGB))
+			continue;
+
+		has_broadcast_rgb_output = true;
+
+		igt_output_set_pipe(output, primary->pipe->pipe);
+		mode = igt_output_get_mode(output);
+
+		/* Create a framebuffer at the size of the output. */
+		fb_id = igt_create_fb(data->drm_fd,
+				      mode->hdisplay,
+				      mode->vdisplay,
+				      DRM_FORMAT_XRGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE,
+				      &fb);
+		igt_assert(fb_id);
+
+		fb_modeset_id = igt_create_fb(data->drm_fd,
+					      mode->hdisplay,
+					      mode->vdisplay,
+					      DRM_FORMAT_XRGB8888,
+					      LOCAL_DRM_FORMAT_MOD_NONE,
+					      &fb_modeset);
+		igt_assert(fb_modeset_id);
+
+		fbref_id = igt_create_fb(data->drm_fd,
+				      mode->hdisplay,
+				      mode->vdisplay,
+				      DRM_FORMAT_XRGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE,
+				      &fbref);
+		igt_assert(fbref_id);
+
+		igt_plane_set_fb(primary, &fb_modeset);
+
+		set_degamma(data, primary->pipe, degamma_linear);
+		set_gamma(data, primary->pipe, gamma_linear);
+		set_ctm(primary->pipe, ctm);
+
+		igt_output_set_prop_value(output,
+					  IGT_CONNECTOR_BROADCAST_RGB,
+					  BROADCAST_RGB_FULL);
+		paint_rectangles(data, mode, red_green_blue_limited, &fb);
+		igt_plane_set_fb(primary, &fb);
+		igt_display_commit(&data->display);
+
+		/* Set the output into limited range. */
+		igt_output_set_prop_value(output,
+					  IGT_CONNECTOR_BROADCAST_RGB,
+					  BROADCAST_RGB_16_235);
+		paint_rectangles(data, mode, red_green_blue_full, &fb);
+
+		/* And reset.. */
+		igt_output_set_prop_value(output,
+					  IGT_CONNECTOR_BROADCAST_RGB,
+					  BROADCAST_RGB_FULL);
+		igt_plane_set_fb(primary, NULL);
+		igt_output_set_pipe(output, PIPE_NONE);
+		chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1);
+		frame_limited =
+			chamelium_read_captured_frame(data->chamelium, 0);
+
+
+		/* Verify that the framebuffer reference of the software
+		 * computed output is equal to the frame dump of the CTM
+		 * matrix transformation output.
+		 */
+		chamelium_frame_match_or_dump(data->chamelium, port,
+					      frame_limited, &fbref,
+					      CHAMELIUM_CHECK_ANALOG);
+
+	}
+
+	free_lut(gamma_linear);
+	free_lut(degamma_linear);
+
+	igt_require(has_broadcast_rgb_output);
+}
+
+static void
+run_tests_for_pipe(data_t *data, enum pipe p)
+{
+	igt_pipe_t *pipe;
+	igt_plane_t *primary;
+	double delta;
+	int i;
+	color_t red_green_blue[] = {
+		{ 1.0, 0.0, 0.0 },
+		{ 0.0, 1.0, 0.0 },
+		{ 0.0, 0.0, 1.0 }
+	};
+
+	igt_fixture {
+
+		igt_require(p < data->display.n_pipes);
+
+		pipe = &data->display.pipes[p];
+		igt_require(pipe->n_planes >= 0);
+
+		primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
+
+		if (igt_pipe_obj_has_prop(&data->display.pipes[p],
+					  IGT_CRTC_DEGAMMA_LUT_SIZE)) {
+			data->degamma_lut_size =
+				igt_pipe_obj_get_prop(&data->display.pipes[p],
+						IGT_CRTC_DEGAMMA_LUT_SIZE);
+			igt_assert_lt(0, data->degamma_lut_size);
+		}
+
+		if (igt_pipe_obj_has_prop(&data->display.pipes[p],
+					  IGT_CRTC_GAMMA_LUT_SIZE)) {
+			data->gamma_lut_size =
+				igt_pipe_obj_get_prop(&data->display.pipes[p],
+						      IGT_CRTC_GAMMA_LUT_SIZE);
+			igt_assert_lt(0, data->gamma_lut_size);
+		}
+
+		igt_display_require_output_on_pipe(&data->display, p);
+	}
+
+	data->color_depth = 8;
+	delta = 1.0 / (1 << data->color_depth);
+
+	igt_describe("Compare after applying ctm matrix & identity matrix");
+	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));
+	}
+
+	igt_describe("Compare after applying ctm matrix & identity matrix");
+	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_describe("Compare after applying ctm matrix & identity matrix");
+	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));
+	}
+
+	/* 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_describe("Compare after applying ctm matrix & identity matrix");
+	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);
+		}
+		igt_assert(success);
+	}
+
+	igt_describe("Compare after applying ctm matrix & identity matrix");
+	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_assert(success);
+	}
+
+	igt_describe("Compare after applying ctm matrix & identity matrix");
+	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_assert(success);
+	}
+
+	igt_describe("Compare after applying ctm matrix & identity matrix");
+	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_describe("Compare after applying ctm matrix & identity matrix");
+	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_describe("Compare after applying ctm matrix & identity matrix");
+	igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
+		test_pipe_limited_range_ctm(data, primary);
+
+	igt_describe("Compare maxed out gamma LUT and solid color linear LUT");
+	igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
+		test_pipe_degamma(data, primary);
+
+	igt_describe("Compare maxed out gamma LUT and solid color linear LUT");
+	igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
+		test_pipe_gamma(data, primary);
+
+	igt_fixture {
+		disable_degamma(primary->pipe);
+		disable_gamma(primary->pipe);
+		disable_ctm(primary->pipe);
+		igt_display_commit(&data->display);
+	}
+}
+
+igt_main
+{
+	data_t data = {};
+	enum pipe pipe;
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+		if (is_i915_device(data.drm_fd))
+			data.devid = intel_get_drm_devid(data.drm_fd);
+		data.chamelium = chamelium_init(data.drm_fd);
+		igt_require(data.chamelium);
+
+		data.ports = chamelium_get_ports(data.chamelium,
+						 &data.port_count);
+
+		if (!data.port_count)
+			igt_skip("No ports connected\n");
+
+		kmstest_set_vt_graphics_mode();
+		igt_display_require(&data.display, data.drm_fd);
+		igt_require(data.display.is_atomic);
+	}
+
+	for_each_pipe_static(pipe)
+		igt_subtest_group
+			run_tests_for_pipe(&data, pipe);
+	igt_describe("Negative test case gamma lut size");
+	igt_subtest_f("pipe-invalid-gamma-lut-sizes")
+		invalid_gamma_lut_sizes(&data);
+
+	igt_describe("Negative test case degamma lut size");
+	igt_subtest_f("pipe-invalid-degamma-lut-sizes")
+		invalid_degamma_lut_sizes(&data);
+
+	igt_describe("Negative test case ctm matrix size");
+	igt_subtest_f("pipe-invalid-ctm-matrix-sizes")
+		invalid_ctm_matrix_sizes(&data);
+
+	igt_fixture {
+		igt_display_fini(&data.display);
+	}
+}
-- 
2.7.4

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

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

* [igt-dev] [PATCH i-g-t v4 4/4] HAX: Run in BAT
  2020-01-23  8:00 [igt-dev] [PATCH i-g-t v4 0/4] validate color tests using chamelium Kunal Joshi
                   ` (2 preceding siblings ...)
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 3/4] tests/kms_color_chamelium: add subtests to validate color Kunal Joshi
@ 2020-01-23  8:00 ` Kunal Joshi
  2020-01-23 16:04 ` [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev4) Patchwork
  2020-01-25  0:12 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  5 siblings, 0 replies; 12+ messages in thread
From: Kunal Joshi @ 2020-01-23  8:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, ville.syrjala, petri.latvala, daniel.vetter

For running test on BAT machines.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
Suggested-by: Uma Shankar <uma.shankar@intel.com>
---
 tests/intel-ci/fast-feedback.testlist | 66 +++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)

diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index 40d273c..5dfe43d 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -165,6 +165,72 @@ igt@vgem_basic@dmabuf-mmap
 igt@vgem_basic@mmap
 igt@vgem_basic@second-client
 igt@vgem_basic@sysfs
+igt@kms_color_chamelium@pipe-A-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-A-ctm-green-to-red
+igt@kms_color_chamelium@pipe-A-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-A-ctm-0-25
+igt@kms_color_chamelium@pipe-A-ctm-0-5
+igt@kms_color_chamelium@pipe-A-ctm-0-75
+igt@kms_color_chamelium@pipe-A-ctm-max
+igt@kms_color_chamelium@pipe-A-ctm-negative
+igt@kms_color_chamelium@pipe-A-ctm-limited-range
+igt@kms_color_chamelium@pipe-A-degamma
+igt@kms_color_chamelium@pipe-A-gamma
+igt@kms_color_chamelium@pipe-B-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-B-ctm-green-to-red
+igt@kms_color_chamelium@pipe-B-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-B-ctm-0-25
+igt@kms_color_chamelium@pipe-B-ctm-0-5
+igt@kms_color_chamelium@pipe-B-ctm-0-75
+igt@kms_color_chamelium@pipe-B-ctm-max
+igt@kms_color_chamelium@pipe-B-ctm-negative
+igt@kms_color_chamelium@pipe-B-ctm-limited-range
+igt@kms_color_chamelium@pipe-B-degamma
+igt@kms_color_chamelium@pipe-B-gamma
+igt@kms_color_chamelium@pipe-C-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-C-ctm-green-to-red
+igt@kms_color_chamelium@pipe-C-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-C-ctm-0-25
+igt@kms_color_chamelium@pipe-C-ctm-0-5
+igt@kms_color_chamelium@pipe-C-ctm-0-75
+igt@kms_color_chamelium@pipe-C-ctm-max
+igt@kms_color_chamelium@pipe-C-ctm-negative
+igt@kms_color_chamelium@pipe-C-ctm-limited-range
+igt@kms_color_chamelium@pipe-C-degamma
+igt@kms_color_chamelium@pipe-C-gamma
+igt@kms_color_chamelium@pipe-D-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-D-ctm-green-to-red
+igt@kms_color_chamelium@pipe-D-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-D-ctm-0-25
+igt@kms_color_chamelium@pipe-D-ctm-0-5
+igt@kms_color_chamelium@pipe-D-ctm-0-75
+igt@kms_color_chamelium@pipe-D-ctm-max
+igt@kms_color_chamelium@pipe-D-ctm-negative
+igt@kms_color_chamelium@pipe-D-ctm-limited-range
+igt@kms_color_chamelium@pipe-D-degamma
+igt@kms_color_chamelium@pipe-D-gamma
+igt@kms_color_chamelium@pipe-E-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-E-ctm-green-to-red
+igt@kms_color_chamelium@pipe-E-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-E-ctm-0-25
+igt@kms_color_chamelium@pipe-E-ctm-0-5
+igt@kms_color_chamelium@pipe-E-ctm-0-75
+igt@kms_color_chamelium@pipe-E-ctm-max
+igt@kms_color_chamelium@pipe-E-ctm-negative
+igt@kms_color_chamelium@pipe-E-ctm-limited-range
+igt@kms_color_chamelium@pipe-E-degamma
+igt@kms_color_chamelium@pipe-E-gamma
+igt@kms_color_chamelium@pipe-F-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-F-ctm-green-to-red
+igt@kms_color_chamelium@pipe-F-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-F-ctm-0-25
+igt@kms_color_chamelium@pipe-F-ctm-0-5
+igt@kms_color_chamelium@pipe-F-ctm-0-75
+igt@kms_color_chamelium@pipe-F-ctm-max
+igt@kms_color_chamelium@pipe-F-ctm-negative
+igt@kms_color_chamelium@pipe-F-ctm-limited-range
+igt@kms_color_chamelium@pipe-F-degamma
+igt@kms_color_chamelium@pipe-F-gamma
 
 # All tests that do module unloading and reloading are executed last.
 # They will sometimes reveal issues of earlier tests leaving the
-- 
2.7.4

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

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

* [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev4)
  2020-01-23  8:00 [igt-dev] [PATCH i-g-t v4 0/4] validate color tests using chamelium Kunal Joshi
                   ` (3 preceding siblings ...)
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 4/4] HAX: Run in BAT Kunal Joshi
@ 2020-01-23 16:04 ` Patchwork
  2020-01-24 10:15   ` Petri Latvala
  2020-01-25  0:12 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  5 siblings, 1 reply; 12+ messages in thread
From: Patchwork @ 2020-01-23 16:04 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

== Series Details ==

Series: validate color tests using chamelium. (rev4)
URL   : https://patchwork.freedesktop.org/series/72006/
State : success

== Summary ==

CI Bug Log - changes from IGT_5382 -> IGTPW_3981
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

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

### IGT changes ###

#### Possible regressions ####

  * {igt@kms_color_chamelium@pipe-a-ctm-0-75} (NEW):
    - fi-icl-u2:          NOTRUN -> [FAIL][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-icl-u2/igt@kms_color_chamelium@pipe-a-ctm-0-75.html

  * {igt@kms_color_chamelium@pipe-c-ctm-limited-range} (NEW):
    - fi-skl-6700k2:      NOTRUN -> [FAIL][2] +65 similar issues
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-skl-6700k2/igt@kms_color_chamelium@pipe-c-ctm-limited-range.html

  
New tests
---------

  New tests have been introduced between IGT_5382 and IGTPW_3981:

### New IGT tests (66) ###

  * igt@kms_color_chamelium@pipe-a-ctm-0-25:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 109.84] s

  * igt@kms_color_chamelium@pipe-a-ctm-0-5:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 109.88] s

  * igt@kms_color_chamelium@pipe-a-ctm-0-75:
    - Statuses : 2 fail(s) 2 pass(s) 38 skip(s)
    - Exec time: [0.0, 160.99] s

  * igt@kms_color_chamelium@pipe-a-ctm-blue-to-red:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 23.09] s

  * igt@kms_color_chamelium@pipe-a-ctm-green-to-red:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 21.57] s

  * igt@kms_color_chamelium@pipe-a-ctm-limited-range:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 23.16] s

  * igt@kms_color_chamelium@pipe-a-ctm-max:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 23.04] s

  * igt@kms_color_chamelium@pipe-a-ctm-negative:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 23.07] s

  * igt@kms_color_chamelium@pipe-a-ctm-red-to-blue:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 23.07] s

  * igt@kms_color_chamelium@pipe-a-degamma:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 23.13] s

  * igt@kms_color_chamelium@pipe-a-gamma:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 21.58] s

  * igt@kms_color_chamelium@pipe-b-ctm-0-25:
    - Statuses : 1 fail(s) 2 pass(s) 38 skip(s)
    - Exec time: [0.0, 109.44] s

  * igt@kms_color_chamelium@pipe-b-ctm-0-5:
    - Statuses : 1 fail(s) 1 pass(s) 38 skip(s)
    - Exec time: [0.0, 88.14] s

  * igt@kms_color_chamelium@pipe-b-ctm-0-75:
    - Statuses : 1 fail(s) 1 pass(s) 38 skip(s)
    - Exec time: [0.0, 123.50] s

  * igt@kms_color_chamelium@pipe-b-ctm-blue-to-red:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 21.11] s

  * igt@kms_color_chamelium@pipe-b-ctm-green-to-red:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 22.91] s

  * igt@kms_color_chamelium@pipe-b-ctm-limited-range:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-max:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-negative:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-red-to-blue:
    - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
    - Exec time: [0.0, 23.01] s

  * igt@kms_color_chamelium@pipe-b-degamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-gamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-0-25:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-0-5:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-0-75:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-blue-to-red:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-green-to-red:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-limited-range:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-max:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-negative:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-red-to-blue:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-degamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-gamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-0-25:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-0-5:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-0-75:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-blue-to-red:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-green-to-red:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-limited-range:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-max:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-negative:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-red-to-blue:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-degamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-gamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-0-25:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-0-5:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-0-75:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-blue-to-red:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-green-to-red:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-limited-range:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-max:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-negative:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-ctm-red-to-blue:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-degamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-e-gamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-0-25:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-0-5:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-0-75:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-blue-to-red:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-green-to-red:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-limited-range:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-max:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-negative:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-ctm-red-to-blue:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-degamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-f-gamma:
    - Statuses : 1 fail(s) 38 skip(s)
    - Exec time: [0.0] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_close_race@basic-process:
    - fi-byt-j1900:       [PASS][3] -> [FAIL][4] ([i915#694])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-byt-j1900/igt@gem_close_race@basic-process.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-byt-j1900/igt@gem_close_race@basic-process.html

  * igt@gem_ctx_param@basic:
    - fi-tgl-y:           [PASS][5] -> [DMESG-WARN][6] ([CI#94] / [i915#402]) +2 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-tgl-y/igt@gem_ctx_param@basic.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-tgl-y/igt@gem_ctx_param@basic.html

  * igt@i915_selftest@live_blt:
    - fi-bsw-n3050:       [PASS][7] -> [DMESG-FAIL][8] ([i915#723])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-bsw-n3050/igt@i915_selftest@live_blt.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-bsw-n3050/igt@i915_selftest@live_blt.html

  
#### Possible fixes ####

  * igt@gem_close_race@basic-threads:
    - fi-byt-j1900:       [INCOMPLETE][9] ([i915#45]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-byt-j1900/igt@gem_close_race@basic-threads.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-byt-j1900/igt@gem_close_race@basic-threads.html

  * igt@gem_exec_suspend@basic-s4-devices:
    - fi-tgl-y:           [FAIL][11] ([CI#94]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-tgl-y/igt@gem_exec_suspend@basic-s4-devices.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-tgl-y/igt@gem_exec_suspend@basic-s4-devices.html

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-skl-lmem:        [INCOMPLETE][13] ([i915#671] / [i915#971]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_selftest@live_blt:
    - fi-ivb-3770:        [DMESG-FAIL][15] ([i915#725]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-ivb-3770/igt@i915_selftest@live_blt.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-ivb-3770/igt@i915_selftest@live_blt.html
    - fi-hsw-4770:        [DMESG-FAIL][17] ([i915#725]) -> [PASS][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-hsw-4770/igt@i915_selftest@live_blt.html
    - fi-hsw-4770r:       [DMESG-FAIL][19] ([i915#553] / [i915#725]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem_contexts:
    - fi-hsw-peppy:       [DMESG-FAIL][21] ([i915#722]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html

  * igt@kms_addfb_basic@invalid-set-prop-any:
    - fi-tgl-y:           [DMESG-WARN][23] ([CI#94] / [i915#402]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-tgl-y/igt@kms_addfb_basic@invalid-set-prop-any.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-tgl-y/igt@kms_addfb_basic@invalid-set-prop-any.html

  * igt@kms_frontbuffer_tracking@basic:
    - fi-hsw-peppy:       [DMESG-WARN][25] ([i915#44]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html

  
#### Warnings ####

  * igt@gem_exec_parallel@contexts:
    - fi-byt-n2820:       [FAIL][27] ([i915#694]) -> [TIMEOUT][28] ([fdo#112271])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-byt-n2820/igt@gem_exec_parallel@contexts.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-byt-n2820/igt@gem_exec_parallel@contexts.html

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

  [CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#1017]: https://gitlab.freedesktop.org/drm/intel/issues/1017
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
  [i915#44]: https://gitlab.freedesktop.org/drm/intel/issues/44
  [i915#45]: https://gitlab.freedesktop.org/drm/intel/issues/45
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#671]: https://gitlab.freedesktop.org/drm/intel/issues/671
  [i915#694]: https://gitlab.freedesktop.org/drm/intel/issues/694
  [i915#722]: https://gitlab.freedesktop.org/drm/intel/issues/722
  [i915#723]: https://gitlab.freedesktop.org/drm/intel/issues/723
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#971]: https://gitlab.freedesktop.org/drm/intel/issues/971


Participating hosts (53 -> 45)
------------------------------

  Missing    (8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-kbl-7560u fi-byt-clapper fi-bdw-samus 


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

  * CI: CI-20190529 -> None
  * IGT: IGT_5382 -> IGTPW_3981

  CI-20190529: 20190529
  CI_DRM_7802: cd932df72f11bdff93423a8d4a9e0e9ccb0985d7 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_3981: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/index.html
  IGT_5382: 8dbe5ce61baa2d563d4dd7c56a018bb1e1077467 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@kms_color_chamelium@pipe-a-ctm-0-5
+igt@kms_color_chamelium@pipe-a-ctm-0-25
+igt@kms_color_chamelium@pipe-a-ctm-0-75
+igt@kms_color_chamelium@pipe-a-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-a-ctm-green-to-red
+igt@kms_color_chamelium@pipe-a-ctm-limited-range
+igt@kms_color_chamelium@pipe-a-ctm-max
+igt@kms_color_chamelium@pipe-a-ctm-negative
+igt@kms_color_chamelium@pipe-a-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-a-degamma
+igt@kms_color_chamelium@pipe-a-gamma
+igt@kms_color_chamelium@pipe-b-ctm-0-5
+igt@kms_color_chamelium@pipe-b-ctm-0-25
+igt@kms_color_chamelium@pipe-b-ctm-0-75
+igt@kms_color_chamelium@pipe-b-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-b-ctm-green-to-red
+igt@kms_color_chamelium@pipe-b-ctm-limited-range
+igt@kms_color_chamelium@pipe-b-ctm-max
+igt@kms_color_chamelium@pipe-b-ctm-negative
+igt@kms_color_chamelium@pipe-b-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-b-degamma
+igt@kms_color_chamelium@pipe-b-gamma
+igt@kms_color_chamelium@pipe-c-ctm-0-5
+igt@kms_color_chamelium@pipe-c-ctm-0-25
+igt@kms_color_chamelium@pipe-c-ctm-0-75
+igt@kms_color_chamelium@pipe-c-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-c-ctm-green-to-red
+igt@kms_color_chamelium@pipe-c-ctm-limited-range
+igt@kms_color_chamelium@pipe-c-ctm-max
+igt@kms_color_chamelium@pipe-c-ctm-negative
+igt@kms_color_chamelium@pipe-c-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-c-degamma
+igt@kms_color_chamelium@pipe-c-gamma
+igt@kms_color_chamelium@pipe-d-ctm-0-5
+igt@kms_color_chamelium@pipe-d-ctm-0-25
+igt@kms_color_chamelium@pipe-d-ctm-0-75
+igt@kms_color_chamelium@pipe-d-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-d-ctm-green-to-red
+igt@kms_color_chamelium@pipe-d-ctm-limited-range
+igt@kms_color_chamelium@pipe-d-ctm-max
+igt@kms_color_chamelium@pipe-d-ctm-negative
+igt@kms_color_chamelium@pipe-d-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-d-degamma
+igt@kms_color_chamelium@pipe-d-gamma
+igt@kms_color_chamelium@pipe-e-ctm-0-5
+igt@kms_color_chamelium@pipe-e-ctm-0-25
+igt@kms_color_chamelium@pipe-e-ctm-0-75
+igt@kms_color_chamelium@pipe-e-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-e-ctm-green-to-red
+igt@kms_color_chamelium@pipe-e-ctm-limited-range
+igt@kms_color_chamelium@pipe-e-ctm-max
+igt@kms_color_chamelium@pipe-e-ctm-negative
+igt@kms_color_chamelium@pipe-e-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-e-degamma
+igt@kms_color_chamelium@pipe-e-gamma
+igt@kms_color_chamelium@pipe-f-ctm-0-5
+igt@kms_color_chamelium@pipe-f-ctm-0-25
+igt@kms_color_chamelium@pipe-f-ctm-0-75
+igt@kms_color_chamelium@pipe-f-ctm-blue-to-red
+igt@kms_color_chamelium@pipe-f-ctm-green-to-red
+igt@kms_color_chamelium@pipe-f-ctm-limited-range
+igt@kms_color_chamelium@pipe-f-ctm-max
+igt@kms_color_chamelium@pipe-f-ctm-negative
+igt@kms_color_chamelium@pipe-f-ctm-red-to-blue
+igt@kms_color_chamelium@pipe-f-degamma
+igt@kms_color_chamelium@pipe-f-gamma
+igt@kms_color_chamelium@pipe-invalid-ctm-matrix-sizes
+igt@kms_color_chamelium@pipe-invalid-degamma-lut-sizes
+igt@kms_color_chamelium@pipe-invalid-gamma-lut-sizes

== Logs ==

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

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

* Re: [igt-dev] [PATCH i-g-t v4 1/4] lib/igt_chamelium Added chamelium_frame_match_or_dumpn which returns bool that the captured frame matches with reference framebuffer
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 1/4] lib/igt_chamelium Added chamelium_frame_match_or_dumpn which returns bool that the captured frame matches with reference framebuffer Kunal Joshi
@ 2020-01-24 10:01   ` Petri Latvala
  0 siblings, 0 replies; 12+ messages in thread
From: Petri Latvala @ 2020-01-24 10:01 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: ville.syrjala, igt-dev, daniel.vetter

The subject line needs to be shortened.

How about

lib/chamelium: Add a non-asserting frame match function

On Thu, Jan 23, 2020 at 01:30:39PM +0530, Kunal Joshi wrote:
> Added chamelium_frame_match_or_dump which returns bool that the captured
> frame matches with reference framebuffer.
> 
> (v2)
>         Removed previously added function chamelium_assert_frame_dump_eq.
> 
> (v3)
>         No change.
> 
> (v4)
>         Removed duplicate function code chamelium_assert_frame_dump_match
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
> Suggested-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  lib/igt_chamelium.c | 25 +++++++++++++++++++++++--
>  lib/igt_chamelium.h |  5 +++++
>  2 files changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
> index 9971f51..95166e2 100644
> --- a/lib/igt_chamelium.c
> +++ b/lib/igt_chamelium.c
> @@ -1583,6 +1583,27 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium,
>  					  struct igt_fb *fb,
>  					  enum chamelium_check check)
>  {
> +	igt_assert(chamelium_frame_match_or_dump(chamelium, port,
> +						 frame, fb, check));
> +}
> +
> +/**
> + * chamelium_assert_frame_match_or_dump:
               ^^^^^^^
	       wrong name here



Otherwise LGTM.

With those fixed,
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH i-g-t v4 2/4] Moved common function in kms_color and kms_color_chamelium to kms_color_helper.c
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 2/4] Moved common function in kms_color and kms_color_chamelium to kms_color_helper.c Kunal Joshi
@ 2020-01-24 10:07   ` Petri Latvala
  2020-01-24 10:38     ` Petri Latvala
  0 siblings, 1 reply; 12+ messages in thread
From: Petri Latvala @ 2020-01-24 10:07 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: ville.syrjala, igt-dev, daniel.vetter

On Thu, Jan 23, 2020 at 01:30:40PM +0530, Kunal Joshi wrote:
> kms_color and kms_color_chamelium shared common functions.
> Moved them to tests/kms_color_helper.c to avoid code duplication.
> 
> (v4)
>         Made a library kms_color_helper.c which is specific to
>         kms_color and kms_color_chamelium.
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
> Suggested-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  tests/Makefile.am        |   3 +
>  tests/Makefile.sources   |  13 +-
>  tests/kms_color.c        | 383 +---------------------------------------------
>  tests/kms_color.h        | 105 +++++++++++++
>  tests/kms_color_helper.c | 386 +++++++++++++++++++++++++++++++++++++++++++++++
>  tests/meson.build        |  19 ++-
>  6 files changed, 525 insertions(+), 384 deletions(-)
>  create mode 100644 tests/kms_color.h
>  create mode 100644 tests/kms_color_helper.c
> 
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index fc30524..87ffec2 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -13,11 +13,14 @@ endif
>  if HAVE_CHAMELIUM
>  TESTS_progs += \
>  	kms_chamelium \
> +	kms_color_chamelium \
>  	$(NULL)
>  endif
>  
>  TESTS_progs += testdisplay
>  
> +TESTS_progs += kms_color
> +
>  if BUILD_TESTS
>  test-list.txt: Makefile
>  	@echo TESTLIST > $@
> diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> index 806eb02..c9b7aea 100644
> --- a/tests/Makefile.sources
> +++ b/tests/Makefile.sources
> @@ -35,7 +35,6 @@ TESTS_progs = \
>  	kms_big_fb \
>  	kms_busy \
>  	kms_ccs \
> -	kms_color \
>  	kms_concurrent \
>  	kms_content_protection\
>  	kms_crtc_background_color \
> @@ -590,6 +589,18 @@ testdisplay_SOURCES = \
>  	testdisplay_hotplug.c \
>  	$(NULL)
>  
> +kms_color_SOURCES = \
> +        kms_color.c \
> +        kms_color.h \
> +        kms_color_helper.c \
> +        $(NULL)
> +
> +kms_color_chamelium_SOURCES = \
> +        kms_color_chamelium.c \
> +        kms_color.h \
> +        kms_color_helper.c \
> +        $(NULL)
> +
>  check_SCRIPTS = igt_command_line.sh \
>  	$(NULL)
>  
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index b4b578a..864f42a 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -22,252 +22,10 @@
>   *
>   */
>  
> -#include <math.h>
> -#include <unistd.h>
> -
> -#include "drm.h"
> -#include "drmtest.h"
> -#include "igt.h"
> +#include "kms_color.h"
>  
>  IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
>  
> -/* Internal */
> -typedef struct {
> -	double r, g, b;
> -} color_t;
> -
> -typedef struct {
> -	int drm_fd;
> -	uint32_t devid;
> -	igt_display_t display;
> -	igt_pipe_crc_t *pipe_crc;
> -
> -	uint32_t color_depth;
> -	uint64_t degamma_lut_size;
> -	uint64_t gamma_lut_size;
> -} data_t;
> -
> -typedef struct {
> -	int size;
> -	double coeffs[];
> -} gamma_lut_t;
> -
> -static void paint_gradient_rectangles(data_t *data,
> -				      drmModeModeInfo *mode,
> -				      color_t *colors,
> -				      struct igt_fb *fb)
> -{
> -	cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, fb);
> -	int i, l = mode->hdisplay / 3;
> -	int rows_remaining = mode->hdisplay % 3;
> -
> -	/* Paint 3 gradient rectangles with red/green/blue between 1.0 and
> -	 * 0.5. We want to avoid 0 so each max LUTs only affect their own
> -	 * rectangle.
> -	 */
> -	for (i = 0 ; i < 3; i++) {
> -		igt_paint_color_gradient_range(cr, i * l, 0, l, mode->vdisplay,
> -					       colors[i].r != 0 ? 0.2 : 0,
> -					       colors[i].g != 0 ? 0.2 : 0,
> -					       colors[i].b != 0 ? 0.2 : 0,
> -					       colors[i].r,
> -					       colors[i].g,
> -					       colors[i].b);
> -	}
> -
> -	if (rows_remaining > 0)
> -		igt_paint_color_gradient_range(cr, i * l, 0, rows_remaining,
> -					       mode->vdisplay,
> -					       colors[i-1].r != 0 ? 0.2 : 0,
> -					       colors[i-1].g != 0 ? 0.2 : 0,
> -					       colors[i-1].b != 0 ? 0.2 : 0,
> -					       colors[i-1].r,
> -					       colors[i-1].g,
> -					       colors[i-1].b);
> -
> -	igt_put_cairo_ctx(data->drm_fd, fb, cr);
> -}
> -
> -static void paint_rectangles(data_t *data,
> -			     drmModeModeInfo *mode,
> -			     color_t *colors,
> -			     struct igt_fb *fb)
> -{
> -	cairo_t *cr = igt_get_cairo_ctx(data->drm_fd, fb);
> -	int i, l = mode->hdisplay / 3;
> -	int rows_remaining = mode->hdisplay % 3;
> -
> -	/* Paint 3 solid rectangles. */
> -	for (i = 0 ; i < 3; i++) {
> -		igt_paint_color(cr, i * l, 0, l, mode->vdisplay,
> -				colors[i].r, colors[i].g, colors[i].b);
> -	}
> -
> -	if (rows_remaining > 0)
> -		igt_paint_color(cr, i * l, 0, rows_remaining, mode->vdisplay,
> -				colors[i-1].r, colors[i-1].g, colors[i-1].b);
> -
> -	igt_put_cairo_ctx(data->drm_fd, fb, cr);
> -}
> -
> -static gamma_lut_t *alloc_lut(int lut_size)
> -{
> -	gamma_lut_t *gamma;
> -
> -	igt_assert_lt(0, lut_size);
> -
> -	gamma = malloc(sizeof(*gamma) + lut_size * sizeof(gamma->coeffs[0]));
> -	igt_assert(gamma);
> -	gamma->size = lut_size;
> -
> -	return gamma;
> -}
> -
> -static void free_lut(gamma_lut_t *gamma)
> -{
> -	if (!gamma)
> -		return;
> -
> -	free(gamma);
> -}
> -
> -static gamma_lut_t *generate_table(int lut_size, double exp)
> -{
> -	gamma_lut_t *gamma = alloc_lut(lut_size);
> -	int i;
> -
> -	gamma->coeffs[0] = 0.0;
> -	for (i = 1; i < lut_size; i++)
> -		gamma->coeffs[i] = pow(i * 1.0 / (lut_size - 1), exp);
> -
> -	return gamma;
> -}
> -
> -static gamma_lut_t *generate_table_max(int lut_size)
> -{
> -	gamma_lut_t *gamma = alloc_lut(lut_size);
> -	int i;
> -
> -	gamma->coeffs[0] = 0.0;
> -	for (i = 1; i < lut_size; i++)
> -		gamma->coeffs[i] = 1.0;
> -
> -	return gamma;
> -}
> -
> -static gamma_lut_t *generate_table_zero(int lut_size)
> -{
> -	gamma_lut_t *gamma = alloc_lut(lut_size);
> -	int i;
> -
> -	for (i = 0; i < lut_size; i++)
> -		gamma->coeffs[i] = 0.0;
> -
> -	return gamma;
> -}
> -
> -static struct drm_color_lut *coeffs_to_lut(data_t *data,
> -					   const gamma_lut_t *gamma,
> -					   uint32_t color_depth,
> -					   int off)
> -{
> -	struct drm_color_lut *lut;
> -	int i, lut_size = gamma->size;
> -	uint32_t max_value = (1 << 16) - 1;
> -	uint32_t mask;
> -
> -	if (is_i915_device(data->drm_fd))
> -		mask = ((1 << color_depth) - 1) << 8;
> -	else
> -		mask = max_value;
> -
> -	lut = malloc(sizeof(struct drm_color_lut) * lut_size);
> -
> -	if (IS_CHERRYVIEW(data->devid))
> -		lut_size -= 1;
> -	for (i = 0; i < lut_size; i++) {
> -		uint32_t v = (gamma->coeffs[i] * max_value);
> -
> -		/*
> -		 * Hardware might encode colors on a different number of bits
> -		 * than what is in our framebuffer (10 or 12bits for example).
> -		 * Mask the lower bits not provided by the framebuffer so we
> -		 * can do CRC comparisons.
> -		 */
> -		v &= mask;
> -
> -		lut[i].red = v;
> -		lut[i].green = v;
> -		lut[i].blue = v;
> -	}
> -
> -	if (IS_CHERRYVIEW(data->devid))
> -		lut[lut_size].red =
> -			lut[lut_size].green =
> -			lut[lut_size].blue = lut[lut_size - 1].red;
> -
> -	return lut;
> -}
> -
> -static void set_degamma(data_t *data,
> -			igt_pipe_t *pipe,
> -			const gamma_lut_t *gamma)
> -{
> -	size_t size = sizeof(struct drm_color_lut) * gamma->size;
> -	struct drm_color_lut *lut = coeffs_to_lut(data, gamma,
> -						  data->color_depth, 0);
> -
> -	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_DEGAMMA_LUT, lut, size);
> -
> -	free(lut);
> -}
> -
> -static void set_gamma(data_t *data,
> -		      igt_pipe_t *pipe,
> -		      const gamma_lut_t *gamma)
> -{
> -	size_t size = sizeof(struct drm_color_lut) * gamma->size;
> -	struct drm_color_lut *lut = coeffs_to_lut(data, gamma,
> -						  data->color_depth, 0);
> -
> -	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_GAMMA_LUT, lut, size);
> -
> -	free(lut);
> -}
> -
> -static void set_ctm(igt_pipe_t *pipe, const double *coefficients)
> -{
> -	struct drm_color_ctm ctm;
> -	int i;
> -
> -	for (i = 0; i < ARRAY_SIZE(ctm.matrix); i++) {
> -		if (coefficients[i] < 0) {
> -			ctm.matrix[i] =
> -				(int64_t) (-coefficients[i] * ((int64_t) 1L << 32));
> -			ctm.matrix[i] |= 1ULL << 63;
> -		} else
> -			ctm.matrix[i] =
> -				(int64_t) (coefficients[i] * ((int64_t) 1L << 32));
> -	}
> -
> -	igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_CTM, &ctm, sizeof(ctm));
> -}
> -
> -static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
> -{
> -	if (igt_pipe_obj_has_prop(pipe, prop))
> -		igt_pipe_obj_replace_prop_blob(pipe, prop, NULL, 0);
> -}
> -
> -#define disable_degamma(pipe) disable_prop(pipe, IGT_CRTC_DEGAMMA_LUT)
> -#define disable_gamma(pipe) disable_prop(pipe, IGT_CRTC_GAMMA_LUT)
> -#define disable_ctm(pipe) disable_prop(pipe, IGT_CRTC_CTM)
> -
> -/*
> - * Draw 3 gradient rectangles in red, green and blue, with a maxed out
> - * degamma LUT and verify we have the same CRC as drawing solid color
> - * rectangles with linear degamma LUT.
> - */
>  static void test_pipe_degamma(data_t *data,
>  			      igt_plane_t *primary)
>  {
> @@ -532,19 +290,6 @@ static void test_pipe_legacy_gamma(data_t *data,
>  	free(blue_lut);
>  }
>  
> -static drmModePropertyBlobPtr
> -get_blob(data_t *data, igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
> -{
> -	uint64_t prop_value;
> -
> -	prop_value = igt_pipe_obj_get_prop(pipe, prop);
> -
> -	if (prop_value == 0)
> -		return NULL;
> -
> -	return drmModeGetPropertyBlob(data->drm_fd, prop_value);
> -}
> -
>  /*
>   * Verify that setting the legacy gamma LUT resets the gamma LUT set
>   * through the GAMMA_LUT property.
> @@ -663,11 +408,6 @@ static void test_pipe_legacy_gamma_reset(data_t *data,
>  	free_lut(gamma_zero);
>  }
>  
> -static bool crc_equal(igt_crc_t *a, igt_crc_t *b)
> -{
> -  return memcmp(a->crc, b->crc, sizeof(a->crc[0]) * a->n_words) == 0;
> -}
> -
>  /*
>   * Draw 3 rectangles using before colors with the ctm matrix apply and verify
>   * the CRC is equal to using after colors with an identify ctm matrix.
> @@ -1086,127 +826,6 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>  	}
>  }
>  
> -static int
> -pipe_set_property_blob_id(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop, uint32_t blob_id)
> -{
> -	int ret;
> -
> -	igt_pipe_obj_replace_prop_blob(pipe, prop, NULL, 0);
> -
> -	igt_pipe_obj_set_prop_value(pipe, prop, blob_id);
> -
> -	ret = igt_display_try_commit2(pipe->display, pipe->display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> -
> -	igt_pipe_obj_set_prop_value(pipe, prop, 0);
> -
> -	return ret;
> -}
> -
> -static int
> -pipe_set_property_blob(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop, void *ptr, size_t length)
> -{
> -	igt_pipe_obj_replace_prop_blob(pipe, prop, ptr, length);
> -
> -	return igt_display_try_commit2(pipe->display, pipe->display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> -}
> -
> -static void
> -invalid_gamma_lut_sizes(data_t *data)
> -{
> -	igt_display_t *display = &data->display;
> -	igt_pipe_t *pipe = &display->pipes[0];
> -	size_t gamma_lut_size = data->gamma_lut_size * sizeof(struct drm_color_lut);
> -	struct drm_color_lut *gamma_lut;
> -
> -	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_GAMMA_LUT));
> -
> -	gamma_lut = malloc(gamma_lut_size * 2);
> -
> -	igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> -
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
> -					     gamma_lut, 1),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
> -					     gamma_lut, gamma_lut_size + 1),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
> -					     gamma_lut, gamma_lut_size - 1),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_GAMMA_LUT,
> -					     gamma_lut, gamma_lut_size + sizeof(struct drm_color_lut)),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_GAMMA_LUT, pipe->crtc_id),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_GAMMA_LUT, 4096 * 4096),
> -		      -EINVAL);
> -
> -	free(gamma_lut);
> -}
> -
> -static void
> -invalid_degamma_lut_sizes(data_t *data)
> -{
> -	igt_display_t *display = &data->display;
> -	igt_pipe_t *pipe = &display->pipes[0];
> -	size_t degamma_lut_size = data->degamma_lut_size * sizeof(struct drm_color_lut);
> -	struct drm_color_lut *degamma_lut;
> -
> -	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_DEGAMMA_LUT));
> -
> -	degamma_lut = malloc(degamma_lut_size * 2);
> -
> -	igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> -
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
> -					     degamma_lut, 1), -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
> -					     degamma_lut, degamma_lut_size + 1),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
> -					     degamma_lut, degamma_lut_size - 1),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_DEGAMMA_LUT,
> -					     degamma_lut, degamma_lut_size + sizeof(struct drm_color_lut)),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_DEGAMMA_LUT, pipe->crtc_id),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_DEGAMMA_LUT, 4096 * 4096),
> -		      -EINVAL);
> -
> -	free(degamma_lut);
> -}
> -
> -static void
> -invalid_ctm_matrix_sizes(data_t *data)
> -{
> -	igt_display_t *display = &data->display;
> -	igt_pipe_t *pipe = &display->pipes[0];
> -	void *ptr;
> -
> -	igt_require(igt_pipe_obj_has_prop(pipe, IGT_CRTC_CTM));
> -
> -	ptr = malloc(sizeof(struct drm_color_ctm) * 4);
> -
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr, 1),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
> -					     sizeof(struct drm_color_ctm) + 1),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
> -					     sizeof(struct drm_color_ctm) - 1),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob(pipe, IGT_CRTC_CTM, ptr,
> -					     sizeof(struct drm_color_ctm) * 2),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_CTM, pipe->crtc_id),
> -		      -EINVAL);
> -	igt_assert_eq(pipe_set_property_blob_id(pipe, IGT_CRTC_CTM, 4096 * 4096),
> -		      -EINVAL);
> -
> -	free(ptr);
> -}
> -
>  igt_main
>  {
>  	data_t data = {};
> diff --git a/tests/kms_color.h b/tests/kms_color.h
> new file mode 100644
> index 0000000..cee3859
> --- /dev/null
> +++ b/tests/kms_color.h

Hmm, this header should maybe be called kms_color_helper.h

> @@ -0,0 +1,105 @@
> +/*
> + * Copyright © 2020 Intel Corporation

It's a new file but the licensed work inside isn't changed. This year
should be the same as in old kms_color.c, 2015.


> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + *
> + */
> +
> +#ifndef COLOR
> +#define COLOR

This is bound to collide at something at some point. IGT_KMS_COLOR_H instead.

We could use a comment here that explains what this header file is
for: Shared code for the two kms_color tests.



With those fixed,

Reviewed-by: Petri Latvala <petri.latvala@intel.com>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH i-g-t v4 3/4] tests/kms_color_chamelium: add subtests to validate color
  2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 3/4] tests/kms_color_chamelium: add subtests to validate color Kunal Joshi
@ 2020-01-24 10:11   ` Petri Latvala
  0 siblings, 0 replies; 12+ messages in thread
From: Petri Latvala @ 2020-01-24 10:11 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: ville.syrjala, igt-dev, daniel.vetter

On Thu, Jan 23, 2020 at 01:30:41PM +0530, Kunal Joshi wrote:
> To validate color subtests using chamelium, subtests modified
> to do frame dump comparison instead of crc comparison.
> Tests require chamelium and will validate color features
> at pipe level.
> 
> (v2)
>         Comparing framedump with framebuffer reference instead of
>         comparing two framedump.
> (v3)
>         Moved common functions with kms_color to lib/igt_color
> (v4)
>         Added changes to skip the tests if there is no connected port with
>         chamelium.
>         Rearranged position of valid_output.
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
> Suggested-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  tests/kms_color_chamelium.c | 759 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 759 insertions(+)
>  create mode 100644 tests/kms_color_chamelium.c
> 
> diff --git a/tests/kms_color_chamelium.c b/tests/kms_color_chamelium.c
> new file mode 100644
> index 0000000..b6b6731
> --- /dev/null
> +++ b/tests/kms_color_chamelium.c
> @@ -0,0 +1,759 @@
> +/*
> + * Copyright © 2020 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + *
> + */
> +
> +#include "kms_color.h"
> +
> +IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");

" using chamelium to verify instead of CRC"


Otherwise looks like what it claims, a "chamelium port" of
kms_color. Whoever feels like it gets to do even more refactoring to
get the two tests to share more code, a job for later.

With the description augmented,

Reviewed-by: Petri Latvala <petri.latvala@intel.com>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev4)
  2020-01-23 16:04 ` [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev4) Patchwork
@ 2020-01-24 10:15   ` Petri Latvala
  0 siblings, 0 replies; 12+ messages in thread
From: Petri Latvala @ 2020-01-24 10:15 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

For those following along in the audience:

This was tested in trybot as well with a testlist consisting of only
kms_color_chamelium to get some more testing done before timeout stops
the testing completely:
https://intel-gfx-ci.01.org/tree/drm-tip/TrybotIGT_101/index.html

The skl failure is a known issue, its chamelium had its fs full. The
cml failure is a random failure to connect to chamelium, also
pre-existing. ICL got through all tests on pipes a and b with full
passes.


-- 
Petri Latvala


On Thu, Jan 23, 2020 at 04:04:34PM +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: validate color tests using chamelium. (rev4)
> URL   : https://patchwork.freedesktop.org/series/72006/
> State : success
> 
> == Summary ==
> 
> CI Bug Log - changes from IGT_5382 -> IGTPW_3981
> ====================================================
> 
> Summary
> -------
> 
>   **SUCCESS**
> 
>   No regressions found.
> 
>   External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/index.html
> 
> Possible new issues
> -------------------
> 
>   Here are the unknown changes that may have been introduced in IGTPW_3981:
> 
> ### IGT changes ###
> 
> #### Possible regressions ####
> 
>   * {igt@kms_color_chamelium@pipe-a-ctm-0-75} (NEW):
>     - fi-icl-u2:          NOTRUN -> [FAIL][1]
>    [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-icl-u2/igt@kms_color_chamelium@pipe-a-ctm-0-75.html
> 
>   * {igt@kms_color_chamelium@pipe-c-ctm-limited-range} (NEW):
>     - fi-skl-6700k2:      NOTRUN -> [FAIL][2] +65 similar issues
>    [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-skl-6700k2/igt@kms_color_chamelium@pipe-c-ctm-limited-range.html
> 
>   
> New tests
> ---------
> 
>   New tests have been introduced between IGT_5382 and IGTPW_3981:
> 
> ### New IGT tests (66) ###
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-0-25:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 109.84] s
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-0-5:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 109.88] s
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-0-75:
>     - Statuses : 2 fail(s) 2 pass(s) 38 skip(s)
>     - Exec time: [0.0, 160.99] s
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-blue-to-red:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 23.09] s
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-green-to-red:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 21.57] s
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-limited-range:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 23.16] s
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-max:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 23.04] s
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-negative:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 23.07] s
> 
>   * igt@kms_color_chamelium@pipe-a-ctm-red-to-blue:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 23.07] s
> 
>   * igt@kms_color_chamelium@pipe-a-degamma:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 23.13] s
> 
>   * igt@kms_color_chamelium@pipe-a-gamma:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 21.58] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-0-25:
>     - Statuses : 1 fail(s) 2 pass(s) 38 skip(s)
>     - Exec time: [0.0, 109.44] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-0-5:
>     - Statuses : 1 fail(s) 1 pass(s) 38 skip(s)
>     - Exec time: [0.0, 88.14] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-0-75:
>     - Statuses : 1 fail(s) 1 pass(s) 38 skip(s)
>     - Exec time: [0.0, 123.50] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-blue-to-red:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 21.11] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-green-to-red:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 22.91] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-limited-range:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-max:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-negative:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-b-ctm-red-to-blue:
>     - Statuses : 1 fail(s) 3 pass(s) 38 skip(s)
>     - Exec time: [0.0, 23.01] s
> 
>   * igt@kms_color_chamelium@pipe-b-degamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-b-gamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-0-25:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-0-5:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-0-75:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-blue-to-red:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-green-to-red:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-limited-range:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-max:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-negative:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-ctm-red-to-blue:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-degamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-c-gamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-0-25:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-0-5:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-0-75:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-blue-to-red:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-green-to-red:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-limited-range:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-max:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-negative:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-ctm-red-to-blue:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-degamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-d-gamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-0-25:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-0-5:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-0-75:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-blue-to-red:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-green-to-red:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-limited-range:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-max:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-negative:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-ctm-red-to-blue:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-degamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-e-gamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-0-25:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-0-5:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-0-75:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-blue-to-red:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-green-to-red:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-limited-range:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-max:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-negative:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-ctm-red-to-blue:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-degamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   * igt@kms_color_chamelium@pipe-f-gamma:
>     - Statuses : 1 fail(s) 38 skip(s)
>     - Exec time: [0.0] s
> 
>   
> 
> Known issues
> ------------
> 
>   Here are the changes found in IGTPW_3981 that come from known issues:
> 
> ### IGT changes ###
> 
> #### Issues hit ####
> 
>   * igt@gem_close_race@basic-process:
>     - fi-byt-j1900:       [PASS][3] -> [FAIL][4] ([i915#694])
>    [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-byt-j1900/igt@gem_close_race@basic-process.html
>    [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-byt-j1900/igt@gem_close_race@basic-process.html
> 
>   * igt@gem_ctx_param@basic:
>     - fi-tgl-y:           [PASS][5] -> [DMESG-WARN][6] ([CI#94] / [i915#402]) +2 similar issues
>    [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-tgl-y/igt@gem_ctx_param@basic.html
>    [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-tgl-y/igt@gem_ctx_param@basic.html
> 
>   * igt@i915_selftest@live_blt:
>     - fi-bsw-n3050:       [PASS][7] -> [DMESG-FAIL][8] ([i915#723])
>    [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-bsw-n3050/igt@i915_selftest@live_blt.html
>    [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-bsw-n3050/igt@i915_selftest@live_blt.html
> 
>   
> #### Possible fixes ####
> 
>   * igt@gem_close_race@basic-threads:
>     - fi-byt-j1900:       [INCOMPLETE][9] ([i915#45]) -> [PASS][10]
>    [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-byt-j1900/igt@gem_close_race@basic-threads.html
>    [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-byt-j1900/igt@gem_close_race@basic-threads.html
> 
>   * igt@gem_exec_suspend@basic-s4-devices:
>     - fi-tgl-y:           [FAIL][11] ([CI#94]) -> [PASS][12]
>    [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-tgl-y/igt@gem_exec_suspend@basic-s4-devices.html
>    [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-tgl-y/igt@gem_exec_suspend@basic-s4-devices.html
> 
>   * igt@i915_module_load@reload-with-fault-injection:
>     - fi-skl-lmem:        [INCOMPLETE][13] ([i915#671] / [i915#971]) -> [PASS][14]
>    [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
>    [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
> 
>   * igt@i915_selftest@live_blt:
>     - fi-ivb-3770:        [DMESG-FAIL][15] ([i915#725]) -> [PASS][16]
>    [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-ivb-3770/igt@i915_selftest@live_blt.html
>    [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-ivb-3770/igt@i915_selftest@live_blt.html
>     - fi-hsw-4770:        [DMESG-FAIL][17] ([i915#725]) -> [PASS][18]
>    [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-hsw-4770/igt@i915_selftest@live_blt.html
>    [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-hsw-4770/igt@i915_selftest@live_blt.html
>     - fi-hsw-4770r:       [DMESG-FAIL][19] ([i915#553] / [i915#725]) -> [PASS][20]
>    [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-hsw-4770r/igt@i915_selftest@live_blt.html
>    [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-hsw-4770r/igt@i915_selftest@live_blt.html
> 
>   * igt@i915_selftest@live_gem_contexts:
>     - fi-hsw-peppy:       [DMESG-FAIL][21] ([i915#722]) -> [PASS][22]
>    [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html
>    [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html
> 
>   * igt@kms_addfb_basic@invalid-set-prop-any:
>     - fi-tgl-y:           [DMESG-WARN][23] ([CI#94] / [i915#402]) -> [PASS][24]
>    [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-tgl-y/igt@kms_addfb_basic@invalid-set-prop-any.html
>    [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-tgl-y/igt@kms_addfb_basic@invalid-set-prop-any.html
> 
>   * igt@kms_frontbuffer_tracking@basic:
>     - fi-hsw-peppy:       [DMESG-WARN][25] ([i915#44]) -> [PASS][26]
>    [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
>    [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
> 
>   
> #### Warnings ####
> 
>   * igt@gem_exec_parallel@contexts:
>     - fi-byt-n2820:       [FAIL][27] ([i915#694]) -> [TIMEOUT][28] ([fdo#112271])
>    [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/fi-byt-n2820/igt@gem_exec_parallel@contexts.html
>    [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/fi-byt-n2820/igt@gem_exec_parallel@contexts.html
> 
>   
>   {name}: This element is suppressed. This means it is ignored when computing
>           the status of the difference (SUCCESS, WARNING, or FAILURE).
> 
>   [CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
>   [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
>   [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
>   [i915#1017]: https://gitlab.freedesktop.org/drm/intel/issues/1017
>   [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
>   [i915#44]: https://gitlab.freedesktop.org/drm/intel/issues/44
>   [i915#45]: https://gitlab.freedesktop.org/drm/intel/issues/45
>   [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
>   [i915#671]: https://gitlab.freedesktop.org/drm/intel/issues/671
>   [i915#694]: https://gitlab.freedesktop.org/drm/intel/issues/694
>   [i915#722]: https://gitlab.freedesktop.org/drm/intel/issues/722
>   [i915#723]: https://gitlab.freedesktop.org/drm/intel/issues/723
>   [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
>   [i915#971]: https://gitlab.freedesktop.org/drm/intel/issues/971
> 
> 
> Participating hosts (53 -> 45)
> ------------------------------
> 
>   Missing    (8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-kbl-7560u fi-byt-clapper fi-bdw-samus 
> 
> 
> Build changes
> -------------
> 
>   * CI: CI-20190529 -> None
>   * IGT: IGT_5382 -> IGTPW_3981
> 
>   CI-20190529: 20190529
>   CI_DRM_7802: cd932df72f11bdff93423a8d4a9e0e9ccb0985d7 @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGTPW_3981: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/index.html
>   IGT_5382: 8dbe5ce61baa2d563d4dd7c56a018bb1e1077467 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
> 
> 
> 
> == Testlist changes ==
> 
> +igt@kms_color_chamelium@pipe-a-ctm-0-5
> +igt@kms_color_chamelium@pipe-a-ctm-0-25
> +igt@kms_color_chamelium@pipe-a-ctm-0-75
> +igt@kms_color_chamelium@pipe-a-ctm-blue-to-red
> +igt@kms_color_chamelium@pipe-a-ctm-green-to-red
> +igt@kms_color_chamelium@pipe-a-ctm-limited-range
> +igt@kms_color_chamelium@pipe-a-ctm-max
> +igt@kms_color_chamelium@pipe-a-ctm-negative
> +igt@kms_color_chamelium@pipe-a-ctm-red-to-blue
> +igt@kms_color_chamelium@pipe-a-degamma
> +igt@kms_color_chamelium@pipe-a-gamma
> +igt@kms_color_chamelium@pipe-b-ctm-0-5
> +igt@kms_color_chamelium@pipe-b-ctm-0-25
> +igt@kms_color_chamelium@pipe-b-ctm-0-75
> +igt@kms_color_chamelium@pipe-b-ctm-blue-to-red
> +igt@kms_color_chamelium@pipe-b-ctm-green-to-red
> +igt@kms_color_chamelium@pipe-b-ctm-limited-range
> +igt@kms_color_chamelium@pipe-b-ctm-max
> +igt@kms_color_chamelium@pipe-b-ctm-negative
> +igt@kms_color_chamelium@pipe-b-ctm-red-to-blue
> +igt@kms_color_chamelium@pipe-b-degamma
> +igt@kms_color_chamelium@pipe-b-gamma
> +igt@kms_color_chamelium@pipe-c-ctm-0-5
> +igt@kms_color_chamelium@pipe-c-ctm-0-25
> +igt@kms_color_chamelium@pipe-c-ctm-0-75
> +igt@kms_color_chamelium@pipe-c-ctm-blue-to-red
> +igt@kms_color_chamelium@pipe-c-ctm-green-to-red
> +igt@kms_color_chamelium@pipe-c-ctm-limited-range
> +igt@kms_color_chamelium@pipe-c-ctm-max
> +igt@kms_color_chamelium@pipe-c-ctm-negative
> +igt@kms_color_chamelium@pipe-c-ctm-red-to-blue
> +igt@kms_color_chamelium@pipe-c-degamma
> +igt@kms_color_chamelium@pipe-c-gamma
> +igt@kms_color_chamelium@pipe-d-ctm-0-5
> +igt@kms_color_chamelium@pipe-d-ctm-0-25
> +igt@kms_color_chamelium@pipe-d-ctm-0-75
> +igt@kms_color_chamelium@pipe-d-ctm-blue-to-red
> +igt@kms_color_chamelium@pipe-d-ctm-green-to-red
> +igt@kms_color_chamelium@pipe-d-ctm-limited-range
> +igt@kms_color_chamelium@pipe-d-ctm-max
> +igt@kms_color_chamelium@pipe-d-ctm-negative
> +igt@kms_color_chamelium@pipe-d-ctm-red-to-blue
> +igt@kms_color_chamelium@pipe-d-degamma
> +igt@kms_color_chamelium@pipe-d-gamma
> +igt@kms_color_chamelium@pipe-e-ctm-0-5
> +igt@kms_color_chamelium@pipe-e-ctm-0-25
> +igt@kms_color_chamelium@pipe-e-ctm-0-75
> +igt@kms_color_chamelium@pipe-e-ctm-blue-to-red
> +igt@kms_color_chamelium@pipe-e-ctm-green-to-red
> +igt@kms_color_chamelium@pipe-e-ctm-limited-range
> +igt@kms_color_chamelium@pipe-e-ctm-max
> +igt@kms_color_chamelium@pipe-e-ctm-negative
> +igt@kms_color_chamelium@pipe-e-ctm-red-to-blue
> +igt@kms_color_chamelium@pipe-e-degamma
> +igt@kms_color_chamelium@pipe-e-gamma
> +igt@kms_color_chamelium@pipe-f-ctm-0-5
> +igt@kms_color_chamelium@pipe-f-ctm-0-25
> +igt@kms_color_chamelium@pipe-f-ctm-0-75
> +igt@kms_color_chamelium@pipe-f-ctm-blue-to-red
> +igt@kms_color_chamelium@pipe-f-ctm-green-to-red
> +igt@kms_color_chamelium@pipe-f-ctm-limited-range
> +igt@kms_color_chamelium@pipe-f-ctm-max
> +igt@kms_color_chamelium@pipe-f-ctm-negative
> +igt@kms_color_chamelium@pipe-f-ctm-red-to-blue
> +igt@kms_color_chamelium@pipe-f-degamma
> +igt@kms_color_chamelium@pipe-f-gamma
> +igt@kms_color_chamelium@pipe-invalid-ctm-matrix-sizes
> +igt@kms_color_chamelium@pipe-invalid-degamma-lut-sizes
> +igt@kms_color_chamelium@pipe-invalid-gamma-lut-sizes
> 
> == Logs ==
> 
> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/index.html
> _______________________________________________
> 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] 12+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v4 2/4] Moved common function in kms_color and kms_color_chamelium to kms_color_helper.c
  2020-01-24 10:07   ` Petri Latvala
@ 2020-01-24 10:38     ` Petri Latvala
  0 siblings, 0 replies; 12+ messages in thread
From: Petri Latvala @ 2020-01-24 10:38 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev, daniel.vetter, ville.syrjala

On Fri, Jan 24, 2020 at 12:07:54PM +0200, Petri Latvala wrote:
> On Thu, Jan 23, 2020 at 01:30:40PM +0530, Kunal Joshi wrote:
> > kms_color and kms_color_chamelium shared common functions.
> > Moved them to tests/kms_color_helper.c to avoid code duplication.
> > 
> > (v4)
> >         Made a library kms_color_helper.c which is specific to
> >         kms_color and kms_color_chamelium.
> > 
> > Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> > Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
> > Suggested-by: Uma Shankar <uma.shankar@intel.com>
> > ---
> >  tests/Makefile.am        |   3 +
> >  tests/Makefile.sources   |  13 +-
> >  tests/kms_color.c        | 383 +---------------------------------------------
> >  tests/kms_color.h        | 105 +++++++++++++
> >  tests/kms_color_helper.c | 386 +++++++++++++++++++++++++++++++++++++++++++++++
> >  tests/meson.build        |  19 ++-
> >  6 files changed, 525 insertions(+), 384 deletions(-)
> >  create mode 100644 tests/kms_color.h
> >  create mode 100644 tests/kms_color_helper.c
> > 
> > diff --git a/tests/Makefile.am b/tests/Makefile.am
> > index fc30524..87ffec2 100644
> > --- a/tests/Makefile.am
> > +++ b/tests/Makefile.am
> > @@ -13,11 +13,14 @@ endif
> >  if HAVE_CHAMELIUM
> >  TESTS_progs += \
> >  	kms_chamelium \
> > +	kms_color_chamelium \

Well, this I missed: The build system changes related to
kms_color_chamelium need to be moved to the patch that adds
kms_color_chamelium.


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

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

* [igt-dev] ✗ Fi.CI.IGT: failure for validate color tests using chamelium. (rev4)
  2020-01-23  8:00 [igt-dev] [PATCH i-g-t v4 0/4] validate color tests using chamelium Kunal Joshi
                   ` (4 preceding siblings ...)
  2020-01-23 16:04 ` [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev4) Patchwork
@ 2020-01-25  0:12 ` Patchwork
  5 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2020-01-25  0:12 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

== Series Details ==

Series: validate color tests using chamelium. (rev4)
URL   : https://patchwork.freedesktop.org/series/72006/
State : failure

== Summary ==

CI Bug Log - changes from IGT_5382_full -> IGTPW_3981_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_3981_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_3981_full, 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_3981/index.html

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_ctx_exec@basic-nohangcheck:
    - shard-iclb:         [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb5/igt@gem_ctx_exec@basic-nohangcheck.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb1/igt@gem_ctx_exec@basic-nohangcheck.html
    - shard-apl:          [PASS][3] -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-apl7/igt@gem_ctx_exec@basic-nohangcheck.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-apl6/igt@gem_ctx_exec@basic-nohangcheck.html

  * {igt@kms_color_chamelium@pipe-b-ctm-0-75} (NEW):
    - shard-tglb:         NOTRUN -> [SKIP][5] +40 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-tglb2/igt@kms_color_chamelium@pipe-b-ctm-0-75.html

  
New tests
---------

  New tests have been introduced between IGT_5382_full and IGTPW_3981_full:

### New IGT tests (47) ###

  * igt@kms_color_chamelium@pipe-a-ctm-0-25:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-ctm-0-5:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-ctm-0-75:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-ctm-blue-to-red:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-ctm-green-to-red:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-ctm-limited-range:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-ctm-max:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-ctm-negative:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-ctm-red-to-blue:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-degamma:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-a-gamma:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-0-25:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-0-5:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-0-75:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-blue-to-red:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-green-to-red:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-limited-range:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-max:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-negative:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-ctm-red-to-blue:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-degamma:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-b-gamma:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-0-25:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-0-5:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-0-75:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-blue-to-red:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-green-to-red:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-limited-range:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-max:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-negative:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-ctm-red-to-blue:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-degamma:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-c-gamma:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-0-25:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-0-5:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-0-75:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-blue-to-red:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-green-to-red:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-limited-range:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-max:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-negative:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-ctm-red-to-blue:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-degamma:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-d-gamma:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-invalid-ctm-matrix-sizes:
    - Statuses : 7 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-invalid-degamma-lut-sizes:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_color_chamelium@pipe-invalid-gamma-lut-sizes:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@drm_import_export@flink:
    - shard-tglb:         [PASS][6] -> [INCOMPLETE][7] ([i915#472])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-tglb1/igt@drm_import_export@flink.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-tglb4/igt@drm_import_export@flink.html

  * igt@gem_ctx_persistence@vcs1-mixed-process:
    - shard-iclb:         [PASS][8] -> [SKIP][9] ([fdo#109276] / [fdo#112080]) +5 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb1/igt@gem_ctx_persistence@vcs1-mixed-process.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb8/igt@gem_ctx_persistence@vcs1-mixed-process.html

  * igt@gem_ctx_shared@exec-single-timeline-bsd:
    - shard-iclb:         [PASS][10] -> [SKIP][11] ([fdo#110841])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb8/igt@gem_ctx_shared@exec-single-timeline-bsd.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb4/igt@gem_ctx_shared@exec-single-timeline-bsd.html

  * igt@gem_exec_schedule@pi-distinct-iova-bsd:
    - shard-iclb:         [PASS][12] -> [SKIP][13] ([i915#677]) +2 similar issues
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb5/igt@gem_exec_schedule@pi-distinct-iova-bsd.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb1/igt@gem_exec_schedule@pi-distinct-iova-bsd.html

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
    - shard-iclb:         [PASS][14] -> [SKIP][15] ([fdo#112146]) +6 similar issues
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb3/igt@gem_exec_schedule@preempt-other-chain-bsd.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb1/igt@gem_exec_schedule@preempt-other-chain-bsd.html

  * igt@gem_exec_store@pages-vcs1:
    - shard-iclb:         [PASS][16] -> [SKIP][17] ([fdo#112080]) +6 similar issues
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb1/igt@gem_exec_store@pages-vcs1.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb3/igt@gem_exec_store@pages-vcs1.html

  * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive:
    - shard-kbl:          [PASS][18] -> [INCOMPLETE][19] ([fdo#103665] / [i915#530] / [i915#640])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-kbl2/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-kbl3/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html
    - shard-hsw:          [PASS][20] -> [INCOMPLETE][21] ([i915#61])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-hsw2/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-hsw2/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html

  * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing:
    - shard-glk:          [PASS][22] -> [INCOMPLETE][23] ([i915#58] / [i915#970] / [k.org#198133])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-glk9/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-glk8/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup:
    - shard-snb:          [PASS][24] -> [DMESG-WARN][25] ([fdo#111870] / [i915#478]) +1 similar issue
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-snb1/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-snb5/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html

  * igt@i915_pm_rps@waitboost:
    - shard-iclb:         [PASS][26] -> [FAIL][27] ([i915#413])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb7/igt@i915_pm_rps@waitboost.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb3/igt@i915_pm_rps@waitboost.html

  * igt@i915_suspend@sysfs-reader:
    - shard-apl:          [PASS][28] -> [DMESG-WARN][29] ([i915#180]) +4 similar issues
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-apl3/igt@i915_suspend@sysfs-reader.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-apl6/igt@i915_suspend@sysfs-reader.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-180:
    - shard-kbl:          [PASS][30] -> [DMESG-WARN][31] ([i915#93] / [i915#95])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-kbl7/igt@kms_big_fb@x-tiled-32bpp-rotate-180.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-kbl4/igt@kms_big_fb@x-tiled-32bpp-rotate-180.html

  * igt@kms_busy@basic-modeset-pipe-c:
    - shard-hsw:          [PASS][32] -> [INCOMPLETE][33] ([CI#80] / [i915#61])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-hsw7/igt@kms_busy@basic-modeset-pipe-c.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-hsw8/igt@kms_busy@basic-modeset-pipe-c.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
    - shard-kbl:          [PASS][34] -> [DMESG-WARN][35] ([i915#180]) +2 similar issues
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-kbl1/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-kbl2/igt@kms_cursor_crc@pipe-c-cursor-suspend.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-glk:          [PASS][36] -> [FAIL][37] ([i915#79])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-glk4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-glk9/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-glk:          [PASS][38] -> [FAIL][39] ([i915#49])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-glk5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-glk1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt:
    - shard-tglb:         [PASS][40] -> [FAIL][41] ([i915#49]) +3 similar issues
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-tglb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes:
    - shard-glk:          [PASS][42] -> [INCOMPLETE][43] ([i915#58] / [k.org#198133]) +1 similar issue
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-glk2/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-glk3/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html

  * igt@kms_psr@psr2_cursor_plane_move:
    - shard-iclb:         [PASS][44] -> [SKIP][45] ([fdo#109441]) +3 similar issues
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb2/igt@kms_psr@psr2_cursor_plane_move.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb4/igt@kms_psr@psr2_cursor_plane_move.html

  * igt@prime_busy@hang-bsd2:
    - shard-iclb:         [PASS][46] -> [SKIP][47] ([fdo#109276]) +14 similar issues
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb1/igt@prime_busy@hang-bsd2.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb5/igt@prime_busy@hang-bsd2.html

  
#### Possible fixes ####

  * igt@gem_ctx_isolation@rcs0-s3:
    - shard-kbl:          [DMESG-WARN][48] ([i915#180]) -> [PASS][49] +8 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-kbl7/igt@gem_ctx_isolation@rcs0-s3.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-kbl7/igt@gem_ctx_isolation@rcs0-s3.html

  * igt@gem_ctx_isolation@vcs1-reset:
    - shard-iclb:         [SKIP][50] ([fdo#109276] / [fdo#112080]) -> [PASS][51] +2 similar issues
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb6/igt@gem_ctx_isolation@vcs1-reset.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb1/igt@gem_ctx_isolation@vcs1-reset.html

  * igt@gem_exec_schedule@in-order-bsd:
    - shard-iclb:         [SKIP][52] ([fdo#112146]) -> [PASS][53] +4 similar issues
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb2/igt@gem_exec_schedule@in-order-bsd.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb5/igt@gem_exec_schedule@in-order-bsd.html

  * igt@gem_exec_schedule@independent-bsd2:
    - shard-iclb:         [SKIP][54] ([fdo#109276]) -> [PASS][55] +21 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb6/igt@gem_exec_schedule@independent-bsd2.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb1/igt@gem_exec_schedule@independent-bsd2.html

  * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing:
    - shard-hsw:          [INCOMPLETE][56] ([i915#61]) -> [PASS][57]
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-hsw7/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-hsw1/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html

  * igt@gem_persistent_relocs@forked-interruptible-thrash-inactive:
    - shard-kbl:          [INCOMPLETE][58] ([fdo#103665] / [i915#530]) -> [PASS][59]
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-kbl6/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-kbl2/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html

  * igt@gem_persistent_relocs@forked-interruptible-thrashing:
    - shard-apl:          [INCOMPLETE][60] ([fdo#103927] / [i915#530]) -> [PASS][61]
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-apl7/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-apl4/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
    - shard-kbl:          [INCOMPLETE][62] ([fdo#103665]) -> [PASS][63]
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-kbl6/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-kbl1/igt@gem_persistent_relocs@forked-interruptible-thrashing.html

  * igt@gem_persistent_relocs@forked-thrash-inactive:
    - shard-hsw:          [INCOMPLETE][64] ([i915#530] / [i915#61]) -> [PASS][65]
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-hsw8/igt@gem_persistent_relocs@forked-thrash-inactive.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-hsw2/igt@gem_persistent_relocs@forked-thrash-inactive.html

  * igt@gem_softpin@noreloc-s3:
    - shard-apl:          [DMESG-WARN][66] ([i915#180]) -> [PASS][67] +4 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-apl1/igt@gem_softpin@noreloc-s3.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-apl1/igt@gem_softpin@noreloc-s3.html

  * igt@gem_tiled_blits@normal:
    - shard-hsw:          [FAIL][68] ([i915#818]) -> [PASS][69]
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-hsw8/igt@gem_tiled_blits@normal.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-hsw6/igt@gem_tiled_blits@normal.html

  * igt@i915_selftest@mock_requests:
    - shard-tglb:         [INCOMPLETE][70] ([i915#472]) -> [PASS][71]
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-tglb7/igt@i915_selftest@mock_requests.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-tglb3/igt@i915_selftest@mock_requests.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [FAIL][72] ([i915#72]) -> [PASS][73]
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-glk3/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-glk3/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc:
    - shard-snb:          [DMESG-WARN][74] ([i915#478]) -> [PASS][75]
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-snb6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-snb6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-badstride:
    - shard-tglb:         [FAIL][76] ([i915#49]) -> [PASS][77] +5 similar issues
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-tglb6/igt@kms_frontbuffer_tracking@fbcpsr-badstride.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-tglb7/igt@kms_frontbuffer_tracking@fbcpsr-badstride.html

  * igt@kms_psr@psr2_sprite_plane_move:
    - shard-iclb:         [SKIP][78] ([fdo#109441]) -> [PASS][79] +4 similar issues
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb5/igt@kms_psr@psr2_sprite_plane_move.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@perf_pmu@busy-accuracy-98-vcs1:
    - shard-iclb:         [SKIP][80] ([fdo#112080]) -> [PASS][81] +7 similar issues
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb7/igt@perf_pmu@busy-accuracy-98-vcs1.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb1/igt@perf_pmu@busy-accuracy-98-vcs1.html

  
#### Warnings ####

  * igt@gem_ctx_isolation@vcs1-nonpriv-switch:
    - shard-iclb:         [SKIP][82] ([fdo#109276] / [fdo#112080]) -> [FAIL][83] ([IGT#28])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-iclb5/igt@gem_ctx_isolation@vcs1-nonpriv-switch.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-iclb1/igt@gem_ctx_isolation@vcs1-nonpriv-switch.html

  * igt@gem_persistent_relocs@forked-interruptible-thrashing:
    - shard-hsw:          [FAIL][84] ([i915#520]) -> [INCOMPLETE][85] ([i915#61])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-hsw8/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-hsw1/igt@gem_persistent_relocs@forked-interruptible-thrashing.html

  * igt@gem_persistent_relocs@forked-thrashing:
    - shard-hsw:          [INCOMPLETE][86] ([i915#61]) -> [INCOMPLETE][87] ([i915#530] / [i915#61])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-hsw2/igt@gem_persistent_relocs@forked-thrashing.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-hsw6/igt@gem_persistent_relocs@forked-thrashing.html
    - shard-kbl:          [INCOMPLETE][88] ([fdo#103665]) -> [INCOMPLETE][89] ([fdo#103665] / [i915#530])
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-kbl7/igt@gem_persistent_relocs@forked-thrashing.html
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-kbl4/igt@gem_persistent_relocs@forked-thrashing.html

  * igt@gem_tiled_blits@interruptible:
    - shard-hsw:          [DMESG-FAIL][90] ([i915#44]) -> [FAIL][91] ([i915#818])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-hsw8/igt@gem_tiled_blits@interruptible.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-hsw8/igt@gem_tiled_blits@interruptible.html

  * igt@gem_userptr_blits@map-fixed-invalidate-busy-gup:
    - shard-snb:          [DMESG-WARN][92] ([fdo#110789] / [fdo#111870] / [i915#478]) -> [DMESG-WARN][93] ([fdo#111870] / [i915#478])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5382/shard-snb1/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/shard-snb1/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html

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

  [CI#80]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/80
  [IGT#28]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/28
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#110789]: https://bugs.freedesktop.org/show_bug.cgi?id=110789
  [fdo#110841]: https://bugs.freedesktop.org/show_bug.cgi?id=110841
  [fdo#111870]: https://bugs.freedesktop.org/show_bug.cgi?id=111870
  [fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080
  [fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#413]: https://gitlab.freedesktop.org/drm/intel/issues/413
  [i915#44]: https://gitlab.freedesktop.org/drm/intel/issues/44
  [i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472
  [i915#478]: https://gitlab.freedesktop.org/drm/intel/issues/478
  [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
  [i915#520]: https://gitlab.freedesktop.org/drm/intel/issues/520
  [i915#530]: https://gitlab.freedesktop.org/drm/intel/issues/530
  [i915#58]: https://gitlab.freedesktop.org/drm/intel/issues/58
  [i915#61]: https://gitlab.freedesktop.org/drm/intel/issues/61
  [i915#640]: https://gitlab.freedesktop.org/drm/intel/issues/640
  [i915#677]: https://gitlab.freedesktop.org/drm/intel/issues/677
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#818]: https://gitlab.freedesktop.org/drm/intel/issues/818
  [i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
  [i915#970]: https://gitlab.freedesktop.org/drm/intel/issues/970
  [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133


Participating hosts (8 -> 8)
------------------------------

  No changes in participating hosts


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

  * CI: CI-20190529 -> None
  * IGT: IGT_5382 -> IGTPW_3981

  CI-20190529: 20190529
  CI_DRM_7802: cd932df72f11bdff93423a8d4a9e0e9ccb0985d7 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_3981: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3981/index.html
  IGT_5382: 8dbe5ce61baa2d563d4dd7c56a018bb1e1077467 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

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

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

end of thread, other threads:[~2020-01-25  0:12 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-01-23  8:00 [igt-dev] [PATCH i-g-t v4 0/4] validate color tests using chamelium Kunal Joshi
2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 1/4] lib/igt_chamelium Added chamelium_frame_match_or_dumpn which returns bool that the captured frame matches with reference framebuffer Kunal Joshi
2020-01-24 10:01   ` Petri Latvala
2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 2/4] Moved common function in kms_color and kms_color_chamelium to kms_color_helper.c Kunal Joshi
2020-01-24 10:07   ` Petri Latvala
2020-01-24 10:38     ` Petri Latvala
2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 3/4] tests/kms_color_chamelium: add subtests to validate color Kunal Joshi
2020-01-24 10:11   ` Petri Latvala
2020-01-23  8:00 ` [igt-dev] [PATCH i-g-t v4 4/4] HAX: Run in BAT Kunal Joshi
2020-01-23 16:04 ` [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev4) Patchwork
2020-01-24 10:15   ` Petri Latvala
2020-01-25  0:12 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox