[i-g-t V6 35/41] lib/colorops: Move few helpers to common place to reuse

Bhanuprakash Modem bhanuprakash.modem at intel.com
Wed Apr 24 10:26:43 UTC 2024


Move few colorops helpers to common place to reuse.

v2:
 - Rebase

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
---
 lib/igt_color.c          |  98 +++++++----
 lib/igt_color.h          |  97 ++++-------
 tests/kms_color_helper.c | 196 ++++++++++++++++++++++
 tests/kms_color_helper.h |  55 +++++++
 tests/kms_colorop.c      | 341 ++++++++++++++++++---------------------
 tests/kms_colorop.h      | 242 ---------------------------
 tests/meson.build        |   1 +
 7 files changed, 502 insertions(+), 528 deletions(-)
 delete mode 100644 tests/kms_colorop.h

diff --git a/lib/igt_color.c b/lib/igt_color.c
index 45030d59e..88a63560b 100644
--- a/lib/igt_color.c
+++ b/lib/igt_color.c
@@ -14,6 +14,71 @@
 #include "igt_core.h"
 #include "igt_x86.h"
 
+const struct igt_color_tf srgb_tf = {2.4f, (float)(1/1.055), (float)(0.055/1.055), (float)(1/12.92), 0.04045f, 0, 0};
+const struct igt_color_tf srgb_eotf = {2.4f, (float)(1/1.055), (float)(0.055/1.055), (float)(1/12.92), 0.04045f, 0, 0};
+const struct igt_color_tf bt2020_inv_oetf = {(float)(1/0.45f), (float)(1/1.0993f), (float)(0.0993f/1.0993f), (float)(1/4.5f), (float)(0.081), 0, 0};
+const struct igt_color_tf_pq pq_eotf = {-107/128.0f, 1.0f, 32/2523.0f, 2413/128.0f, -2392/128.0f, 8192/1305.0f };
+
+const igt_matrix_3x4_t igt_matrix_3x4_50_desat = { {
+	0.5, 0.25, 0.25, 0.0,
+	0.25, 0.5, 0.25, 0.0,
+	0.25, 0.25, 0.5, 0.0
+} };
+
+const igt_matrix_3x4_t igt_matrix_3x4_overdrive = { {
+	1.5, 0.0, 0.0, 0.0,
+	0.0, 1.5, 0.0, 0.0,
+	0.0, 0.0, 1.5, 0.0
+} };
+
+const igt_matrix_3x4_t igt_matrix_3x4_oversaturate = { {
+	1.5,   -0.25, -0.25, 0.0,
+	-0.25,  1.5,  -0.25, 0.0,
+	-0.25, -0.25,  1.5,  0.0
+} };
+
+#if 0
+const igt_matrix_3x4_t igt_matrix_3x4_bt709_enc = { {
+	 0.2126,   0.7152,  0.0722, 0.0,
+	-0.1146, -0.3854,  0.5,    0.0,
+	 0.5,     -0.4542, -0.0458, 0.0
+} };
+
+const igt_matrix_3x4_t igt_matrix_3x4_bt709_dec = { {
+	1.0,  0.0,     1.5748, 0.0,
+	1.0, -0.1873, -0.4681, 0.0,
+	1.0,  1.8556,  0.0,    0.0
+} };
+#else
+const igt_matrix_3x4_t igt_matrix_3x4_bt709_enc = { {
+	 0.2126,   0.7152,   0.0722,  0.0,
+	-0.09991, -0.33609,  0.436,   0.0,
+	 0.615,   -0.55861, -0.05639, 0.0
+} };
+
+const igt_matrix_3x4_t igt_matrix_3x4_bt709_dec = { {
+	1.0,  0.0,      1.28033, 0.0,
+	1.0, -0.21482, -0.38059, 0.0,
+	1.0,  2.12798,  0.0,     0.0
+} };
+#endif
+
+igt_1dlut_t igt_1dlut_srgb_inv_eotf = { {
+} };
+
+igt_1dlut_t igt_1dlut_srgb_eotf = { {
+} };
+
+const char * const kms_colorop_lut1d_tf_names[KMS_COLOROP_LUT1D_NUM_ENUMS] = {
+	[KMS_COLOROP_LUT1D_SRGB_EOTF] = "sRGB EOTF",
+	[KMS_COLOROP_LUT1D_SRGB_INV_EOTF] = "sRGB Inverse EOTF",
+	[KMS_COLOROP_LUT1D_BT2020_INV_OETF] = "BT.2020 Inverse OETF",
+	[KMS_COLOROP_LUT1D_BT2020_OETF] = "BT.2020 OETF",
+	[KMS_COLOROP_LUT1D_PQ_EOTF] = "PQ EOTF",
+	[KMS_COLOROP_LUT1D_PQ_INV_EOTF] = "PQ Inverse EOTF",
+	[KMS_COLOROP_LUT1D_PQ_125_EOTF] = "PQ 125 EOTF",
+	[KMS_COLOROP_LUT1D_PQ_125_INV_EOTF] = "PQ 125 Inverse EOTF",
+};
 
 static float clamp(float val, float min, float max)
 {
@@ -412,7 +477,6 @@ bool igt_cmp_fb_pixels(igt_fb_t *fb1, igt_fb_t *fb2, uint8_t up, uint8_t down)
 	return matched;
 }
 
-
 void igt_dump_fb(igt_display_t *display, igt_fb_t *fb,
 		 const char *path_name, const char *file_name)
 {
@@ -426,35 +490,3 @@ void igt_dump_fb(igt_display_t *display, igt_fb_t *fb,
 	igt_assert_eq(status, CAIRO_STATUS_SUCCESS);
 	cairo_surface_destroy(fb_surface_out);
 }
-
-void igt_colorop_set_ctm_3x4(igt_display_t *display,
-			     igt_colorop_t *colorop,
-			     const igt_matrix_3x4_t *matrix)
-{
-	struct drm_color_ctm_3x4 ctm;
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(ctm.matrix); i++) {
-		if (matrix->m[i] < 0) {
-			ctm.matrix[i] =
-				(int64_t) (-matrix->m[i] *
-				((int64_t) 1L << 32));
-			ctm.matrix[i] |= 1ULL << 63;
-		} else {
-			ctm.matrix[i] =
-				(int64_t) (matrix->m[i] *
-				((int64_t) 1L << 32));
-		}
-	}
-
-	/* set blob property */
-	igt_colorop_replace_prop_blob(colorop, IGT_COLOROP_DATA, &ctm, sizeof(ctm));
-}
-
-void igt_colorop_set_custom_1dlut(igt_display_t *display,
-				  igt_colorop_t *colorop,
-				  const igt_1dlut_t *lut1d,
-				  const size_t lut_size)
-{
-	igt_colorop_replace_prop_blob(colorop, IGT_COLOROP_DATA, lut1d, lut_size);
-}
diff --git a/lib/igt_color.h b/lib/igt_color.h
index a10ab06e8..2a11d1d00 100644
--- a/lib/igt_color.h
+++ b/lib/igt_color.h
@@ -25,28 +25,30 @@ struct igt_color_tf_pq {
 	float A, B, C, D, E, F, G;
 };
 
-
-const struct igt_color_tf srgb_eotf = {2.4f, (float)(1/1.055), (float)(0.055/1.055), (float)(1/12.92), 0.04045f, 0, 0};
-const struct igt_color_tf bt2020_inv_oetf = {(float)(1/0.45f), (float)(1/1.0993f), (float)(0.0993f/1.0993f), (float)(1/4.5f), (float)(0.081), 0, 0};
-
-const struct igt_color_tf_pq pq_eotf = {-107/128.0f, 1.0f, 32/2523.0f, 2413/128.0f, -2392/128.0f, 8192/1305.0f };
-
 typedef struct igt_pixel {
 	float r;
 	float g;
 	float b;
 } igt_pixel_t;
 
+typedef enum kms_colorop_lut1d_tf {
+	KMS_COLOROP_LUT1D_SRGB_EOTF,
+	KMS_COLOROP_LUT1D_SRGB_INV_EOTF,
+	KMS_COLOROP_LUT1D_BT2020_INV_OETF,
+	KMS_COLOROP_LUT1D_BT2020_OETF,
+	KMS_COLOROP_LUT1D_PQ_EOTF,
+	KMS_COLOROP_LUT1D_PQ_INV_EOTF,
+	KMS_COLOROP_LUT1D_PQ_125_EOTF,
+	KMS_COLOROP_LUT1D_PQ_125_INV_EOTF,
+	KMS_COLOROP_LUT1D_NUM_ENUMS
+} kms_colorop_lut1d_tf_t;
+
+extern const char * const kms_colorop_lut1d_tf_names[KMS_COLOROP_LUT1D_NUM_ENUMS];
+
 typedef struct igt_1dlut {
 	struct drm_color_lut lut[MAX_COLOR_LUT_ENTRIES];
 } igt_1dlut_t;
 
-igt_1dlut_t igt_1dlut_srgb_inv_eotf = { {
-} };
-
-igt_1dlut_t igt_1dlut_srgb_eotf = { {
-} };
-
 typedef struct igt_matrix_3x4 {
 	/*
 	 * out   matrix          in
@@ -58,50 +60,23 @@ typedef struct igt_matrix_3x4 {
 	float m[12];
 } igt_matrix_3x4_t;
 
-const igt_matrix_3x4_t igt_matrix_3x4_50_desat = { {
-	0.5, 0.25, 0.25, 0.0,
-	0.25, 0.5, 0.25, 0.0,
-	0.25, 0.25, 0.5, 0.0
-} };
-
-const igt_matrix_3x4_t igt_matrix_3x4_overdrive = { {
-	1.5, 0.0, 0.0, 0.0,
-	0.0, 1.5, 0.0, 0.0,
-	0.0, 0.0, 1.5, 0.0
-} };
-
-const igt_matrix_3x4_t igt_matrix_3x4_oversaturate = { {
-	1.5,   -0.25, -0.25, 0.0,
-	-0.25,  1.5,  -0.25, 0.0,
-	-0.25, -0.25,  1.5,  0.0
-} };
-
-#if 0
-const igt_matrix_3x4_t igt_matrix_3x4_bt709_enc = { {
-	 0.2126,   0.7152,  0.0722, 0.0,
-	-0.1146, -0.3854,  0.5,    0.0,
-	 0.5,     -0.4542, -0.0458, 0.0
-} };
-
-const igt_matrix_3x4_t igt_matrix_3x4_bt709_dec = { {
-	1.0,  0.0,     1.5748, 0.0,
-	1.0, -0.1873, -0.4681, 0.0,
-	1.0,  1.8556,  0.0,    0.0
-} };
-#else
-const igt_matrix_3x4_t igt_matrix_3x4_bt709_enc = { {
-	 0.2126,   0.7152,   0.0722,  0.0,
-	-0.09991, -0.33609,  0.436,   0.0,
-	 0.615,   -0.55861, -0.05639, 0.0
-} };
-
-const igt_matrix_3x4_t igt_matrix_3x4_bt709_dec = { {
-	1.0,  0.0,      1.28033, 0.0,
-	1.0, -0.21482, -0.38059, 0.0,
-	1.0,  2.12798,  0.0,     0.0
-} };
-#endif
+typedef bool (*compare_fb_t)(igt_fb_t *in, igt_fb_t *out);
+typedef int (*transform_fb)(igt_fb_t *in);
+typedef int (*transform_pixel)(igt_pixel_t *pixel);
+
+extern const struct igt_color_tf srgb_tf;
+extern const struct igt_color_tf srgb_eotf;
+extern const struct igt_color_tf bt2020_inv_oetf;
+extern const struct igt_color_tf_pq pq_eotf;
 
+extern const igt_matrix_3x4_t igt_matrix_3x4_50_desat;
+extern const igt_matrix_3x4_t igt_matrix_3x4_overdrive;
+extern const igt_matrix_3x4_t igt_matrix_3x4_oversaturate;
+extern const igt_matrix_3x4_t igt_matrix_3x4_bt709_enc;
+extern const igt_matrix_3x4_t igt_matrix_3x4_bt709_dec;
+
+extern igt_1dlut_t igt_1dlut_srgb_inv_eotf;
+extern igt_1dlut_t igt_1dlut_srgb_eotf;
 
 bool igt_cmp_fb_component(uint16_t comp1, uint16_t comp2, uint8_t up, uint8_t down);
 bool igt_cmp_fb_pixels(igt_fb_t *fb1, igt_fb_t *fb2, uint8_t up, uint8_t down);
@@ -113,19 +88,7 @@ typedef void (*igt_pixel_transform)(igt_pixel_t *pixel);
 
 int igt_color_transform_pixels(igt_fb_t *fb, igt_pixel_transform transforms[], int num_transforms);
 
-/* colorop helpers */
-
-void igt_colorop_set_ctm_3x4(igt_display_t *display,
-			     igt_colorop_t *colorop,
-			     const igt_matrix_3x4_t *matrix);
-
-void igt_colorop_set_custom_1dlut(igt_display_t *display,
-				  igt_colorop_t *colorop,
-				  const igt_1dlut_t *lut1d,
-				  const size_t lut_size);
-
 /* transformations */
-
 void igt_color_srgb_inv_eotf(igt_pixel_t *pixel);
 void igt_color_srgb_eotf(igt_pixel_t *pixel);
 
diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
index 143dff43e..31f433386 100644
--- a/tests/kms_color_helper.c
+++ b/tests/kms_color_helper.c
@@ -388,3 +388,199 @@ void invalid_ctm_matrix_sizes(data_t *data, enum pipe p)
 	free(ptr);
 }
 
+/* Colorops definitions */
+static bool can_use_colorop(igt_display_t *display, igt_colorop_t *colorop, kms_colorop_t *desired)
+{
+	switch (desired->type) {
+	case KMS_COLOROP_ENUMERATED_LUT1D:
+		if (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_1D_CURVE &&
+		    igt_colorop_try_prop_enum(colorop, IGT_COLOROP_CURVE_1D_TYPE, kms_colorop_lut1d_tf_names[desired->enumerated_lut1d_info.tf]))
+			return true;
+		return false;
+	case KMS_COLOROP_CTM_3X4:
+		return (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_CTM_3X4);
+	case KMS_COLOROP_CUSTOM_LUT1D:
+		if (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_1D_LUT)
+			return true;
+		return false;
+	case KMS_COLOROP_MULTIPLIER:
+		return (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_MULTIPLIER);
+	case KMS_COLOROP_LUT3D:
+	default:
+		return false;
+	}
+}
+
+/**
+ * Iterate color pipeline that begins with colorop and try to map
+ * colorops[] to it.
+ */
+static bool map_to_pipeline(igt_display_t *display,
+			    igt_colorop_t *colorop,
+			    kms_colorop_t *colorops[])
+{
+	igt_colorop_t *next = colorop;
+	kms_colorop_t *current_op;
+	int i = 0;
+	int prop_val = 0;
+
+	current_op = colorops[i++];
+	if (!current_op)
+		return false;
+
+	while (next) {
+		if (can_use_colorop(display, next, current_op)) {
+			current_op->colorop = next;
+			current_op = colorops[i++];
+			if (!current_op)
+				break;
+		}
+		prop_val = igt_colorop_get_prop(display, next,
+						IGT_COLOROP_NEXT);
+		next = igt_find_colorop(display, prop_val);
+	}
+
+	if (current_op) {
+		/* we failed to map the pipeline */
+
+		/* clean up colorops[i].colorop mappings */
+		for(i = 0, current_op = colorops[0]; current_op; current_op = colorops[i++])
+			current_op->colorop = NULL;
+
+		return false;
+	}
+
+	return true;
+}
+
+igt_colorop_t *get_color_pipeline(igt_display_t *display,
+				  igt_plane_t *plane,
+				  kms_colorop_t *colorops[])
+{
+	igt_colorop_t *colorop = NULL;
+	int i;
+
+	/* go through all color pipelines */
+	for (i = 0; i < plane->num_color_pipelines; ++i) {
+		if (map_to_pipeline(display, plane->color_pipelines[i], colorops)) {
+			colorop = plane->color_pipelines[i];
+			break;
+		}
+	}
+
+	return colorop;
+}
+
+static void fill_custom_1dlut(igt_display_t *display, kms_colorop_t *colorop)
+{
+	uint64_t lut_size = igt_colorop_get_prop(display, colorop->colorop, IGT_COLOROP_SIZE);
+	igt_pixel_t pixel;
+	float index;
+	int i;
+
+	for (i = 0; i < lut_size; i++) {
+		index = i / (float) lut_size;
+
+		pixel.r = index;
+		pixel.g = index;
+		pixel.b = index;
+
+		colorop->transform(&pixel);
+
+		colorop->lut1d->lut[i].red = pixel.r * 0xffff;
+		colorop->lut1d->lut[i].green = pixel.g * 0xffff;
+		colorop->lut1d->lut[i].blue = pixel.b * 0xffff;
+	}
+}
+
+void set_colorop(igt_display_t *display, kms_colorop_t *colorop)
+{
+	uint64_t lut_size = 0;
+	uint64_t mult = 1;
+
+	igt_assert(colorop->colorop);
+	igt_colorop_set_prop_value(colorop->colorop, IGT_COLOROP_BYPASS, 0);
+
+	/* TODO set to desired value from kms_colorop_t */
+	switch (colorop->type) {
+	case KMS_COLOROP_ENUMERATED_LUT1D:
+		igt_colorop_set_prop_enum(colorop->colorop, IGT_COLOROP_CURVE_1D_TYPE, kms_colorop_lut1d_tf_names[colorop->enumerated_lut1d_info.tf]);
+		break;
+	case KMS_COLOROP_CTM_3X4:
+		igt_colorop_set_ctm_3x4(display, colorop->colorop, colorop->matrix_3x4);
+		break;
+	case KMS_COLOROP_CUSTOM_LUT1D:
+		fill_custom_1dlut(display, colorop);
+		lut_size = igt_colorop_get_prop(display, colorop->colorop, IGT_COLOROP_SIZE);
+		igt_colorop_set_custom_1dlut(display, colorop->colorop, colorop->lut1d, lut_size * sizeof(struct drm_color_lut));
+		break;
+	case KMS_COLOROP_MULTIPLIER:
+		mult = colorop->multiplier * (mult << 32);	/* convert double to fixed number */
+		igt_colorop_set_prop_value(colorop->colorop, IGT_COLOROP_MULTIPLIER, mult);
+		break;
+	case KMS_COLOROP_LUT3D:
+	default:
+		igt_fail(IGT_EXIT_FAILURE);
+	}
+}
+
+void set_color_pipeline(igt_display_t *display,
+			igt_plane_t *plane,
+			kms_colorop_t *colorops[],
+			igt_colorop_t *color_pipeline)
+{
+	igt_colorop_t *next;
+	int prop_val = 0;
+	int i;
+
+	igt_plane_set_color_pipeline(plane, color_pipeline);
+
+	for(i = 0; colorops[i]; i++)
+		set_colorop(display, colorops[i]);
+
+	/* set unused ops in pipeline to bypass */
+	next = color_pipeline;
+	i = 0;
+	while (next) {
+		if (!colorops[i] || colorops[i]->colorop != next)
+			igt_colorop_set_prop_value(next, IGT_COLOROP_BYPASS, 1);
+		else
+			i++;
+
+		prop_val = igt_colorop_get_prop(display, next,
+						IGT_COLOROP_NEXT);
+		next = igt_find_colorop(display, prop_val);
+	}
+}
+
+void igt_colorop_set_ctm_3x4(igt_display_t *display,
+			     igt_colorop_t *colorop,
+			     const igt_matrix_3x4_t *matrix)
+{
+	struct drm_color_ctm_3x4 ctm;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(ctm.matrix); i++) {
+		if (matrix->m[i] < 0) {
+			ctm.matrix[i] =
+				(int64_t) (-matrix->m[i] *
+				((int64_t) 1L << 32));
+			ctm.matrix[i] |= 1ULL << 63;
+		} else {
+			ctm.matrix[i] =
+				(int64_t) (matrix->m[i] *
+				((int64_t) 1L << 32));
+		}
+	}
+
+	/* set blob property */
+	igt_colorop_replace_prop_blob(colorop, IGT_COLOROP_DATA, &ctm, sizeof(ctm));
+}
+
+void igt_colorop_set_custom_1dlut(igt_display_t *display,
+				  igt_colorop_t *colorop,
+				  const igt_1dlut_t *lut1d,
+				  const size_t lut_size)
+{
+	igt_colorop_replace_prop_blob(colorop, IGT_COLOROP_DATA, lut1d, lut_size);
+}
diff --git a/tests/kms_color_helper.h b/tests/kms_color_helper.h
index 23463b944..b3b1875a9 100644
--- a/tests/kms_color_helper.h
+++ b/tests/kms_color_helper.h
@@ -36,6 +36,7 @@
 #include "drm.h"
 #include "drmtest.h"
 #include "igt.h"
+#include "igt_color.h"
 #include "igt_edid.h"
 
 
@@ -53,6 +54,12 @@ typedef struct {
 	igt_plane_t *primary;
 	drmModeModeInfo *mode;
 
+	bool builtin_mode;
+	bool custom_mode;
+	bool list_modes;
+	bool dump_check;
+	int mode_index;
+
 	uint32_t drm_format;
 	uint32_t color_depth;
 	uint64_t degamma_lut_size;
@@ -115,5 +122,53 @@ void invalid_gamma_lut_sizes(data_t *data, enum pipe p);
 void invalid_degamma_lut_sizes(data_t *data, enum pipe p);
 void invalid_ctm_matrix_sizes(data_t *data, enum pipe p);
 
+/* Test version definitions */
+typedef enum kms_colorop_type {
+	KMS_COLOROP_ENUMERATED_LUT1D,
+	KMS_COLOROP_CUSTOM_LUT1D,
+	KMS_COLOROP_CTM_3X4,
+	KMS_COLOROP_MULTIPLIER,
+	KMS_COLOROP_LUT3D
+} kms_colorop_type_t;
+
+typedef struct kms_colorop_enumerated_lut1d_info {
+	kms_colorop_lut1d_tf_t tf;
+} kms_colorop_enumerated_lut1d_info_t;
+
+typedef struct kms_colorop {
+	kms_colorop_type_t type;
+
+	union {
+		kms_colorop_enumerated_lut1d_info_t enumerated_lut1d_info;
+		igt_1dlut_t *lut1d;
+		const igt_matrix_3x4_t *matrix_3x4;
+		double multiplier;
+	};
+
+	const char *name;
+
+	igt_pixel_transform transform;
+
+	/* Mapped colorop */
+	igt_colorop_t *colorop;
+
+} kms_colorop_t;
+
+/* colorop helpers */
+igt_colorop_t *get_color_pipeline(igt_display_t *display, igt_plane_t *plane,
+			      kms_colorop_t *colorops[]);
+void set_colorop(igt_display_t *display, kms_colorop_t *colorop);
+void set_color_pipeline(igt_display_t *display, igt_plane_t *plane,
+			      kms_colorop_t *colorops[], igt_colorop_t *color_pipeline);
+void igt_colorop_set_ctm_3x4(igt_display_t *display,
+			     igt_colorop_t *colorop,
+			     const igt_matrix_3x4_t *matrix);
+void igt_colorop_set_custom_1dlut(igt_display_t *display,
+				  igt_colorop_t *colorop,
+				  const igt_1dlut_t *lut1d,
+				  const size_t lut_size);
+
+#define set_color_pipeline_bypass(plane)  igt_plane_set_prop_enum((plane), IGT_PLANE_COLOR_PIPELINE, "Bypass")
+
 #endif
 
diff --git a/tests/kms_colorop.c b/tests/kms_colorop.c
index 6b60db9d9..d050787d8 100644
--- a/tests/kms_colorop.c
+++ b/tests/kms_colorop.c
@@ -20,12 +20,9 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include "igt.h"
-#include "igt_color.h"
+#include "kms_color_helper.h"
 #include "sw_sync.h"
 
-#include "kms_colorop.h"
-
 /**
  * TEST: kms colorop
  * Category: Display
@@ -73,6 +70,159 @@
  * @multiply_inv_125:			Multiplier by inverse of 125
  */
 
+kms_colorop_t kms_colorop_srgb_eotf = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_SRGB_EOTF
+	},
+	.name = "srgb_eotf",
+	.transform = &igt_color_srgb_eotf
+};
+
+kms_colorop_t kms_colorop_srgb_inv_eotf = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_SRGB_INV_EOTF
+	},
+	.name = "srgb_inv_eotf",
+	.transform = &igt_color_srgb_inv_eotf
+};
+
+kms_colorop_t kms_colorop_ctm_3x4_50_desat = {
+	.type = KMS_COLOROP_CTM_3X4,
+	.matrix_3x4 = &igt_matrix_3x4_50_desat,
+	.name = "ctm_3x4_50_desat",
+	.transform = &igt_color_ctm_3x4_50_desat
+};
+
+kms_colorop_t kms_colorop_ctm_3x4_overdrive = {
+	.type = KMS_COLOROP_CTM_3X4,
+	.matrix_3x4 = &igt_matrix_3x4_overdrive,
+	.name = "ctm_3x4_overdrive",
+	.transform = &igt_color_ctm_3x4_overdrive
+};
+
+kms_colorop_t kms_colorop_ctm_3x4_oversaturate = {
+	.type = KMS_COLOROP_CTM_3X4,
+	.matrix_3x4 = &igt_matrix_3x4_oversaturate,
+	.name = "ctm_3x4_oversaturate",
+	.transform = &igt_color_ctm_3x4_oversaturate
+};
+
+kms_colorop_t kms_colorop_ctm_3x4_bt709_enc = {
+	.type = KMS_COLOROP_CTM_3X4,
+	.matrix_3x4 = &igt_matrix_3x4_bt709_enc,
+	.name = "ctm_3x4_bt709_enc",
+	.transform = &igt_color_ctm_3x4_bt709_enc
+};
+
+kms_colorop_t kms_colorop_ctm_3x4_bt709_dec = {
+	.type = KMS_COLOROP_CTM_3X4,
+	.matrix_3x4 = &igt_matrix_3x4_bt709_dec,
+	.name = "ctm_3x4_bt709_dec",
+	.transform = &igt_color_ctm_3x4_bt709_dec
+};
+
+kms_colorop_t kms_colorop_srgb_eotf_2 = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_SRGB_EOTF
+	},
+	.name = "srgb_eotf",
+	.transform = &igt_color_srgb_eotf
+};
+
+kms_colorop_t kms_colorop_srgb_inv_eotf_lut = {
+	.type = KMS_COLOROP_CUSTOM_LUT1D,
+	.lut1d = &igt_1dlut_srgb_inv_eotf,
+	.name = "srgb_inv_eotf_lut",
+	.transform = &igt_color_srgb_inv_eotf
+};
+
+kms_colorop_t kms_colorop_srgb_eotf_lut = {
+	.type = KMS_COLOROP_CUSTOM_LUT1D,
+	.lut1d = &igt_1dlut_srgb_eotf,
+	.name = "srgb_eotf_lut",
+	.transform = &igt_color_srgb_eotf
+};
+
+kms_colorop_t kms_colorop_bt2020_inv_oetf = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_BT2020_INV_OETF
+	},
+	.name = "bt2020_inv_oetf",
+	.transform = &igt_color_bt2020_inv_oetf
+};
+
+kms_colorop_t kms_colorop_bt2020_oetf = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_BT2020_OETF
+	},
+	.name = "bt2020_oetf",
+	.transform = &igt_color_bt2020_oetf
+};
+
+kms_colorop_t kms_colorop_pq_eotf = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_PQ_EOTF
+	},
+	.name = "pq_eotf",
+	.transform = &igt_color_pq_eotf
+};
+
+kms_colorop_t kms_colorop_pq_inv_eotf = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_PQ_INV_EOTF
+	},
+	.name = "pq_inv_eotf",
+	.transform = &igt_color_pq_inv_eotf
+};
+
+kms_colorop_t kms_colorop_pq_125_eotf = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_PQ_125_EOTF
+	},
+	.name = "pq_125_eotf",
+	.transform = &igt_color_pq_125_eotf
+};
+
+kms_colorop_t kms_colorop_pq_125_eotf_2 = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_PQ_125_EOTF
+	},
+	.name = "pq_125_eotf",
+	.transform = &igt_color_pq_125_eotf
+};
+
+kms_colorop_t kms_colorop_pq_125_inv_eotf = {
+	.type = KMS_COLOROP_ENUMERATED_LUT1D,
+	.enumerated_lut1d_info = {
+		.tf = KMS_COLOROP_LUT1D_PQ_125_INV_EOTF
+	},
+	.name = "pq_125_inv_eotf",
+	.transform = &igt_color_pq_125_inv_eotf
+};
+
+kms_colorop_t kms_colorop_multiply_125 = {
+	.type =	KMS_COLOROP_MULTIPLIER,
+	.multiplier = 125.0f,
+	.name = "multiply_125",
+	.transform = &igt_color_multiply_125
+};
+
+kms_colorop_t kms_colorop_multiply_inv_125 = {
+	.type =	KMS_COLOROP_MULTIPLIER,
+	.multiplier = 1/125.0f,
+	.name = "multiply_inv_125",
+	.transform = &igt_color_multiply_inv_125
+};
+
 /* TODO move to lib for kms_writeback and kms_colorop (and other future) use */
 static bool check_writeback_config(igt_display_t *display, igt_output_t *output,
 				    drmModeModeInfo override_mode, __u32 fourcc_in,
@@ -128,16 +278,6 @@ static bool check_writeback_config(igt_display_t *display, igt_output_t *output,
 	return !ret;
 }
 
-/* TODO move to lib for kms_writeback and kms_colorop (and other future) use */
-typedef struct {
-	bool builtin_mode;
-	bool custom_mode;
-	bool list_modes;
-	bool dump_check;
-	int mode_index;
-	drmModeModeInfo user_mode;
-} data_t;
-
 static data_t data;
 
 /* TODO move to lib for kms_writeback and kms_colorop (and other future) use */
@@ -173,7 +313,7 @@ static igt_output_t *kms_writeback_get_output(igt_display_t *display, __u32 four
 			igt_output_set_pipe(output, pipe);
 
 			if (data.custom_mode)
-				override_mode = data.user_mode;
+				override_mode = *data.mode;
 			if (data.builtin_mode)
 				override_mode = output->config.connector->modes[data.mode_index];
 
@@ -223,177 +363,6 @@ static void get_and_wait_out_fence(igt_output_t *output)
 	output->writeback_out_fence_fd = -1;
 }
 
-static bool can_use_colorop(igt_display_t *display, igt_colorop_t *colorop, kms_colorop_t *desired)
-{
-	switch (desired->type) {
-	case KMS_COLOROP_ENUMERATED_LUT1D:
-		if (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_1D_CURVE &&
-		    igt_colorop_try_prop_enum(colorop, IGT_COLOROP_CURVE_1D_TYPE, kms_colorop_lut1d_tf_names[desired->enumerated_lut1d_info.tf]))
-			return true;
-		return false;
-	case KMS_COLOROP_CTM_3X4:
-		return (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_CTM_3X4);
-	case KMS_COLOROP_CUSTOM_LUT1D:
-		if (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_1D_LUT)
-			return true;
-		return false;
-	case KMS_COLOROP_MULTIPLIER:
-		return (igt_colorop_get_prop(display, colorop, IGT_COLOROP_TYPE) == DRM_COLOROP_MULTIPLIER);
-	case KMS_COLOROP_LUT3D:
-	default:
-		return false;
-	}
-}
-
-/**
- * Iterate color pipeline that begins with colorop and try to map
- * colorops[] to it.
- */
-static bool map_to_pipeline(igt_display_t *display,
-			    igt_colorop_t *colorop,
-			    kms_colorop_t *colorops[])
-{
-	igt_colorop_t *next = colorop;
-	kms_colorop_t *current_op;
-	int i = 0;
-	int prop_val = 0;
-
-	current_op = colorops[i];
-	i++;
-	igt_require(current_op);
-
-	while (next) {
-		if (can_use_colorop(display, next, current_op)) {
-			current_op->colorop = next;
-			current_op = colorops[i];
-			i++;
-			if (!current_op)
-				break;
-		}
-		prop_val = igt_colorop_get_prop(display, next,
-						IGT_COLOROP_NEXT);
-		next = igt_find_colorop(display, prop_val);
-	}
-
-	if (current_op) {
-		/* we failed to map the pipeline */
-
-		/* clean up colorops[i].colorop mappings */
-		for(i = 0, current_op = colorops[0]; current_op; current_op = colorops[i++])
-			current_op->colorop = NULL;
-
-		return false;
-	}
-
-	return true;
-}
-
-static igt_colorop_t *get_color_pipeline(igt_display_t *display,
-					 igt_plane_t *plane,
-					 kms_colorop_t *colorops[])
-{
-	igt_colorop_t *colorop = NULL;
-	int i;
-
-	/* go through all color pipelines */
-	for (i = 0; i < plane->num_color_pipelines; ++i) {
-		if (map_to_pipeline(display, plane->color_pipelines[i], colorops)) {
-			colorop = plane->color_pipelines[i];
-			break;
-		}
-	}
-
-	return colorop;
-}
-
-static void fill_custom_1dlut(igt_display_t *display, kms_colorop_t *colorop)
-{
-	uint64_t lut_size = igt_colorop_get_prop(display, colorop->colorop, IGT_COLOROP_SIZE);
-	igt_pixel_t pixel;
-	float index;
-	int i;
-
-	for (i = 0; i < lut_size; i++) {
-		index = i / (float) lut_size;
-
-		pixel.r = index;
-		pixel.g = index;
-		pixel.b = index;
-
-		colorop->transform(&pixel);
-
-		colorop->lut1d->lut[i].red = pixel.r * 0xffff;
-		colorop->lut1d->lut[i].green = pixel.g * 0xffff;
-		colorop->lut1d->lut[i].blue = pixel.b * 0xffff;
-	}
-}
-
-static void set_colorop(igt_display_t *display,
-			kms_colorop_t *colorop)
-{
-	uint64_t lut_size = 0;
-	uint64_t mult = 1;
-
-	igt_assert(colorop->colorop);
-	igt_colorop_set_prop_value(colorop->colorop, IGT_COLOROP_BYPASS, 0);
-
-	/* TODO set to desired value from kms_colorop_t */
-	switch (colorop->type) {
-	case KMS_COLOROP_ENUMERATED_LUT1D:
-		igt_colorop_set_prop_enum(colorop->colorop, IGT_COLOROP_CURVE_1D_TYPE, kms_colorop_lut1d_tf_names[colorop->enumerated_lut1d_info.tf]);
-		break;
-	case KMS_COLOROP_CTM_3X4:
-		igt_colorop_set_ctm_3x4(display, colorop->colorop, colorop->matrix_3x4);
-		break;
-	case KMS_COLOROP_CUSTOM_LUT1D:
-		fill_custom_1dlut(display, colorop);
-		lut_size = igt_colorop_get_prop(display, colorop->colorop, IGT_COLOROP_SIZE);
-		igt_colorop_set_custom_1dlut(display, colorop->colorop, colorop->lut1d, lut_size * sizeof(struct drm_color_lut));
-		break;
-	case KMS_COLOROP_MULTIPLIER:
-		mult = colorop->multiplier * (mult << 32);	/* convert double to fixed number */
-		igt_colorop_set_prop_value(colorop->colorop, IGT_COLOROP_MULTIPLIER, mult);
-		break;
-	case KMS_COLOROP_LUT3D:
-	default:
-		igt_fail(IGT_EXIT_FAILURE);
-	}
-}
-
-static void set_color_pipeline(igt_display_t *display,
-			       igt_plane_t *plane,
-			       kms_colorop_t *colorops[],
-			       igt_colorop_t *color_pipeline)
-{
-	igt_colorop_t *next;
-	int prop_val = 0;
-	int i;
-
-	igt_plane_set_color_pipeline(plane, color_pipeline);
-
-	for(i = 0; colorops[i]; i++)
-		set_colorop(display, colorops[i]);
-
-	/* set unused ops in pipeline to bypass */
-	next = color_pipeline;
-	i = 0;
-	while (next) {
-		if (!colorops[i] || colorops[i]->colorop != next)
-			igt_colorop_set_prop_value(next, IGT_COLOROP_BYPASS, 1);
-		else
-			i++;
-
-		prop_val = igt_colorop_get_prop(display, next,
-						IGT_COLOROP_NEXT);
-		next = igt_find_colorop(display, prop_val);
-	}
-}
-
-static void set_color_pipeline_bypass(igt_plane_t *plane)
-{
-	igt_plane_set_prop_enum(plane, IGT_PLANE_COLOR_PIPELINE, "Bypass");
-}
-
 static bool compare_with_bracket(igt_fb_t *in, igt_fb_t *out)
 {
 	if (is_vkms_device(in->fd))
diff --git a/tests/kms_colorop.h b/tests/kms_colorop.h
deleted file mode 100644
index 1def86bc3..000000000
--- a/tests/kms_colorop.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright 2023 Advanced Micro Devices, Inc.
- *
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 __KMS_COLOROP_H__
-#define __KMS_COLOROP_H__
-
-#include "igt_color.h"
-
-typedef bool (*compare_fb_t)(igt_fb_t *in, igt_fb_t *out);
-
-typedef int (*transform_fb)(igt_fb_t *in);
-
-typedef int (*transform_pixel)(igt_pixel_t *pixel);
-
-/* Test version definitions */
-typedef enum kms_colorop_type {
-	KMS_COLOROP_ENUMERATED_LUT1D,
-	KMS_COLOROP_CUSTOM_LUT1D,
-	KMS_COLOROP_CTM_3X4,
-	KMS_COLOROP_MULTIPLIER,
-	KMS_COLOROP_LUT3D
-} kms_colorop_type_t;
-
-typedef enum kms_colorop_lut1d_tf {
-	KMS_COLOROP_LUT1D_SRGB_EOTF,
-	KMS_COLOROP_LUT1D_SRGB_INV_EOTF,
-	KMS_COLOROP_LUT1D_BT2020_INV_OETF,
-	KMS_COLOROP_LUT1D_BT2020_OETF,
-	KMS_COLOROP_LUT1D_PQ_EOTF,
-	KMS_COLOROP_LUT1D_PQ_INV_EOTF,
-	KMS_COLOROP_LUT1D_PQ_125_EOTF,
-	KMS_COLOROP_LUT1D_PQ_125_INV_EOTF,
-	KMS_COLOROP_LUT1D_NUM_ENUMS
-} kms_colorop_lut1d_tf_t;
-
-const char * const kms_colorop_lut1d_tf_names[KMS_COLOROP_LUT1D_NUM_ENUMS] = {
-	[KMS_COLOROP_LUT1D_SRGB_EOTF] = "sRGB EOTF",
-	[KMS_COLOROP_LUT1D_SRGB_INV_EOTF] = "sRGB Inverse EOTF",
-	[KMS_COLOROP_LUT1D_BT2020_INV_OETF] = "BT.2020 Inverse OETF",
-	[KMS_COLOROP_LUT1D_BT2020_OETF] = "BT.2020 OETF",
-	[KMS_COLOROP_LUT1D_PQ_EOTF] = "PQ EOTF",
-	[KMS_COLOROP_LUT1D_PQ_INV_EOTF] = "PQ Inverse EOTF",
-	[KMS_COLOROP_LUT1D_PQ_125_EOTF] = "PQ 125 EOTF",
-	[KMS_COLOROP_LUT1D_PQ_125_INV_EOTF] = "PQ 125 Inverse EOTF",
-};
-
-typedef struct kms_colorop_enumerated_lut1d_info {
-	kms_colorop_lut1d_tf_t tf;
-} kms_colorop_enumerated_lut1d_info_t;
-
-typedef struct kms_colorop {
-	kms_colorop_type_t type;
-
-	union {
-		kms_colorop_enumerated_lut1d_info_t enumerated_lut1d_info;
-		igt_1dlut_t *lut1d;
-		const igt_matrix_3x4_t *matrix_3x4;
-		double multiplier;
-	};
-
-	const char *name;
-
-	igt_pixel_transform transform;
-
-	/* Mapped colorop */
-	igt_colorop_t *colorop;
-
-} kms_colorop_t;
-
-kms_colorop_t kms_colorop_srgb_eotf = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_SRGB_EOTF
-	},
-	.name = "srgb_eotf",
-	.transform = &igt_color_srgb_eotf
-};
-
-kms_colorop_t kms_colorop_srgb_eotf_2 = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_SRGB_EOTF
-	},
-	.name = "srgb_eotf",
-	.transform = &igt_color_srgb_eotf
-};
-
-kms_colorop_t kms_colorop_srgb_inv_eotf = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_SRGB_INV_EOTF
-	},
-	.name = "srgb_inv_eotf",
-	.transform = &igt_color_srgb_inv_eotf
-};
-
-kms_colorop_t kms_colorop_srgb_inv_eotf_lut = {
-	.type = KMS_COLOROP_CUSTOM_LUT1D,
-	.lut1d = &igt_1dlut_srgb_inv_eotf,
-	.name = "srgb_inv_eotf_lut",
-	.transform = &igt_color_srgb_inv_eotf
-};
-
-kms_colorop_t kms_colorop_srgb_eotf_lut = {
-	.type = KMS_COLOROP_CUSTOM_LUT1D,
-	.lut1d = &igt_1dlut_srgb_eotf,
-	.name = "srgb_eotf_lut",
-	.transform = &igt_color_srgb_eotf
-};
-
-kms_colorop_t kms_colorop_bt2020_inv_oetf = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_BT2020_INV_OETF
-	},
-	.name = "bt2020_inv_oetf",
-	.transform = &igt_color_bt2020_inv_oetf
-};
-
-kms_colorop_t kms_colorop_bt2020_oetf = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_BT2020_OETF
-	},
-	.name = "bt2020_oetf",
-	.transform = &igt_color_bt2020_oetf
-};
-
-kms_colorop_t kms_colorop_pq_eotf = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_PQ_EOTF
-	},
-	.name = "pq_eotf",
-	.transform = &igt_color_pq_eotf
-};
-
-kms_colorop_t kms_colorop_pq_inv_eotf = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_PQ_INV_EOTF
-	},
-	.name = "pq_inv_eotf",
-	.transform = &igt_color_pq_inv_eotf
-};
-
-kms_colorop_t kms_colorop_pq_125_eotf = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_PQ_125_EOTF
-	},
-	.name = "pq_125_eotf",
-	.transform = &igt_color_pq_125_eotf
-};
-
-kms_colorop_t kms_colorop_pq_125_eotf_2 = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_PQ_125_EOTF
-	},
-	.name = "pq_125_eotf",
-	.transform = &igt_color_pq_125_eotf
-};
-
-kms_colorop_t kms_colorop_pq_125_inv_eotf = {
-	.type = KMS_COLOROP_ENUMERATED_LUT1D,
-	.enumerated_lut1d_info = {
-		.tf = KMS_COLOROP_LUT1D_PQ_125_INV_EOTF
-	},
-	.name = "pq_125_inv_eotf",
-	.transform = &igt_color_pq_125_inv_eotf
-};
-
-kms_colorop_t kms_colorop_ctm_3x4_50_desat = {
-	.type = KMS_COLOROP_CTM_3X4,
-	.matrix_3x4 = &igt_matrix_3x4_50_desat,
-	.name = "ctm_3x4_50_desat",
-	.transform = &igt_color_ctm_3x4_50_desat
-};
-
-kms_colorop_t kms_colorop_ctm_3x4_overdrive = {
-	.type = KMS_COLOROP_CTM_3X4,
-	.matrix_3x4 = &igt_matrix_3x4_overdrive,
-	.name = "ctm_3x4_overdrive",
-	.transform = &igt_color_ctm_3x4_overdrive
-};
-
-kms_colorop_t kms_colorop_ctm_3x4_oversaturate = {
-	.type = KMS_COLOROP_CTM_3X4,
-	.matrix_3x4 = &igt_matrix_3x4_oversaturate,
-	.name = "ctm_3x4_oversaturate",
-	.transform = &igt_color_ctm_3x4_oversaturate
-};
-
-kms_colorop_t kms_colorop_ctm_3x4_bt709_enc = {
-	.type = KMS_COLOROP_CTM_3X4,
-	.matrix_3x4 = &igt_matrix_3x4_bt709_enc,
-	.name = "ctm_3x4_bt709_enc",
-	.transform = &igt_color_ctm_3x4_bt709_enc
-};
-
-kms_colorop_t kms_colorop_ctm_3x4_bt709_dec = {
-	.type = KMS_COLOROP_CTM_3X4,
-	.matrix_3x4 = &igt_matrix_3x4_bt709_dec,
-	.name = "ctm_3x4_bt709_dec",
-	.transform = &igt_color_ctm_3x4_bt709_dec
-};
-
-kms_colorop_t kms_colorop_multiply_125 = {
-	.type =	KMS_COLOROP_MULTIPLIER,
-	.multiplier = 125.0f,
-	.name = "multiply_125",
-	.transform = &igt_color_multiply_125
-};
-
-kms_colorop_t kms_colorop_multiply_inv_125 = {
-	.type =	KMS_COLOROP_MULTIPLIER,
-	.multiplier = 1/125.0f,
-	.name = "multiply_inv_125",
-	.transform = &igt_color_multiply_inv_125
-};
-
-#endif /* __KMS_COLOROP_H__ */
diff --git a/tests/meson.build b/tests/meson.build
index d2f4214bf..28c4e610d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -352,6 +352,7 @@ extra_sources = {
 	'dumb_buffer': ['dumb_buffer.c' ],
 	'testdisplay': [ 'testdisplay_hotplug.c' ],
 	'kms_color':  [ 'kms_color_helper.c' ],
+	'kms_colorop':  [ 'kms_color_helper.c' ],
 	'kms_chamelium_audio': [ join_paths ('chamelium', 'kms_chamelium_helper.c') ],
 	'kms_chamelium_color':  [ 'kms_color_helper.c' ],
 	'kms_chamelium_edid': [ join_paths ('chamelium', 'kms_chamelium_helper.c') ],
-- 
2.43.2



More information about the Intel-gfx-trybot mailing list