[PATCH i-g-t v5 03/17] tests/kms_async_flips: split outer test loop into two
From: Michał Grzelak <hidden>
Date: 2026-09-10 20:20:39
Subsystem:
the rest · Maintainer:
Linus Torvalds
for_each_crtc_with_valid_output() iterates over every crtc with connected output. Split it into two loops. This is needed to handle cases per output. v3->v4 - break outer loop as well (Mohammed) - add missing space (Mohammed) Signed-off-by: Michał Grzelak <redacted> --- tests/kms_async_flips.c | 63 ++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 29 deletions(-)
diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index ef4b28eb52..8884efd8ba 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c@@ -877,39 +877,44 @@ static void run_test(data_t *data, void (*test)(data_t *)) if (data->atomic_path) require_atomic_async_cap(data); - for_each_crtc_with_valid_output(display, crtc, data->output) { - data->crtc = crtc; - igt_display_reset(display); + for_each_connected_output(display, data->output) { + for_each_crtc(&data->display, crtc) { + if (!igt_crtc_connector_valid(crtc, data->output)) + continue; - igt_output_set_crtc(data->output, - crtc); - if (!intel_pipe_output_combo_valid(display)) - continue; + data->crtc = crtc; + igt_display_reset(display); - test_init(data); + igt_output_set_crtc(data->output, + crtc); + if (!intel_pipe_output_combo_valid(display)) + continue; - if (data->linear_modifier) - data->modifier = DRM_FORMAT_MOD_LINEAR; - else - data->modifier = default_modifier(data); - - igt_require(igt_format_mods_has_modifier(&data->plane->format_mods_async, - data->modifier)); - - igt_dynamic_f("pipe-%s-%s", igt_crtc_name(crtc), - data->output->name) { - /* - * FIXME: joiner+async flip is busted currently in KMD. - * Remove this check once the issues are fixed in KMD. - */ - igt_skip_on_f(is_joiner_mode(data->drm_fd, data->output), - "Skipping, async flip not supported on joiner mode\n"); - test_init_fbs(data); - test(data); + test_init(data); + + if (data->linear_modifier) + data->modifier = DRM_FORMAT_MOD_LINEAR; + else + data->modifier = default_modifier(data); + + igt_require(igt_format_mods_has_modifier(&data->plane->format_mods_async, + data->modifier)); + + igt_dynamic_f("pipe-%s-%s", igt_crtc_name(crtc), + data->output->name) { + /* + * FIXME: joiner+async flip is busted currently in KMD. + * Remove this check once the issues are fixed in KMD. + */ + igt_skip_on_f(is_joiner_mode(data->drm_fd, data->output), + "Skipping, async flip not supported on joiner mode\n"); + test_init_fbs(data); + test(data); + } + /* Restrict to single pipe in simulation */ + if (data->single_pipe) + return; } - /* Restrict to single pipe in simulation */ - if (data->single_pipe) - break; } }
--
2.45.2