[PATCH i-g-t 7/9] tests/kms_sharpness_filter: Add scaler subtests
Swati Sharma
swati2.sharma at intel.com
Mon Dec 9 11:46:21 UTC 2024
Upscale/Downscale subtests are added to apply plane scaler and casf
together.
Signed-off-by: Swati Sharma <swati2.sharma at intel.com>
---
tests/kms_sharpness_filter.c | 69 ++++++++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
diff --git a/tests/kms_sharpness_filter.c b/tests/kms_sharpness_filter.c
index 92c816480..06c9cce11 100644
--- a/tests/kms_sharpness_filter.c
+++ b/tests/kms_sharpness_filter.c
@@ -48,6 +48,14 @@
* SUBTEST: filter-suspend
* Description: Verify content adaptive sharpness filter with suspend.
* Functionality: casf, suspend
+ *
+ * SUBTEST: filter-scaler-upscale
+ * Description: Verify content adaptive sharpness filter with 1 plane scaler enabled.
+ * Functionality: casf, scaling
+ *
+ * SUBTEST: filter-scaler-downscale
+ * Description: Verify content adaptive sharpness filter with 1 plane scaler enabled.
+ * Functionality: casf, scaling
*/
IGT_TEST_DESCRIPTION("Test to validate content adaptive sharpness filter");
@@ -69,6 +77,9 @@ IGT_TEST_DESCRIPTION("Test to validate content adaptive sharpness filter");
#define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
#define NROUNDS 10
+#define SET_PLANES ((type == TEST_FILTER_UPSCALE) \
+ || (type == TEST_FILTER_DOWNSCALE))
+
enum test_type {
TEST_FILTER_BASIC,
TEST_FILTER_MODIFIERS,
@@ -79,6 +90,8 @@ enum test_type {
TEST_FILTER_TAP,
TEST_FILTER_DPMS,
TEST_FILTER_SUSPEND,
+ TEST_FILTER_UPSCALE,
+ TEST_FILTER_DOWNSCALE,
};
const int filter_strength_list[] = {
@@ -169,6 +182,27 @@ static void cleanup_fbs(data_t *data)
igt_remove_fb(data->drm_fd, &data->fb[i]);
}
+static void set_planes(data_t *data, enum test_type type)
+{
+ drmModeModeInfo *mode = data->mode;
+ igt_output_t *output = data->output;
+
+ data->plane[1] = igt_output_get_plane(output, 1);
+ data->plane[2] = igt_output_get_plane(output, 2);
+
+ if (type == TEST_FILTER_UPSCALE) {
+ setup_fb(data->drm_fd, 20, 20, data->format, data->modifier, &data->fb[1]);
+ igt_plane_set_fb(data->plane[1], &data->fb[1]);
+ igt_plane_set_size(data->plane[1], mode->hdisplay, mode->vdisplay);
+ }
+
+ if (type == TEST_FILTER_DOWNSCALE) {
+ setup_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, data->format, data->modifier, &data->fb[1]);
+ igt_plane_set_fb(data->plane[1], &data->fb[1]);
+ igt_plane_set_size(data->plane[1], mode->hdisplay * 0.75, mode->vdisplay * 0.75);
+ }
+}
+
static void cleanup(data_t *data)
{
igt_display_reset(&data->display);
@@ -238,6 +272,9 @@ static void test_sharpness_filter(data_t *data, enum test_type type)
else
igt_skip("No requested rotation on pipe %s\n", kmstest_pipe_name(data->pipe_id));
+ if (SET_PLANES)
+ set_planes(data, type);
+
set_filter_strength_on_pipe(data);
if (data->filter_strength != 0)
@@ -261,6 +298,10 @@ static void test_sharpness_filter(data_t *data, enum test_type type)
if (type == TEST_FILTER_TOGGLE)
ret |= test_filter_toggle(data);
+ if (type == TEST_FILTER_DOWNSCALE)
+ igt_skip_on_f(ret == -ERANGE || ret == -EINVAL,
+ "Scaling op not supported, cdclk limits might be exceeded.\n");
+
igt_assert_eq(ret, 0);
cleanup(data);
@@ -354,6 +395,12 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
case TEST_FILTER_SUSPEND:
snprintf(name, sizeof(name), "-suspend");
break;
+ case TEST_FILTER_UPSCALE:
+ snprintf(name, sizeof(name), "-upscale");
+ break;
+ case TEST_FILTER_DOWNSCALE:
+ snprintf(name, sizeof(name), "-downscale");
+ break;
default:
igt_assert(0);
}
@@ -510,6 +557,28 @@ igt_main_args("l", NULL, help_str, opt_handler, &data)
run_sharpness_filter_test(&data, TEST_FILTER_SUSPEND);
}
+ igt_describe("Verify content adaptive sharpness filter "
+ "with 1 plane scaler enabled.");
+ igt_subtest_with_dynamic("filter-scaler-upscale") {
+ data.modifier = DRM_FORMAT_MOD_LINEAR;
+ data.rotation = IGT_ROTATION_0;
+ data.format = DRM_FORMAT_XRGB8888;
+ data.filter_strength = MID_FILTER_STRENGTH;
+
+ run_sharpness_filter_test(&data, TEST_FILTER_UPSCALE);
+ }
+
+ igt_describe("Verify content adaptive sharpness filter "
+ "with 1 plane scaler enabled.");
+ igt_subtest_with_dynamic("filter-scaler-downscale") {
+ data.modifier = DRM_FORMAT_MOD_LINEAR;
+ data.rotation = IGT_ROTATION_0;
+ data.format = DRM_FORMAT_XRGB8888;
+ data.filter_strength = MID_FILTER_STRENGTH;
+
+ run_sharpness_filter_test(&data, TEST_FILTER_DOWNSCALE);
+ }
+
igt_fixture {
igt_display_fini(&data.display);
drm_close_driver(data.drm_fd);
--
2.25.1
More information about the igt-dev
mailing list