[igt-dev] [PATCH i-g-t 5/8] tests/kms_color: Get rid of hand coded "expected_colors"
Ville Syrjala
ville.syrjala at linux.intel.com
Tue Apr 11 07:50:58 UTC 2023
From: Ville Syrjälä <ville.syrjala at linux.intel.com>
Instead of specifying the expected colors by hand just apply
the ctm to the fb colors and let the computer do the work for
us.
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
tests/kms_color.c | 59 +++++++++++++++++------------------------------
1 file changed, 21 insertions(+), 38 deletions(-)
diff --git a/tests/kms_color.c b/tests/kms_color.c
index e3fe2aea4695..d430ee12aaa3 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -735,10 +735,18 @@ out:
test_cleanup(data);
}
+static void transform_color(color_t *color, const double *ctm, double offset)
+{
+ color_t tmp = *color;
+
+ color->r = ctm[0] * tmp.r + ctm[1] * tmp.g + ctm[2] * tmp.b + offset;
+ color->g = ctm[3] * tmp.r + ctm[4] * tmp.g + ctm[5] * tmp.b + offset;
+ color->b = ctm[6] * tmp.r + ctm[7] * tmp.g + ctm[8] * tmp.b + offset;
+}
+
static void
run_ctm_tests_for_pipe(data_t *data, enum pipe p,
const color_t *fb_colors,
- const color_t *expected_colors,
const double *ctm,
int iter)
{
@@ -758,14 +766,13 @@ run_ctm_tests_for_pipe(data_t *data, enum pipe p,
if (!pipe_output_combo_valid(data, p))
goto out;
+ if (!iter)
+ iter = 1;
+
igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(p), data->output->name) {
bool success = false;
int i;
- if (!iter)
- success = test_pipe_ctm(data, data->primary, fb_colors,
- expected_colors, ctm);
-
/*
* We tests a few values around the expected result because
* it depends on the hardware we're dealing with, we can either
@@ -773,15 +780,18 @@ run_ctm_tests_for_pipe(data_t *data, enum pipe p,
* for odd number of items in the LUTs.
*/
for (i = 0; i < iter; i++) {
- float c = ctm[0] + delta * (i - (iter / 2));
- color_t expected_colors_local[] = {
- { .r = c, },
- { .g = c, },
- { .b = c, },
+ color_t expected_colors[3] = {
+ fb_colors[0],
+ fb_colors[1],
+ fb_colors[2],
};
+ transform_color(&expected_colors[0], ctm, delta * (i - (iter / 2)));
+ transform_color(&expected_colors[1], ctm, delta * (i - (iter / 2)));
+ transform_color(&expected_colors[2], ctm, delta * (i - (iter / 2)));
+
if (test_pipe_ctm(data, data->primary, fb_colors,
- expected_colors_local, ctm)) {
+ expected_colors, ctm)) {
success = true;
break;
}
@@ -953,17 +963,11 @@ run_tests_for_pipe(data_t *data)
const char *name;
int iter;
const color_t *fb_colors;
- color_t colors[3];
double ctm[9];
const char *desc;
} ctm_tests[] = {
{ .name = "ctm-red-to-blue",
.fb_colors = colors_rgb,
- .colors = {
- { 0.0, 0.0, 1.0 },
- { 0.0, 1.0, 0.0 },
- { 0.0, 0.0, 1.0 },
- },
.ctm = {
0.0, 0.0, 0.0,
0.0, 1.0, 0.0,
@@ -973,11 +977,6 @@ run_tests_for_pipe(data_t *data)
},
{ .name = "ctm-green-to-red",
.fb_colors = colors_rgb,
- .colors = {
- { 1.0, 0.0, 0.0 },
- { 1.0, 0.0, 0.0 },
- { 0.0, 0.0, 1.0 },
- },
.ctm = {
1.0, 1.0, 0.0,
0.0, 0.0, 0.0,
@@ -987,11 +986,6 @@ run_tests_for_pipe(data_t *data)
},
{ .name = "ctm-blue-to-red",
.fb_colors = colors_rgb,
- .colors = {
- { 1.0, 0.0, 0.0 },
- { 0.0, 1.0, 0.0 },
- { 1.0, 0.0, 0.0 },
- },
.ctm = {
1.0, 0.0, 1.0,
0.0, 1.0, 0.0,
@@ -1001,11 +995,6 @@ run_tests_for_pipe(data_t *data)
},
{ .name = "ctm-max",
.fb_colors = colors_rgb,
- .colors = {
- { 1.0, 0.0, 0.0 },
- { 0.0, 1.0, 0.0 },
- { 0.0, 0.0, 1.0 },
- },
.ctm = { 100.0, 0.0, 0.0,
0.0, 100.0, 0.0,
0.0, 0.0, 100.0,
@@ -1014,11 +1003,6 @@ run_tests_for_pipe(data_t *data)
},
{ .name = "ctm-negative",
.fb_colors = colors_rgb,
- .colors = {
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 },
- },
.ctm = {
-1.0, 0.0, 0.0,
0.0, -1.0, 0.0,
@@ -1075,7 +1059,6 @@ run_tests_for_pipe(data_t *data)
for_each_pipe(&data->display, pipe) {
run_ctm_tests_for_pipe(data, pipe,
ctm_tests[i].fb_colors,
- ctm_tests[i].colors,
ctm_tests[i].ctm,
ctm_tests[i].iter);
}
--
2.39.2
More information about the igt-dev
mailing list