Skip to contentSkip to conversation

Test platform supported pixel formats through chamelium.

PATCH Superseded Kunal Joshi 2 participants 4 messages Mar 5, 2020 Library code

v1 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

cover Test platform supported pixel formats through chamelium.

Added capability in kms_chamelium to test both rgb and yuv pixel formats supported per platform through chamelium. Earlier, only hard coded pixel formats used to be tested which were not generic across platforms resulting is SKIPS; to overcome these SKIPS now only platform supported pixel formats will be tested.

Kunal Joshi (2):
lib/igt_fb: Added macro to retrieve char code of format tests/kms_chamelium: Add support to validate RGB/YUV pixel formats

 lib/igt_fb.h          |   2 +
 tests/kms_chamelium.c | 136 ++++++++++++++++++--------------------------------
 2 files changed, 50 insertions(+), 88 deletions(-)
Signature · 6 lines
2.7.4

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
#1 lore raw

PATCH 1/2 lib/igt_fb: Added macro to retrieve char code of format

Added a macro to retrieve the fourcc of the pixel format.

---
 lib/igt_fb.h | 2 ++
 1 file changed, 2 insertions(+)
lib/igt_fb.h +2 -0
index 587f7a4..abc7c52 100644
@@ -48,6 +48,8 @@
 #define IGT_FORMAT_FMT "%c%c%c%c(0x%08x)"
 #define IGT_FORMAT_ARGS(f) ((f) >> 0) & 0xff, ((f) >> 8) & 0xff, \
 		((f) >> 16) & 0xff, ((f) >> 24) & 0xff, (f)
+#define IGT_FORMAT_ARGS_CODE(f) ((f) >> 0) & 0xff, ((f) >> 8) & 0xff, \
+		((f) >> 16) & 0xff, ((f) >> 24) & 0xff
 
 /**
  * igt_fb_t:
Signature · 6 lines
2.7.4

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
#2 lore raw

PATCH 2/2 tests/kms_chamelium: Add support to validate RGB/YUV pixel formats

In reply to Kunal Joshi

Currently, only hard coded pixel formats are validated which are not generic for all the platforms which leads to SKIPS.
Added support to validate only those pixel formats which are supported by platform. Both RGB and YUV pixel formats are covered.

---
 tests/kms_chamelium.c | 136 ++++++++++++++++++--------------------------------
 1 file changed, 48 insertions(+), 88 deletions(-)
tests/kms_chamelium.c +48 -88
index 5c4a189..d56c68d 100644
@@ -2816,100 +2816,60 @@ igt_main
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 3);
 
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-argb8888", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_ARGB8888,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-abgr8888", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_ABGR8888,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-xrgb8888", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_XRGB8888,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-xbgr8888", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_XBGR8888,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-rgb888", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_RGB888,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-bgr888", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_BGR888,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-rgb565", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_RGB565,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-bgr565", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_BGR565,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-argb1555", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_ARGB1555,
-					      CHAMELIUM_CHECK_CRC, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-crc-xrgb1555", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_XRGB1555,
-					      CHAMELIUM_CHECK_CRC, 1);
+		igt_describe(test_display_one_mode_desc);
+		connector_subtest_start("hdmi-rgb-pixel-format", HDMIA)
+			int k;
+			igt_output_t *output;
+			igt_plane_t *primary;
+
+			output = prepare_output(&data, port, TEST_EDID_BASE);
+			primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+			igt_assert(primary);
+
+			for (k = 0; k < primary->format_mod_count; k++) {
+				if (!igt_fb_supported_format(primary->formats[k]))
+					continue;
+
+				if ((igt_format_is_yuv(primary->formats[k]) ||
+				     primary->modifiers[k] != LOCAL_DRM_FORMAT_MOD_NONE))
+					continue;
+
+				igt_dynamic_f("testing-format-%c%c%c%c", IGT_FORMAT_ARGS_CODE(primary->formats[k]))
+					test_display_one_mode(&data, port, primary->formats[k],
+							      CHAMELIUM_CHECK_CRC,
+							      1);
+			}
+		connector_subtest_end
 
 		igt_describe(test_display_planes_random_desc);
 		connector_subtest("hdmi-crc-planes-random", HDMIA)
 			test_display_planes_random(&data, port,
 						   CHAMELIUM_CHECK_CRC);
 
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-cmp-nv12", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_NV12,
-					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-cmp-nv16", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_NV16,
-					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-cmp-nv21", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_NV21,
-					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-cmp-nv61", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_NV61,
-					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-cmp-yu12", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_YUV420,
-					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-cmp-yu16", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_YUV422,
-					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-cmp-yv12", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_YVU420,
-					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
-
-		igt_describe(test_display_one_mode_desc);
-		connector_subtest("hdmi-cmp-yv16", HDMIA)
-			test_display_one_mode(&data, port, DRM_FORMAT_YVU422,
-					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
+		igt_describe(test_display_one_mode_desc);
+		connector_subtest_start("hdmi-yuv-pixel-format", HDMIA)
+			int k;
+			igt_output_t *output;
+			igt_plane_t *primary;
+
+			output = prepare_output(&data, port, TEST_EDID_BASE);
+			primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+			igt_assert(primary);
+
+			for (k = 0; k < primary->format_mod_count; k++) {
+				if (!igt_fb_supported_format(primary->formats[k]))
+					continue;
+
+				if (!(igt_format_is_yuv(primary->formats[k]) &&
+				     primary->modifiers[k] != LOCAL_DRM_FORMAT_MOD_NONE))
+					continue;
+
+				igt_dynamic_f("testing-format-%c%c%c%c", IGT_FORMAT_ARGS_CODE(primary->formats[k]))
+					test_display_one_mode(&data, port, primary->formats[k],
+							      CHAMELIUM_CHECK_CHECKERBOARD,
+							      1);
+			}
+		connector_subtest_end
 
 		igt_describe(test_display_planes_random_desc);
 		connector_subtest("hdmi-cmp-planes-random", HDMIA)
Signature · 6 lines
2.7.4

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
#3 lore raw

[igt-dev] ✗ GitLab.Pipeline: warning for Test platform supported pixel formats through chamelium.

In reply to Kunal Joshi
== Series Details ==

== Series Details ==

Series: Test platform supported pixel formats through chamelium.
URL : https://patchwork.freedesktop.org/series/74317/
State : warning

== Summary ==

Did not get list of undocumented tests for this run, something is wrong!

Other than that, pipeline status: FAILED.

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

build:tests-debian-autotools has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1826963):

     ^~~~~~~~~~~~~~~~~~~~~
  At top level:
  kms_chamelium.c:2380:19: warning: ‘test_display_planes_random_desc’ defined but not used [-Wunused-const-variable=]
   static const char test_display_planes_random_desc[] =
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cc1: some warnings being treated as errors
make[3]: *** [Makefile:4941: kms_chamelium-kms_chamelium.o] Error 1 make[3]: Leaving directory '/builds/gfx-ci/igt-ci-tags/tests' make[2]: Leaving directory '/builds/gfx-ci/igt-ci-tags/tests' make[2]: *** [Makefile:5094: all-recursive] Error 1 make[1]: *** [Makefile:515: all-recursive] Error 1 make[1]: Leaving directory '/builds/gfx-ci/igt-ci-tags'
make: *** [Makefile:447: all] Error 2 section_end:1583402951:build_script section_start:1583402951:after_script section_end:1583402952:after_script section_start:1583402952:upload_artifacts_on_failure section_end:1583402954:upload_artifacts_on_failure
ERROR: Job failed: exit code 1

build:tests-debian-meson has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1826958):

                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../lib/igt_core.h:632:23: note: in definition of macro ‘igt_describe’
    igt_describe_f("%s", dsc)
                         ^~~
  ../tests/kms_chamelium.c:2872:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     connector_subtest_end
     ^~~~~~~~~~~~~~~~~~~~~
  At top level:
  ../tests/kms_chamelium.c:2380:19: warning: ‘test_display_planes_random_desc’ defined but not used [-Wunused-const-variable=]
   static const char test_display_planes_random_desc[] =
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed. section_end:1583402788:build_script section_start:1583402788:after_script section_end:1583402790:after_script section_start:1583402790:upload_artifacts_on_failure section_end:1583402791:upload_artifacts_on_failure
ERROR: Job failed: exit code 1

build:tests-fedora has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1826954):

        |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../lib/igt_core.h:632:23: note: in definition of macro ‘igt_describe’
    632 |  igt_describe_f("%s", dsc)
        |                       ^~~
  ../tests/kms_chamelium.c:2872:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
   2872 |   connector_subtest_end
        |   ^~~~~~~~~~~~~~~~~~~~~
  At top level:
  ../tests/kms_chamelium.c:2380:19: warning: ‘test_display_planes_random_desc’ defined but not used [-Wunused-const-variable=]
   2380 | static const char test_display_planes_random_desc[] =
        |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed. section_end:1583402750:build_script section_start:1583402750:after_script section_end:1583402751:after_script section_start:1583402751:upload_artifacts_on_failure section_end:1583402753:upload_artifacts_on_failure
ERROR: Job failed: exit code 1

build:tests-fedora-clang has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1826957):

                                        ^
  ../tests/kms_chamelium.c:2853:17: error: redefinition of 'primary'
                          igt_plane_t *primary;
                                       ^
  ../tests/kms_chamelium.c:2823:17: note: previous definition is here
                          igt_plane_t *primary;
                                       ^
  ../tests/kms_chamelium.c:2859:9: error: use of undeclared identifier 'k'
                          for (k = 0; k < primary->format_mod_count; k++) {
                               ^

fatal error: too many errors emitted, stopping now [-ferror-limit=] 1 warning and 20 errors generated.
ninja: build stopped: subcommand failed. section_end:1583402779:build_script section_start:1583402779:after_script section_end:1583402780:after_script section_start:1583402780:upload_artifacts_on_failure section_end:1583402782:upload_artifacts_on_failure
ERROR: Job failed: exit code 1

build:tests-fedora-no-libunwind has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1826955):

        |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../lib/igt_core.h:632:23: note: in definition of macro ‘igt_describe’
    632 |  igt_describe_f("%s", dsc)
        |                       ^~~
  ../tests/kms_chamelium.c:2872:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
   2872 |   connector_subtest_end
        |   ^~~~~~~~~~~~~~~~~~~~~
  At top level:
  ../tests/kms_chamelium.c:2380:19: warning: ‘test_display_planes_random_desc’ defined but not used [-Wunused-const-variable=]
   2380 | static const char test_display_planes_random_desc[] =
        |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed. section_end:1583402751:build_script section_start:1583402751:after_script section_end:1583402752:after_script section_start:1583402752:upload_artifacts_on_failure section_end:1583402754:upload_artifacts_on_failure
ERROR: Job failed: exit code 1

build:tests-fedora-oldest-meson has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1826956):

        |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../lib/igt_core.h:632:23: note: in definition of macro ‘igt_describe’
    632 |  igt_describe_f("%s", dsc)
        |                       ^~~
  ../tests/kms_chamelium.c:2872:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
   2872 |   connector_subtest_end
        |   ^~~~~~~~~~~~~~~~~~~~~
  At top level:
  ../tests/kms_chamelium.c:2380:19: warning: ‘test_display_planes_random_desc’ defined but not used [-Wunused-const-variable=]
   2380 | static const char test_display_planes_random_desc[] =
        |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed. section_end:1583402762:build_script section_start:1583402762:after_script section_end:1583402763:after_script section_start:1583402763:upload_artifacts_on_failure section_end:1583402765:upload_artifacts_on_failure
ERROR: Job failed: exit code 1

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/pipelines/116008
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev