[PATCH i-g-t v1] tests/kms_async_flips: Add psr async flip subtest
Santhosh Reddy Guddati
santhosh.reddy.guddati at intel.com
Mon Mar 24 16:13:19 UTC 2025
Add a new subtest to verify async flips does not cause PSR exit.
Enable PSR and execute async flips to verify system remains in
PSR mode after async flips.
Signed-off-by: Santhosh Reddy Guddati <santhosh.reddy.guddati at intel.com>
---
tests/kms_async_flips.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index da426f753..cf6b63b3e 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c
@@ -85,6 +85,9 @@
*
* SUBTEST: async-flip-suspend-resume
* Description: Verify the async flip functionality with suspend and resume cycle
+ *
+ * SUBTEST: psr-async-flip
+ * Description: Verify that async flips do not cause PSR exit
*/
#define CURSOR_POS 128
@@ -102,6 +105,7 @@ IGT_TEST_DESCRIPTION("Test asynchronous page flips.");
typedef struct {
int drm_fd;
+ int debugfs_fd;
uint32_t crtc_id;
uint32_t refresh_rate;
struct igt_fb bufs[NUM_FBS];
@@ -740,6 +744,33 @@ static void run_test_with_modifiers(data_t *data, void (*test)(data_t *))
}
}
+static bool psr_wait_entry_if_enabled(data_t *data)
+{
+ igt_skip_on_f(!is_psr_enable_possible(data->drm_fd, PSR_MODE_1),
+ "enable_psr modparam doesn't allow PSR mode 1\n");
+
+ return psr_wait_entry(data->debugfs_fd, PSR_MODE_1, data->output);
+}
+
+static void test_psr_async_flip(data_t *data)
+{
+ if (!psr_sink_support(data->drm_fd, data->debugfs_fd, PSR_MODE_1, data->output))
+ igt_skip("PSR mode 1 is not supported on this output\n");
+
+ psr_enable(data->drm_fd, data->debugfs_fd, PSR_MODE_1, NULL);
+ igt_display_commit(&data->display);
+
+ /* Confirm PSR entry before starting async flips */
+ igt_assert_f(psr_wait_entry_if_enabled(data),
+ "PSR is not enabled before async flip test\n");
+
+ test_async_flip(data);
+
+ /* Confirm PSR is still active after async flips */
+ igt_assert_f(psr_wait_entry_if_enabled(data),
+ "PSR is not enabled after async flip test\n");
+}
+
static data_t data;
igt_main
@@ -748,6 +779,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
kmstest_set_vt_graphics_mode();
igt_display_require(&data.display, data.drm_fd);
igt_display_require_output(&data.display);
@@ -896,6 +928,12 @@ igt_main
run_test(&data, test_async_flip);
}
+ igt_describe("Verify that async flips do not cause PSR exit");
+ igt_subtest_with_dynamic("psr-async-flip") {
+ data.atomic_path = false;
+ run_test(&data, test_psr_async_flip);
+ }
+
igt_fixture {
for (i = 0; i < NUM_FBS; i++)
igt_remove_fb(data.drm_fd, &data.bufs[i]);
--
2.34.1
More information about the igt-dev
mailing list