diff --git a/tests/kms_fbcon_fbt.c b/tests/kms_fbcon_fbt.c index d0090912694e..c33959e18976 100644 --- a/tests/kms_fbcon_fbt.c +++ b/tests/kms_fbcon_fbt.c @@ -196,6 +196,14 @@ static void disable_features(void) igt_set_module_param_int(psr.param_name, 0); } +static void fbc_print_status(int fd) +{ + char buf[128]; + + igt_debugfs_read(fd, "i915_fbc_status", buf); + igt_info("FBC status:\n%s\n", buf); +} + static void subtest(struct feature *feature, bool suspend) { struct drm_info drm; @@ -210,17 +218,29 @@ static void subtest(struct feature *feature, bool suspend) kmstest_unset_all_crtcs(drm.fd, drm.res); wait_user("Modes unset."); - igt_assert(!feature->wait_until_enabled(drm.fd)); + if (!feature->wait_until_enabled(drm.fd)) { + fbc_print_status(drm.fd); + igt_assert_f(false, "FBC disabled\n"); + + } set_mode_for_one_screen(&drm, &fb, feature->connector_possible_fn); wait_user("Screen set."); - igt_assert(feature->wait_until_enabled(drm.fd)); + if (!feature->wait_until_enabled(drm.fd)) { + fbc_print_status(drm.fd); + igt_assert_f(false, "FBC disabled screenset\n"); + + } if (suspend) { igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE); sleep(5); - igt_assert(feature->wait_until_enabled(drm.fd)); + + if (!feature->wait_until_enabled(drm.fd)) { + fbc_print_status(drm.fd); + igt_assert_f(false, "FBC disabled after suspend\n"); + } } igt_remove_fb(drm.fd, &fb); @@ -230,14 +250,22 @@ static void subtest(struct feature *feature, bool suspend) sleep(3); wait_user("Back to fbcon."); - igt_assert(!feature->wait_until_enabled(drm.fd)); + if (!feature->wait_until_enabled(drm.fd)) { + fbc_print_status(drm.fd); + igt_assert_f(false, "FBC disabled after fbcon restore \n"); + + } if (suspend) { igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE); sleep(5); - igt_assert(!feature->wait_until_enabled(drm.fd)); + if (!feature->wait_until_enabled(drm.fd)) { + fbc_print_status(drm.fd); + igt_assert_f(false, "FBC disabled after suspend with fbcon\n"); + } } + } static void setup_environment(void)