Could you please check this patch. Best regards Hoegeun > -----Original Message----- > From: dri-devel <dri-devel-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of > Hoegeun Kwon > Sent: Monday, January 16, 2023 6:44 PM > To: dri-devel@xxxxxxxxxxxxxxxxxxxxx; hoegeun.kwon@xxxxxxxxxxx > Subject: [PATCH libdrm] vbltest: add option to use high pipe > > Add option to use high pipe. > > Signed-off-by: Hoegeun Kwon <hoegeun.kwon@xxxxxxxxxxx> > --- > 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