From 0f7da612eb349349dd6c47b1ee0e912a48d725de Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Fri, 4 Dec 2020 16:12:33 +0200 Subject: [PATCH] tests: add drm_screenshot_no_damage I am working on adding a test to ensure Weston repaints damage correctly, where I rely on Weston repainting exactly and only the damage submitted by a client. That means I have to stop screenshooting from damaging everything automatically. Doing that, I noticed that screenshots on DRM-backend could theoretically get stuck if I do that. So test for it. Signed-off-by: Pekka Paalanen --- tests/drm-smoke-test.c | 27 +++++++++++++++++- .../reference/drm_screenshot_no_damage-00.png | Bin 0 -> 4062 bytes 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/reference/drm_screenshot_no_damage-00.png diff --git a/tests/drm-smoke-test.c b/tests/drm-smoke-test.c index 4c5b6a59..859c9739 100644 --- a/tests/drm-smoke-test.c +++ b/tests/drm-smoke-test.c @@ -43,7 +43,6 @@ fixture_setup(struct weston_test_harness *harness) DECLARE_FIXTURE_SETUP(fixture_setup); TEST(drm_smoke) { - struct client *client; struct buffer *buffer; struct wl_surface *surface; @@ -70,3 +69,29 @@ TEST(drm_smoke) { client_destroy(client); } + +TEST(drm_screenshot_no_damage) { + struct client *client; + int i; + bool ret; + + client = create_client_and_test_surface(0, 0, 200, 200); + assert(client); + + /* + * DRM-backend has an optimization to not even call the renderer if + * there is no damage to be repainted on the primary plane occupied by + * renderer's buffer. However, renderer must be called for a screenshot + * to complete. + * + * Therefore, if there is no damage, it is possible that screenshots + * might get stuck. This test makes sure they run regardless. + */ + for (i = 0; i < 5; i++) { + ret = verify_screen_content(client, "drm_screenshot_no_damage", + 0, NULL, i); + assert(ret); + } + + client_destroy(client); +} diff --git a/tests/reference/drm_screenshot_no_damage-00.png b/tests/reference/drm_screenshot_no_damage-00.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6824ec895b57287d1add070d5504e45dcdb567 GIT binary patch literal 4062 zcmeAS@N?(olHy`uVBq!ia0y~yU;#3j8911Ll|H*Yfq{Rr zr;B4q#hkY{HwrogFt|AOSd}gklI?sNb+O^XkAt_@KDcCVp8wnM;PrE_eUnka@zR+#X0&%2A# zzzjaW0+_c)GyG^VH(Cpf)_tQj{%AXAv>6D@1*7epVbabS?Y{t1^Jw>OK-##K45hI= VMUSt?i2|)>@O1TaS?83{1OVlBQ5OIJ literal 0 HcmV?d00001