summaryrefslogtreecommitdiff
path: root/tests/kms_plane_scaling.c
diff options
context:
space:
mode:
authorSwati Sharma <swati2.sharma@intel.com>2022-02-28 22:53:16 +0530
committerSwati Sharma <swati2.sharma@intel.com>2022-02-28 23:00:57 +0530
commit43a70264970e137f2d0494498b5c22c4e855c415 (patch)
tree66cb7aacf7d51fb62969de83e1d88b9e79a0f815 /tests/kms_plane_scaling.c
parent842d04595436a5b0159c10df6d1652e1379f91fc (diff)
tests/kms_plane_scaling: Downscaling on 2 planes
Added test case to downscale 2 planes simultaneously. i915 driver supports max of 3:1 downscaling limit. v2: -add check for min 2 scalers -add igt_require() for overlay planes, fixes CRASH on KBL v3: -test modified for n planes (Ville) v4: -code optimization v5: -limiting while loop (Ville) v6: -rebase -modified tests after rebase for consistency and more coverage (Petri) v7: -rename tests -add 0.75 scaling factor test (Petri) Signed-off-by: Swati Sharma <swati2.sharma@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Diffstat (limited to 'tests/kms_plane_scaling.c')
-rw-r--r--tests/kms_plane_scaling.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index eb353459..45081ab4 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -30,6 +30,7 @@ IGT_TEST_DESCRIPTION("Test display plane scaling");
enum scaler_combo_test_type {
TEST_PLANES_UPSCALE = 0,
+ TEST_PLANES_DOWNSCALE,
};
typedef struct {
@@ -343,6 +344,12 @@ __test_planes_scaling_combo(data_t *d, int w1, int h1, int w2, int h2,
/* second plane upscaling */
igt_plane_set_size(p2, mode->hdisplay - 20, mode->vdisplay - 20);
}
+ if (test_type == TEST_PLANES_DOWNSCALE) {
+ /* first plane downscaling */
+ igt_plane_set_size(p1, w1, h1);
+ /* second plane downscaling */
+ igt_plane_set_size(p2, w2, h2);
+ }
ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
@@ -370,15 +377,21 @@ test_planes_scaling_combo(data_t *d, int w1, int h1, int w2, int h2,
enum scaler_combo_test_type test_type)
{
igt_display_t *display = &d->display;
+ drmModeModeInfo *mode;
cleanup_crtc(d);
igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
if (test_type == 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) {
+ 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]);
+ }
for (int k = 0; k < display->pipes[pipe].n_planes; k++) {
igt_plane_t *p1, *p2;
@@ -713,6 +726,51 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
pipe, output, TEST_PLANES_UPSCALE);
}
}
+
+ igt_describe("Tests downscaling of 2 planes for 0.25 scaling factor.");
+ igt_subtest_with_dynamic("planes-downscale-factor-0-25") {
+ for_each_pipe_with_single_output(&data.display, pipe, output)
+ igt_dynamic_f("pipe-%s-%s-planes-downscale", kmstest_pipe_name(pipe), igt_output_name(output)) {
+ drmModeModeInfo *mode;
+
+ mode = igt_output_get_mode(output);
+
+ test_planes_scaling_combo(&data,
+ 0.25 * mode->hdisplay, 0.25 * mode->vdisplay,
+ 0.25 * mode->hdisplay, 0.25 * mode->vdisplay,
+ pipe, output, TEST_PLANES_DOWNSCALE);
+ }
+ }
+
+ igt_describe("Tests downscaling of 2 planes for 0.5 scaling factor.");
+ igt_subtest_with_dynamic("planes-downscale-factor-0-5") {
+ for_each_pipe_with_single_output(&data.display, pipe, output)
+ igt_dynamic_f("pipe-%s-%s-planes-downscale", kmstest_pipe_name(pipe), igt_output_name(output)) {
+ drmModeModeInfo *mode;
+
+ mode = igt_output_get_mode(output);
+
+ test_planes_scaling_combo(&data,
+ 0.5 * mode->hdisplay, 0.5 * mode->vdisplay,
+ 0.5 * mode->hdisplay, 0.5 * mode->vdisplay,
+ pipe, output, TEST_PLANES_DOWNSCALE);
+ }
+ }
+
+ igt_describe("Tests downscaling of 2 planes for 0.75 scaling factor.");
+ igt_subtest_with_dynamic("planes-downscale-factor-0-75") {
+ for_each_pipe_with_single_output(&data.display, pipe, output)
+ igt_dynamic_f("pipe-%s-%s-planes-downscale", kmstest_pipe_name(pipe), igt_output_name(output)) {
+ drmModeModeInfo *mode;
+
+ mode = igt_output_get_mode(output);
+
+ test_planes_scaling_combo(&data,
+ 0.75 * mode->hdisplay, 0.75 * mode->vdisplay,
+ 0.75 * mode->hdisplay, 0.75 * mode->vdisplay,
+ pipe, output, TEST_PLANES_DOWNSCALE);
+ }
+ }
}
igt_describe("Tests scaling with multi-pipe scenario.");