[PATCH i-g-t 2/3] benchmarks/kms_fb_stress: Add command line options to change the planes and writeback formats

Kamil Konieczny kamil.konieczny at linux.intel.com
Thu Feb 29 12:58:31 UTC 2024


Hi Arthur,
On 2024-02-26 at 16:42:18 -0300, Arthur Grillo wrote:
> Currently, the plane formats are hard-coded, with no possibility of
> changing them when running the benchmark. Change that by adding command
> line options to change the planes and writeback formats.
> 
> Signed-off-by: Arthur Grillo <arthurgrillo at riseup.net>
> ---
>  benchmarks/kms_fb_stress.c | 50 ++++++++++++++++++++++++++++++++++++++++++----
>  1 file changed, 46 insertions(+), 4 deletions(-)
> 
> diff --git a/benchmarks/kms_fb_stress.c b/benchmarks/kms_fb_stress.c
> index 8fea10ef069f..073104b8e4f8 100644
> --- a/benchmarks/kms_fb_stress.c
> +++ b/benchmarks/kms_fb_stress.c
> @@ -125,7 +125,7 @@ static void set_crtc_size(struct data_t *data)
>  	igt_assert_f(0, "CRTC size %dx%d not supported\n", crtc->width, crtc->height);
>  }
>  
> -static struct kms_t default_kms = {
> +static const struct kms_t default_kms = {
>  	.crtc = {
>  		.width = 4096, .height = 2160,
>  	},
> @@ -159,14 +159,56 @@ static struct kms_t default_kms = {
>  	},
>  };
>  
> +static int opt_handler(int opt, int opt_index, void *_data)
> +{
> +	struct data_t *data = _data;
> +	struct kms_t *kms =  &data->kms;
> +
> +	*kms = default_kms;
> +
> +	switch (opt) {
> +	case 'p':
> +		kms->primary.format = igt_drm_format_str_to_format(optarg);
> +		break;
> +	case 'a':
> +		kms->overlay_a.format = igt_drm_format_str_to_format(optarg);
> +		break;
> +	case 'b':
> +		kms->overlay_b.format = igt_drm_format_str_to_format(optarg);
> +		break;
> +	case 'w':
> +		kms->writeback.format = igt_drm_format_str_to_format(optarg);
> +		break;
> +	default:
> +		return IGT_OPT_HANDLER_ERROR;
> +	}
> +
> +	return IGT_OPT_HANDLER_SUCCESS;
> +}
> +
> +static const char *help_str =
> +	"  --primary-format\t\tSelect the primary plane format (default: XRGB8888)\n"
> +	"  --overlay-a-format\t\tSelect the overlay A plane format (default: XRGB16161616)\n"
> +	"  --overlay-b-format\t\tSelect the overlay B plane format (default: ARGB8888)\n"
> +	"  --writeback-format\t\tSelect the writeback format (default: XRGB8888)\n";
> +
> +static const struct option long_options[] = {
> +	{ .name = "primary-format", .has_arg = true, .val = 'p'},
> +	{ .name = "overlay-a-format", .has_arg = true, .val = 'a'},
> +	{ .name = "overlay-b-format", .has_arg = true, .val = 'b'},
> +	{ .name = "writeback-format", .has_arg = true, .val = 'w'},
> +	{}
> +};
> +
> +static struct data_t data = {
> +	.kms = default_kms,

As you can see on fedora-clang:

../benchmarks/kms_fb_stress.c:207:9: error: initializer element is not a compile-time constant
          .kms = default_kms,

So imho make this in main body below.

> +};
>  
> -igt_simple_main
> +igt_simple_main_args(NULL, long_options, help_str, opt_handler, &data)
>  {
> -	struct data_t data = {0};
>  	struct timespec then, now;
>  	double elapsed;
>  
> -	data.kms = default_kms;

Do not delete this from here.

Regards,
Kamil

>  
>  	data.fd = drm_open_driver_master(DRIVER_ANY);
>  
> 
> -- 
> 2.43.0
> 


More information about the igt-dev mailing list