igt@kms_frontbuffer_tracking uses TEST_MODE_ITER_BEGIN(t) which consists
of nested for loops. However many loops can be omitted due to continue
statements. This obfuscates following the execution of any given
codepath. Replace TEST_MODE_ITER_BEGIN(t) for fliptrack tests with macro
definition and remove loops that are skipped.
v1->v2
- indent for-loops (Mohammed)
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
---
tests/intel/kms_frontbuffer_tracking.c | 44 ++++++++++++++++----------
1 file changed, 28 insertions(+), 16 deletions(-)
diff --git a/tests/intel/kms_frontbuffer_tracking.c b/tests/intel/kms_frontbuffer_tracking.c
index 406018c88a..6266297553 100644
--- a/tests/intel/kms_frontbuffer_tracking.c
+++ b/tests/intel/kms_frontbuffer_tracking.c
@@ -4482,23 +4482,35 @@ int igt_main_args("", long_options, help_str, opt_handler, NULL)
}
TEST_MODE_ITER_END
- TEST_MODE_ITER_BEGIN(t)
- if (t.plane != PLANE_PRI ||
- t.screen != SCREEN_PRIM ||
- t.method != IGT_DRAW_MMAP_GTT ||
- (t.feature & FEATURE_FBC) == 0)
- continue;
+ t.format = FORMAT_DEFAULT;
+ t.flip = FLIP_PAGEFLIP;
+ t.tiling = opt.tiling;
+ t.plane = PLANE_PRI;
+ t.screen = SCREEN_PRIM;
+ t.method = IGT_DRAW_MMAP_GTT;
- igt_subtest_f("%s-%s-%s-fliptrack-%s",
- feature_str(t.feature),
- pipes_str(t.pipes),
- fbs_str(t.fbs),
- igt_draw_get_method_name(t.method))
- {
- igt_require(igt_draw_supports_method(drm.fd, t.method));
- fliptrack_subtest(&t, FLIP_PAGEFLIP);
- }
- TEST_MODE_ITER_END
+ for (t.feature = 0; t.feature < FEATURE_COUNT; t.feature++) {
+ for (t.pipes = 0; t.pipes < PIPE_COUNT; t.pipes++) {
+ for (t.fbs = 0; t.fbs < FBS_COUNT; t.fbs++) {
+ if (!opt.show_hidden && t.feature == FEATURE_NONE)
+ continue;
+ if ((t.feature & FEATURE_PSR) && (t.feature & FEATURE_DRRS))
+ continue;
+ if ((t.feature & FEATURE_FBC) == 0)
+ continue;
-->can't we pull above "if" conditions to after first for loop? for (t.feature = 0; t.feature < FEATURE_COUNT; t.feature++)
as we are checking the feature count, check once
+
+ igt_subtest_f("%s-%s-%s-fliptrack-%s",
+ feature_str(t.feature),
+ pipes_str(t.pipes),
+ fbs_str(t.fbs),
+ igt_draw_get_method_name(t.method))
+ {
+ igt_require(igt_draw_supports_method(drm.fd, t.method));
+ fliptrack_subtest(&t, FLIP_PAGEFLIP);
+ }
--> indentation needed here... plz check+ }
+ } + } TEST_MODE_ITER_BEGIN(t) if (t.screen == SCREEN_OFFSCREEN ||