From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3FF6D10EDD4 for ; Thu, 16 Feb 2023 15:29:32 +0000 (UTC) Received: by mail-wr1-x42b.google.com with SMTP id a2so2224768wrd.6 for ; Thu, 16 Feb 2023 07:29:32 -0800 (PST) Message-ID: <260751da-e735-1204-bcf2-0ca7dbd2e89f@gmail.com> Date: Thu, 16 Feb 2023 17:29:23 +0200 MIME-Version: 1.0 Content-Language: en-US To: Swati Sharma , igt-dev@lists.freedesktop.org References: <20230215073615.26505-1-swati2.sharma@intel.com> From: Juha-Pekka Heikkila In-Reply-To: <20230215073615.26505-1-swati2.sharma@intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [igt-dev] [v3] tests/kms_plane_scaling: Add downscaling+upscaling tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: juhapekka.heikkila@gmail.com Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: Look ok to me. Reviewed-by: Juha-Pekka Heikkila On 15.2.2023 9.36, Swati Sharma wrote: > In newer hardware versions (i.e. display version >= 14), the second > scaler doesn't support downscaling. Current driver design in the > case of 2 plane scaling scenario is if plane1-US and plane2-DS, > it's reject for now. That's why new tests are added for plane1-DS > and plane2-US, so that different DS+US combinations can be validated. > > v2: -minor fix > v3: -change to if-else ladder to switch (JP) > > Signed-off-by: Swati Sharma > --- > tests/kms_plane_scaling.c | 108 ++++++++++++++++++++++++++++++++------ > 1 file changed, 91 insertions(+), 17 deletions(-) > > diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c > index 4a04f42a0..1f132bae1 100644 > --- a/tests/kms_plane_scaling.c > +++ b/tests/kms_plane_scaling.c > @@ -31,7 +31,8 @@ IGT_TEST_DESCRIPTION("Test display plane scaling"); > enum scaler_combo_test_type { > TEST_PLANES_UPSCALE = 0, > TEST_PLANES_DOWNSCALE, > - TEST_PLANES_UPSCALE_DOWNSCALE > + TEST_PLANES_UPSCALE_DOWNSCALE, > + TEST_PLANES_DOWNSCALE_UPSCALE, > }; > > typedef struct { > @@ -286,6 +287,69 @@ const struct { > 0.75, > TEST_PLANES_UPSCALE_DOWNSCALE, > }, > + { > + "Tests downscaling (scaling factor 0.25) and upscaling (20x20) of 2 planes.", > + "planes-downscale-factor-0-25-upscale-20x20", > + 0.25, > + 0.0, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > + { > + "Tests downscaling (scaling factor 0.25) and upscaling (scaling factor 0.25) of 2 planes.", > + "planes-downscale-factor-0-25-upscale-0-25", > + 0.25, > + 0.25, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > + { > + "Tests downscaling (scaling factor 0.25) and scaling (unity) of 2 planes.", > + "planes-downscale-factor-0-25-unity-scaling", > + 0.25, > + 1.0, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > + { > + "Tests downscaling (scaling factor 0.5) and upscaling (20x20) of 2 planes.", > + "planes-downscale-factor-0-5-upscale-20x20", > + 0.5, > + 0.0, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > + { > + "Tests downscaling (scaling factor 0.5) and upscaling (scaling factor 0.25) of 2 planes.", > + "planes-downscale-factor-0-5-upscale-0-25", > + 0.5, > + 0.25, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > + { > + "Tests downscaling (scaling factor 0.5) and scaling (unity) of 2 planes.", > + "planes-downscale-factor-0-5-unity-scaling", > + 0.5, > + 1.0, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > + { > + "Tests downscaling (scaling factor 0.75) and upscaling (20x20) of 2 planes.", > + "planes-downscale-factor-0-75-upscale-20x20", > + 0.75, > + 0.0, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > + { > + "Tests downscaling (scaling factor 0.75) and upscaling (scaling factor 0.25) of 2 planes.", > + "planes-downscale-factor-0-75-upscale-0-25", > + 0.75, > + 0.25, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > + { > + "Tests downscaling (scaling factor 0.75) and scaling (unity) of 2 planes.", > + "planes-downscale-factor-0-75-unity-scaling", > + 0.75, > + 1.0, > + TEST_PLANES_DOWNSCALE_UPSCALE, > + }, > }; > > static int get_width(drmModeModeInfo *mode, double scaling_factor) > @@ -589,23 +653,25 @@ __test_planes_scaling_combo(data_t *d, int w1, int h1, int w2, int h2, > igt_plane_set_fb(p1, fb1); > igt_plane_set_fb(p2, fb2); > > - if (test_type == TEST_PLANES_UPSCALE) { > - /* first plane upscaling */ > + switch (test_type) { > + case TEST_PLANES_UPSCALE: > igt_plane_set_size(p1, mode->hdisplay, mode->vdisplay); > - /* second plane upscaling */ > igt_plane_set_size(p2, mode->hdisplay - 20, mode->vdisplay - 20); > - } > - if (test_type == TEST_PLANES_DOWNSCALE) { > - /* first plane downscaling */ > + break; > + case TEST_PLANES_DOWNSCALE: > igt_plane_set_size(p1, w1, h1); > - /* second plane downscaling */ > igt_plane_set_size(p2, w2, h2); > - } > - if (test_type == TEST_PLANES_UPSCALE_DOWNSCALE) { > - /* first plane upscaling */ > + break; > + case TEST_PLANES_UPSCALE_DOWNSCALE: > igt_plane_set_size(p1, mode->hdisplay, mode->vdisplay); > - /* second plane downscaling */ > igt_plane_set_size(p2, w2, h2); > + break; > + case TEST_PLANES_DOWNSCALE_UPSCALE: > + igt_plane_set_size(p1, w1, h1); > + igt_plane_set_size(p2, mode->hdisplay, mode->vdisplay); > + break; > + default: > + igt_assert(0); > } > > ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); > @@ -641,17 +707,25 @@ test_planes_scaling_combo(data_t *d, int w1, int h1, int w2, int h2, > igt_output_set_pipe(output, pipe); > mode = igt_output_get_mode(output); > > - if (test_type == TEST_PLANES_UPSCALE) { > + switch (test_type) { > + case TEST_PLANES_UPSCALE: > setup_fb(display->drm_fd, w1, h1, 1.0, 0.0, 0.0, &d->fb[1]); > setup_fb(display->drm_fd, w2, h2, 0.0, 1.0, 0.0, &d->fb[2]); > - } > - if (test_type == TEST_PLANES_DOWNSCALE) { > + break; > + case TEST_PLANES_DOWNSCALE: > setup_fb(display->drm_fd, mode->hdisplay, mode->vdisplay, 1.0, 0.0, 0.0, &d->fb[1]); > setup_fb(display->drm_fd, mode->hdisplay, mode->vdisplay, 0.0, 1.0, 0.0, &d->fb[2]); > - } > - if (test_type == TEST_PLANES_UPSCALE_DOWNSCALE) { > + break; > + case TEST_PLANES_UPSCALE_DOWNSCALE: > setup_fb(display->drm_fd, w1, h1, 1.0, 0.0, 0.0, &d->fb[1]); > setup_fb(display->drm_fd, mode->hdisplay, mode->vdisplay, 0.0, 1.0, 0.0, &d->fb[2]); > + break; > + case TEST_PLANES_DOWNSCALE_UPSCALE: > + setup_fb(display->drm_fd, mode->hdisplay, mode->vdisplay, 0.0, 1.0, 0.0, &d->fb[1]); > + setup_fb(display->drm_fd, w2, h2, 1.0, 0.0, 0.0, &d->fb[2]); > + break; > + default: > + igt_assert(0); > } > > for (int k = 0; k < display->pipes[pipe].n_planes; k++) {