[PATCH libdrm] vbltest: add option to use high pipe
Hoegeun Kwon
hoegeun.kwon at samsung.com
Tue Feb 7 08:08:10 UTC 2023
Could you please check this patch.
Best regards
Hoegeun
> -----Original Message-----
> From: dri-devel <dri-devel-bounces at lists.freedesktop.org> On Behalf Of
> Hoegeun Kwon
> Sent: Monday, January 16, 2023 6:44 PM
> To: dri-devel at lists.freedesktop.org; hoegeun.kwon at samsung.com
> Subject: [PATCH libdrm] vbltest: add option to use high pipe
>
> Add option to use high pipe.
>
> Signed-off-by: Hoegeun Kwon <hoegeun.kwon at samsung.com>
> ---
> tests/vbltest/vbltest.c | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/tests/vbltest/vbltest.c b/tests/vbltest/vbltest.c index
> 1c2b519eec4a..1be77b81c560 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);
> --
> 2.17.1
More information about the dri-devel
mailing list