[igt-dev] [PATCH i-g-t] tests/kms_flip_tiling: remove cut'n'paste
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Mon Jun 22 13:59:00 UTC 2020
convert all tests to be created in nested for-loops which will create tests
for all flip changes.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
---
tests/kms_flip_tiling.c | 186 +++++++---------------------------------
1 file changed, 33 insertions(+), 153 deletions(-)
diff --git a/tests/kms_flip_tiling.c b/tests/kms_flip_tiling.c
index fb79de15..329e0bda 100644
--- a/tests/kms_flip_tiling.c
+++ b/tests/kms_flip_tiling.c
@@ -153,6 +153,16 @@ igt_output_t *output;
igt_main
{
+ const struct {
+ uint64_t tiling_format;
+ const char* name;
+ } tiling_formats[] = {
+ { LOCAL_DRM_FORMAT_MOD_NONE, "linear"},
+ { LOCAL_I915_FORMAT_MOD_X_TILED, "x-tiled"},
+ { LOCAL_I915_FORMAT_MOD_Y_TILED, "y-tiled"},
+ { LOCAL_I915_FORMAT_MOD_Yf_TILED, "yf-tiled"},
+ };
+
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
@@ -165,160 +175,30 @@ igt_main
igt_display_require(&data.display, data.drm_fd);
}
- /*
- * Test that a page flip from a tiled buffer to a linear one works
- * correctly. First, it sets the crtc with the linear buffer and
- * generates a reference crc for the pipe. Then, the crtc is set with
- * the tiled one and page flip to the linear one issued. A new crc is
- * generated and compared to the reference one.
- */
-
- igt_subtest_f("flip-changes-tiling") {
- uint64_t tiling[2] = { LOCAL_I915_FORMAT_MOD_X_TILED,
- LOCAL_DRM_FORMAT_MOD_NONE };
- enum pipe pipe;
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
- }
-
- igt_subtest_f("flip-changes-tiling-Y") {
- uint64_t tiling[2] = { LOCAL_I915_FORMAT_MOD_Y_TILED,
- LOCAL_DRM_FORMAT_MOD_NONE };
- enum pipe pipe;
-
- igt_require_fb_modifiers(data.drm_fd);
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- igt_require(data.gen >= 9);
-
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
- }
-
- igt_subtest_f("flip-changes-tiling-Yf") {
- uint64_t tiling[2] = { LOCAL_I915_FORMAT_MOD_Yf_TILED,
- LOCAL_DRM_FORMAT_MOD_NONE };
- enum pipe pipe;
-
- igt_require_fb_modifiers(data.drm_fd);
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- igt_require(data.gen >= 9);
-
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
- }
-
- /*
- * Test that a page flip from a tiled buffer to another tiled one works
- * correctly. First, it sets the crtc with the tiled buffer and
- * generates a reference crc for the pipe. Then a page flip to second
- * tiled buffer is issued. A new crc is generated and compared to the
- * reference one.
- */
-
- igt_subtest_f("flip-X-tiled") {
- uint64_t tiling[2] = { LOCAL_I915_FORMAT_MOD_X_TILED,
- LOCAL_I915_FORMAT_MOD_X_TILED };
- enum pipe pipe;
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
- }
-
- igt_subtest_f("flip-Y-tiled") {
- uint64_t tiling[2] = { LOCAL_I915_FORMAT_MOD_Y_TILED,
- LOCAL_I915_FORMAT_MOD_Y_TILED };
- enum pipe pipe;
-
- igt_require_fb_modifiers(data.drm_fd);
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- igt_require(data.gen >= 9);
-
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
- }
-
- igt_subtest_f("flip-Yf-tiled") {
- uint64_t tiling[2] = { LOCAL_I915_FORMAT_MOD_Yf_TILED,
- LOCAL_I915_FORMAT_MOD_Yf_TILED };
- enum pipe pipe;
-
- igt_require_fb_modifiers(data.drm_fd);
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- igt_require(data.gen >= 9);
-
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
- }
-
- /*
- * Test that a page flip from a linear buffer to a tiled one works
- * correctly. First, it sets the crtc with the linear buffer and
- * generates a reference crc for the pipe. Then a page flip to a tiled
- * buffer is issued. A new crc is generated and compared to the
- * reference one.
- */
-
- igt_subtest_f("flip-to-X-tiled") {
- uint64_t tiling[2] = { LOCAL_DRM_FORMAT_MOD_NONE,
- LOCAL_I915_FORMAT_MOD_X_TILED };
- enum pipe pipe;
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
- }
-
- igt_subtest_f("flip-to-Y-tiled") {
- uint64_t tiling[2] = { LOCAL_DRM_FORMAT_MOD_NONE,
- LOCAL_I915_FORMAT_MOD_Y_TILED };
- enum pipe pipe;
-
- igt_require_fb_modifiers(data.drm_fd);
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- igt_require(data.gen >= 9);
-
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
- }
-
- igt_subtest_f("flip-to-Yf-tiled") {
- uint64_t tiling[2] = { LOCAL_DRM_FORMAT_MOD_NONE,
- LOCAL_I915_FORMAT_MOD_Yf_TILED };
- enum pipe pipe;
-
- igt_require_fb_modifiers(data.drm_fd);
-
- for (int i = 0; i < ARRAY_SIZE(tiling); i++)
- igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[i]));
-
- igt_require(data.gen >= 9);
+ for (int i = 0; i < ARRAY_SIZE(tiling_formats); i++) {
+ for (int j = 0; j < ARRAY_SIZE(tiling_formats); j++) {
+
+ igt_describe_f("Check using crcs flipping from %s fb to %s fb works correctly.\n",
+ tiling_formats[i].name, tiling_formats[j].name);
+ igt_subtest_f("flip-%s-to-%s", tiling_formats[i].name, tiling_formats[j].name) {
+ uint64_t tiling[2] = { tiling_formats[i].tiling_format,
+ tiling_formats[j].tiling_format };
+ enum pipe pipe;
+
+ for (int c = 0; c < ARRAY_SIZE(tiling); c++) {
+ if (tiling[c] != LOCAL_DRM_FORMAT_MOD_NONE &&
+ tiling[c] != LOCAL_I915_FORMAT_MOD_X_TILED) {
+ igt_require(data.gen >= 9);
+ igt_require_fb_modifiers(data.drm_fd);
+ }
+ igt_require(igt_display_has_format_mod(&data.display, data.testformat, tiling[c]));
+ }
+
+ for_each_pipe_with_valid_output(&data.display, pipe, output)
+ test_flip_tiling(&data, pipe, output, tiling);
+ }
+ }
- for_each_pipe_with_valid_output(&data.display, pipe, output)
- test_flip_tiling(&data, pipe, output, tiling);
}
igt_fixture {
--
2.26.0
More information about the igt-dev
mailing list