* [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
@ 2019-12-11 20:46 sunpeng.li
2019-12-11 20:54 ` Kazlauskas, Nicholas
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: sunpeng.li @ 2019-12-11 20:46 UTC (permalink / raw)
To: igt-dev
From: Leo Li <sunpeng.li@amd.com>
We'd like to test the hardware pipe's color management with 10bit
surfaces. This change parameterizes the hardcoded formats within each
test, and ennumerates the additional subtests within a for loop. To
avoid renaming existing tests, the 10bpc tests will have '-10bpc'
inserted after the pipe name, while the 8bpc test names remain
unchanged.
Signed-off-by: Leo Li <sunpeng.li@amd.com>
---
tests/kms_color.c | 353 ++++++++++++++++++++++++++--------------------
1 file changed, 198 insertions(+), 155 deletions(-)
diff --git a/tests/kms_color.c b/tests/kms_color.c
index b4b578a7..3c76a0d2 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -52,6 +52,12 @@ typedef struct {
double coeffs[];
} gamma_lut_t;
+typedef struct {
+ uint32_t format;
+ int bpc;
+ char name[16];
+} fb_format_t;
+
static void paint_gradient_rectangles(data_t *data,
drmModeModeInfo *mode,
color_t *colors,
@@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
* rectangles with linear degamma LUT.
*/
static void test_pipe_degamma(data_t *data,
- igt_plane_t *primary)
+ igt_plane_t *primary,
+ uint32_t fb_format)
{
igt_output_t *output;
gamma_lut_t *degamma_linear, *degamma_full;
@@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data,
fb_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb);
igt_assert(fb_id);
@@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data,
fb_modeset_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb_modeset);
igt_assert(fb_modeset_id);
@@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data,
* LUT and verify we have the same CRC as drawing solid color rectangles.
*/
static void test_pipe_gamma(data_t *data,
- igt_plane_t *primary)
+ igt_plane_t *primary,
+ uint32_t fb_format)
{
igt_output_t *output;
gamma_lut_t *gamma_full;
@@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data,
fb_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb);
igt_assert(fb_id);
@@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data,
fb_modeset_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb_modeset);
igt_assert(fb_modeset_id);
@@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data,
* with linear legacy gamma LUT.
*/
static void test_pipe_legacy_gamma(data_t *data,
- igt_plane_t *primary)
+ igt_plane_t *primary,
+ uint32_t fb_format)
{
igt_output_t *output;
color_t red_green_blue[] = {
@@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data,
fb_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb);
igt_assert(fb_id);
@@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data,
fb_modeset_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb_modeset);
igt_assert(fb_modeset_id);
@@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data,
igt_plane_t *primary,
color_t *before,
color_t *after,
- double *ctm_matrix)
+ double *ctm_matrix,
+ uint32_t fb_format)
{
const double ctm_identity[] = {
1.0, 0.0, 0.0,
@@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data,
fb_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb);
igt_assert(fb_id);
@@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data,
fb_modeset_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb_modeset);
igt_assert(fb_modeset_id);
@@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data,
*/
#if 0
static void test_pipe_limited_range_ctm(data_t *data,
- igt_plane_t *primary)
+ igt_plane_t *primary,
+ uint32_t fb_format)
{
double limited_result = 235.0 / 255.0;
color_t red_green_blue_limited[] = {
@@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
fb_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb);
igt_assert(fb_id);
@@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
fb_modeset_id = igt_create_fb(data->drm_fd,
mode->hdisplay,
mode->vdisplay,
- DRM_FORMAT_XRGB8888,
+ fb_format,
LOCAL_DRM_FORMAT_MOD_NONE,
&fb_modeset);
igt_assert(fb_modeset_id);
@@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p)
igt_pipe_t *pipe;
igt_plane_t *primary;
double delta;
- int i;
+ int i, j;
color_t red_green_blue[] = {
{ 1.0, 0.0, 0.0 },
{ 0.0, 1.0, 0.0 },
{ 0.0, 0.0, 1.0 }
};
+ fb_format_t fb_formats[] = {
+ { DRM_FORMAT_XRGB8888, 8 , ""},
+ { DRM_FORMAT_XRGB2101010, 10 , "-10bpc"}
+ };
+
igt_fixture {
igt_require_pipe_crc(data->drm_fd);
@@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p)
igt_display_require_output_on_pipe(&data->display, p);
}
- /* We assume an 8bits depth per color for degamma/gamma LUTs
- * for CRC checks with framebuffer references. */
- data->color_depth = 8;
- delta = 1.0 / (1 << data->color_depth);
-
- igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
- color_t blue_green_blue[] = {
- { 0.0, 0.0, 1.0 },
- { 0.0, 1.0, 0.0 },
- { 0.0, 0.0, 1.0 }
- };
- double ctm[] = { 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0,
- 1.0, 0.0, 1.0 };
- igt_assert(test_pipe_ctm(data, primary, red_green_blue,
- blue_green_blue, ctm));
- }
+ /* Iterate over fb formats to test */
+ for (j = 0; j < ARRAY_SIZE(fb_formats); j++) {
+
+ fb_format_t *fb_format = &fb_formats[j];
+ data->color_depth = fb_format->bpc;
+ delta = 1.0 / (1 << data->color_depth);
+
+ igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p),
+ fb_format->name) {
+ color_t blue_green_blue[] = {
+ { 0.0, 0.0, 1.0 },
+ { 0.0, 1.0, 0.0 },
+ { 0.0, 0.0, 1.0 }
+ };
+ double ctm[] = { 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 1.0, 0.0, 1.0 };
+ igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+ blue_green_blue, ctm,
+ fb_format->format));
+ }
- igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
- color_t red_red_blue[] = {
- { 1.0, 0.0, 0.0 },
- { 1.0, 0.0, 0.0 },
- { 0.0, 0.0, 1.0 }
- };
- double ctm[] = { 1.0, 1.0, 0.0,
- 0.0, 0.0, 0.0,
- 0.0, 0.0, 1.0 };
- igt_assert(test_pipe_ctm(data, primary, red_green_blue,
- red_red_blue, ctm));
- }
+ igt_subtest_f("pipe-%s%s-ctm-green-to-red",
+ kmstest_pipe_name(p), fb_format->name) {
+ color_t red_red_blue[] = {
+ { 1.0, 0.0, 0.0 },
+ { 1.0, 0.0, 0.0 },
+ { 0.0, 0.0, 1.0 }
+ };
+ double ctm[] = { 1.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0 };
+ igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+ red_red_blue, ctm,
+ fb_format->format));
+ }
- igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
- color_t red_green_red[] = {
- { 1.0, 0.0, 0.0 },
- { 0.0, 1.0, 0.0 },
- { 1.0, 0.0, 0.0 }
- };
- double ctm[] = { 1.0, 0.0, 1.0,
- 0.0, 1.0, 0.0,
- 0.0, 0.0, 0.0 };
- igt_assert(test_pipe_ctm(data, primary, red_green_blue,
- red_green_red, ctm));
- }
+ igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p),
+ fb_format->name) {
+ color_t red_green_red[] = {
+ { 1.0, 0.0, 0.0 },
+ { 0.0, 1.0, 0.0 },
+ { 1.0, 0.0, 0.0 }
+ };
+ double ctm[] = { 1.0, 0.0, 1.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0 };
+ igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+ red_green_red, ctm,
+ fb_format->format));
+ }
- /* We tests a few values around the expected result because
- * the it depends on the hardware we're dealing with, we can
- * either get clamped or rounded values and we also need to
- * account for odd number of items in the LUTs. */
- igt_subtest_f("pipe-%s-ctm-0-25", kmstest_pipe_name(p)) {
- color_t expected_colors[] = {
- { 0.0, }, { 0.0, }, { 0.0, }
- };
- double ctm[] = { 0.25, 0.0, 0.0,
- 0.0, 0.25, 0.0,
- 0.0, 0.0, 0.25 };
- bool success = false;
-
- for (i = 0; i < 5; i++) {
- expected_colors[0].r =
- expected_colors[1].g =
- expected_colors[2].b =
- 0.25 + delta * (i - 2);
- success |= test_pipe_ctm(data, primary,
- red_green_blue,
- expected_colors, ctm);
+ /* We tests a few values around the expected result because
+ * the it depends on the hardware we're dealing with, we can
+ * either get clamped or rounded values and we also need to
+ * account for odd number of items in the LUTs. */
+ igt_subtest_f("pipe-%s%s-ctm-0-25", kmstest_pipe_name(p),
+ fb_format->name) {
+ color_t expected_colors[] = {
+ { 0.0, }, { 0.0, }, { 0.0, }
+ };
+ double ctm[] = { 0.25, 0.0, 0.0,
+ 0.0, 0.25, 0.0,
+ 0.0, 0.0, 0.25 };
+ bool success = false;
+
+ for (i = 0; i < 5; i++) {
+ expected_colors[0].r =
+ expected_colors[1].g =
+ expected_colors[2].b =
+ 0.25 + delta * (i - 2);
+ success |= test_pipe_ctm(data, primary,
+ red_green_blue,
+ expected_colors, ctm,
+ fb_format->format);
+ }
+ igt_assert(success);
}
- igt_assert(success);
- }
- igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
- color_t expected_colors[] = {
- { 0.0, }, { 0.0, }, { 0.0, }
- };
- double ctm[] = { 0.5, 0.0, 0.0,
- 0.0, 0.5, 0.0,
- 0.0, 0.0, 0.5 };
- bool success = false;
-
- for (i = 0; i < 5; i++) {
- expected_colors[0].r =
- expected_colors[1].g =
- expected_colors[2].b =
- 0.5 + delta * (i - 2);
- success |= test_pipe_ctm(data, primary,
- red_green_blue,
- expected_colors, ctm);
+ igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p),
+ fb_format->name) {
+ color_t expected_colors[] = {
+ { 0.0, }, { 0.0, }, { 0.0, }
+ };
+ double ctm[] = { 0.5, 0.0, 0.0,
+ 0.0, 0.5, 0.0,
+ 0.0, 0.0, 0.5 };
+ bool success = false;
+
+ for (i = 0; i < 5; i++) {
+ expected_colors[0].r =
+ expected_colors[1].g =
+ expected_colors[2].b =
+ 0.5 + delta * (i - 2);
+ success |= test_pipe_ctm(data, primary,
+ red_green_blue,
+ expected_colors, ctm,
+ fb_format->format);
+ }
+ igt_assert(success);
}
- igt_assert(success);
- }
- igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
- color_t expected_colors[] = {
- { 0.0, }, { 0.0, }, { 0.0, }
- };
- double ctm[] = { 0.75, 0.0, 0.0,
- 0.0, 0.75, 0.0,
- 0.0, 0.0, 0.75 };
- bool success = false;
-
- for (i = 0; i < 7; i++) {
- expected_colors[0].r =
- expected_colors[1].g =
- expected_colors[2].b =
- 0.75 + delta * (i - 3);
- success |= test_pipe_ctm(data, primary,
- red_green_blue,
- expected_colors, ctm);
+ igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p),
+ fb_format->name) {
+ color_t expected_colors[] = {
+ { 0.0, }, { 0.0, }, { 0.0, }
+ };
+ double ctm[] = { 0.75, 0.0, 0.0,
+ 0.0, 0.75, 0.0,
+ 0.0, 0.0, 0.75 };
+ bool success = false;
+
+ for (i = 0; i < 7; i++) {
+ expected_colors[0].r =
+ expected_colors[1].g =
+ expected_colors[2].b =
+ 0.75 + delta * (i - 3);
+ success |= test_pipe_ctm(data, primary,
+ red_green_blue,
+ expected_colors, ctm,
+ fb_format->format);
+ }
+ igt_assert(success);
}
- igt_assert(success);
- }
- igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
- color_t full_rgb[] = {
- { 1.0, 0.0, 0.0 },
- { 0.0, 1.0, 0.0 },
- { 0.0, 0.0, 1.0 }
- };
- double ctm[] = { 100.0, 0.0, 0.0,
- 0.0, 100.0, 0.0,
- 0.0, 0.0, 100.0 };
-
- /* CherryView generates values on 10bits that we
- * produce with an 8 bits per color framebuffer. */
- igt_require(!IS_CHERRYVIEW(data->devid));
-
- igt_assert(test_pipe_ctm(data, primary, red_green_blue,
- full_rgb, ctm));
- }
+ igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p),
+ fb_format->name) {
+ color_t full_rgb[] = {
+ { 1.0, 0.0, 0.0 },
+ { 0.0, 1.0, 0.0 },
+ { 0.0, 0.0, 1.0 }
+ };
+ double ctm[] = { 100.0, 0.0, 0.0,
+ 0.0, 100.0, 0.0,
+ 0.0, 0.0, 100.0 };
+
+ /* CherryView generates values on 10bits that we
+ * produce with an 8 bits per color framebuffer. */
+ igt_require(!IS_CHERRYVIEW(data->devid));
+
+ igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+ full_rgb, ctm,
+ fb_format->format));
+ }
- igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
- color_t all_black[] = {
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 },
- { 0.0, 0.0, 0.0 }
- };
- double ctm[] = { -1.0, 0.0, 0.0,
- 0.0, -1.0, 0.0,
- 0.0, 0.0, -1.0 };
- igt_assert(test_pipe_ctm(data, primary, red_green_blue,
- all_black, ctm));
- }
+ igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p),
+ fb_format->name) {
+ color_t all_black[] = {
+ { 0.0, 0.0, 0.0 },
+ { 0.0, 0.0, 0.0 },
+ { 0.0, 0.0, 0.0 }
+ };
+ double ctm[] = { -1.0, 0.0, 0.0,
+ 0.0, -1.0, 0.0,
+ 0.0, 0.0, -1.0 };
+ igt_assert(test_pipe_ctm(data, primary, red_green_blue,
+ all_black, ctm,
+ fb_format->format));
+ }
#if 0
- igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
- test_pipe_limited_range_ctm(data, primary);
+ igt_subtest_f("pipe-%s-ctm-limited-range%s",
+ kmstest_pipe_name(p), fb_format->name)
+ test_pipe_limited_range_ctm(data, primary,
+ fb_format->format);
#endif
- igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
- test_pipe_degamma(data, primary);
+ igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p),
+ fb_format->name)
+ test_pipe_degamma(data, primary, fb_format->format);
- igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
- test_pipe_gamma(data, primary);
+ igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p),
+ fb_format->name)
+ test_pipe_gamma(data, primary, fb_format->format);
- igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
- test_pipe_legacy_gamma(data, primary);
+ igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p),
+ fb_format->name)
+ test_pipe_legacy_gamma(data, primary,
+ fb_format->format);
+ } // End of fb_formats iterator
+
+ data->color_depth = 8;
igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
test_pipe_legacy_gamma_reset(data, primary);
--
2.24.0
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li @ 2019-12-11 20:54 ` Kazlauskas, Nicholas 2019-12-11 21:15 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork ` (3 subsequent siblings) 4 siblings, 0 replies; 11+ messages in thread From: Kazlauskas, Nicholas @ 2019-12-11 20:54 UTC (permalink / raw) To: sunpeng.li, igt-dev On 2019-12-11 3:46 p.m., sunpeng.li@amd.com wrote: > From: Leo Li <sunpeng.li@amd.com> > > We'd like to test the hardware pipe's color management with 10bit > surfaces. This change parameterizes the hardcoded formats within each > test, and ennumerates the additional subtests within a for loop. To > avoid renaming existing tests, the 10bpc tests will have '-10bpc' > inserted after the pipe name, while the 8bpc test names remain > unchanged. > > Signed-off-by: Leo Li <sunpeng.li@amd.com> > --- > tests/kms_color.c | 353 ++++++++++++++++++++++++++-------------------- > 1 file changed, 198 insertions(+), 155 deletions(-) > > diff --git a/tests/kms_color.c b/tests/kms_color.c > index b4b578a7..3c76a0d2 100644 > --- a/tests/kms_color.c > +++ b/tests/kms_color.c > @@ -52,6 +52,12 @@ typedef struct { > double coeffs[]; > } gamma_lut_t; > > +typedef struct { > + uint32_t format; > + int bpc; > + char name[16]; > +} fb_format_t; > + > static void paint_gradient_rectangles(data_t *data, > drmModeModeInfo *mode, > color_t *colors, > @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop) > * rectangles with linear degamma LUT. > */ > static void test_pipe_degamma(data_t *data, > - igt_plane_t *primary) > + igt_plane_t *primary, > + uint32_t fb_format) > { > igt_output_t *output; > gamma_lut_t *degamma_linear, *degamma_full; > @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data, > * LUT and verify we have the same CRC as drawing solid color rectangles. > */ > static void test_pipe_gamma(data_t *data, > - igt_plane_t *primary) > + igt_plane_t *primary, > + uint32_t fb_format) > { > igt_output_t *output; > gamma_lut_t *gamma_full; > @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data, > * with linear legacy gamma LUT. > */ > static void test_pipe_legacy_gamma(data_t *data, > - igt_plane_t *primary) > + igt_plane_t *primary, > + uint32_t fb_format) > { > igt_output_t *output; > color_t red_green_blue[] = { > @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data, > igt_plane_t *primary, > color_t *before, > color_t *after, > - double *ctm_matrix) > + double *ctm_matrix, > + uint32_t fb_format) > { > const double ctm_identity[] = { > 1.0, 0.0, 0.0, > @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data, > */ > #if 0 > static void test_pipe_limited_range_ctm(data_t *data, > - igt_plane_t *primary) > + igt_plane_t *primary, > + uint32_t fb_format) > { > double limited_result = 235.0 / 255.0; > color_t red_green_blue_limited[] = { > @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p) > igt_pipe_t *pipe; > igt_plane_t *primary; > double delta; > - int i; > + int i, j; > color_t red_green_blue[] = { > { 1.0, 0.0, 0.0 }, > { 0.0, 1.0, 0.0 }, > { 0.0, 0.0, 1.0 } > }; > > + fb_format_t fb_formats[] = { > + { DRM_FORMAT_XRGB8888, 8 , ""}, > + { DRM_FORMAT_XRGB2101010, 10 , "-10bpc"} > + }; > + > igt_fixture { > igt_require_pipe_crc(data->drm_fd); > > @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p) > igt_display_require_output_on_pipe(&data->display, p); > } > > - /* We assume an 8bits depth per color for degamma/gamma LUTs > - * for CRC checks with framebuffer references. */ > - data->color_depth = 8; > - delta = 1.0 / (1 << data->color_depth); > - > - igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) { > - color_t blue_green_blue[] = { > - { 0.0, 0.0, 1.0 }, > - { 0.0, 1.0, 0.0 }, > - { 0.0, 0.0, 1.0 } > - }; > - double ctm[] = { 0.0, 0.0, 0.0, > - 0.0, 1.0, 0.0, > - 1.0, 0.0, 1.0 }; > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - blue_green_blue, ctm)); > - } > + /* Iterate over fb formats to test */ > + for (j = 0; j < ARRAY_SIZE(fb_formats); j++) { > + > + fb_format_t *fb_format = &fb_formats[j]; > + data->color_depth = fb_format->bpc; > + delta = 1.0 / (1 << data->color_depth); > + > + igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p), > + fb_format->name) { > + color_t blue_green_blue[] = { > + { 0.0, 0.0, 1.0 }, > + { 0.0, 1.0, 0.0 }, > + { 0.0, 0.0, 1.0 } > + }; > + double ctm[] = { 0.0, 0.0, 0.0, > + 0.0, 1.0, 0.0, > + 1.0, 0.0, 1.0 }; > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + blue_green_blue, ctm, > + fb_format->format)); > + } > > - igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) { > - color_t red_red_blue[] = { > - { 1.0, 0.0, 0.0 }, > - { 1.0, 0.0, 0.0 }, > - { 0.0, 0.0, 1.0 } > - }; > - double ctm[] = { 1.0, 1.0, 0.0, > - 0.0, 0.0, 0.0, > - 0.0, 0.0, 1.0 }; > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - red_red_blue, ctm)); > - } > + igt_subtest_f("pipe-%s%s-ctm-green-to-red", > + kmstest_pipe_name(p), fb_format->name) { > + color_t red_red_blue[] = { > + { 1.0, 0.0, 0.0 }, > + { 1.0, 0.0, 0.0 }, > + { 0.0, 0.0, 1.0 } > + }; > + double ctm[] = { 1.0, 1.0, 0.0, > + 0.0, 0.0, 0.0, > + 0.0, 0.0, 1.0 }; > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + red_red_blue, ctm, > + fb_format->format)); > + } > > - igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) { > - color_t red_green_red[] = { > - { 1.0, 0.0, 0.0 }, > - { 0.0, 1.0, 0.0 }, > - { 1.0, 0.0, 0.0 } > - }; > - double ctm[] = { 1.0, 0.0, 1.0, > - 0.0, 1.0, 0.0, > - 0.0, 0.0, 0.0 }; > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - red_green_red, ctm)); > - } > + igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p), > + fb_format->name) { > + color_t red_green_red[] = { > + { 1.0, 0.0, 0.0 }, > + { 0.0, 1.0, 0.0 }, > + { 1.0, 0.0, 0.0 } > + }; > + double ctm[] = { 1.0, 0.0, 1.0, > + 0.0, 1.0, 0.0, > + 0.0, 0.0, 0.0 }; > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + red_green_red, ctm, > + fb_format->format)); > + } > > - /* We tests a few values around the expected result because > - * the it depends on the hardware we're dealing with, we can > - * either get clamped or rounded values and we also need to > - * account for odd number of items in the LUTs. */ > - igt_subtest_f("pipe-%s-ctm-0-25", kmstest_pipe_name(p)) { > - color_t expected_colors[] = { > - { 0.0, }, { 0.0, }, { 0.0, } > - }; > - double ctm[] = { 0.25, 0.0, 0.0, > - 0.0, 0.25, 0.0, > - 0.0, 0.0, 0.25 }; > - bool success = false; > - > - for (i = 0; i < 5; i++) { > - expected_colors[0].r = > - expected_colors[1].g = > - expected_colors[2].b = > - 0.25 + delta * (i - 2); > - success |= test_pipe_ctm(data, primary, > - red_green_blue, > - expected_colors, ctm); > + /* We tests a few values around the expected result because nit: s/tests/test > + * the it depends on the hardware we're dealing with, we can > + * either get clamped or rounded values and we also need to > + * account for odd number of items in the LUTs. */ > + igt_subtest_f("pipe-%s%s-ctm-0-25", kmstest_pipe_name(p), > + fb_format->name) { > + color_t expected_colors[] = { > + { 0.0, }, { 0.0, }, { 0.0, } > + }; > + double ctm[] = { 0.25, 0.0, 0.0, > + 0.0, 0.25, 0.0, > + 0.0, 0.0, 0.25 }; > + bool success = false; > + > + for (i = 0; i < 5; i++) { > + expected_colors[0].r = > + expected_colors[1].g = > + expected_colors[2].b = > + 0.25 + delta * (i - 2); > + success |= test_pipe_ctm(data, primary, > + red_green_blue, > + expected_colors, ctm, > + fb_format->format); > + } > + igt_assert(success); > } > - igt_assert(success); > - } > > - igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) { > - color_t expected_colors[] = { > - { 0.0, }, { 0.0, }, { 0.0, } > - }; > - double ctm[] = { 0.5, 0.0, 0.0, > - 0.0, 0.5, 0.0, > - 0.0, 0.0, 0.5 }; > - bool success = false; > - > - for (i = 0; i < 5; i++) { > - expected_colors[0].r = > - expected_colors[1].g = > - expected_colors[2].b = > - 0.5 + delta * (i - 2); > - success |= test_pipe_ctm(data, primary, > - red_green_blue, > - expected_colors, ctm); > + igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p), > + fb_format->name) { > + color_t expected_colors[] = { > + { 0.0, }, { 0.0, }, { 0.0, } > + }; > + double ctm[] = { 0.5, 0.0, 0.0, > + 0.0, 0.5, 0.0, > + 0.0, 0.0, 0.5 }; > + bool success = false; > + > + for (i = 0; i < 5; i++) { > + expected_colors[0].r = > + expected_colors[1].g = > + expected_colors[2].b = > + 0.5 + delta * (i - 2); > + success |= test_pipe_ctm(data, primary, > + red_green_blue, > + expected_colors, ctm, > + fb_format->format); > + } > + igt_assert(success); > } > - igt_assert(success); > - } > > - igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) { > - color_t expected_colors[] = { > - { 0.0, }, { 0.0, }, { 0.0, } > - }; > - double ctm[] = { 0.75, 0.0, 0.0, > - 0.0, 0.75, 0.0, > - 0.0, 0.0, 0.75 }; > - bool success = false; > - > - for (i = 0; i < 7; i++) { > - expected_colors[0].r = > - expected_colors[1].g = > - expected_colors[2].b = > - 0.75 + delta * (i - 3); > - success |= test_pipe_ctm(data, primary, > - red_green_blue, > - expected_colors, ctm); > + igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p), > + fb_format->name) { > + color_t expected_colors[] = { > + { 0.0, }, { 0.0, }, { 0.0, } > + }; > + double ctm[] = { 0.75, 0.0, 0.0, > + 0.0, 0.75, 0.0, > + 0.0, 0.0, 0.75 }; > + bool success = false; > + > + for (i = 0; i < 7; i++) { > + expected_colors[0].r = > + expected_colors[1].g = > + expected_colors[2].b = > + 0.75 + delta * (i - 3); > + success |= test_pipe_ctm(data, primary, > + red_green_blue, > + expected_colors, ctm, > + fb_format->format); > + } > + igt_assert(success); > } > - igt_assert(success); > - } > > - igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) { > - color_t full_rgb[] = { > - { 1.0, 0.0, 0.0 }, > - { 0.0, 1.0, 0.0 }, > - { 0.0, 0.0, 1.0 } > - }; > - double ctm[] = { 100.0, 0.0, 0.0, > - 0.0, 100.0, 0.0, > - 0.0, 0.0, 100.0 }; > - > - /* CherryView generates values on 10bits that we > - * produce with an 8 bits per color framebuffer. */ > - igt_require(!IS_CHERRYVIEW(data->devid)); > - > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - full_rgb, ctm)); > - } > + igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p), > + fb_format->name) { > + color_t full_rgb[] = { > + { 1.0, 0.0, 0.0 }, > + { 0.0, 1.0, 0.0 }, > + { 0.0, 0.0, 1.0 } > + }; > + double ctm[] = { 100.0, 0.0, 0.0, > + 0.0, 100.0, 0.0, > + 0.0, 0.0, 100.0 }; > + > + /* CherryView generates values on 10bits that we > + * produce with an 8 bits per color framebuffer. */ > + igt_require(!IS_CHERRYVIEW(data->devid)); > + > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + full_rgb, ctm, > + fb_format->format)); > + } > > - igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) { > - color_t all_black[] = { > - { 0.0, 0.0, 0.0 }, > - { 0.0, 0.0, 0.0 }, > - { 0.0, 0.0, 0.0 } > - }; > - double ctm[] = { -1.0, 0.0, 0.0, > - 0.0, -1.0, 0.0, > - 0.0, 0.0, -1.0 }; > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - all_black, ctm)); > - } > + igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p), > + fb_format->name) { > + color_t all_black[] = { > + { 0.0, 0.0, 0.0 }, > + { 0.0, 0.0, 0.0 }, > + { 0.0, 0.0, 0.0 } > + }; > + double ctm[] = { -1.0, 0.0, 0.0, > + 0.0, -1.0, 0.0, > + 0.0, 0.0, -1.0 }; > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + all_black, ctm, > + fb_format->format)); > + } > > #if 0 > - igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p)) > - test_pipe_limited_range_ctm(data, primary); > + igt_subtest_f("pipe-%s-ctm-limited-range%s", > + kmstest_pipe_name(p), fb_format->name) > + test_pipe_limited_range_ctm(data, primary, > + fb_format->format); > #endif > > - igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p)) > - test_pipe_degamma(data, primary); > + igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p), > + fb_format->name) > + test_pipe_degamma(data, primary, fb_format->format); > > - igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p)) > - test_pipe_gamma(data, primary); > + igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p), > + fb_format->name) > + test_pipe_gamma(data, primary, fb_format->format); > > - igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p)) > - test_pipe_legacy_gamma(data, primary); > + igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p), > + fb_format->name) > + test_pipe_legacy_gamma(data, primary, > + fb_format->format); > > + } // End of fb_formats iterator > + > + data->color_depth = 8; Might want a comment here explaining why this line was added. Rest is Acked-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> > igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p)) > test_pipe_legacy_gamma_reset(data, primary); > > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li 2019-12-11 20:54 ` Kazlauskas, Nicholas @ 2019-12-11 21:15 ` Patchwork 2019-12-12 8:12 ` [igt-dev] ✗ GitLab.Pipeline: " Patchwork ` (2 subsequent siblings) 4 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2019-12-11 21:15 UTC (permalink / raw) To: sunpeng.li; +Cc: igt-dev == Series Details == Series: tests/kms_color: Add 10bpc frame buffer parameterization to subtests URL : https://patchwork.freedesktop.org/series/70782/ State : failure == Summary == CI Bug Log - changes from CI_DRM_7543 -> IGTPW_3850 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_3850 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_3850, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/index.html Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_3850: ### IGT changes ### #### Possible regressions #### * igt@i915_selftest@live_hangcheck: - fi-hsw-4770r: NOTRUN -> [INCOMPLETE][1] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-hsw-4770r/igt@i915_selftest@live_hangcheck.html Known issues ------------ Here are the changes found in IGTPW_3850 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live_blt: - fi-byt-j1900: [PASS][2] -> [DMESG-FAIL][3] ([i915#725]) [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-byt-j1900/igt@i915_selftest@live_blt.html [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-byt-j1900/igt@i915_selftest@live_blt.html * igt@kms_busy@basic-flip-pipe-a: - fi-icl-u2: [PASS][4] -> [TIMEOUT][5] ([i915#449]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-icl-u2/igt@kms_busy@basic-flip-pipe-a.html [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-icl-u2/igt@kms_busy@basic-flip-pipe-a.html #### Possible fixes #### * igt@gem_exec_gttfill@basic: - {fi-tgl-u}: [INCOMPLETE][6] ([fdo#111593]) -> [PASS][7] [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-tgl-u/igt@gem_exec_gttfill@basic.html [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-tgl-u/igt@gem_exec_gttfill@basic.html * igt@i915_pm_rpm@module-reload: - fi-skl-6770hq: [FAIL][8] ([i915#178]) -> [PASS][9] [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html * igt@i915_selftest@live_requests: - fi-ivb-3770: [INCOMPLETE][10] ([i915#773]) -> [PASS][11] [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-ivb-3770/igt@i915_selftest@live_requests.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-ivb-3770/igt@i915_selftest@live_requests.html - fi-hsw-4770: [INCOMPLETE][12] ([i915#773]) -> [PASS][13] [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-hsw-4770/igt@i915_selftest@live_requests.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-hsw-4770/igt@i915_selftest@live_requests.html * igt@kms_busy@basic-flip-pipe-a: - fi-kbl-soraka: [DMESG-WARN][14] ([i915#95]) -> [PASS][15] [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-kbl-soraka/igt@kms_busy@basic-flip-pipe-a.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-kbl-soraka/igt@kms_busy@basic-flip-pipe-a.html #### Warnings #### * igt@kms_busy@basic-flip-pipe-a: - fi-kbl-x1275: [DMESG-WARN][16] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][17] ([i915#62] / [i915#92]) +4 similar issues [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-kbl-x1275/igt@kms_busy@basic-flip-pipe-a.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-kbl-x1275/igt@kms_busy@basic-flip-pipe-a.html * igt@kms_busy@basic-flip-pipe-b: - fi-kbl-x1275: [DMESG-WARN][18] ([i915#62] / [i915#92]) -> [DMESG-WARN][19] ([i915#62] / [i915#92] / [i915#95]) +5 similar issues [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7543/fi-kbl-x1275/igt@kms_busy@basic-flip-pipe-b.html [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/fi-kbl-x1275/igt@kms_busy@basic-flip-pipe-b.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#111593]: https://bugs.freedesktop.org/show_bug.cgi?id=111593 [i915#178]: https://gitlab.freedesktop.org/drm/intel/issues/178 [i915#449]: https://gitlab.freedesktop.org/drm/intel/issues/449 [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62 [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725 [i915#773]: https://gitlab.freedesktop.org/drm/intel/issues/773 [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (51 -> 46) ------------------------------ Additional (3): fi-hsw-4770r fi-tgl-guc fi-tgl-y Missing (8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-skl-lmem fi-byt-clapper fi-bdw-samus Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_5345 -> IGTPW_3850 CI-20190529: 20190529 CI_DRM_7543: 91752f80df9b582561be6bbac12ef780b12f606c @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_3850: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/index.html IGT_5345: 9e0c82b6d70065db894ececf2be8de372e983cf0 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Testlist changes == +igt@kms_color@pipe-a-10bpc-ctm-0-5 +igt@kms_color@pipe-a-10bpc-ctm-0-25 +igt@kms_color@pipe-a-10bpc-ctm-0-75 +igt@kms_color@pipe-a-10bpc-ctm-blue-to-red +igt@kms_color@pipe-a-10bpc-ctm-green-to-red +igt@kms_color@pipe-a-10bpc-ctm-max +igt@kms_color@pipe-a-10bpc-ctm-negative +igt@kms_color@pipe-a-10bpc-ctm-red-to-blue +igt@kms_color@pipe-a-10bpc-degamma +igt@kms_color@pipe-a-10bpc-gamma +igt@kms_color@pipe-a-10bpc-legacy-gamma +igt@kms_color@pipe-b-10bpc-ctm-0-5 +igt@kms_color@pipe-b-10bpc-ctm-0-25 +igt@kms_color@pipe-b-10bpc-ctm-0-75 +igt@kms_color@pipe-b-10bpc-ctm-blue-to-red +igt@kms_color@pipe-b-10bpc-ctm-green-to-red +igt@kms_color@pipe-b-10bpc-ctm-max +igt@kms_color@pipe-b-10bpc-ctm-negative +igt@kms_color@pipe-b-10bpc-ctm-red-to-blue +igt@kms_color@pipe-b-10bpc-degamma +igt@kms_color@pipe-b-10bpc-gamma +igt@kms_color@pipe-b-10bpc-legacy-gamma +igt@kms_color@pipe-c-10bpc-ctm-0-5 +igt@kms_color@pipe-c-10bpc-ctm-0-25 +igt@kms_color@pipe-c-10bpc-ctm-0-75 +igt@kms_color@pipe-c-10bpc-ctm-blue-to-red +igt@kms_color@pipe-c-10bpc-ctm-green-to-red +igt@kms_color@pipe-c-10bpc-ctm-max +igt@kms_color@pipe-c-10bpc-ctm-negative +igt@kms_color@pipe-c-10bpc-ctm-red-to-blue +igt@kms_color@pipe-c-10bpc-degamma +igt@kms_color@pipe-c-10bpc-gamma +igt@kms_color@pipe-c-10bpc-legacy-gamma +igt@kms_color@pipe-d-10bpc-ctm-0-5 +igt@kms_color@pipe-d-10bpc-ctm-0-25 +igt@kms_color@pipe-d-10bpc-ctm-0-75 +igt@kms_color@pipe-d-10bpc-ctm-blue-to-red +igt@kms_color@pipe-d-10bpc-ctm-green-to-red +igt@kms_color@pipe-d-10bpc-ctm-max +igt@kms_color@pipe-d-10bpc-ctm-negative +igt@kms_color@pipe-d-10bpc-ctm-red-to-blue +igt@kms_color@pipe-d-10bpc-degamma +igt@kms_color@pipe-d-10bpc-gamma +igt@kms_color@pipe-d-10bpc-legacy-gamma +igt@kms_color@pipe-e-10bpc-ctm-0-5 +igt@kms_color@pipe-e-10bpc-ctm-0-25 +igt@kms_color@pipe-e-10bpc-ctm-0-75 +igt@kms_color@pipe-e-10bpc-ctm-blue-to-red +igt@kms_color@pipe-e-10bpc-ctm-green-to-red +igt@kms_color@pipe-e-10bpc-ctm-max +igt@kms_color@pipe-e-10bpc-ctm-negative +igt@kms_color@pipe-e-10bpc-ctm-red-to-blue +igt@kms_color@pipe-e-10bpc-degamma +igt@kms_color@pipe-e-10bpc-gamma +igt@kms_color@pipe-e-10bpc-legacy-gamma +igt@kms_color@pipe-f-10bpc-ctm-0-5 +igt@kms_color@pipe-f-10bpc-ctm-0-25 +igt@kms_color@pipe-f-10bpc-ctm-0-75 +igt@kms_color@pipe-f-10bpc-ctm-blue-to-red +igt@kms_color@pipe-f-10bpc-ctm-green-to-red +igt@kms_color@pipe-f-10bpc-ctm-max +igt@kms_color@pipe-f-10bpc-ctm-negative +igt@kms_color@pipe-f-10bpc-ctm-red-to-blue +igt@kms_color@pipe-f-10bpc-degamma +igt@kms_color@pipe-f-10bpc-gamma +igt@kms_color@pipe-f-10bpc-legacy-gamma == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3850/index.html _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* [igt-dev] ✗ GitLab.Pipeline: failure for tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li 2019-12-11 20:54 ` Kazlauskas, Nicholas 2019-12-11 21:15 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork @ 2019-12-12 8:12 ` Patchwork 2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä 2020-01-08 14:44 ` Leo 4 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2019-12-12 8:12 UTC (permalink / raw) To: sunpeng.li; +Cc: igt-dev == Series Details == Series: tests/kms_color: Add 10bpc frame buffer parameterization to subtests URL : https://patchwork.freedesktop.org/series/70782/ State : failure == Summary == ERROR! This series introduces new undocumented tests: kms_color@pipe-A-10bpc-ctm-0-25 kms_color@pipe-A-10bpc-ctm-0-5 kms_color@pipe-A-10bpc-ctm-0-75 kms_color@pipe-A-10bpc-ctm-blue-to-red kms_color@pipe-A-10bpc-ctm-green-to-red kms_color@pipe-A-10bpc-ctm-max kms_color@pipe-A-10bpc-ctm-negative kms_color@pipe-A-10bpc-ctm-red-to-blue kms_color@pipe-A-10bpc-degamma kms_color@pipe-A-10bpc-gamma kms_color@pipe-A-10bpc-legacy-gamma kms_color@pipe-B-10bpc-ctm-0-25 kms_color@pipe-B-10bpc-ctm-0-5 kms_color@pipe-B-10bpc-ctm-0-75 kms_color@pipe-B-10bpc-ctm-blue-to-red kms_color@pipe-B-10bpc-ctm-green-to-red kms_color@pipe-B-10bpc-ctm-max kms_color@pipe-B-10bpc-ctm-negative kms_color@pipe-B-10bpc-ctm-red-to-blue kms_color@pipe-B-10bpc-degamma kms_color@pipe-B-10bpc-gamma kms_color@pipe-B-10bpc-legacy-gamma kms_color@pipe-C-10bpc-ctm-0-25 kms_color@pipe-C-10bpc-ctm-0-5 kms_color@pipe-C-10bpc-ctm-0-75 kms_color@pipe-C-10bpc-ctm-blue-to-red kms_color@pipe-C-10bpc-ctm-green-to-red kms_color@pipe-C-10bpc-ctm-max kms_color@pipe-C-10bpc-ctm-negative kms_color@pipe-C-10bpc-ctm-red-to-blue kms_color@pipe-C-10bpc-degamma kms_color@pipe-C-10bpc-gamma kms_color@pipe-C-10bpc-legacy-gamma kms_color@pipe-D-10bpc-ctm-0-25 kms_color@pipe-D-10bpc-ctm-0-5 kms_color@pipe-D-10bpc-ctm-0-75 kms_color@pipe-D-10bpc-ctm-blue-to-red kms_color@pipe-D-10bpc-ctm-green-to-red kms_color@pipe-D-10bpc-ctm-max kms_color@pipe-D-10bpc-ctm-negative kms_color@pipe-D-10bpc-ctm-red-to-blue kms_color@pipe-D-10bpc-degamma kms_color@pipe-D-10bpc-gamma kms_color@pipe-D-10bpc-legacy-gamma kms_color@pipe-E-10bpc-ctm-0-25 kms_color@pipe-E-10bpc-ctm-0-5 kms_color@pipe-E-10bpc-ctm-0-75 kms_color@pipe-E-10bpc-ctm-blue-to-red kms_color@pipe-E-10bpc-ctm-green-to-red kms_color@pipe-E-10bpc-ctm-max kms_color@pipe-E-10bpc-ctm-negative kms_color@pipe-E-10bpc-ctm-red-to-blue kms_color@pipe-E-10bpc-degamma kms_color@pipe-E-10bpc-gamma kms_color@pipe-E-10bpc-legacy-gamma kms_color@pipe-F-10bpc-ctm-0-25 kms_color@pipe-F-10bpc-ctm-0-5 kms_color@pipe-F-10bpc-ctm-0-75 kms_color@pipe-F-10bpc-ctm-blue-to-red kms_color@pipe-F-10bpc-ctm-green-to-red kms_color@pipe-F-10bpc-ctm-max kms_color@pipe-F-10bpc-ctm-negative kms_color@pipe-F-10bpc-ctm-red-to-blue kms_color@pipe-F-10bpc-degamma kms_color@pipe-F-10bpc-gamma kms_color@pipe-F-10bpc-legacy-gamma Can you document them as per the requirement in the [CONTRIBUTING.md]? [Documentation] has more details on how to do this. Here are few examples: https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/0316695d03aa46108296b27f3982ec93200c7a6e https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/443cc658e1e6b492ee17bf4f4d891029eb7a205d Thanks in advance! [CONTRIBUTING.md]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/blob/master/CONTRIBUTING.md#L19 [Documentation]: https://drm.pages.freedesktop.org/igt-gpu-tools/igt-gpu-tools-Core.html#igt-describe Other than that, pipeline status: SUCCESS. see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/pipelines/87844 for the overview. == Logs == For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/pipelines/87844 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li ` (2 preceding siblings ...) 2019-12-12 8:12 ` [igt-dev] ✗ GitLab.Pipeline: " Patchwork @ 2019-12-12 15:03 ` Ville Syrjälä 2019-12-12 20:53 ` Leo 2020-01-02 22:59 ` Harry Wentland 2020-01-08 14:44 ` Leo 4 siblings, 2 replies; 11+ messages in thread From: Ville Syrjälä @ 2019-12-12 15:03 UTC (permalink / raw) To: sunpeng.li; +Cc: igt-dev On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote: > From: Leo Li <sunpeng.li@amd.com> > > We'd like to test the hardware pipe's color management with 10bit > surfaces. Why exactly? The pipe color management stuff doesn't care what pixel format the plane used. > This change parameterizes the hardcoded formats within each > test, and ennumerates the additional subtests within a for loop. To > avoid renaming existing tests, the 10bpc tests will have '-10bpc' > inserted after the pipe name, while the 8bpc test names remain > unchanged. > > Signed-off-by: Leo Li <sunpeng.li@amd.com> > --- > tests/kms_color.c | 353 ++++++++++++++++++++++++++-------------------- > 1 file changed, 198 insertions(+), 155 deletions(-) > > diff --git a/tests/kms_color.c b/tests/kms_color.c > index b4b578a7..3c76a0d2 100644 > --- a/tests/kms_color.c > +++ b/tests/kms_color.c > @@ -52,6 +52,12 @@ typedef struct { > double coeffs[]; > } gamma_lut_t; > > +typedef struct { > + uint32_t format; > + int bpc; > + char name[16]; > +} fb_format_t; > + > static void paint_gradient_rectangles(data_t *data, > drmModeModeInfo *mode, > color_t *colors, > @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop) > * rectangles with linear degamma LUT. > */ > static void test_pipe_degamma(data_t *data, > - igt_plane_t *primary) > + igt_plane_t *primary, > + uint32_t fb_format) > { > igt_output_t *output; > gamma_lut_t *degamma_linear, *degamma_full; > @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data, > * LUT and verify we have the same CRC as drawing solid color rectangles. > */ > static void test_pipe_gamma(data_t *data, > - igt_plane_t *primary) > + igt_plane_t *primary, > + uint32_t fb_format) > { > igt_output_t *output; > gamma_lut_t *gamma_full; > @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data, > * with linear legacy gamma LUT. > */ > static void test_pipe_legacy_gamma(data_t *data, > - igt_plane_t *primary) > + igt_plane_t *primary, > + uint32_t fb_format) > { > igt_output_t *output; > color_t red_green_blue[] = { > @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data, > igt_plane_t *primary, > color_t *before, > color_t *after, > - double *ctm_matrix) > + double *ctm_matrix, > + uint32_t fb_format) > { > const double ctm_identity[] = { > 1.0, 0.0, 0.0, > @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data, > */ > #if 0 > static void test_pipe_limited_range_ctm(data_t *data, > - igt_plane_t *primary) > + igt_plane_t *primary, > + uint32_t fb_format) > { > double limited_result = 235.0 / 255.0; > color_t red_green_blue_limited[] = { > @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data, > fb_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb); > igt_assert(fb_id); > @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data, > fb_modeset_id = igt_create_fb(data->drm_fd, > mode->hdisplay, > mode->vdisplay, > - DRM_FORMAT_XRGB8888, > + fb_format, > LOCAL_DRM_FORMAT_MOD_NONE, > &fb_modeset); > igt_assert(fb_modeset_id); > @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p) > igt_pipe_t *pipe; > igt_plane_t *primary; > double delta; > - int i; > + int i, j; > color_t red_green_blue[] = { > { 1.0, 0.0, 0.0 }, > { 0.0, 1.0, 0.0 }, > { 0.0, 0.0, 1.0 } > }; > > + fb_format_t fb_formats[] = { > + { DRM_FORMAT_XRGB8888, 8 , ""}, > + { DRM_FORMAT_XRGB2101010, 10 , "-10bpc"} > + }; > + > igt_fixture { > igt_require_pipe_crc(data->drm_fd); > > @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p) > igt_display_require_output_on_pipe(&data->display, p); > } > > - /* We assume an 8bits depth per color for degamma/gamma LUTs > - * for CRC checks with framebuffer references. */ > - data->color_depth = 8; > - delta = 1.0 / (1 << data->color_depth); > - > - igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) { > - color_t blue_green_blue[] = { > - { 0.0, 0.0, 1.0 }, > - { 0.0, 1.0, 0.0 }, > - { 0.0, 0.0, 1.0 } > - }; > - double ctm[] = { 0.0, 0.0, 0.0, > - 0.0, 1.0, 0.0, > - 1.0, 0.0, 1.0 }; > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - blue_green_blue, ctm)); > - } > + /* Iterate over fb formats to test */ > + for (j = 0; j < ARRAY_SIZE(fb_formats); j++) { > + > + fb_format_t *fb_format = &fb_formats[j]; > + data->color_depth = fb_format->bpc; > + delta = 1.0 / (1 << data->color_depth); > + > + igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p), > + fb_format->name) { > + color_t blue_green_blue[] = { > + { 0.0, 0.0, 1.0 }, > + { 0.0, 1.0, 0.0 }, > + { 0.0, 0.0, 1.0 } > + }; > + double ctm[] = { 0.0, 0.0, 0.0, > + 0.0, 1.0, 0.0, > + 1.0, 0.0, 1.0 }; > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + blue_green_blue, ctm, > + fb_format->format)); > + } > > - igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) { > - color_t red_red_blue[] = { > - { 1.0, 0.0, 0.0 }, > - { 1.0, 0.0, 0.0 }, > - { 0.0, 0.0, 1.0 } > - }; > - double ctm[] = { 1.0, 1.0, 0.0, > - 0.0, 0.0, 0.0, > - 0.0, 0.0, 1.0 }; > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - red_red_blue, ctm)); > - } > + igt_subtest_f("pipe-%s%s-ctm-green-to-red", > + kmstest_pipe_name(p), fb_format->name) { > + color_t red_red_blue[] = { > + { 1.0, 0.0, 0.0 }, > + { 1.0, 0.0, 0.0 }, > + { 0.0, 0.0, 1.0 } > + }; > + double ctm[] = { 1.0, 1.0, 0.0, > + 0.0, 0.0, 0.0, > + 0.0, 0.0, 1.0 }; > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + red_red_blue, ctm, > + fb_format->format)); > + } > > - igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) { > - color_t red_green_red[] = { > - { 1.0, 0.0, 0.0 }, > - { 0.0, 1.0, 0.0 }, > - { 1.0, 0.0, 0.0 } > - }; > - double ctm[] = { 1.0, 0.0, 1.0, > - 0.0, 1.0, 0.0, > - 0.0, 0.0, 0.0 }; > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - red_green_red, ctm)); > - } > + igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p), > + fb_format->name) { > + color_t red_green_red[] = { > + { 1.0, 0.0, 0.0 }, > + { 0.0, 1.0, 0.0 }, > + { 1.0, 0.0, 0.0 } > + }; > + double ctm[] = { 1.0, 0.0, 1.0, > + 0.0, 1.0, 0.0, > + 0.0, 0.0, 0.0 }; > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + red_green_red, ctm, > + fb_format->format)); > + } > > - /* We tests a few values around the expected result because > - * the it depends on the hardware we're dealing with, we can > - * either get clamped or rounded values and we also need to > - * account for odd number of items in the LUTs. */ > - igt_subtest_f("pipe-%s-ctm-0-25", kmstest_pipe_name(p)) { > - color_t expected_colors[] = { > - { 0.0, }, { 0.0, }, { 0.0, } > - }; > - double ctm[] = { 0.25, 0.0, 0.0, > - 0.0, 0.25, 0.0, > - 0.0, 0.0, 0.25 }; > - bool success = false; > - > - for (i = 0; i < 5; i++) { > - expected_colors[0].r = > - expected_colors[1].g = > - expected_colors[2].b = > - 0.25 + delta * (i - 2); > - success |= test_pipe_ctm(data, primary, > - red_green_blue, > - expected_colors, ctm); > + /* We tests a few values around the expected result because > + * the it depends on the hardware we're dealing with, we can > + * either get clamped or rounded values and we also need to > + * account for odd number of items in the LUTs. */ > + igt_subtest_f("pipe-%s%s-ctm-0-25", kmstest_pipe_name(p), > + fb_format->name) { > + color_t expected_colors[] = { > + { 0.0, }, { 0.0, }, { 0.0, } > + }; > + double ctm[] = { 0.25, 0.0, 0.0, > + 0.0, 0.25, 0.0, > + 0.0, 0.0, 0.25 }; > + bool success = false; > + > + for (i = 0; i < 5; i++) { > + expected_colors[0].r = > + expected_colors[1].g = > + expected_colors[2].b = > + 0.25 + delta * (i - 2); > + success |= test_pipe_ctm(data, primary, > + red_green_blue, > + expected_colors, ctm, > + fb_format->format); > + } > + igt_assert(success); > } > - igt_assert(success); > - } > > - igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) { > - color_t expected_colors[] = { > - { 0.0, }, { 0.0, }, { 0.0, } > - }; > - double ctm[] = { 0.5, 0.0, 0.0, > - 0.0, 0.5, 0.0, > - 0.0, 0.0, 0.5 }; > - bool success = false; > - > - for (i = 0; i < 5; i++) { > - expected_colors[0].r = > - expected_colors[1].g = > - expected_colors[2].b = > - 0.5 + delta * (i - 2); > - success |= test_pipe_ctm(data, primary, > - red_green_blue, > - expected_colors, ctm); > + igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p), > + fb_format->name) { > + color_t expected_colors[] = { > + { 0.0, }, { 0.0, }, { 0.0, } > + }; > + double ctm[] = { 0.5, 0.0, 0.0, > + 0.0, 0.5, 0.0, > + 0.0, 0.0, 0.5 }; > + bool success = false; > + > + for (i = 0; i < 5; i++) { > + expected_colors[0].r = > + expected_colors[1].g = > + expected_colors[2].b = > + 0.5 + delta * (i - 2); > + success |= test_pipe_ctm(data, primary, > + red_green_blue, > + expected_colors, ctm, > + fb_format->format); > + } > + igt_assert(success); > } > - igt_assert(success); > - } > > - igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) { > - color_t expected_colors[] = { > - { 0.0, }, { 0.0, }, { 0.0, } > - }; > - double ctm[] = { 0.75, 0.0, 0.0, > - 0.0, 0.75, 0.0, > - 0.0, 0.0, 0.75 }; > - bool success = false; > - > - for (i = 0; i < 7; i++) { > - expected_colors[0].r = > - expected_colors[1].g = > - expected_colors[2].b = > - 0.75 + delta * (i - 3); > - success |= test_pipe_ctm(data, primary, > - red_green_blue, > - expected_colors, ctm); > + igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p), > + fb_format->name) { > + color_t expected_colors[] = { > + { 0.0, }, { 0.0, }, { 0.0, } > + }; > + double ctm[] = { 0.75, 0.0, 0.0, > + 0.0, 0.75, 0.0, > + 0.0, 0.0, 0.75 }; > + bool success = false; > + > + for (i = 0; i < 7; i++) { > + expected_colors[0].r = > + expected_colors[1].g = > + expected_colors[2].b = > + 0.75 + delta * (i - 3); > + success |= test_pipe_ctm(data, primary, > + red_green_blue, > + expected_colors, ctm, > + fb_format->format); > + } > + igt_assert(success); > } > - igt_assert(success); > - } > > - igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) { > - color_t full_rgb[] = { > - { 1.0, 0.0, 0.0 }, > - { 0.0, 1.0, 0.0 }, > - { 0.0, 0.0, 1.0 } > - }; > - double ctm[] = { 100.0, 0.0, 0.0, > - 0.0, 100.0, 0.0, > - 0.0, 0.0, 100.0 }; > - > - /* CherryView generates values on 10bits that we > - * produce with an 8 bits per color framebuffer. */ > - igt_require(!IS_CHERRYVIEW(data->devid)); > - > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - full_rgb, ctm)); > - } > + igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p), > + fb_format->name) { > + color_t full_rgb[] = { > + { 1.0, 0.0, 0.0 }, > + { 0.0, 1.0, 0.0 }, > + { 0.0, 0.0, 1.0 } > + }; > + double ctm[] = { 100.0, 0.0, 0.0, > + 0.0, 100.0, 0.0, > + 0.0, 0.0, 100.0 }; > + > + /* CherryView generates values on 10bits that we > + * produce with an 8 bits per color framebuffer. */ > + igt_require(!IS_CHERRYVIEW(data->devid)); > + > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + full_rgb, ctm, > + fb_format->format)); > + } > > - igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) { > - color_t all_black[] = { > - { 0.0, 0.0, 0.0 }, > - { 0.0, 0.0, 0.0 }, > - { 0.0, 0.0, 0.0 } > - }; > - double ctm[] = { -1.0, 0.0, 0.0, > - 0.0, -1.0, 0.0, > - 0.0, 0.0, -1.0 }; > - igt_assert(test_pipe_ctm(data, primary, red_green_blue, > - all_black, ctm)); > - } > + igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p), > + fb_format->name) { > + color_t all_black[] = { > + { 0.0, 0.0, 0.0 }, > + { 0.0, 0.0, 0.0 }, > + { 0.0, 0.0, 0.0 } > + }; > + double ctm[] = { -1.0, 0.0, 0.0, > + 0.0, -1.0, 0.0, > + 0.0, 0.0, -1.0 }; > + igt_assert(test_pipe_ctm(data, primary, red_green_blue, > + all_black, ctm, > + fb_format->format)); > + } > > #if 0 > - igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p)) > - test_pipe_limited_range_ctm(data, primary); > + igt_subtest_f("pipe-%s-ctm-limited-range%s", > + kmstest_pipe_name(p), fb_format->name) > + test_pipe_limited_range_ctm(data, primary, > + fb_format->format); > #endif > > - igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p)) > - test_pipe_degamma(data, primary); > + igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p), > + fb_format->name) > + test_pipe_degamma(data, primary, fb_format->format); > > - igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p)) > - test_pipe_gamma(data, primary); > + igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p), > + fb_format->name) > + test_pipe_gamma(data, primary, fb_format->format); > > - igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p)) > - test_pipe_legacy_gamma(data, primary); > + igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p), > + fb_format->name) > + test_pipe_legacy_gamma(data, primary, > + fb_format->format); > > + } // End of fb_formats iterator > + > + data->color_depth = 8; > igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p)) > test_pipe_legacy_gamma_reset(data, primary); > > -- > 2.24.0 > > _______________________________________________ > igt-dev mailing list > igt-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/igt-dev -- Ville Syrjälä Intel _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä @ 2019-12-12 20:53 ` Leo 2019-12-12 21:13 ` Ville Syrjälä 2020-01-02 22:59 ` Harry Wentland 1 sibling, 1 reply; 11+ messages in thread From: Leo @ 2019-12-12 20:53 UTC (permalink / raw) To: Ville Syrjälä; +Cc: igt-dev On 2019-12-12 10:03 a.m., Ville Syrjälä wrote: > On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote: >> From: Leo Li <sunpeng.li@amd.com> >> >> We'd like to test the hardware pipe's color management with 10bit >> surfaces. > > Why exactly? The pipe color management stuff doesn't care what > pixel format the plane used. > We expose 10bpc support to usermode with color management, so it'd be good to cover it with a test. With amdpgu, color management indeed doesn't care about surface format, since it's all converted to fixed point in hardware beforehand. But I think it's best to not assume hardware behavior, and test the actual use case instead. Leo >> This change parameterizes the hardcoded formats within each >> test, and ennumerates the additional subtests within a for loop. To >> avoid renaming existing tests, the 10bpc tests will have '-10bpc' >> inserted after the pipe name, while the 8bpc test names remain >> unchanged. >> >> Signed-off-by: Leo Li <sunpeng.li@amd.com> >> --- >> tests/kms_color.c | 353 ++++++++++++++++++++++++++-------------------- >> 1 file changed, 198 insertions(+), 155 deletions(-) >> >> diff --git a/tests/kms_color.c b/tests/kms_color.c >> index b4b578a7..3c76a0d2 100644 >> --- a/tests/kms_color.c >> +++ b/tests/kms_color.c >> @@ -52,6 +52,12 @@ typedef struct { >> double coeffs[]; >> } gamma_lut_t; >> >> +typedef struct { >> + uint32_t format; >> + int bpc; >> + char name[16]; >> +} fb_format_t; >> + >> static void paint_gradient_rectangles(data_t *data, >> drmModeModeInfo *mode, >> color_t *colors, >> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop) >> * rectangles with linear degamma LUT. >> */ >> static void test_pipe_degamma(data_t *data, >> - igt_plane_t *primary) >> + igt_plane_t *primary, >> + uint32_t fb_format) >> { >> igt_output_t *output; >> gamma_lut_t *degamma_linear, *degamma_full; >> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data, >> * LUT and verify we have the same CRC as drawing solid color rectangles. >> */ >> static void test_pipe_gamma(data_t *data, >> - igt_plane_t *primary) >> + igt_plane_t *primary, >> + uint32_t fb_format) >> { >> igt_output_t *output; >> gamma_lut_t *gamma_full; >> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data, >> * with linear legacy gamma LUT. >> */ >> static void test_pipe_legacy_gamma(data_t *data, >> - igt_plane_t *primary) >> + igt_plane_t *primary, >> + uint32_t fb_format) >> { >> igt_output_t *output; >> color_t red_green_blue[] = { >> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data, >> igt_plane_t *primary, >> color_t *before, >> color_t *after, >> - double *ctm_matrix) >> + double *ctm_matrix, >> + uint32_t fb_format) >> { >> const double ctm_identity[] = { >> 1.0, 0.0, 0.0, >> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data, >> */ >> #if 0 >> static void test_pipe_limited_range_ctm(data_t *data, >> - igt_plane_t *primary) >> + igt_plane_t *primary, >> + uint32_t fb_format) >> { >> double limited_result = 235.0 / 255.0; >> color_t red_green_blue_limited[] = { >> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p) >> igt_pipe_t *pipe; >> igt_plane_t *primary; >> double delta; >> - int i; >> + int i, j; >> color_t red_green_blue[] = { >> { 1.0, 0.0, 0.0 }, >> { 0.0, 1.0, 0.0 }, >> { 0.0, 0.0, 1.0 } >> }; >> >> + fb_format_t fb_formats[] = { >> + { DRM_FORMAT_XRGB8888, 8 , ""}, >> + { DRM_FORMAT_XRGB2101010, 10 , "-10bpc"} >> + }; >> + >> igt_fixture { >> igt_require_pipe_crc(data->drm_fd); >> >> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p) >> igt_display_require_output_on_pipe(&data->display, p); >> } >> >> - /* We assume an 8bits depth per color for degamma/gamma LUTs >> - * for CRC checks with framebuffer references. */ >> - data->color_depth = 8; >> - delta = 1.0 / (1 << data->color_depth); >> - >> - igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) { >> - color_t blue_green_blue[] = { >> - { 0.0, 0.0, 1.0 }, >> - { 0.0, 1.0, 0.0 }, >> - { 0.0, 0.0, 1.0 } >> - }; >> - double ctm[] = { 0.0, 0.0, 0.0, >> - 0.0, 1.0, 0.0, >> - 1.0, 0.0, 1.0 }; >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - blue_green_blue, ctm)); >> - } >> + /* Iterate over fb formats to test */ >> + for (j = 0; j < ARRAY_SIZE(fb_formats); j++) { >> + >> + fb_format_t *fb_format = &fb_formats[j]; >> + data->color_depth = fb_format->bpc; >> + delta = 1.0 / (1 << data->color_depth); >> + >> + igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t blue_green_blue[] = { >> + { 0.0, 0.0, 1.0 }, >> + { 0.0, 1.0, 0.0 }, >> + { 0.0, 0.0, 1.0 } >> + }; >> + double ctm[] = { 0.0, 0.0, 0.0, >> + 0.0, 1.0, 0.0, >> + 1.0, 0.0, 1.0 }; >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + blue_green_blue, ctm, >> + fb_format->format)); >> + } >> >> - igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) { >> - color_t red_red_blue[] = { >> - { 1.0, 0.0, 0.0 }, >> - { 1.0, 0.0, 0.0 }, >> - { 0.0, 0.0, 1.0 } >> - }; >> - double ctm[] = { 1.0, 1.0, 0.0, >> - 0.0, 0.0, 0.0, >> - 0.0, 0.0, 1.0 }; >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - red_red_blue, ctm)); >> - } >> + igt_subtest_f("pipe-%s%s-ctm-green-to-red", >> + kmstest_pipe_name(p), fb_format->name) { >> + color_t red_red_blue[] = { >> + { 1.0, 0.0, 0.0 }, >> + { 1.0, 0.0, 0.0 }, >> + { 0.0, 0.0, 1.0 } >> + }; >> + double ctm[] = { 1.0, 1.0, 0.0, >> + 0.0, 0.0, 0.0, >> + 0.0, 0.0, 1.0 }; >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + red_red_blue, ctm, >> + fb_format->format)); >> + } >> >> - igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) { >> - color_t red_green_red[] = { >> - { 1.0, 0.0, 0.0 }, >> - { 0.0, 1.0, 0.0 }, >> - { 1.0, 0.0, 0.0 } >> - }; >> - double ctm[] = { 1.0, 0.0, 1.0, >> - 0.0, 1.0, 0.0, >> - 0.0, 0.0, 0.0 }; >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - red_green_red, ctm)); >> - } >> + igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t red_green_red[] = { >> + { 1.0, 0.0, 0.0 }, >> + { 0.0, 1.0, 0.0 }, >> + { 1.0, 0.0, 0.0 } >> + }; >> + double ctm[] = { 1.0, 0.0, 1.0, >> + 0.0, 1.0, 0.0, >> + 0.0, 0.0, 0.0 }; >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + red_green_red, ctm, >> + fb_format->format)); >> + } >> >> - /* We tests a few values around the expected result because >> - * the it depends on the hardware we're dealing with, we can >> - * either get clamped or rounded values and we also need to >> - * account for odd number of items in the LUTs. */ >> - igt_subtest_f("pipe-%s-ctm-0-25", kmstest_pipe_name(p)) { >> - color_t expected_colors[] = { >> - { 0.0, }, { 0.0, }, { 0.0, } >> - }; >> - double ctm[] = { 0.25, 0.0, 0.0, >> - 0.0, 0.25, 0.0, >> - 0.0, 0.0, 0.25 }; >> - bool success = false; >> - >> - for (i = 0; i < 5; i++) { >> - expected_colors[0].r = >> - expected_colors[1].g = >> - expected_colors[2].b = >> - 0.25 + delta * (i - 2); >> - success |= test_pipe_ctm(data, primary, >> - red_green_blue, >> - expected_colors, ctm); >> + /* We tests a few values around the expected result because >> + * the it depends on the hardware we're dealing with, we can >> + * either get clamped or rounded values and we also need to >> + * account for odd number of items in the LUTs. */ >> + igt_subtest_f("pipe-%s%s-ctm-0-25", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t expected_colors[] = { >> + { 0.0, }, { 0.0, }, { 0.0, } >> + }; >> + double ctm[] = { 0.25, 0.0, 0.0, >> + 0.0, 0.25, 0.0, >> + 0.0, 0.0, 0.25 }; >> + bool success = false; >> + >> + for (i = 0; i < 5; i++) { >> + expected_colors[0].r = >> + expected_colors[1].g = >> + expected_colors[2].b = >> + 0.25 + delta * (i - 2); >> + success |= test_pipe_ctm(data, primary, >> + red_green_blue, >> + expected_colors, ctm, >> + fb_format->format); >> + } >> + igt_assert(success); >> } >> - igt_assert(success); >> - } >> >> - igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) { >> - color_t expected_colors[] = { >> - { 0.0, }, { 0.0, }, { 0.0, } >> - }; >> - double ctm[] = { 0.5, 0.0, 0.0, >> - 0.0, 0.5, 0.0, >> - 0.0, 0.0, 0.5 }; >> - bool success = false; >> - >> - for (i = 0; i < 5; i++) { >> - expected_colors[0].r = >> - expected_colors[1].g = >> - expected_colors[2].b = >> - 0.5 + delta * (i - 2); >> - success |= test_pipe_ctm(data, primary, >> - red_green_blue, >> - expected_colors, ctm); >> + igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t expected_colors[] = { >> + { 0.0, }, { 0.0, }, { 0.0, } >> + }; >> + double ctm[] = { 0.5, 0.0, 0.0, >> + 0.0, 0.5, 0.0, >> + 0.0, 0.0, 0.5 }; >> + bool success = false; >> + >> + for (i = 0; i < 5; i++) { >> + expected_colors[0].r = >> + expected_colors[1].g = >> + expected_colors[2].b = >> + 0.5 + delta * (i - 2); >> + success |= test_pipe_ctm(data, primary, >> + red_green_blue, >> + expected_colors, ctm, >> + fb_format->format); >> + } >> + igt_assert(success); >> } >> - igt_assert(success); >> - } >> >> - igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) { >> - color_t expected_colors[] = { >> - { 0.0, }, { 0.0, }, { 0.0, } >> - }; >> - double ctm[] = { 0.75, 0.0, 0.0, >> - 0.0, 0.75, 0.0, >> - 0.0, 0.0, 0.75 }; >> - bool success = false; >> - >> - for (i = 0; i < 7; i++) { >> - expected_colors[0].r = >> - expected_colors[1].g = >> - expected_colors[2].b = >> - 0.75 + delta * (i - 3); >> - success |= test_pipe_ctm(data, primary, >> - red_green_blue, >> - expected_colors, ctm); >> + igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t expected_colors[] = { >> + { 0.0, }, { 0.0, }, { 0.0, } >> + }; >> + double ctm[] = { 0.75, 0.0, 0.0, >> + 0.0, 0.75, 0.0, >> + 0.0, 0.0, 0.75 }; >> + bool success = false; >> + >> + for (i = 0; i < 7; i++) { >> + expected_colors[0].r = >> + expected_colors[1].g = >> + expected_colors[2].b = >> + 0.75 + delta * (i - 3); >> + success |= test_pipe_ctm(data, primary, >> + red_green_blue, >> + expected_colors, ctm, >> + fb_format->format); >> + } >> + igt_assert(success); >> } >> - igt_assert(success); >> - } >> >> - igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) { >> - color_t full_rgb[] = { >> - { 1.0, 0.0, 0.0 }, >> - { 0.0, 1.0, 0.0 }, >> - { 0.0, 0.0, 1.0 } >> - }; >> - double ctm[] = { 100.0, 0.0, 0.0, >> - 0.0, 100.0, 0.0, >> - 0.0, 0.0, 100.0 }; >> - >> - /* CherryView generates values on 10bits that we >> - * produce with an 8 bits per color framebuffer. */ >> - igt_require(!IS_CHERRYVIEW(data->devid)); >> - >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - full_rgb, ctm)); >> - } >> + igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t full_rgb[] = { >> + { 1.0, 0.0, 0.0 }, >> + { 0.0, 1.0, 0.0 }, >> + { 0.0, 0.0, 1.0 } >> + }; >> + double ctm[] = { 100.0, 0.0, 0.0, >> + 0.0, 100.0, 0.0, >> + 0.0, 0.0, 100.0 }; >> + >> + /* CherryView generates values on 10bits that we >> + * produce with an 8 bits per color framebuffer. */ >> + igt_require(!IS_CHERRYVIEW(data->devid)); >> + >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + full_rgb, ctm, >> + fb_format->format)); >> + } >> >> - igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) { >> - color_t all_black[] = { >> - { 0.0, 0.0, 0.0 }, >> - { 0.0, 0.0, 0.0 }, >> - { 0.0, 0.0, 0.0 } >> - }; >> - double ctm[] = { -1.0, 0.0, 0.0, >> - 0.0, -1.0, 0.0, >> - 0.0, 0.0, -1.0 }; >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - all_black, ctm)); >> - } >> + igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t all_black[] = { >> + { 0.0, 0.0, 0.0 }, >> + { 0.0, 0.0, 0.0 }, >> + { 0.0, 0.0, 0.0 } >> + }; >> + double ctm[] = { -1.0, 0.0, 0.0, >> + 0.0, -1.0, 0.0, >> + 0.0, 0.0, -1.0 }; >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + all_black, ctm, >> + fb_format->format)); >> + } >> >> #if 0 >> - igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p)) >> - test_pipe_limited_range_ctm(data, primary); >> + igt_subtest_f("pipe-%s-ctm-limited-range%s", >> + kmstest_pipe_name(p), fb_format->name) >> + test_pipe_limited_range_ctm(data, primary, >> + fb_format->format); >> #endif >> >> - igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p)) >> - test_pipe_degamma(data, primary); >> + igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p), >> + fb_format->name) >> + test_pipe_degamma(data, primary, fb_format->format); >> >> - igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p)) >> - test_pipe_gamma(data, primary); >> + igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p), >> + fb_format->name) >> + test_pipe_gamma(data, primary, fb_format->format); >> >> - igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p)) >> - test_pipe_legacy_gamma(data, primary); >> + igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p), >> + fb_format->name) >> + test_pipe_legacy_gamma(data, primary, >> + fb_format->format); >> >> + } // End of fb_formats iterator >> + >> + data->color_depth = 8; >> igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p)) >> test_pipe_legacy_gamma_reset(data, primary); >> >> -- >> 2.24.0 >> >> _______________________________________________ >> igt-dev mailing list >> igt-dev@lists.freedesktop.org >> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Figt-dev&data=02%7C01%7Csunpeng.li%40amd.com%7C6845b4a0d5234b72e7be08d77f146f66%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637117598052178406&sdata=0UanaNxDYRv0jGZHsgdfj0w%2BEBvejAAHAkXWarL3YXI%3D&reserved=0 > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-12 20:53 ` Leo @ 2019-12-12 21:13 ` Ville Syrjälä 2019-12-17 14:00 ` Leo 0 siblings, 1 reply; 11+ messages in thread From: Ville Syrjälä @ 2019-12-12 21:13 UTC (permalink / raw) To: Leo; +Cc: igt-dev On Thu, Dec 12, 2019 at 03:53:34PM -0500, Leo wrote: > > > On 2019-12-12 10:03 a.m., Ville Syrjälä wrote: > > On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote: > >> From: Leo Li <sunpeng.li@amd.com> > >> > >> We'd like to test the hardware pipe's color management with 10bit > >> surfaces. > > > > Why exactly? The pipe color management stuff doesn't care what > > pixel format the plane used. > > > > We expose 10bpc support to usermode with color management, so it'd be > good to cover it with a test. > > With amdpgu, color management indeed doesn't care about surface format, > since it's all converted to fixed point in hardware beforehand. Totally missed this came from AMD folks. Good thing I was still correct with my statement then :) > But I > think it's best to not assume hardware behavior, and test the actual > use case instead. I think what we would really want is a test that makes sure we can achieve the desired precision in the output for some fb depth and gamma configuration (sadly the gamma uapi doesn't let us do that ATM in a hardware agnostic way). I don't think this test currently checks anything like that. But maybe I'm misremebering what it actually does. -- Ville Syrjälä Intel _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-12 21:13 ` Ville Syrjälä @ 2019-12-17 14:00 ` Leo 0 siblings, 0 replies; 11+ messages in thread From: Leo @ 2019-12-17 14:00 UTC (permalink / raw) To: Ville Syrjälä; +Cc: igt-dev On 2019-12-12 4:13 p.m., Ville Syrjälä wrote: > On Thu, Dec 12, 2019 at 03:53:34PM -0500, Leo wrote: >> >> >> On 2019-12-12 10:03 a.m., Ville Syrjälä wrote: >>> On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote: >>>> From: Leo Li <sunpeng.li@amd.com> >>>> >>>> We'd like to test the hardware pipe's color management with 10bit >>>> surfaces. >>> >>> Why exactly? The pipe color management stuff doesn't care what >>> pixel format the plane used. >>> >> >> We expose 10bpc support to usermode with color management, so it'd be >> good to cover it with a test. >> >> With amdpgu, color management indeed doesn't care about surface format, >> since it's all converted to fixed point in hardware beforehand. > > Totally missed this came from AMD folks. Good thing I was still > correct with my statement then :) > >> But I >> think it's best to not assume hardware behavior, and test the actual >> use case instead. > > I think what we would really want is a test that makes sure we can > achieve the desired precision in the output for some fb depth and > gamma configuration (sadly the gamma uapi doesn't let us do that > ATM in a hardware agnostic way). I don't think this test currently > checks anything like that. But maybe I'm misremebering what it > actually does. > kms_color does a min and max gamma test where all values are mapped to 0 or 1, so no precision check there... However, it looks like CTM precision is checked to be within some reasonable threshold, according to the bpc tested. I'm not sure if testing LUT precision would make sense as a hw agnostic test. For AMD hardware at least, the internal representation wasn't designed to be precise, but to follow human color perception. i.e. precision is lost at higher color values. So any LUT precision test will have to take vendor-specific quarks into account. Perhaps this isn't the case for the CTM since the concept for hw is simpler? At least it works well with i915 and amdgpu FWICT. Perhaps it's better to have vendor specific tests for LUT precision and accuracy. I think these tests will at least show that gamma is operational with 10bpc surfaces, which is hw-agnostic enough of a test. Leo _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä 2019-12-12 20:53 ` Leo @ 2020-01-02 22:59 ` Harry Wentland 2020-01-02 23:03 ` Harry Wentland 1 sibling, 1 reply; 11+ messages in thread From: Harry Wentland @ 2020-01-02 22:59 UTC (permalink / raw) To: Ville Syrjälä, sunpeng.li; +Cc: igt-dev On 2019-12-12 10:03 a.m., Ville Syrjälä wrote: > On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote: >> From: Leo Li <sunpeng.li@amd.com> >> >> We'd like to test the hardware pipe's color management with 10bit >> surfaces. > > Why exactly? The pipe color management stuff doesn't care what > pixel format the plane used. Not sure how this works for Intel but for us there's a fair amount of logic between color management and the pixel format. In general, not sure if IGT should be designed based on assumptions of a certain KMS driver implementation. Harry > >> This change parameterizes the hardcoded formats within each >> test, and ennumerates the additional subtests within a for loop. To >> avoid renaming existing tests, the 10bpc tests will have '-10bpc' >> inserted after the pipe name, while the 8bpc test names remain >> unchanged. >> >> Signed-off-by: Leo Li <sunpeng.li@amd.com> >> --- >> tests/kms_color.c | 353 ++++++++++++++++++++++++++-------------------- >> 1 file changed, 198 insertions(+), 155 deletions(-) >> >> diff --git a/tests/kms_color.c b/tests/kms_color.c >> index b4b578a7..3c76a0d2 100644 >> --- a/tests/kms_color.c >> +++ b/tests/kms_color.c >> @@ -52,6 +52,12 @@ typedef struct { >> double coeffs[]; >> } gamma_lut_t; >> >> +typedef struct { >> + uint32_t format; >> + int bpc; >> + char name[16]; >> +} fb_format_t; >> + >> static void paint_gradient_rectangles(data_t *data, >> drmModeModeInfo *mode, >> color_t *colors, >> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop) >> * rectangles with linear degamma LUT. >> */ >> static void test_pipe_degamma(data_t *data, >> - igt_plane_t *primary) >> + igt_plane_t *primary, >> + uint32_t fb_format) >> { >> igt_output_t *output; >> gamma_lut_t *degamma_linear, *degamma_full; >> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data, >> * LUT and verify we have the same CRC as drawing solid color rectangles. >> */ >> static void test_pipe_gamma(data_t *data, >> - igt_plane_t *primary) >> + igt_plane_t *primary, >> + uint32_t fb_format) >> { >> igt_output_t *output; >> gamma_lut_t *gamma_full; >> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data, >> * with linear legacy gamma LUT. >> */ >> static void test_pipe_legacy_gamma(data_t *data, >> - igt_plane_t *primary) >> + igt_plane_t *primary, >> + uint32_t fb_format) >> { >> igt_output_t *output; >> color_t red_green_blue[] = { >> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data, >> igt_plane_t *primary, >> color_t *before, >> color_t *after, >> - double *ctm_matrix) >> + double *ctm_matrix, >> + uint32_t fb_format) >> { >> const double ctm_identity[] = { >> 1.0, 0.0, 0.0, >> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data, >> */ >> #if 0 >> static void test_pipe_limited_range_ctm(data_t *data, >> - igt_plane_t *primary) >> + igt_plane_t *primary, >> + uint32_t fb_format) >> { >> double limited_result = 235.0 / 255.0; >> color_t red_green_blue_limited[] = { >> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data, >> fb_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb); >> igt_assert(fb_id); >> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data, >> fb_modeset_id = igt_create_fb(data->drm_fd, >> mode->hdisplay, >> mode->vdisplay, >> - DRM_FORMAT_XRGB8888, >> + fb_format, >> LOCAL_DRM_FORMAT_MOD_NONE, >> &fb_modeset); >> igt_assert(fb_modeset_id); >> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p) >> igt_pipe_t *pipe; >> igt_plane_t *primary; >> double delta; >> - int i; >> + int i, j; >> color_t red_green_blue[] = { >> { 1.0, 0.0, 0.0 }, >> { 0.0, 1.0, 0.0 }, >> { 0.0, 0.0, 1.0 } >> }; >> >> + fb_format_t fb_formats[] = { >> + { DRM_FORMAT_XRGB8888, 8 , ""}, >> + { DRM_FORMAT_XRGB2101010, 10 , "-10bpc"} >> + }; >> + >> igt_fixture { >> igt_require_pipe_crc(data->drm_fd); >> >> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p) >> igt_display_require_output_on_pipe(&data->display, p); >> } >> >> - /* We assume an 8bits depth per color for degamma/gamma LUTs >> - * for CRC checks with framebuffer references. */ >> - data->color_depth = 8; >> - delta = 1.0 / (1 << data->color_depth); >> - >> - igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) { >> - color_t blue_green_blue[] = { >> - { 0.0, 0.0, 1.0 }, >> - { 0.0, 1.0, 0.0 }, >> - { 0.0, 0.0, 1.0 } >> - }; >> - double ctm[] = { 0.0, 0.0, 0.0, >> - 0.0, 1.0, 0.0, >> - 1.0, 0.0, 1.0 }; >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - blue_green_blue, ctm)); >> - } >> + /* Iterate over fb formats to test */ >> + for (j = 0; j < ARRAY_SIZE(fb_formats); j++) { >> + >> + fb_format_t *fb_format = &fb_formats[j]; >> + data->color_depth = fb_format->bpc; >> + delta = 1.0 / (1 << data->color_depth); >> + >> + igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t blue_green_blue[] = { >> + { 0.0, 0.0, 1.0 }, >> + { 0.0, 1.0, 0.0 }, >> + { 0.0, 0.0, 1.0 } >> + }; >> + double ctm[] = { 0.0, 0.0, 0.0, >> + 0.0, 1.0, 0.0, >> + 1.0, 0.0, 1.0 }; >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + blue_green_blue, ctm, >> + fb_format->format)); >> + } >> >> - igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) { >> - color_t red_red_blue[] = { >> - { 1.0, 0.0, 0.0 }, >> - { 1.0, 0.0, 0.0 }, >> - { 0.0, 0.0, 1.0 } >> - }; >> - double ctm[] = { 1.0, 1.0, 0.0, >> - 0.0, 0.0, 0.0, >> - 0.0, 0.0, 1.0 }; >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - red_red_blue, ctm)); >> - } >> + igt_subtest_f("pipe-%s%s-ctm-green-to-red", >> + kmstest_pipe_name(p), fb_format->name) { >> + color_t red_red_blue[] = { >> + { 1.0, 0.0, 0.0 }, >> + { 1.0, 0.0, 0.0 }, >> + { 0.0, 0.0, 1.0 } >> + }; >> + double ctm[] = { 1.0, 1.0, 0.0, >> + 0.0, 0.0, 0.0, >> + 0.0, 0.0, 1.0 }; >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + red_red_blue, ctm, >> + fb_format->format)); >> + } >> >> - igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) { >> - color_t red_green_red[] = { >> - { 1.0, 0.0, 0.0 }, >> - { 0.0, 1.0, 0.0 }, >> - { 1.0, 0.0, 0.0 } >> - }; >> - double ctm[] = { 1.0, 0.0, 1.0, >> - 0.0, 1.0, 0.0, >> - 0.0, 0.0, 0.0 }; >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - red_green_red, ctm)); >> - } >> + igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t red_green_red[] = { >> + { 1.0, 0.0, 0.0 }, >> + { 0.0, 1.0, 0.0 }, >> + { 1.0, 0.0, 0.0 } >> + }; >> + double ctm[] = { 1.0, 0.0, 1.0, >> + 0.0, 1.0, 0.0, >> + 0.0, 0.0, 0.0 }; >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + red_green_red, ctm, >> + fb_format->format)); >> + } >> >> - /* We tests a few values around the expected result because >> - * the it depends on the hardware we're dealing with, we can >> - * either get clamped or rounded values and we also need to >> - * account for odd number of items in the LUTs. */ >> - igt_subtest_f("pipe-%s-ctm-0-25", kmstest_pipe_name(p)) { >> - color_t expected_colors[] = { >> - { 0.0, }, { 0.0, }, { 0.0, } >> - }; >> - double ctm[] = { 0.25, 0.0, 0.0, >> - 0.0, 0.25, 0.0, >> - 0.0, 0.0, 0.25 }; >> - bool success = false; >> - >> - for (i = 0; i < 5; i++) { >> - expected_colors[0].r = >> - expected_colors[1].g = >> - expected_colors[2].b = >> - 0.25 + delta * (i - 2); >> - success |= test_pipe_ctm(data, primary, >> - red_green_blue, >> - expected_colors, ctm); >> + /* We tests a few values around the expected result because >> + * the it depends on the hardware we're dealing with, we can >> + * either get clamped or rounded values and we also need to >> + * account for odd number of items in the LUTs. */ >> + igt_subtest_f("pipe-%s%s-ctm-0-25", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t expected_colors[] = { >> + { 0.0, }, { 0.0, }, { 0.0, } >> + }; >> + double ctm[] = { 0.25, 0.0, 0.0, >> + 0.0, 0.25, 0.0, >> + 0.0, 0.0, 0.25 }; >> + bool success = false; >> + >> + for (i = 0; i < 5; i++) { >> + expected_colors[0].r = >> + expected_colors[1].g = >> + expected_colors[2].b = >> + 0.25 + delta * (i - 2); >> + success |= test_pipe_ctm(data, primary, >> + red_green_blue, >> + expected_colors, ctm, >> + fb_format->format); >> + } >> + igt_assert(success); >> } >> - igt_assert(success); >> - } >> >> - igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) { >> - color_t expected_colors[] = { >> - { 0.0, }, { 0.0, }, { 0.0, } >> - }; >> - double ctm[] = { 0.5, 0.0, 0.0, >> - 0.0, 0.5, 0.0, >> - 0.0, 0.0, 0.5 }; >> - bool success = false; >> - >> - for (i = 0; i < 5; i++) { >> - expected_colors[0].r = >> - expected_colors[1].g = >> - expected_colors[2].b = >> - 0.5 + delta * (i - 2); >> - success |= test_pipe_ctm(data, primary, >> - red_green_blue, >> - expected_colors, ctm); >> + igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t expected_colors[] = { >> + { 0.0, }, { 0.0, }, { 0.0, } >> + }; >> + double ctm[] = { 0.5, 0.0, 0.0, >> + 0.0, 0.5, 0.0, >> + 0.0, 0.0, 0.5 }; >> + bool success = false; >> + >> + for (i = 0; i < 5; i++) { >> + expected_colors[0].r = >> + expected_colors[1].g = >> + expected_colors[2].b = >> + 0.5 + delta * (i - 2); >> + success |= test_pipe_ctm(data, primary, >> + red_green_blue, >> + expected_colors, ctm, >> + fb_format->format); >> + } >> + igt_assert(success); >> } >> - igt_assert(success); >> - } >> >> - igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) { >> - color_t expected_colors[] = { >> - { 0.0, }, { 0.0, }, { 0.0, } >> - }; >> - double ctm[] = { 0.75, 0.0, 0.0, >> - 0.0, 0.75, 0.0, >> - 0.0, 0.0, 0.75 }; >> - bool success = false; >> - >> - for (i = 0; i < 7; i++) { >> - expected_colors[0].r = >> - expected_colors[1].g = >> - expected_colors[2].b = >> - 0.75 + delta * (i - 3); >> - success |= test_pipe_ctm(data, primary, >> - red_green_blue, >> - expected_colors, ctm); >> + igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t expected_colors[] = { >> + { 0.0, }, { 0.0, }, { 0.0, } >> + }; >> + double ctm[] = { 0.75, 0.0, 0.0, >> + 0.0, 0.75, 0.0, >> + 0.0, 0.0, 0.75 }; >> + bool success = false; >> + >> + for (i = 0; i < 7; i++) { >> + expected_colors[0].r = >> + expected_colors[1].g = >> + expected_colors[2].b = >> + 0.75 + delta * (i - 3); >> + success |= test_pipe_ctm(data, primary, >> + red_green_blue, >> + expected_colors, ctm, >> + fb_format->format); >> + } >> + igt_assert(success); >> } >> - igt_assert(success); >> - } >> >> - igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) { >> - color_t full_rgb[] = { >> - { 1.0, 0.0, 0.0 }, >> - { 0.0, 1.0, 0.0 }, >> - { 0.0, 0.0, 1.0 } >> - }; >> - double ctm[] = { 100.0, 0.0, 0.0, >> - 0.0, 100.0, 0.0, >> - 0.0, 0.0, 100.0 }; >> - >> - /* CherryView generates values on 10bits that we >> - * produce with an 8 bits per color framebuffer. */ >> - igt_require(!IS_CHERRYVIEW(data->devid)); >> - >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - full_rgb, ctm)); >> - } >> + igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t full_rgb[] = { >> + { 1.0, 0.0, 0.0 }, >> + { 0.0, 1.0, 0.0 }, >> + { 0.0, 0.0, 1.0 } >> + }; >> + double ctm[] = { 100.0, 0.0, 0.0, >> + 0.0, 100.0, 0.0, >> + 0.0, 0.0, 100.0 }; >> + >> + /* CherryView generates values on 10bits that we >> + * produce with an 8 bits per color framebuffer. */ >> + igt_require(!IS_CHERRYVIEW(data->devid)); >> + >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + full_rgb, ctm, >> + fb_format->format)); >> + } >> >> - igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) { >> - color_t all_black[] = { >> - { 0.0, 0.0, 0.0 }, >> - { 0.0, 0.0, 0.0 }, >> - { 0.0, 0.0, 0.0 } >> - }; >> - double ctm[] = { -1.0, 0.0, 0.0, >> - 0.0, -1.0, 0.0, >> - 0.0, 0.0, -1.0 }; >> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> - all_black, ctm)); >> - } >> + igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p), >> + fb_format->name) { >> + color_t all_black[] = { >> + { 0.0, 0.0, 0.0 }, >> + { 0.0, 0.0, 0.0 }, >> + { 0.0, 0.0, 0.0 } >> + }; >> + double ctm[] = { -1.0, 0.0, 0.0, >> + 0.0, -1.0, 0.0, >> + 0.0, 0.0, -1.0 }; >> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >> + all_black, ctm, >> + fb_format->format)); >> + } >> >> #if 0 >> - igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p)) >> - test_pipe_limited_range_ctm(data, primary); >> + igt_subtest_f("pipe-%s-ctm-limited-range%s", >> + kmstest_pipe_name(p), fb_format->name) >> + test_pipe_limited_range_ctm(data, primary, >> + fb_format->format); >> #endif >> >> - igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p)) >> - test_pipe_degamma(data, primary); >> + igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p), >> + fb_format->name) >> + test_pipe_degamma(data, primary, fb_format->format); >> >> - igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p)) >> - test_pipe_gamma(data, primary); >> + igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p), >> + fb_format->name) >> + test_pipe_gamma(data, primary, fb_format->format); >> >> - igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p)) >> - test_pipe_legacy_gamma(data, primary); >> + igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p), >> + fb_format->name) >> + test_pipe_legacy_gamma(data, primary, >> + fb_format->format); >> >> + } // End of fb_formats iterator >> + >> + data->color_depth = 8; >> igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p)) >> test_pipe_legacy_gamma_reset(data, primary); >> >> -- >> 2.24.0 >> >> _______________________________________________ >> igt-dev mailing list >> igt-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/igt-dev > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2020-01-02 22:59 ` Harry Wentland @ 2020-01-02 23:03 ` Harry Wentland 0 siblings, 0 replies; 11+ messages in thread From: Harry Wentland @ 2020-01-02 23:03 UTC (permalink / raw) To: Ville Syrjälä, sunpeng.li; +Cc: igt-dev On 2020-01-02 5:59 p.m., Harry Wentland wrote: > On 2019-12-12 10:03 a.m., Ville Syrjälä wrote: >> On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li@amd.com wrote: >>> From: Leo Li <sunpeng.li@amd.com> >>> >>> We'd like to test the hardware pipe's color management with 10bit >>> surfaces. >> >> Why exactly? The pipe color management stuff doesn't care what >> pixel format the plane used. > > Not sure how this works for Intel but for us there's a fair amount of > logic between color management and the pixel format. > To clarify, Leo is still correct in that in AMD HW these shouldn't be related but this doesn't really guarantee that the driver doesn't do something funky here. Harry > In general, not sure if IGT should be designed based on assumptions of a > certain KMS driver implementation. > > Harry > >> >>> This change parameterizes the hardcoded formats within each >>> test, and ennumerates the additional subtests within a for loop. To >>> avoid renaming existing tests, the 10bpc tests will have '-10bpc' >>> inserted after the pipe name, while the 8bpc test names remain >>> unchanged. >>> >>> Signed-off-by: Leo Li <sunpeng.li@amd.com> >>> --- >>> tests/kms_color.c | 353 ++++++++++++++++++++++++++-------------------- >>> 1 file changed, 198 insertions(+), 155 deletions(-) >>> >>> diff --git a/tests/kms_color.c b/tests/kms_color.c >>> index b4b578a7..3c76a0d2 100644 >>> --- a/tests/kms_color.c >>> +++ b/tests/kms_color.c >>> @@ -52,6 +52,12 @@ typedef struct { >>> double coeffs[]; >>> } gamma_lut_t; >>> >>> +typedef struct { >>> + uint32_t format; >>> + int bpc; >>> + char name[16]; >>> +} fb_format_t; >>> + >>> static void paint_gradient_rectangles(data_t *data, >>> drmModeModeInfo *mode, >>> color_t *colors, >>> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop) >>> * rectangles with linear degamma LUT. >>> */ >>> static void test_pipe_degamma(data_t *data, >>> - igt_plane_t *primary) >>> + igt_plane_t *primary, >>> + uint32_t fb_format) >>> { >>> igt_output_t *output; >>> gamma_lut_t *degamma_linear, *degamma_full; >>> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data, >>> fb_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb); >>> igt_assert(fb_id); >>> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data, >>> fb_modeset_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb_modeset); >>> igt_assert(fb_modeset_id); >>> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data, >>> * LUT and verify we have the same CRC as drawing solid color rectangles. >>> */ >>> static void test_pipe_gamma(data_t *data, >>> - igt_plane_t *primary) >>> + igt_plane_t *primary, >>> + uint32_t fb_format) >>> { >>> igt_output_t *output; >>> gamma_lut_t *gamma_full; >>> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data, >>> fb_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb); >>> igt_assert(fb_id); >>> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data, >>> fb_modeset_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb_modeset); >>> igt_assert(fb_modeset_id); >>> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data, >>> * with linear legacy gamma LUT. >>> */ >>> static void test_pipe_legacy_gamma(data_t *data, >>> - igt_plane_t *primary) >>> + igt_plane_t *primary, >>> + uint32_t fb_format) >>> { >>> igt_output_t *output; >>> color_t red_green_blue[] = { >>> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data, >>> fb_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb); >>> igt_assert(fb_id); >>> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data, >>> fb_modeset_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb_modeset); >>> igt_assert(fb_modeset_id); >>> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data, >>> igt_plane_t *primary, >>> color_t *before, >>> color_t *after, >>> - double *ctm_matrix) >>> + double *ctm_matrix, >>> + uint32_t fb_format) >>> { >>> const double ctm_identity[] = { >>> 1.0, 0.0, 0.0, >>> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data, >>> fb_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb); >>> igt_assert(fb_id); >>> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data, >>> fb_modeset_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb_modeset); >>> igt_assert(fb_modeset_id); >>> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data, >>> */ >>> #if 0 >>> static void test_pipe_limited_range_ctm(data_t *data, >>> - igt_plane_t *primary) >>> + igt_plane_t *primary, >>> + uint32_t fb_format) >>> { >>> double limited_result = 235.0 / 255.0; >>> color_t red_green_blue_limited[] = { >>> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data, >>> fb_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb); >>> igt_assert(fb_id); >>> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data, >>> fb_modeset_id = igt_create_fb(data->drm_fd, >>> mode->hdisplay, >>> mode->vdisplay, >>> - DRM_FORMAT_XRGB8888, >>> + fb_format, >>> LOCAL_DRM_FORMAT_MOD_NONE, >>> &fb_modeset); >>> igt_assert(fb_modeset_id); >>> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p) >>> igt_pipe_t *pipe; >>> igt_plane_t *primary; >>> double delta; >>> - int i; >>> + int i, j; >>> color_t red_green_blue[] = { >>> { 1.0, 0.0, 0.0 }, >>> { 0.0, 1.0, 0.0 }, >>> { 0.0, 0.0, 1.0 } >>> }; >>> >>> + fb_format_t fb_formats[] = { >>> + { DRM_FORMAT_XRGB8888, 8 , ""}, >>> + { DRM_FORMAT_XRGB2101010, 10 , "-10bpc"} >>> + }; >>> + >>> igt_fixture { >>> igt_require_pipe_crc(data->drm_fd); >>> >>> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p) >>> igt_display_require_output_on_pipe(&data->display, p); >>> } >>> >>> - /* We assume an 8bits depth per color for degamma/gamma LUTs >>> - * for CRC checks with framebuffer references. */ >>> - data->color_depth = 8; >>> - delta = 1.0 / (1 << data->color_depth); >>> - >>> - igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) { >>> - color_t blue_green_blue[] = { >>> - { 0.0, 0.0, 1.0 }, >>> - { 0.0, 1.0, 0.0 }, >>> - { 0.0, 0.0, 1.0 } >>> - }; >>> - double ctm[] = { 0.0, 0.0, 0.0, >>> - 0.0, 1.0, 0.0, >>> - 1.0, 0.0, 1.0 }; >>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> - blue_green_blue, ctm)); >>> - } >>> + /* Iterate over fb formats to test */ >>> + for (j = 0; j < ARRAY_SIZE(fb_formats); j++) { >>> + >>> + fb_format_t *fb_format = &fb_formats[j]; >>> + data->color_depth = fb_format->bpc; >>> + delta = 1.0 / (1 << data->color_depth); >>> + >>> + igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p), >>> + fb_format->name) { >>> + color_t blue_green_blue[] = { >>> + { 0.0, 0.0, 1.0 }, >>> + { 0.0, 1.0, 0.0 }, >>> + { 0.0, 0.0, 1.0 } >>> + }; >>> + double ctm[] = { 0.0, 0.0, 0.0, >>> + 0.0, 1.0, 0.0, >>> + 1.0, 0.0, 1.0 }; >>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> + blue_green_blue, ctm, >>> + fb_format->format)); >>> + } >>> >>> - igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) { >>> - color_t red_red_blue[] = { >>> - { 1.0, 0.0, 0.0 }, >>> - { 1.0, 0.0, 0.0 }, >>> - { 0.0, 0.0, 1.0 } >>> - }; >>> - double ctm[] = { 1.0, 1.0, 0.0, >>> - 0.0, 0.0, 0.0, >>> - 0.0, 0.0, 1.0 }; >>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> - red_red_blue, ctm)); >>> - } >>> + igt_subtest_f("pipe-%s%s-ctm-green-to-red", >>> + kmstest_pipe_name(p), fb_format->name) { >>> + color_t red_red_blue[] = { >>> + { 1.0, 0.0, 0.0 }, >>> + { 1.0, 0.0, 0.0 }, >>> + { 0.0, 0.0, 1.0 } >>> + }; >>> + double ctm[] = { 1.0, 1.0, 0.0, >>> + 0.0, 0.0, 0.0, >>> + 0.0, 0.0, 1.0 }; >>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> + red_red_blue, ctm, >>> + fb_format->format)); >>> + } >>> >>> - igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) { >>> - color_t red_green_red[] = { >>> - { 1.0, 0.0, 0.0 }, >>> - { 0.0, 1.0, 0.0 }, >>> - { 1.0, 0.0, 0.0 } >>> - }; >>> - double ctm[] = { 1.0, 0.0, 1.0, >>> - 0.0, 1.0, 0.0, >>> - 0.0, 0.0, 0.0 }; >>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> - red_green_red, ctm)); >>> - } >>> + igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p), >>> + fb_format->name) { >>> + color_t red_green_red[] = { >>> + { 1.0, 0.0, 0.0 }, >>> + { 0.0, 1.0, 0.0 }, >>> + { 1.0, 0.0, 0.0 } >>> + }; >>> + double ctm[] = { 1.0, 0.0, 1.0, >>> + 0.0, 1.0, 0.0, >>> + 0.0, 0.0, 0.0 }; >>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> + red_green_red, ctm, >>> + fb_format->format)); >>> + } >>> >>> - /* We tests a few values around the expected result because >>> - * the it depends on the hardware we're dealing with, we can >>> - * either get clamped or rounded values and we also need to >>> - * account for odd number of items in the LUTs. */ >>> - igt_subtest_f("pipe-%s-ctm-0-25", kmstest_pipe_name(p)) { >>> - color_t expected_colors[] = { >>> - { 0.0, }, { 0.0, }, { 0.0, } >>> - }; >>> - double ctm[] = { 0.25, 0.0, 0.0, >>> - 0.0, 0.25, 0.0, >>> - 0.0, 0.0, 0.25 }; >>> - bool success = false; >>> - >>> - for (i = 0; i < 5; i++) { >>> - expected_colors[0].r = >>> - expected_colors[1].g = >>> - expected_colors[2].b = >>> - 0.25 + delta * (i - 2); >>> - success |= test_pipe_ctm(data, primary, >>> - red_green_blue, >>> - expected_colors, ctm); >>> + /* We tests a few values around the expected result because >>> + * the it depends on the hardware we're dealing with, we can >>> + * either get clamped or rounded values and we also need to >>> + * account for odd number of items in the LUTs. */ >>> + igt_subtest_f("pipe-%s%s-ctm-0-25", kmstest_pipe_name(p), >>> + fb_format->name) { >>> + color_t expected_colors[] = { >>> + { 0.0, }, { 0.0, }, { 0.0, } >>> + }; >>> + double ctm[] = { 0.25, 0.0, 0.0, >>> + 0.0, 0.25, 0.0, >>> + 0.0, 0.0, 0.25 }; >>> + bool success = false; >>> + >>> + for (i = 0; i < 5; i++) { >>> + expected_colors[0].r = >>> + expected_colors[1].g = >>> + expected_colors[2].b = >>> + 0.25 + delta * (i - 2); >>> + success |= test_pipe_ctm(data, primary, >>> + red_green_blue, >>> + expected_colors, ctm, >>> + fb_format->format); >>> + } >>> + igt_assert(success); >>> } >>> - igt_assert(success); >>> - } >>> >>> - igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) { >>> - color_t expected_colors[] = { >>> - { 0.0, }, { 0.0, }, { 0.0, } >>> - }; >>> - double ctm[] = { 0.5, 0.0, 0.0, >>> - 0.0, 0.5, 0.0, >>> - 0.0, 0.0, 0.5 }; >>> - bool success = false; >>> - >>> - for (i = 0; i < 5; i++) { >>> - expected_colors[0].r = >>> - expected_colors[1].g = >>> - expected_colors[2].b = >>> - 0.5 + delta * (i - 2); >>> - success |= test_pipe_ctm(data, primary, >>> - red_green_blue, >>> - expected_colors, ctm); >>> + igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p), >>> + fb_format->name) { >>> + color_t expected_colors[] = { >>> + { 0.0, }, { 0.0, }, { 0.0, } >>> + }; >>> + double ctm[] = { 0.5, 0.0, 0.0, >>> + 0.0, 0.5, 0.0, >>> + 0.0, 0.0, 0.5 }; >>> + bool success = false; >>> + >>> + for (i = 0; i < 5; i++) { >>> + expected_colors[0].r = >>> + expected_colors[1].g = >>> + expected_colors[2].b = >>> + 0.5 + delta * (i - 2); >>> + success |= test_pipe_ctm(data, primary, >>> + red_green_blue, >>> + expected_colors, ctm, >>> + fb_format->format); >>> + } >>> + igt_assert(success); >>> } >>> - igt_assert(success); >>> - } >>> >>> - igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) { >>> - color_t expected_colors[] = { >>> - { 0.0, }, { 0.0, }, { 0.0, } >>> - }; >>> - double ctm[] = { 0.75, 0.0, 0.0, >>> - 0.0, 0.75, 0.0, >>> - 0.0, 0.0, 0.75 }; >>> - bool success = false; >>> - >>> - for (i = 0; i < 7; i++) { >>> - expected_colors[0].r = >>> - expected_colors[1].g = >>> - expected_colors[2].b = >>> - 0.75 + delta * (i - 3); >>> - success |= test_pipe_ctm(data, primary, >>> - red_green_blue, >>> - expected_colors, ctm); >>> + igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p), >>> + fb_format->name) { >>> + color_t expected_colors[] = { >>> + { 0.0, }, { 0.0, }, { 0.0, } >>> + }; >>> + double ctm[] = { 0.75, 0.0, 0.0, >>> + 0.0, 0.75, 0.0, >>> + 0.0, 0.0, 0.75 }; >>> + bool success = false; >>> + >>> + for (i = 0; i < 7; i++) { >>> + expected_colors[0].r = >>> + expected_colors[1].g = >>> + expected_colors[2].b = >>> + 0.75 + delta * (i - 3); >>> + success |= test_pipe_ctm(data, primary, >>> + red_green_blue, >>> + expected_colors, ctm, >>> + fb_format->format); >>> + } >>> + igt_assert(success); >>> } >>> - igt_assert(success); >>> - } >>> >>> - igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) { >>> - color_t full_rgb[] = { >>> - { 1.0, 0.0, 0.0 }, >>> - { 0.0, 1.0, 0.0 }, >>> - { 0.0, 0.0, 1.0 } >>> - }; >>> - double ctm[] = { 100.0, 0.0, 0.0, >>> - 0.0, 100.0, 0.0, >>> - 0.0, 0.0, 100.0 }; >>> - >>> - /* CherryView generates values on 10bits that we >>> - * produce with an 8 bits per color framebuffer. */ >>> - igt_require(!IS_CHERRYVIEW(data->devid)); >>> - >>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> - full_rgb, ctm)); >>> - } >>> + igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p), >>> + fb_format->name) { >>> + color_t full_rgb[] = { >>> + { 1.0, 0.0, 0.0 }, >>> + { 0.0, 1.0, 0.0 }, >>> + { 0.0, 0.0, 1.0 } >>> + }; >>> + double ctm[] = { 100.0, 0.0, 0.0, >>> + 0.0, 100.0, 0.0, >>> + 0.0, 0.0, 100.0 }; >>> + >>> + /* CherryView generates values on 10bits that we >>> + * produce with an 8 bits per color framebuffer. */ >>> + igt_require(!IS_CHERRYVIEW(data->devid)); >>> + >>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> + full_rgb, ctm, >>> + fb_format->format)); >>> + } >>> >>> - igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) { >>> - color_t all_black[] = { >>> - { 0.0, 0.0, 0.0 }, >>> - { 0.0, 0.0, 0.0 }, >>> - { 0.0, 0.0, 0.0 } >>> - }; >>> - double ctm[] = { -1.0, 0.0, 0.0, >>> - 0.0, -1.0, 0.0, >>> - 0.0, 0.0, -1.0 }; >>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> - all_black, ctm)); >>> - } >>> + igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p), >>> + fb_format->name) { >>> + color_t all_black[] = { >>> + { 0.0, 0.0, 0.0 }, >>> + { 0.0, 0.0, 0.0 }, >>> + { 0.0, 0.0, 0.0 } >>> + }; >>> + double ctm[] = { -1.0, 0.0, 0.0, >>> + 0.0, -1.0, 0.0, >>> + 0.0, 0.0, -1.0 }; >>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue, >>> + all_black, ctm, >>> + fb_format->format)); >>> + } >>> >>> #if 0 >>> - igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p)) >>> - test_pipe_limited_range_ctm(data, primary); >>> + igt_subtest_f("pipe-%s-ctm-limited-range%s", >>> + kmstest_pipe_name(p), fb_format->name) >>> + test_pipe_limited_range_ctm(data, primary, >>> + fb_format->format); >>> #endif >>> >>> - igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p)) >>> - test_pipe_degamma(data, primary); >>> + igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p), >>> + fb_format->name) >>> + test_pipe_degamma(data, primary, fb_format->format); >>> >>> - igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p)) >>> - test_pipe_gamma(data, primary); >>> + igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p), >>> + fb_format->name) >>> + test_pipe_gamma(data, primary, fb_format->format); >>> >>> - igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p)) >>> - test_pipe_legacy_gamma(data, primary); >>> + igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p), >>> + fb_format->name) >>> + test_pipe_legacy_gamma(data, primary, >>> + fb_format->format); >>> >>> + } // End of fb_formats iterator >>> + >>> + data->color_depth = 8; >>> igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p)) >>> test_pipe_legacy_gamma_reset(data, primary); >>> >>> -- >>> 2.24.0 >>> >>> _______________________________________________ >>> igt-dev mailing list >>> igt-dev@lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/igt-dev >> > _______________________________________________ > igt-dev mailing list > igt-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/igt-dev > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li ` (3 preceding siblings ...) 2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä @ 2020-01-08 14:44 ` Leo 4 siblings, 0 replies; 11+ messages in thread From: Leo @ 2020-01-08 14:44 UTC (permalink / raw) To: igt-dev A gentle ping for review. I will be addressing Nicholas's comments on merge, or v2, whichever happens first :) Thanks, Leo _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-01-08 14:44 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-12-11 20:46 [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests sunpeng.li 2019-12-11 20:54 ` Kazlauskas, Nicholas 2019-12-11 21:15 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork 2019-12-12 8:12 ` [igt-dev] ✗ GitLab.Pipeline: " Patchwork 2019-12-12 15:03 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä 2019-12-12 20:53 ` Leo 2019-12-12 21:13 ` Ville Syrjälä 2019-12-17 14:00 ` Leo 2020-01-02 22:59 ` Harry Wentland 2020-01-02 23:03 ` Harry Wentland 2020-01-08 14:44 ` Leo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox