diff options
author | Hoegeun Kwon <hoegeun.kwon@samsung.com> | 2023-01-16 17:18:04 +0900 |
---|---|---|
committer | Seung-Woo Kim <sw0312.kim@samsung.com> | 2023-12-04 14:23:07 +0900 |
commit | 624055987b5ddd7628482ef238e25c80a30c5fc4 (patch) | |
tree | 03cddce0a8e4fdbe69f3118e54d6a4ad909244f7 | |
parent | 9d1380ac7984ad269db683e8212ed085a8bd0118 (diff) | |
download | libdrm-624055987b5ddd7628482ef238e25c80a30c5fc4.tar.gz libdrm-624055987b5ddd7628482ef238e25c80a30c5fc4.tar.bz2 libdrm-624055987b5ddd7628482ef238e25c80a30c5fc4.zip |
vbltest: add option to use high pipe
Add option to use high pipe.
Change-Id: I028f305a5dac877bd4ec925ed11295ec4d319c1a
Signed-off-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
-rw-r--r-- | tests/vbltest/vbltest.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/tests/vbltest/vbltest.c b/tests/vbltest/vbltest.c index 1c2b519e..1be77b81 100644 --- a/tests/vbltest/vbltest.c +++ b/tests/vbltest/vbltest.c @@ -45,10 +45,13 @@ extern char *optarg; extern int optind, opterr, optopt; -static char optstr[] = "D:M:s"; +static char optstr[] = "D:M:p:s"; int secondary = 0; +#define DRM_VBLANK_HIGH_CRTC_SHIFT 1 +static int high_pipe = 0; + struct vbl_info { unsigned int vbl_count; struct timeval start; @@ -65,6 +68,8 @@ static void vblank_handler(int fd, unsigned int frame, unsigned int sec, vbl.request.type = DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT; if (secondary) vbl.request.type |= DRM_VBLANK_SECONDARY; + if (high_pipe) + vbl.request.type |= high_pipe << DRM_VBLANK_HIGH_CRTC_SHIFT; vbl.request.sequence = 1; vbl.request.signal = (unsigned long)data; @@ -90,6 +95,7 @@ static void usage(char *name) fprintf(stderr, " -D DEVICE open the given device\n"); fprintf(stderr, " -M MODULE open the given module\n"); fprintf(stderr, " -s use secondary pipe\n"); + fprintf(stderr, " -p NUM use high pipe\n"); exit(0); } @@ -113,12 +119,18 @@ int main(int argc, char **argv) case 's': secondary = 1; break; + case 'p': + high_pipe = atoi(optarg); + break; default: usage(argv[0]); break; } } + if (secondary && high_pipe) + return 1; + fd = util_open(device, module); if (fd < 0) return 1; @@ -127,6 +139,8 @@ int main(int argc, char **argv) vbl.request.type = DRM_VBLANK_RELATIVE; if (secondary) vbl.request.type |= DRM_VBLANK_SECONDARY; + if (high_pipe) + vbl.request.type |= high_pipe << DRM_VBLANK_HIGH_CRTC_SHIFT; vbl.request.sequence = 0; ret = drmWaitVBlank(fd, &vbl); if (ret != 0) { @@ -143,6 +157,8 @@ int main(int argc, char **argv) vbl.request.type = DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT; if (secondary) vbl.request.type |= DRM_VBLANK_SECONDARY; + if (high_pipe) + vbl.request.type |= high_pipe << DRM_VBLANK_HIGH_CRTC_SHIFT; vbl.request.sequence = 1; vbl.request.signal = (unsigned long)&handler_info; ret = drmWaitVBlank(fd, &vbl); |