From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26A4E10E90E for ; Thu, 9 Feb 2023 05:38:17 +0000 (UTC) Message-ID: Date: Thu, 9 Feb 2023 11:08:05 +0530 To: Nidhi Gupta , References: <20230209044219.4498-1-nidhi1.gupta@intel.com> Content-Language: en-US From: "Nautiyal, Ankit K" In-Reply-To: <20230209044219.4498-1-nidhi1.gupta@intel.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v4] tests/kms_plane_alpha_blend: Limit the test execution List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: LGTM. Reviewed-by: Ankit Nautiyal On 2/9/2023 10:12 AM, Nidhi Gupta wrote: > To optimize the test execution time on hardware and simulation, > limit the execution to two (first & last) pipes and 2 planes > (first & last). > > This patch will also provide an option (command line flag '-e') to > execute on all pipes and planes. > > Example: ./kms_plane_alpha_blend -e --run-subtest alpha-7efc > > V2: Edited commit message (Bhanu) > V3: New function for simulation constraints (Kamil) > Update commit message (Bhanu) > v4: Restrict the execution only on 2 pipes for > real hardware aswell (Ankit) > v5: Provide extended option for plane also (Bhanu) > Move pipe declaration inside fixture (Ankit) > > Signed-off-by: Nidhi Gupta > Signed-off-by: Bhanuprakash Modem > --- > tests/kms_plane_alpha_blend.c | 61 ++++++++++++++++++++++++++++++++++- > 1 file changed, 60 insertions(+), 1 deletion(-) > > diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c > index 38272ccb..b8ead947 100644 > --- a/tests/kms_plane_alpha_blend.c > +++ b/tests/kms_plane_alpha_blend.c > @@ -28,6 +28,10 @@ > > IGT_TEST_DESCRIPTION("Test plane alpha and blending mode properties"); > > +static bool extended; > +static enum pipe active_pipes[IGT_MAX_PIPES]; > +static uint32_t last_pipe; > + > typedef struct { > int gfx_fd; > igt_display_t display; > @@ -482,6 +486,8 @@ static void run_test_on_pipe_planes(data_t *data, enum pipe pipe, igt_output_t * > { > igt_display_t *display = &data->display; > igt_plane_t *plane; > + int first_plane = -1; > + int last_plane = -1; > > for_each_plane_on_pipe(display, pipe, plane) { > if (!igt_plane_has_prop(plane, IGT_PLANE_ALPHA)) > @@ -496,6 +502,29 @@ static void run_test_on_pipe_planes(data_t *data, enum pipe pipe, igt_output_t * > if (must_multiply && !has_multiplied_alpha(data, plane)) > continue; > > + /* Get first & last valid planes. */ > + if (first_plane < 0) > + first_plane = j__; > + > + last_plane = j__; > + } > + > + for_each_plane_on_pipe(display, pipe, plane) { > + if (!igt_plane_has_prop(plane, IGT_PLANE_ALPHA)) > + continue; > + > + if (blend && !igt_plane_has_prop(plane, IGT_PLANE_PIXEL_BLEND_MODE)) > + continue; > + > + /* Reset plane alpha properties between each plane. */ > + reset_alpha(display, pipe); > + > + if (must_multiply && !has_multiplied_alpha(data, plane)) > + continue; > + > + if (!extended && j__ != first_plane && j__ != last_plane) > + continue; > + > igt_info("Testing plane %u\n", plane->index); > test(data, pipe, plane); > igt_plane_set_fb(plane, NULL); > @@ -621,6 +650,11 @@ static void run_subtests(data_t *data) > > igt_subtest_with_dynamic(subtests[i].name) { > for_each_pipe_with_single_output(&data->display, pipe, output) { > + if (!extended && > + pipe != active_pipes[0] && > + pipe != active_pipes[last_pipe]) > + continue; > + > prepare_crtc(data, output, pipe); > if (!pipe_check(data, pipe, subtests[i].blend, subtests[i].must_multiply)) > continue; > @@ -633,15 +667,40 @@ static void run_subtests(data_t *data) > } > } > > -igt_main > +static int opt_handler(int opt, int opt_index, void *_data) > +{ > + switch (opt) { > + case 'e': > + extended = true; > + break; > + default: > + return IGT_OPT_HANDLER_ERROR; > + } > + > + return IGT_OPT_HANDLER_SUCCESS; > +} > + > +const char *help_str = > + " -e \tExtended tests.\n"; > + > +igt_main_args("e", NULL, help_str, opt_handler, NULL) > { > data_t data = {}; > > igt_fixture { > + enum pipe pipe; > + > + last_pipe = 0; > + > data.gfx_fd = drm_open_driver_master(DRIVER_ANY); > igt_require_pipe_crc(data.gfx_fd); > igt_display_require(&data.display, data.gfx_fd); > igt_require(data.display.is_atomic); > + > + /* Get active pipes. */ > + for_each_pipe(&data.display, pipe) > + active_pipes[last_pipe++] = pipe; > + last_pipe--; > } > > run_subtests(&data);