Could you please check this patch.

Best regards
Hoegeun

> -----Original Message-----
> From: dri-devel <dri-devel-boun...@lists.freedesktop.org> On Behalf Of
> Hoegeun Kwon
> Sent: Monday, January 16, 2023 6:44 PM
> To: dri-devel@lists.freedesktop.org; hoegeun.k...@samsung.com
> Subject: [PATCH libdrm] vbltest: add option to use high pipe
> 
> Add option to use high pipe.
> 
> Signed-off-by: Hoegeun Kwon <hoegeun.k...@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


Reply via email to