@@ -397,7 +397,8 @@ static void atomic_commit(igt_display_t *display, enum pipe pipe, unsigned int f
*/
static void
run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output,
- enum transition_type type, bool nonblocking, bool fencing)
+ enum transition_type type, bool nonblocking, bool fencing,
+ bool force_test_atomic)
{
struct igt_fb fb, argb_fb, sprite_fb;
drmModeModeInfo *mode, override_mode;
@@ -408,6 +409,8 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
unsigned flags = DRM_MODE_PAGE_FLIP_EVENT;
int ret;
+ display->force_test_atomic = force_test_atomic;
+
if (fencing)
prepare_fencing(display, pipe);
@@ -782,12 +785,15 @@ cleanup:
}
-static void run_modeset_transition(igt_display_t *display, int requested_outputs, bool nonblocking, bool fencing)
+static void run_modeset_transition(igt_display_t *display, int requested_outputs,
+ bool nonblocking, bool fencing, bool force_test_atomic)
{
igt_output_t *outputs[I915_MAX_PIPES] = {};
int num_outputs = 0;
enum pipe pipe;
+ display->force_test_atomic = force_test_atomic;
+
for_each_pipe(display, pipe) {
igt_output_t *output;
@@ -845,44 +851,84 @@ igt_main
igt_subtest("plane-all-transition")
for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, false);
+ run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, false, false);
+
+ igt_subtest("plane-all-transition-with-test")
+ for_each_pipe_with_valid_output(&display, pipe, output)
+ run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, false, true);
igt_subtest("plane-all-transition-fencing")
for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, true);
+ run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, true, false);
+
+ igt_subtest("plane-all-transition-fencing-with-test")
+ for_each_pipe_with_valid_output(&display, pipe, output)
+ run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, true, true);
igt_subtest("plane-all-transition-nonblocking")
for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, false);
+ run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, false, false);
+
+ igt_subtest("plane-all-transition-nonblocking-with-test")
+ for_each_pipe_with_valid_output(&display, pipe, output)
+ run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, false, true);
igt_subtest("plane-all-transition-nonblocking-fencing")
for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, true);
+ run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, true, false);
+
+ igt_subtest("plane-all-transition-nonblocking-fencing-with-test")
+ for_each_pipe_with_valid_output(&display, pipe, output)
+ run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, true, true);
igt_subtest("plane-all-modeset-transition")
for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
+ run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false, false);
+
+ igt_subtest("plane-all-modeset-transition-with-test")
+ for_each_pipe_with_valid_output(&display, pipe, output)
+ run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false, true);
igt_subtest("plane-all-modeset-transition-fencing")
for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
+ run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true, false);
+
+ igt_subtest("plane-all-modeset-transition-fencing-with-test")
+ for_each_pipe_with_valid_output(&display, pipe, output)
+ run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true, true);
igt_subtest("plane-toggle-modeset-transition")
for_each_pipe_with_valid_output(&display, pipe, output)
- run_transition_test(&display, pipe, output, TRANSITION_MODESET_DISABLE, false, false);
+ run_transition_test(&display, pipe, output, TRANSITION_MODESET_DISABLE, false, false, false);
+
+ igt_subtest("plane-toggle-modeset-transition-with-test")
+ for_each_pipe_with_valid_output(&display, pipe, output)
+ run_transition_test(&display, pipe, output, TRANSITION_MODESET_DISABLE, false, false, true);
for (i = 1; i <= I915_MAX_PIPES; i++) {
igt_subtest_f("%ix-modeset-transitions", i)
- run_modeset_transition(&display, i, false, false);
+ run_modeset_transition(&display, i, false, false, false);
+
+ igt_subtest_f("%ix-modeset-transitions-with-test", i)
+ run_modeset_transition(&display, i, false, false, true);
igt_subtest_f("%ix-modeset-transitions-nonblocking", i)
- run_modeset_transition(&display, i, true, false);
+ run_modeset_transition(&display, i, true, false, false);
+
+ igt_subtest_f("%ix-modeset-transitions-nonblocking-with-test", i)
+ run_modeset_transition(&display, i, true, false, true);
igt_subtest_f("%ix-modeset-transitions-fencing", i)
- run_modeset_transition(&display, i, false, true);
+ run_modeset_transition(&display, i, false, true, false);
+
+ igt_subtest_f("%ix-modeset-transitions-fencing-with-test", i)
+ run_modeset_transition(&display, i, false, true, true);
igt_subtest_f("%ix-modeset-transitions-nonblocking-fencing", i)
- run_modeset_transition(&display, i, true, true);
+ run_modeset_transition(&display, i, true, true, false);
+
+ igt_subtest_f("%ix-modeset-transitions-nonblocking-fencing-with-test", i)
+ run_modeset_transition(&display, i, true, true, true);
}
igt_fixture {
Add TEST_ONLY flag to test atomic transition display commits without actual real-life commit. v2: use flag to force atomic commit with TEST_ONLY flag v3: Rebase Signed-off-by: Mika Kahola <mika.kahola@intel.com> --- tests/kms_atomic_transition.c | 72 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 13 deletions(-)