[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