[igt-dev] [PATCH i-g-t 03/25] tests/kms_plane: Add validate-in-formats subtest
Ville Syrjala
ville.syrjala at linux.intel.com
Thu Jul 19 15:03:53 UTC 2018
From: Ville Syrjälä <ville.syrjala at linux.intel.com>
Cross check the format list in the IN_FORMATS blob vs. the
format list returned by getplane.
Cc: Ulrich Hecht <ulrich.hecht+renesas at gmail.com>
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
tests/kms_plane.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index f9e123f0d1ea..e0625748186f 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -366,6 +366,53 @@ test_plane_panning(data_t *data, enum pipe pipe, unsigned int flags)
igt_skip_on(connected_outs == 0);
}
+static void validate_plane_in_formats(igt_plane_t *plane)
+{
+ drmModePlanePtr drm_plane = plane->drm_plane;
+
+ igt_require(plane->format_mod_count);
+
+ /*
+ * Make sure every format in the IN_FORMATS blob
+ * also appears in the getplane formats.
+ */
+ for (int i = 0; i < plane->format_mod_count; i++) {
+ int j;
+
+ for (j = 0; j < drm_plane->count_formats; j++) {
+ if (plane->formats[i] == drm_plane->formats[j])
+ break;
+ }
+ igt_assert_lt(j, drm_plane->count_formats);
+ }
+
+ /*
+ * Make sure every format in getplane also
+ * appears in the IN_FORMATS blob.
+ */
+ for (int i = 0; i < drm_plane->count_formats; i++) {
+ int j;
+
+ for (j = 0; j < plane->format_mod_count; j++) {
+ if (drm_plane->formats[i] == plane->formats[j])
+ break;
+ }
+ igt_assert_lt(j, plane->format_mod_count);
+ }
+}
+
+static void validate_in_formats(data_t *data)
+{
+ enum pipe pipe;
+
+ for_each_pipe(&data->display, pipe) {
+ igt_plane_t *plane;
+
+ for_each_plane_on_pipe(&data->display, pipe, plane)
+ validate_plane_in_formats(plane);
+ }
+}
+
static const color_t colors[] = {
{ 1.0f, 0.0f, 0.0f, },
{ 0.0f, 1.0f, 0.0f, },
@@ -592,6 +639,9 @@ igt_main
igt_display_init(&data.display, data.drm_fd);
}
+ igt_subtest_f("validate-in-formats")
+ validate_in_formats(&data);
+
for_each_pipe_static(pipe)
run_tests_for_pipe_plane(&data, pipe);
--
2.16.4
More information about the igt-dev
mailing list