aboutsummaryrefslogtreecommitdiffstats
path: root/drmtest.c
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2019-11-18 09:14:18 +0100
committerGerd Hoffmann <kraxel@redhat.com>2019-11-18 09:14:28 +0100
commit2d54b1f244a9a4af51c0834999b7b04a8f182ad1 (patch)
treea371328d6cbb9189ee474f19d6582fded3cab508 /drmtest.c
parente01f525b49f397322ada23b1be5b2f734fb71327 (diff)
downloaddrminfo-2d54b1f244a9a4af51c0834999b7b04a8f182ad1.tar.gz
add display update test
Diffstat (limited to 'drmtest.c')
-rw-r--r--drmtest.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/drmtest.c b/drmtest.c
index ddaa1b6..932db7d 100644
--- a/drmtest.c
+++ b/drmtest.c
@@ -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();