[PATCH i-g-t v5 1/8] benchmarks/kms_fb_stress: Assert that we have an supported pipe
Louis Chauvet
louis.chauvet at bootlin.com
Wed May 22 08:50:54 UTC 2024
Reviewed-by: Louis Chauvet <louis.chauvet at bootlin.com>
Tested-by: Louis Chauvet <louis.chauvet at bootlin.com>
Le 22/04/24 - 19:18, Arthur Grillo a écrit :
> Some driver may not support overlay planes. Add a check for that.
>
> Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> Signed-off-by: Arthur Grillo <arthurgrillo at riseup.net>
> ---
> benchmarks/kms_fb_stress.c | 36 +++++++++++++++++++++++++++---------
> 1 file changed, 27 insertions(+), 9 deletions(-)
>
> diff --git a/benchmarks/kms_fb_stress.c b/benchmarks/kms_fb_stress.c
> index 00eaa0a4931a..e9c051318ed6 100644
> --- a/benchmarks/kms_fb_stress.c
> +++ b/benchmarks/kms_fb_stress.c
> @@ -87,6 +87,27 @@ static igt_output_t *find_wb_output(struct data_t *data)
> return NULL;
> }
>
> +static void set_wb_pipe(struct data_t *data)
> +{
> + enum pipe pipe = PIPE_NONE;
> +
> + for_each_pipe(&data->display, pipe) {
> + igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> +
> + if (igt_pipe_count_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY) < 2)
> + continue;
> +
> + igt_debug("Selecting pipe %s to %s\n",
> + kmstest_pipe_name(pipe),
> + igt_output_name(data->wb_output));
> + igt_output_set_pipe(data->wb_output, pipe);
> +
> + return;
> + }
> +
> + igt_assert_f(0, "No pipe supports this benchmark\n");
> +}
> +
> static void set_crtc_size(struct data_t *data)
> {
> drmModeModeInfo *mode;
> @@ -142,7 +163,6 @@ static struct kms_t default_kms = {
> igt_simple_main
> {
> struct data_t data = {0};
> - enum pipe pipe = PIPE_NONE;
> struct timespec then, now;
> double elapsed;
>
> @@ -161,24 +181,22 @@ igt_simple_main
>
> data.wb_output = find_wb_output(&data);
> igt_require(data.wb_output);
> -
> - for_each_pipe(&data.display, pipe) {
> - igt_debug("Selecting pipe %s to %s\n",
> - kmstest_pipe_name(pipe),
> - igt_output_name(data.wb_output));
> - igt_output_set_pipe(data.wb_output, pipe);
> - break;
> - }
> + set_wb_pipe(&data);
>
> set_crtc_size(&data);
>
> gen_fbs(&data);
>
> data.kms.primary.base = igt_output_get_plane_type(data.wb_output, DRM_PLANE_TYPE_PRIMARY);
> + igt_assert(data.kms.primary.base != NULL);
> +
> data.kms.overlay_a.base = igt_output_get_plane_type_index(data.wb_output,
> DRM_PLANE_TYPE_OVERLAY, 0);
> + igt_assert(data.kms.overlay_a.base != NULL);
> +
> data.kms.overlay_b.base = igt_output_get_plane_type_index(data.wb_output,
> DRM_PLANE_TYPE_OVERLAY, 1);
> + igt_assert(data.kms.overlay_b.base != NULL);
>
> igt_assert_eq(igt_gettime(&then), 0);
>
>
> --
> 2.44.0
>
--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
More information about the igt-dev
mailing list