diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2019-11-18 09:14:18 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2019-11-18 09:14:28 +0100 |
commit | 2d54b1f244a9a4af51c0834999b7b04a8f182ad1 (patch) | |
tree | a371328d6cbb9189ee474f19d6582fded3cab508 /drmtest.c | |
parent | e01f525b49f397322ada23b1be5b2f734fb71327 (diff) | |
download | drminfo-2d54b1f244a9a4af51c0834999b7b04a8f182ad1.tar.gz |
add display update test
Diffstat (limited to 'drmtest.c')
-rw-r--r-- | drmtest.c | 28 |
1 files changed, 22 insertions, 6 deletions
@@ -114,7 +114,7 @@ static void drm_get_caps(void) have_export = prime & DRM_PRIME_CAP_EXPORT; } -static void drm_draw(bool autotest) +static void drm_draw(bool autotest, int updatetest) { char name[64]; char info1[80], info2[80], info3[80]; @@ -142,7 +142,11 @@ static void drm_draw(bool autotest) version->name, name); cr = cairo_create(cs); - if (image) { + if (updatetest) { + snprintf(info2, sizeof(info2), "test #%d", updatetest); + render_test(cr, drm_mode->hdisplay, drm_mode->vdisplay, + "display update", info2, NULL); + } else if (image) { render_image(cr, drm_mode->hdisplay, drm_mode->vdisplay, image); } else { render_test(cr, drm_mode->hdisplay, drm_mode->vdisplay, info1, info2, @@ -307,9 +311,9 @@ static void drm_init_dumb_fb(bool use_pixman, bool create_dmabuf) } } -static void drm_draw_dumb_fb(bool autotest) +static void drm_draw_dumb_fb(bool autotest, int updatetest) { - drm_draw(autotest); + drm_draw(autotest, updatetest); drmModeDirtyFB(drm_fd, fb_id, 0, 0); } @@ -348,10 +352,11 @@ int main(int argc, char **argv) bool dmabuf = false; bool autotest = false; bool pixman = false; + int updatetest = 0; int c,i,pid,rc; for (;;) { - c = getopt(argc, argv, "hpdaL:c:s:o:i:f:m:"); + c = getopt(argc, argv, "hpdau:L:c:s:o:i:f:m:"); if (c == -1) break; switch (c) { @@ -365,6 +370,9 @@ int main(int argc, char **argv) case 'a': autotest = true; break; + case 'u': + updatetest = atoi(optarg); + break; case 'c': card = atoi(optarg); break; @@ -458,7 +466,7 @@ int main(int argc, char **argv) } drm_init_dumb_fb(pixman, dmabuf); - drm_draw_dumb_fb(autotest); + drm_draw_dumb_fb(autotest, 0); drm_check_content("pre-show content"); drm_show_fb(); drm_check_content("post-show content"); @@ -483,6 +491,14 @@ int main(int argc, char **argv) } } + if (updatetest) { + for (i = 1; i <= updatetest; i++) { + sleep(secs); + drm_draw_dumb_fb(autotest, i); + drm_check_content("post-update content"); + } + } + if (autotest) fprintf(stdout, "---ok---\n"); tty_raw(); |