* [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests
@ 2026-04-16 15:54 Juha-Pekka Heikkila
2026-04-16 15:54 ` [PATCH i-g-t v2 1/4] tests/intel/kms_sharpness_filter: sanitize subtest init Juha-Pekka Heikkila
` (6 more replies)
0 siblings, 7 replies; 12+ messages in thread
From: Juha-Pekka Heikkila @ 2026-04-16 15:54 UTC (permalink / raw)
To: igt-dev; +Cc: Juha-Pekka Heikkila
Some refactor for test and then last patch is fix for test to find mode
with lowest bandwidth requirement for tests.
v2: small refinements
/Juha-Pekka
Juha-Pekka Heikkila (4):
tests/intel/kms_sharpness_filter: sanitize subtest init
tests/intel/kms_sharpness_filter: refactor test_sharpness_filter
function
tests/intel/kms_sharpness_filter: restructure igt_main
tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement
for test
tests/intel/kms_sharpness_filter.c | 632 ++++++++++++++++-------------
1 file changed, 347 insertions(+), 285 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH i-g-t v2 1/4] tests/intel/kms_sharpness_filter: sanitize subtest init
2026-04-16 15:54 [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests Juha-Pekka Heikkila
@ 2026-04-16 15:54 ` Juha-Pekka Heikkila
2026-04-16 15:54 ` [PATCH i-g-t v2 2/4] tests/intel/kms_sharpness_filter: refactor test_sharpness_filter function Juha-Pekka Heikkila
` (5 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Juha-Pekka Heikkila @ 2026-04-16 15:54 UTC (permalink / raw)
To: igt-dev; +Cc: Juha-Pekka Heikkila, Swati Sharma
reset flags to defaults in one place as well as table test names.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Swati Sharma <swati2.sharma@intel.com>
---
tests/intel/kms_sharpness_filter.c | 204 ++++++++++++-----------------
1 file changed, 87 insertions(+), 117 deletions(-)
diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
index bdfdf1d08..baf9bc141 100644
--- a/tests/intel/kms_sharpness_filter.c
+++ b/tests/intel/kms_sharpness_filter.c
@@ -423,6 +423,56 @@ static bool has_sharpness_filter(igt_crtc_t *crtc)
return igt_crtc_has_prop(crtc, IGT_CRTC_SHARPNESS_STRENGTH);
}
+static const char * const test_type_names[] = {
+ [TEST_FILTER_BASIC] = "basic",
+ [TEST_FILTER_MODIFIERS] = NULL,
+ [TEST_FILTER_ROTATION] = NULL,
+ [TEST_FILTER_FORMATS] = NULL,
+ [TEST_FILTER_STRENGTH] = NULL,
+ [TEST_FILTER_TOGGLE] = "toggle",
+ [TEST_FILTER_TAP] = NULL,
+ [TEST_FILTER_DPMS] = "dpms",
+ [TEST_FILTER_SUSPEND] = "suspend",
+ [TEST_FILTER_UPSCALE] = "upscale",
+ [TEST_FILTER_DOWNSCALE] = "downscale",
+ [TEST_INVALID_FILTER_WITH_SCALER] = "invalid-filter-with-scaler",
+ [TEST_INVALID_FILTER_WITH_PLANE] = "invalid-filter-with-plane",
+ [TEST_INVALID_PLANE_WITH_FILTER] = "invalid-plane-with-filter",
+ [TEST_INVALID_FILTER_WITH_SCALING_MODE] = NULL,
+};
+
+static void build_test_suffix(data_t *data, enum test_type type,
+ char *name, size_t len)
+{
+ if (test_type_names[type]) {
+ snprintf(name, len, "-%s", test_type_names[type]);
+ return;
+ }
+
+ /* suffix depends on the current test parameters */
+ switch (type) {
+ case TEST_FILTER_MODIFIERS:
+ snprintf(name, len, "-%s", data->modifier_name);
+ break;
+ case TEST_FILTER_ROTATION:
+ snprintf(name, len, "-%srot",
+ igt_plane_rotation_name(data->rotation));
+ break;
+ case TEST_FILTER_FORMATS:
+ snprintf(name, len, "-%s", igt_format_str(data->format));
+ break;
+ case TEST_FILTER_STRENGTH:
+ snprintf(name, len, "-strength-%d", data->filter_strength);
+ break;
+ case TEST_INVALID_FILTER_WITH_SCALING_MODE:
+ snprintf(name, len, "-invalid-filter-with-scaling-mode-%s",
+ kmstest_scaling_mode_str(data->scaling_mode));
+ break;
+ default:
+ igt_assert_f(false, "Unhandled test type %d\n", type);
+ }
+}
+
static void
run_sharpness_filter_test(data_t *data, enum test_type type)
{
@@ -446,7 +496,8 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
* Until then, run on non-joiner mode in joiner configuration.
*/
if (is_joiner_mode(data->drm_fd, data->output)) {
- data->mode = igt_get_non_joiner_mode(data->drm_fd, data->output);
+ data->mode = igt_get_non_joiner_mode(data->drm_fd,
+ data->output);
if (!data->mode) {
igt_info("No non-joiner mode found on output %s\n",
igt_output_name(data->output));
@@ -476,9 +527,6 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
if (type == TEST_FILTER_TAP) {
drmModeModeInfo *modes[3] = { NULL, NULL, NULL };
- int num_taps = ARRAY_SIZE(filter_tap_list);
-
- igt_assert(num_taps == 3);
get_modes_for_filter_taps(output, modes);
for (int i = 0; i < 3; i++) {
@@ -486,11 +534,16 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
if (!modes[i])
continue;
data->mode = modes[i];
- igt_info("Mode %dx%d@%d on output %s\n", data->mode->hdisplay, data->mode->vdisplay,
- data->mode->vrefresh, igt_output_name(data->output));
- igt_output_override_mode(data->output, data->mode);
+ igt_info("Mode %dx%d@%d on output %s\n",
+ data->mode->hdisplay,
+ data->mode->vdisplay,
+ data->mode->vrefresh,
+ igt_output_name(data->output));
+ igt_output_override_mode(data->output,
+ data->mode);
- snprintf(name, sizeof(name), "-tap-%d", data->filter_tap);
+ snprintf(name, sizeof(name), "-tap-%d",
+ data->filter_tap);
igt_dynamic_f("pipe-%s-%s%s",
igt_crtc_name(data->crtc),
data->output->name, name)
@@ -499,59 +552,13 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
if (data->limited)
break;
-
continue;
}
- switch (type) {
- case TEST_FILTER_BASIC:
- snprintf(name, sizeof(name), "-basic");
- break;
- case TEST_FILTER_MODIFIERS:
- snprintf(name, sizeof(name), "-%s", data->modifier_name);
- break;
- case TEST_FILTER_ROTATION:
- snprintf(name, sizeof(name), "-%srot", igt_plane_rotation_name(data->rotation));
- break;
- case TEST_FILTER_FORMATS:
- snprintf(name, sizeof(name), "-%s", igt_format_str(data->format));
- break;
- case TEST_FILTER_STRENGTH:
- snprintf(name, sizeof(name), "-strength-%d", data->filter_strength);
- break;
- case TEST_FILTER_TOGGLE:
- snprintf(name, sizeof(name), "-toggle");
- break;
- case TEST_FILTER_DPMS:
- snprintf(name, sizeof(name), "-dpms");
- break;
- 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;
- case TEST_INVALID_FILTER_WITH_SCALER:
- snprintf(name, sizeof(name), "-invalid-filter-with-scaler");
- break;
- case TEST_INVALID_FILTER_WITH_PLANE:
- snprintf(name, sizeof(name), "-invalid-filter-with-plane");
- break;
- case TEST_INVALID_PLANE_WITH_FILTER:
- snprintf(name, sizeof(name), "-invalid-plane-with-filter");
- break;
- case TEST_INVALID_FILTER_WITH_SCALING_MODE:
- snprintf(name, sizeof(name), "-invalid-filter-with-scaling-mode-%s", kmstest_scaling_mode_str(data->scaling_mode));
- break;
- default:
- igt_assert(0);
- }
+ build_test_suffix(data, type, name, sizeof(name));
igt_dynamic_f("pipe-%s-%s%s",
- igt_crtc_name(data->crtc),
+ igt_crtc_name(data->crtc),
data->output->name, name)
test_sharpness_filter(data, type);
@@ -561,6 +568,15 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
}
}
+static void set_data_defaults(data_t *data)
+{
+ data->modifier = DRM_FORMAT_MOD_LINEAR;
+ data->modifier_name = modifiers[0].name;
+ data->rotation = IGT_ROTATION_0;
+ data->format = DRM_FORMAT_XRGB8888;
+ data->filter_strength = MID_FILTER_STRENGTH;
+}
+
static int opt_handler(int opt, int opt_index, void *_data)
{
data_t *data = _data;
@@ -595,20 +611,14 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
igt_describe("Verify basic content adaptive sharpness filter.");
igt_subtest_with_dynamic("filter-basic") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
- data.filter_strength = MID_FILTER_STRENGTH;
-
+ set_data_defaults(&data);
run_sharpness_filter_test(&data, TEST_FILTER_BASIC);
}
igt_describe("Verify that varying strength(0-255), affects "
"the degree of sharpeness applied.");
igt_subtest_with_dynamic("filter-strength") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
+ set_data_defaults(&data);
for (int i = 0; i < ARRAY_SIZE(filter_strength_list); i++) {
data.filter_strength = filter_strength_list[i];
@@ -620,9 +630,7 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
igt_describe("Verify content adaptive sharpness filter with "
"varying modifiers.");
igt_subtest_with_dynamic("filter-modifiers") {
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
- data.filter_strength = MID_FILTER_STRENGTH;
+ set_data_defaults(&data);
for (int i = 0; i < ARRAY_SIZE(modifiers); i++) {
data.modifier = modifiers[i].modifier;
@@ -635,9 +643,7 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
igt_describe("Verify content adaptive sharpness filter with "
"varying rotations.");
igt_subtest_with_dynamic("filter-rotations") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.format = DRM_FORMAT_XRGB8888;
- data.filter_strength = MID_FILTER_STRENGTH;
+ set_data_defaults(&data);
for (int i = 0; i < ARRAY_SIZE(rotations); i++) {
data.rotation = rotations[i];
@@ -649,9 +655,7 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
igt_describe("Verify content adaptive sharpness filter with "
"varying formats.");
igt_subtest_with_dynamic("filter-formats") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.filter_strength = MID_FILTER_STRENGTH;
+ set_data_defaults(&data);
for (int i = 0; i < ARRAY_SIZE(formats); i++) {
data.format = formats[i];
@@ -663,10 +667,7 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
igt_describe("Verify toggling between enabling and disabling "
"content adaptive sharpness filter.");
igt_subtest_with_dynamic("filter-toggle") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
-
+ set_data_defaults(&data);
data.filter_strength = MAX_FILTER_STRENGTH;
run_sharpness_filter_test(&data, TEST_FILTER_TOGGLE);
}
@@ -674,55 +675,35 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
igt_describe("Verify that following a resolution change, "
"distict taps are selected.");
igt_subtest_with_dynamic("filter-tap") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
- data.filter_strength = MID_FILTER_STRENGTH;
-
+ set_data_defaults(&data);
run_sharpness_filter_test(&data, TEST_FILTER_TAP);
}
igt_describe("Verify content adaptive sharpness filter "
"with DPMS.");
igt_subtest_with_dynamic("filter-dpms") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
- data.filter_strength = MID_FILTER_STRENGTH;
-
+ set_data_defaults(&data);
run_sharpness_filter_test(&data, TEST_FILTER_DPMS);
}
igt_describe("Verify content adaptive sharpness filter "
"with suspend.");
igt_subtest_with_dynamic("filter-suspend") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
- data.filter_strength = MID_FILTER_STRENGTH;
-
+ set_data_defaults(&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;
-
+ set_data_defaults(&data);
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;
-
+ set_data_defaults(&data);
run_sharpness_filter_test(&data, TEST_FILTER_DOWNSCALE);
}
@@ -730,11 +711,7 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
"when 2 plane scalers have already been enabled and "
"attempt is made to enable sharpness filter.");
igt_subtest_with_dynamic("invalid-filter-with-scaler") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
- data.filter_strength = MID_FILTER_STRENGTH;
-
+ set_data_defaults(&data);
run_sharpness_filter_test(&data, TEST_INVALID_FILTER_WITH_SCALER);
}
@@ -742,10 +719,8 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
"when 2 NV12 planes have already been enabled and attempt is "
"made to enable the sharpness filter.");
igt_subtest_with_dynamic("invalid-filter-with-plane") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
+ set_data_defaults(&data);
data.format = DRM_FORMAT_NV12;
- data.filter_strength = MID_FILTER_STRENGTH;
run_sharpness_filter_test(&data, TEST_INVALID_FILTER_WITH_PLANE);
}
@@ -754,10 +729,8 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
"when 1 NV12 plane and sharpness filter have already been enabled "
"and attempt is made to enable the second NV12 plane.");
igt_subtest_with_dynamic("invalid-plane-with-filter") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
+ set_data_defaults(&data);
data.format = DRM_FORMAT_NV12;
- data.filter_strength = MID_FILTER_STRENGTH;
run_sharpness_filter_test(&data, TEST_INVALID_PLANE_WITH_FILTER);
}
@@ -766,10 +739,7 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
"when scaling mode is already enabled and attempt is made "
"to enable sharpness filter.");
igt_subtest_with_dynamic("invalid-filter-with-scaling-mode") {
- data.modifier = DRM_FORMAT_MOD_LINEAR;
- data.rotation = IGT_ROTATION_0;
- data.format = DRM_FORMAT_XRGB8888;
- data.filter_strength = MID_FILTER_STRENGTH;
+ set_data_defaults(&data);
for (int k = 0; k < ARRAY_SIZE(scaling_modes); k++) {
data.scaling_mode = scaling_modes[k];
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH i-g-t v2 2/4] tests/intel/kms_sharpness_filter: refactor test_sharpness_filter function
2026-04-16 15:54 [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests Juha-Pekka Heikkila
2026-04-16 15:54 ` [PATCH i-g-t v2 1/4] tests/intel/kms_sharpness_filter: sanitize subtest init Juha-Pekka Heikkila
@ 2026-04-16 15:54 ` Juha-Pekka Heikkila
2026-04-16 19:53 ` Sharma, Swati2
2026-04-16 15:54 ` [PATCH i-g-t v2 3/4] tests/intel/kms_sharpness_filter: restructure igt_main Juha-Pekka Heikkila
` (4 subsequent siblings)
6 siblings, 1 reply; 12+ messages in thread
From: Juha-Pekka Heikkila @ 2026-04-16 15:54 UTC (permalink / raw)
To: igt-dev; +Cc: Juha-Pekka Heikkila
refactor to make it look more nice
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
tests/intel/kms_sharpness_filter.c | 108 ++++++++++++++++-------------
1 file changed, 59 insertions(+), 49 deletions(-)
diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
index baf9bc141..b1c80eecd 100644
--- a/tests/intel/kms_sharpness_filter.c
+++ b/tests/intel/kms_sharpness_filter.c
@@ -88,15 +88,6 @@ IGT_TEST_DESCRIPTION("Test to validate content adaptive sharpness filter");
#define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
#define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
#define NROUNDS 10
-#define INVALID_TEST ((type == TEST_INVALID_FILTER_WITH_SCALER) \
- || (type == TEST_INVALID_FILTER_WITH_PLANE) \
- || (type == TEST_INVALID_PLANE_WITH_FILTER) \
- || (type == TEST_INVALID_FILTER_WITH_SCALING_MODE))
-#define SET_PLANES ((type == TEST_FILTER_UPSCALE) \
- || (type == TEST_FILTER_DOWNSCALE) \
- || (type == TEST_INVALID_FILTER_WITH_SCALER) \
- || (type == TEST_INVALID_FILTER_WITH_PLANE) \
- || (type == TEST_INVALID_FILTER_WITH_SCALING_MODE))
enum test_type {
TEST_FILTER_BASIC,
@@ -326,12 +317,37 @@ static int test_filter_toggle(data_t *data)
return ret;
}
-static void test_sharpness_filter(data_t *data, enum test_type type)
+static bool is_invalid_test(enum test_type type)
+{
+ switch (type) {
+ case TEST_INVALID_FILTER_WITH_SCALER:
+ case TEST_INVALID_FILTER_WITH_PLANE:
+ case TEST_INVALID_PLANE_WITH_FILTER:
+ case TEST_INVALID_FILTER_WITH_SCALING_MODE:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool needs_extra_planes(enum test_type type)
+{
+ switch (type) {
+ case TEST_FILTER_UPSCALE:
+ case TEST_FILTER_DOWNSCALE:
+ case TEST_INVALID_FILTER_WITH_SCALER:
+ case TEST_INVALID_FILTER_WITH_PLANE:
+ case TEST_INVALID_FILTER_WITH_SCALING_MODE:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static void test_sharpness_filter(data_t *data, enum test_type type)
{
igt_output_t *output = data->output;
drmModeModeInfo *mode = data->mode;
- int height = mode->hdisplay;
- int width = mode->vdisplay;
igt_crc_t ref_crc, crc;
igt_pipe_crc_t *pipe_crc = NULL;
int ret;
@@ -342,57 +358,31 @@ static void test_sharpness_filter(data_t *data, enum test_type type)
"No requested format/modifier on pipe %s\n",
igt_crtc_name(data->crtc));
- setup_fb(data->drm_fd, height, width, data->format, data->modifier, &data->fb[0]);
+ setup_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
+ data->format, data->modifier, &data->fb[0]);
igt_plane_set_fb(data->plane[0], &data->fb[0]);
if (type == TEST_FILTER_ROTATION) {
- if (igt_plane_has_rotation(data->plane[0], data->rotation))
- igt_plane_set_rotation(data->plane[0], data->rotation);
- else
- igt_skip("No requested rotation on pipe %s\n",
- igt_crtc_name(data->crtc));
+ igt_skip_on_f(!igt_plane_has_rotation(data->plane[0],
+ data->rotation),
+ "No requested rotation on pipe %s\n",
+ igt_crtc_name(data->crtc));
+ igt_plane_set_rotation(data->plane[0], data->rotation);
}
if (type == TEST_INVALID_FILTER_WITH_SCALING_MODE)
igt_require_f(has_scaling_mode(output), "No connecter scaling mode found on %s\n", output->name);
- if (SET_PLANES)
+ if (needs_extra_planes(type))
set_planes(data, type);
set_filter_strength_on_pipe(data);
- if (!INVALID_TEST && data->filter_strength != 0)
- igt_debug("Sharpened image should be observed for filter strength > 0\n");
-
if (type == TEST_INVALID_FILTER_WITH_SCALING_MODE)
ret = igt_display_try_commit_atomic(&data->display, 0, NULL);
else
ret = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
- if (type == TEST_FILTER_DPMS || type == TEST_FILTER_SUSPEND) {
- pipe_crc = igt_crtc_crc_new(data->crtc,
- IGT_PIPE_CRC_SOURCE_AUTO);
- igt_pipe_crc_collect_crc(pipe_crc, &ref_crc);
- }
-
- if (type == TEST_FILTER_DPMS) {
- kmstest_set_connector_dpms(data->drm_fd,
- output->config.connector,
- DRM_MODE_DPMS_OFF);
- kmstest_set_connector_dpms(data->drm_fd,
- output->config.connector,
- DRM_MODE_DPMS_ON);
- }
-
- if (type == TEST_FILTER_SUSPEND)
- igt_system_suspend_autoresume(SUSPEND_STATE_MEM,
- SUSPEND_TEST_NONE);
-
- if (type == TEST_FILTER_DPMS || type == TEST_FILTER_SUSPEND) {
- igt_pipe_crc_collect_crc(pipe_crc, &crc);
- igt_assert_crc_equal(&crc, &ref_crc);
- }
-
if (type == TEST_FILTER_TOGGLE)
ret |= test_filter_toggle(data);
@@ -408,13 +398,33 @@ static void test_sharpness_filter(data_t *data, enum test_type type)
ret = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
}
- if (INVALID_TEST)
+ if (type == TEST_FILTER_DPMS || type == TEST_FILTER_SUSPEND) {
+ pipe_crc = igt_crtc_crc_new(data->crtc,
+ IGT_PIPE_CRC_SOURCE_AUTO);
+ igt_pipe_crc_collect_crc(pipe_crc, &ref_crc);
+
+ if (type == TEST_FILTER_DPMS) {
+ kmstest_set_connector_dpms(data->drm_fd,
+ output->config.connector,
+ DRM_MODE_DPMS_OFF);
+ kmstest_set_connector_dpms(data->drm_fd,
+ output->config.connector,
+ DRM_MODE_DPMS_ON);
+ } else {
+ igt_system_suspend_autoresume(SUSPEND_STATE_MEM,
+ SUSPEND_TEST_NONE);
+ }
+
+ igt_pipe_crc_collect_crc(pipe_crc, &crc);
+ igt_assert_crc_equal(&crc, &ref_crc);
+ igt_pipe_crc_free(pipe_crc);
+ }
+
+ if (is_invalid_test(type))
igt_assert_eq(ret, -EINVAL);
else
igt_assert_eq(ret, 0);
- /* clean-up */
- igt_pipe_crc_free(pipe_crc);
cleanup(data);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH i-g-t v2 3/4] tests/intel/kms_sharpness_filter: restructure igt_main
2026-04-16 15:54 [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests Juha-Pekka Heikkila
2026-04-16 15:54 ` [PATCH i-g-t v2 1/4] tests/intel/kms_sharpness_filter: sanitize subtest init Juha-Pekka Heikkila
2026-04-16 15:54 ` [PATCH i-g-t v2 2/4] tests/intel/kms_sharpness_filter: refactor test_sharpness_filter function Juha-Pekka Heikkila
@ 2026-04-16 15:54 ` Juha-Pekka Heikkila
2026-04-16 19:53 ` Sharma, Swati2
2026-04-16 15:54 ` [PATCH i-g-t v2 4/4] tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement for test Juha-Pekka Heikkila
` (3 subsequent siblings)
6 siblings, 1 reply; 12+ messages in thread
From: Juha-Pekka Heikkila @ 2026-04-16 15:54 UTC (permalink / raw)
To: igt-dev; +Cc: Juha-Pekka Heikkila
collect tests into list and call them through there
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
tests/intel/kms_sharpness_filter.c | 315 +++++++++++++++++------------
1 file changed, 182 insertions(+), 133 deletions(-)
diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
index b1c80eecd..98eb671d1 100644
--- a/tests/intel/kms_sharpness_filter.c
+++ b/tests/intel/kms_sharpness_filter.c
@@ -19,7 +19,7 @@
* Description: Verify basic content adaptive sharpness filter.
*
* SUBTEST: filter-strength
- * Description: Verify that varying strength (0-255), affects the degree of sharpeness applied.
+ * Description: Verify that varying strength (0-255), affects the degree of sharpness applied.
*
* SUBTEST: filter-modifiers
* Description: Verify content adaptive sharpness filter with varying modifiers.
@@ -88,6 +88,7 @@ IGT_TEST_DESCRIPTION("Test to validate content adaptive sharpness filter");
#define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
#define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
#define NROUNDS 10
+#define DEFAULT_FILTER_STRENGTH -1
enum test_type {
TEST_FILTER_BASIC,
@@ -142,6 +143,131 @@ static const uint32_t scaling_modes[] = {
DRM_MODE_SCALE_ASPECT,
};
+enum subtest_iter {
+ ITER_NONE,
+ ITER_STRENGTH,
+ ITER_MODIFIER,
+ ITER_ROTATION,
+ ITER_FORMAT,
+ ITER_SCALING_MODE,
+};
+
+static const struct subtest_entry {
+ const char *name;
+ const char *describe;
+ enum test_type type;
+ int filter_strength;
+ uint32_t format;
+ enum subtest_iter iter;
+} subtests[] = {
+ {
+ .name = "filter-basic",
+ .describe = "Verify basic content adaptive sharpness filter.",
+ .type = TEST_FILTER_BASIC,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ },
+ {
+ .name = "filter-strength",
+ .describe = "Verify that varying strength (0-255) affects the degree of sharpness applied.",
+ .type = TEST_FILTER_STRENGTH,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ .iter = ITER_STRENGTH,
+ },
+ {
+ .name = "filter-modifiers",
+ .describe = "Verify content adaptive sharpness filter with varying modifiers.",
+ .type = TEST_FILTER_MODIFIERS,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ .iter = ITER_MODIFIER,
+ },
+ {
+ .name = "filter-rotations",
+ .describe = "Verify content adaptive sharpness filter with varying rotations.",
+ .type = TEST_FILTER_ROTATION,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ .iter = ITER_ROTATION,
+ },
+ {
+ .name = "filter-formats",
+ .describe = "Verify content adaptive sharpness filter with varying formats.",
+ .type = TEST_FILTER_FORMATS,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ .iter = ITER_FORMAT,
+ },
+ {
+ .name = "filter-toggle",
+ .describe = "Verify toggling between enabling and disabling content adaptive sharpness filter.",
+ .type = TEST_FILTER_TOGGLE,
+ .filter_strength = MAX_FILTER_STRENGTH,
+ },
+ {
+ .name = "filter-tap",
+ .describe = "Verify content adaptive sharpness filter with resolution change; "
+ "resolution change will lead to selection of distinct taps.",
+ .type = TEST_FILTER_TAP,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ },
+ {
+ .name = "filter-dpms",
+ .describe = "Verify content adaptive sharpness filter with DPMS.",
+ .type = TEST_FILTER_DPMS,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ },
+ {
+ .name = "filter-suspend",
+ .describe = "Verify content adaptive sharpness filter with suspend.",
+ .type = TEST_FILTER_SUSPEND,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ },
+ {
+ .name = "filter-scaler-upscale",
+ .describe = "Verify content adaptive sharpness filter with 1 plane scaler enabled during upscaling.",
+ .type = TEST_FILTER_UPSCALE,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ },
+ {
+ .name = "filter-scaler-downscale",
+ .describe = "Verify content adaptive sharpness filter with 1 plane scaler enabled during downscaling.",
+ .type = TEST_FILTER_DOWNSCALE,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ },
+ {
+ .name = "invalid-filter-with-scaler",
+ .describe = "Negative check for content adaptive sharpness filter "
+ "when 2 plane scalers have already been enabled and "
+ "attempt is made to enable sharpness filter.",
+ .type = TEST_INVALID_FILTER_WITH_SCALER,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ },
+ {
+ .name = "invalid-filter-with-plane",
+ .describe = "Negative check for content adaptive sharpness filter "
+ "when 2 NV12 planes have already been enabled and "
+ "attempt is made to enable the sharpness filter.",
+ .type = TEST_INVALID_FILTER_WITH_PLANE,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ .format = DRM_FORMAT_NV12,
+ },
+ {
+ .name = "invalid-plane-with-filter",
+ .describe = "Negative check for content adaptive sharpness filter "
+ "when 1 NV12 plane and sharpness filter have already been enabled "
+ "and attempt is made to enable the second NV12 plane.",
+ .type = TEST_INVALID_PLANE_WITH_FILTER,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ .format = DRM_FORMAT_NV12,
+ },
+ {
+ .name = "invalid-filter-with-scaling-mode",
+ .describe = "Negative check for content adaptive sharpness filter "
+ "when scaling mode is already enabled and attempt is made "
+ "to enable sharpness filter.",
+ .type = TEST_INVALID_FILTER_WITH_SCALING_MODE,
+ .filter_strength = DEFAULT_FILTER_STRENGTH,
+ .iter = ITER_SCALING_MODE,
+ },
+};
+
typedef struct {
int drm_fd;
bool limited;
@@ -587,6 +713,48 @@ static void set_data_defaults(data_t *data)
data->filter_strength = MID_FILTER_STRENGTH;
}
+static int iter_count(enum subtest_iter iter)
+{
+ switch (iter) {
+ case ITER_STRENGTH:
+ return ARRAY_SIZE(filter_strength_list);
+ case ITER_MODIFIER:
+ return ARRAY_SIZE(modifiers);
+ case ITER_ROTATION:
+ return ARRAY_SIZE(rotations);
+ case ITER_FORMAT:
+ return ARRAY_SIZE(formats);
+ case ITER_SCALING_MODE:
+ return ARRAY_SIZE(scaling_modes);
+ default:
+ return 1;
+ }
+}
+
+static void apply_iter_param(data_t *data, const struct subtest_entry *st, int idx)
+{
+ switch (st->iter) {
+ case ITER_STRENGTH:
+ data->filter_strength = filter_strength_list[idx];
+ break;
+ case ITER_MODIFIER:
+ data->modifier = modifiers[idx].modifier;
+ data->modifier_name = modifiers[idx].name;
+ break;
+ case ITER_ROTATION:
+ data->rotation = rotations[idx];
+ break;
+ case ITER_FORMAT:
+ data->format = formats[idx];
+ break;
+ case ITER_SCALING_MODE:
+ data->scaling_mode = scaling_modes[idx];
+ break;
+ default:
+ break;
+ }
+}
+
static int opt_handler(int opt, int opt_index, void *_data)
{
data_t *data = _data;
@@ -619,142 +787,23 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
igt_display_require_output(&data.display);
}
- igt_describe("Verify basic content adaptive sharpness filter.");
- igt_subtest_with_dynamic("filter-basic") {
- set_data_defaults(&data);
- run_sharpness_filter_test(&data, TEST_FILTER_BASIC);
- }
-
- igt_describe("Verify that varying strength(0-255), affects "
- "the degree of sharpeness applied.");
- igt_subtest_with_dynamic("filter-strength") {
- set_data_defaults(&data);
-
- for (int i = 0; i < ARRAY_SIZE(filter_strength_list); i++) {
- data.filter_strength = filter_strength_list[i];
-
- run_sharpness_filter_test(&data, TEST_FILTER_STRENGTH);
- }
- }
-
- igt_describe("Verify content adaptive sharpness filter with "
- "varying modifiers.");
- igt_subtest_with_dynamic("filter-modifiers") {
- set_data_defaults(&data);
-
- for (int i = 0; i < ARRAY_SIZE(modifiers); i++) {
- data.modifier = modifiers[i].modifier;
- data.modifier_name = modifiers[i].name;
-
- run_sharpness_filter_test(&data, TEST_FILTER_MODIFIERS);
- }
- }
-
- igt_describe("Verify content adaptive sharpness filter with "
- "varying rotations.");
- igt_subtest_with_dynamic("filter-rotations") {
- set_data_defaults(&data);
-
- for (int i = 0; i < ARRAY_SIZE(rotations); i++) {
- data.rotation = rotations[i];
-
- run_sharpness_filter_test(&data, TEST_FILTER_ROTATION);
- }
- }
-
- igt_describe("Verify content adaptive sharpness filter with "
- "varying formats.");
- igt_subtest_with_dynamic("filter-formats") {
- set_data_defaults(&data);
-
- for (int i = 0; i < ARRAY_SIZE(formats); i++) {
- data.format = formats[i];
-
- run_sharpness_filter_test(&data, TEST_FILTER_FORMATS);
- }
- }
-
- igt_describe("Verify toggling between enabling and disabling "
- "content adaptive sharpness filter.");
- igt_subtest_with_dynamic("filter-toggle") {
- set_data_defaults(&data);
- data.filter_strength = MAX_FILTER_STRENGTH;
- run_sharpness_filter_test(&data, TEST_FILTER_TOGGLE);
- }
-
- igt_describe("Verify that following a resolution change, "
- "distict taps are selected.");
- igt_subtest_with_dynamic("filter-tap") {
- set_data_defaults(&data);
- run_sharpness_filter_test(&data, TEST_FILTER_TAP);
- }
-
- igt_describe("Verify content adaptive sharpness filter "
- "with DPMS.");
- igt_subtest_with_dynamic("filter-dpms") {
- set_data_defaults(&data);
- run_sharpness_filter_test(&data, TEST_FILTER_DPMS);
- }
-
- igt_describe("Verify content adaptive sharpness filter "
- "with suspend.");
- igt_subtest_with_dynamic("filter-suspend") {
- set_data_defaults(&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") {
- set_data_defaults(&data);
- 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") {
- set_data_defaults(&data);
- run_sharpness_filter_test(&data, TEST_FILTER_DOWNSCALE);
- }
-
- igt_describe("Negative check for content adaptive sharpness filter "
- "when 2 plane scalers have already been enabled and "
- "attempt is made to enable sharpness filter.");
- igt_subtest_with_dynamic("invalid-filter-with-scaler") {
- set_data_defaults(&data);
- run_sharpness_filter_test(&data, TEST_INVALID_FILTER_WITH_SCALER);
- }
-
- igt_describe("Negative check for content adaptive sharpness filter "
- "when 2 NV12 planes have already been enabled and attempt is "
- "made to enable the sharpness filter.");
- igt_subtest_with_dynamic("invalid-filter-with-plane") {
- set_data_defaults(&data);
- data.format = DRM_FORMAT_NV12;
-
- run_sharpness_filter_test(&data, TEST_INVALID_FILTER_WITH_PLANE);
- }
-
- igt_describe("Negative check for content adaptive sharpness filter "
- "when 1 NV12 plane and sharpness filter have already been enabled "
- "and attempt is made to enable the second NV12 plane.");
- igt_subtest_with_dynamic("invalid-plane-with-filter") {
- set_data_defaults(&data);
- data.format = DRM_FORMAT_NV12;
+ for (int s = 0; s < ARRAY_SIZE(subtests); s++) {
+ const struct subtest_entry *p = &subtests[s];
- run_sharpness_filter_test(&data, TEST_INVALID_PLANE_WITH_FILTER);
- }
+ igt_describe(p->describe);
+ igt_subtest_with_dynamic(p->name) {
+ set_data_defaults(&data);
- igt_describe("Negative check for content adaptive sharpness filter "
- "when scaling mode is already enabled and attempt is made "
- "to enable sharpness filter.");
- igt_subtest_with_dynamic("invalid-filter-with-scaling-mode") {
- set_data_defaults(&data);
+ if (p->filter_strength != DEFAULT_FILTER_STRENGTH)
+ data.filter_strength = p->filter_strength;
- for (int k = 0; k < ARRAY_SIZE(scaling_modes); k++) {
- data.scaling_mode = scaling_modes[k];
+ if (p->format != 0)
+ data.format = p->format;
- run_sharpness_filter_test(&data, TEST_INVALID_FILTER_WITH_SCALING_MODE);
+ for (int i = 0; i < iter_count(p->iter); i++) {
+ apply_iter_param(&data, p, i);
+ run_sharpness_filter_test(&data, p->type);
+ }
}
}
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH i-g-t v2 4/4] tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement for test
2026-04-16 15:54 [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests Juha-Pekka Heikkila
` (2 preceding siblings ...)
2026-04-16 15:54 ` [PATCH i-g-t v2 3/4] tests/intel/kms_sharpness_filter: restructure igt_main Juha-Pekka Heikkila
@ 2026-04-16 15:54 ` Juha-Pekka Heikkila
2026-04-16 19:54 ` Sharma, Swati2
2026-04-17 7:28 ` Jani Nikula
2026-04-17 0:39 ` ✓ Xe.CI.BAT: success for Refactor kms_sharpness_filter tests (rev2) Patchwork
` (2 subsequent siblings)
6 siblings, 2 replies; 12+ messages in thread
From: Juha-Pekka Heikkila @ 2026-04-16 15:54 UTC (permalink / raw)
To: igt-dev; +Cc: Juha-Pekka Heikkila
choose mode from connector with lowest bandwidth requirement
for tests to try to fit tests into bandwidth limitations
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
tests/intel/kms_sharpness_filter.c | 35 +++++++++++++++++++++++++++++-
1 file changed, 34 insertions(+), 1 deletion(-)
diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
index 98eb671d1..cf5b0d2c7 100644
--- a/tests/intel/kms_sharpness_filter.c
+++ b/tests/intel/kms_sharpness_filter.c
@@ -609,6 +609,24 @@ static void build_test_suffix(data_t *data, enum test_type type,
}
}
+static drmModeModeInfo *find_lowest_mode(igt_output_t *output)
+{
+ drmModeConnector *connector = output->config.connector;
+ drmModeModeInfo *low = NULL;
+
+ for (int i = 0; i < connector->count_modes; i++) {
+ drmModeModeInfo *mode = &connector->modes[i];
+ int pixels = mode->hdisplay * mode->vdisplay;
+ int low_pixels = low ? low->hdisplay * low->vdisplay : INT_MAX;
+
+ if (pixels < low_pixels ||
+ (pixels == low_pixels && mode->vrefresh < low->vrefresh))
+ low = mode;
+ }
+
+ return low;
+}
+
static void
run_sharpness_filter_test(data_t *data, enum test_type type)
{
@@ -647,7 +665,22 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
data->mode->vdisplay,
data->mode->vrefresh);
} else {
- data->mode = igt_output_get_mode(data->output);
+ if (is_invalid_test(type)) {
+ data->mode = igt_output_get_mode(data->output);
+ } else {
+ data->mode = find_lowest_mode(data->output);
+ if (!data->mode) {
+ igt_info("No mode found on output %s\n",
+ igt_output_name(data->output));
+ continue;
+ }
+
+ igt_info("Executing on lowest mode %dx%d@%d@%s\n",
+ data->mode->hdisplay,
+ data->mode->vdisplay,
+ data->mode->vrefresh,
+ data->output->name);
+ }
}
if (!has_sharpness_filter(data->crtc)) {
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH i-g-t v2 2/4] tests/intel/kms_sharpness_filter: refactor test_sharpness_filter function
2026-04-16 15:54 ` [PATCH i-g-t v2 2/4] tests/intel/kms_sharpness_filter: refactor test_sharpness_filter function Juha-Pekka Heikkila
@ 2026-04-16 19:53 ` Sharma, Swati2
0 siblings, 0 replies; 12+ messages in thread
From: Sharma, Swati2 @ 2026-04-16 19:53 UTC (permalink / raw)
To: igt-dev
On 16-04-2026 09:24 pm, Juha-Pekka Heikkila wrote:
> refactor to make it look more nice
Patch LGTM
Reviewed-by: Swati Sharma <swati2.sharma@intel.com>
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> tests/intel/kms_sharpness_filter.c | 108 ++++++++++++++++-------------
> 1 file changed, 59 insertions(+), 49 deletions(-)
>
> diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
> index baf9bc141..b1c80eecd 100644
> --- a/tests/intel/kms_sharpness_filter.c
> +++ b/tests/intel/kms_sharpness_filter.c
> @@ -88,15 +88,6 @@ IGT_TEST_DESCRIPTION("Test to validate content adaptive sharpness filter");
> #define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
> #define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
> #define NROUNDS 10
> -#define INVALID_TEST ((type == TEST_INVALID_FILTER_WITH_SCALER) \
> - || (type == TEST_INVALID_FILTER_WITH_PLANE) \
> - || (type == TEST_INVALID_PLANE_WITH_FILTER) \
> - || (type == TEST_INVALID_FILTER_WITH_SCALING_MODE))
> -#define SET_PLANES ((type == TEST_FILTER_UPSCALE) \
> - || (type == TEST_FILTER_DOWNSCALE) \
> - || (type == TEST_INVALID_FILTER_WITH_SCALER) \
> - || (type == TEST_INVALID_FILTER_WITH_PLANE) \
> - || (type == TEST_INVALID_FILTER_WITH_SCALING_MODE))
>
> enum test_type {
> TEST_FILTER_BASIC,
> @@ -326,12 +317,37 @@ static int test_filter_toggle(data_t *data)
> return ret;
> }
>
> -static void test_sharpness_filter(data_t *data, enum test_type type)
> +static bool is_invalid_test(enum test_type type)
> +{
> + switch (type) {
> + case TEST_INVALID_FILTER_WITH_SCALER:
> + case TEST_INVALID_FILTER_WITH_PLANE:
> + case TEST_INVALID_PLANE_WITH_FILTER:
> + case TEST_INVALID_FILTER_WITH_SCALING_MODE:
> + return true;
> + default:
> + return false;
> + }
> +}
> +
> +static bool needs_extra_planes(enum test_type type)
> +{
> + switch (type) {
> + case TEST_FILTER_UPSCALE:
> + case TEST_FILTER_DOWNSCALE:
> + case TEST_INVALID_FILTER_WITH_SCALER:
> + case TEST_INVALID_FILTER_WITH_PLANE:
> + case TEST_INVALID_FILTER_WITH_SCALING_MODE:
> + return true;
> + default:
> + return false;
> + }
> +}
> +
> +static void test_sharpness_filter(data_t *data, enum test_type type)
> {
> igt_output_t *output = data->output;
> drmModeModeInfo *mode = data->mode;
> - int height = mode->hdisplay;
> - int width = mode->vdisplay;
> igt_crc_t ref_crc, crc;
> igt_pipe_crc_t *pipe_crc = NULL;
> int ret;
> @@ -342,57 +358,31 @@ static void test_sharpness_filter(data_t *data, enum test_type type)
> "No requested format/modifier on pipe %s\n",
> igt_crtc_name(data->crtc));
>
> - setup_fb(data->drm_fd, height, width, data->format, data->modifier, &data->fb[0]);
> + setup_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> + data->format, data->modifier, &data->fb[0]);
> igt_plane_set_fb(data->plane[0], &data->fb[0]);
>
> if (type == TEST_FILTER_ROTATION) {
> - if (igt_plane_has_rotation(data->plane[0], data->rotation))
> - igt_plane_set_rotation(data->plane[0], data->rotation);
> - else
> - igt_skip("No requested rotation on pipe %s\n",
> - igt_crtc_name(data->crtc));
> + igt_skip_on_f(!igt_plane_has_rotation(data->plane[0],
> + data->rotation),
> + "No requested rotation on pipe %s\n",
> + igt_crtc_name(data->crtc));
> + igt_plane_set_rotation(data->plane[0], data->rotation);
> }
>
> if (type == TEST_INVALID_FILTER_WITH_SCALING_MODE)
> igt_require_f(has_scaling_mode(output), "No connecter scaling mode found on %s\n", output->name);
>
> - if (SET_PLANES)
> + if (needs_extra_planes(type))
> set_planes(data, type);
>
> set_filter_strength_on_pipe(data);
>
> - if (!INVALID_TEST && data->filter_strength != 0)
> - igt_debug("Sharpened image should be observed for filter strength > 0\n");
> -
> if (type == TEST_INVALID_FILTER_WITH_SCALING_MODE)
> ret = igt_display_try_commit_atomic(&data->display, 0, NULL);
> else
> ret = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
>
> - if (type == TEST_FILTER_DPMS || type == TEST_FILTER_SUSPEND) {
> - pipe_crc = igt_crtc_crc_new(data->crtc,
> - IGT_PIPE_CRC_SOURCE_AUTO);
> - igt_pipe_crc_collect_crc(pipe_crc, &ref_crc);
> - }
> -
> - if (type == TEST_FILTER_DPMS) {
> - kmstest_set_connector_dpms(data->drm_fd,
> - output->config.connector,
> - DRM_MODE_DPMS_OFF);
> - kmstest_set_connector_dpms(data->drm_fd,
> - output->config.connector,
> - DRM_MODE_DPMS_ON);
> - }
> -
> - if (type == TEST_FILTER_SUSPEND)
> - igt_system_suspend_autoresume(SUSPEND_STATE_MEM,
> - SUSPEND_TEST_NONE);
> -
> - if (type == TEST_FILTER_DPMS || type == TEST_FILTER_SUSPEND) {
> - igt_pipe_crc_collect_crc(pipe_crc, &crc);
> - igt_assert_crc_equal(&crc, &ref_crc);
> - }
> -
> if (type == TEST_FILTER_TOGGLE)
> ret |= test_filter_toggle(data);
>
> @@ -408,13 +398,33 @@ static void test_sharpness_filter(data_t *data, enum test_type type)
> ret = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
> }
>
> - if (INVALID_TEST)
> + if (type == TEST_FILTER_DPMS || type == TEST_FILTER_SUSPEND) {
> + pipe_crc = igt_crtc_crc_new(data->crtc,
> + IGT_PIPE_CRC_SOURCE_AUTO);
> + igt_pipe_crc_collect_crc(pipe_crc, &ref_crc);
> +
> + if (type == TEST_FILTER_DPMS) {
> + kmstest_set_connector_dpms(data->drm_fd,
> + output->config.connector,
> + DRM_MODE_DPMS_OFF);
> + kmstest_set_connector_dpms(data->drm_fd,
> + output->config.connector,
> + DRM_MODE_DPMS_ON);
> + } else {
> + igt_system_suspend_autoresume(SUSPEND_STATE_MEM,
> + SUSPEND_TEST_NONE);
> + }
> +
> + igt_pipe_crc_collect_crc(pipe_crc, &crc);
> + igt_assert_crc_equal(&crc, &ref_crc);
> + igt_pipe_crc_free(pipe_crc);
> + }
> +
> + if (is_invalid_test(type))
> igt_assert_eq(ret, -EINVAL);
> else
> igt_assert_eq(ret, 0);
>
> - /* clean-up */
> - igt_pipe_crc_free(pipe_crc);
> cleanup(data);
> }
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH i-g-t v2 3/4] tests/intel/kms_sharpness_filter: restructure igt_main
2026-04-16 15:54 ` [PATCH i-g-t v2 3/4] tests/intel/kms_sharpness_filter: restructure igt_main Juha-Pekka Heikkila
@ 2026-04-16 19:53 ` Sharma, Swati2
0 siblings, 0 replies; 12+ messages in thread
From: Sharma, Swati2 @ 2026-04-16 19:53 UTC (permalink / raw)
To: Juha-Pekka Heikkila, igt-dev
On 16-04-2026 09:24 pm, Juha-Pekka Heikkila wrote:
> collect tests into list and call them through there
Patch LGTM
Reviewed-by: Swati Sharma <swati2.sharma@intel.com>
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> tests/intel/kms_sharpness_filter.c | 315 +++++++++++++++++------------
> 1 file changed, 182 insertions(+), 133 deletions(-)
>
> diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
> index b1c80eecd..98eb671d1 100644
> --- a/tests/intel/kms_sharpness_filter.c
> +++ b/tests/intel/kms_sharpness_filter.c
> @@ -19,7 +19,7 @@
> * Description: Verify basic content adaptive sharpness filter.
> *
> * SUBTEST: filter-strength
> - * Description: Verify that varying strength (0-255), affects the degree of sharpeness applied.
> + * Description: Verify that varying strength (0-255), affects the degree of sharpness applied.
> *
> * SUBTEST: filter-modifiers
> * Description: Verify content adaptive sharpness filter with varying modifiers.
> @@ -88,6 +88,7 @@ IGT_TEST_DESCRIPTION("Test to validate content adaptive sharpness filter");
> #define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
> #define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
> #define NROUNDS 10
> +#define DEFAULT_FILTER_STRENGTH -1
>
> enum test_type {
> TEST_FILTER_BASIC,
> @@ -142,6 +143,131 @@ static const uint32_t scaling_modes[] = {
> DRM_MODE_SCALE_ASPECT,
> };
>
> +enum subtest_iter {
> + ITER_NONE,
> + ITER_STRENGTH,
> + ITER_MODIFIER,
> + ITER_ROTATION,
> + ITER_FORMAT,
> + ITER_SCALING_MODE,
> +};
> +
> +static const struct subtest_entry {
> + const char *name;
> + const char *describe;
> + enum test_type type;
> + int filter_strength;
> + uint32_t format;
> + enum subtest_iter iter;
> +} subtests[] = {
> + {
> + .name = "filter-basic",
> + .describe = "Verify basic content adaptive sharpness filter.",
> + .type = TEST_FILTER_BASIC,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + },
> + {
> + .name = "filter-strength",
> + .describe = "Verify that varying strength (0-255) affects the degree of sharpness applied.",
> + .type = TEST_FILTER_STRENGTH,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + .iter = ITER_STRENGTH,
> + },
> + {
> + .name = "filter-modifiers",
> + .describe = "Verify content adaptive sharpness filter with varying modifiers.",
> + .type = TEST_FILTER_MODIFIERS,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + .iter = ITER_MODIFIER,
> + },
> + {
> + .name = "filter-rotations",
> + .describe = "Verify content adaptive sharpness filter with varying rotations.",
> + .type = TEST_FILTER_ROTATION,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + .iter = ITER_ROTATION,
> + },
> + {
> + .name = "filter-formats",
> + .describe = "Verify content adaptive sharpness filter with varying formats.",
> + .type = TEST_FILTER_FORMATS,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + .iter = ITER_FORMAT,
> + },
> + {
> + .name = "filter-toggle",
> + .describe = "Verify toggling between enabling and disabling content adaptive sharpness filter.",
> + .type = TEST_FILTER_TOGGLE,
> + .filter_strength = MAX_FILTER_STRENGTH,
> + },
> + {
> + .name = "filter-tap",
> + .describe = "Verify content adaptive sharpness filter with resolution change; "
> + "resolution change will lead to selection of distinct taps.",
> + .type = TEST_FILTER_TAP,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + },
> + {
> + .name = "filter-dpms",
> + .describe = "Verify content adaptive sharpness filter with DPMS.",
> + .type = TEST_FILTER_DPMS,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + },
> + {
> + .name = "filter-suspend",
> + .describe = "Verify content adaptive sharpness filter with suspend.",
> + .type = TEST_FILTER_SUSPEND,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + },
> + {
> + .name = "filter-scaler-upscale",
> + .describe = "Verify content adaptive sharpness filter with 1 plane scaler enabled during upscaling.",
> + .type = TEST_FILTER_UPSCALE,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + },
> + {
> + .name = "filter-scaler-downscale",
> + .describe = "Verify content adaptive sharpness filter with 1 plane scaler enabled during downscaling.",
> + .type = TEST_FILTER_DOWNSCALE,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + },
> + {
> + .name = "invalid-filter-with-scaler",
> + .describe = "Negative check for content adaptive sharpness filter "
> + "when 2 plane scalers have already been enabled and "
> + "attempt is made to enable sharpness filter.",
> + .type = TEST_INVALID_FILTER_WITH_SCALER,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + },
> + {
> + .name = "invalid-filter-with-plane",
> + .describe = "Negative check for content adaptive sharpness filter "
> + "when 2 NV12 planes have already been enabled and "
> + "attempt is made to enable the sharpness filter.",
> + .type = TEST_INVALID_FILTER_WITH_PLANE,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + .format = DRM_FORMAT_NV12,
> + },
> + {
> + .name = "invalid-plane-with-filter",
> + .describe = "Negative check for content adaptive sharpness filter "
> + "when 1 NV12 plane and sharpness filter have already been enabled "
> + "and attempt is made to enable the second NV12 plane.",
> + .type = TEST_INVALID_PLANE_WITH_FILTER,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + .format = DRM_FORMAT_NV12,
> + },
> + {
> + .name = "invalid-filter-with-scaling-mode",
> + .describe = "Negative check for content adaptive sharpness filter "
> + "when scaling mode is already enabled and attempt is made "
> + "to enable sharpness filter.",
> + .type = TEST_INVALID_FILTER_WITH_SCALING_MODE,
> + .filter_strength = DEFAULT_FILTER_STRENGTH,
> + .iter = ITER_SCALING_MODE,
> + },
> +};
> +
> typedef struct {
> int drm_fd;
> bool limited;
> @@ -587,6 +713,48 @@ static void set_data_defaults(data_t *data)
> data->filter_strength = MID_FILTER_STRENGTH;
> }
>
> +static int iter_count(enum subtest_iter iter)
> +{
> + switch (iter) {
> + case ITER_STRENGTH:
> + return ARRAY_SIZE(filter_strength_list);
> + case ITER_MODIFIER:
> + return ARRAY_SIZE(modifiers);
> + case ITER_ROTATION:
> + return ARRAY_SIZE(rotations);
> + case ITER_FORMAT:
> + return ARRAY_SIZE(formats);
> + case ITER_SCALING_MODE:
> + return ARRAY_SIZE(scaling_modes);
> + default:
> + return 1;
> + }
> +}
> +
> +static void apply_iter_param(data_t *data, const struct subtest_entry *st, int idx)
> +{
> + switch (st->iter) {
> + case ITER_STRENGTH:
> + data->filter_strength = filter_strength_list[idx];
> + break;
> + case ITER_MODIFIER:
> + data->modifier = modifiers[idx].modifier;
> + data->modifier_name = modifiers[idx].name;
> + break;
> + case ITER_ROTATION:
> + data->rotation = rotations[idx];
> + break;
> + case ITER_FORMAT:
> + data->format = formats[idx];
> + break;
> + case ITER_SCALING_MODE:
> + data->scaling_mode = scaling_modes[idx];
> + break;
> + default:
> + break;
> + }
> +}
> +
> static int opt_handler(int opt, int opt_index, void *_data)
> {
> data_t *data = _data;
> @@ -619,142 +787,23 @@ int igt_main_args("l", NULL, help_str, opt_handler, &data)
> igt_display_require_output(&data.display);
> }
>
> - igt_describe("Verify basic content adaptive sharpness filter.");
> - igt_subtest_with_dynamic("filter-basic") {
> - set_data_defaults(&data);
> - run_sharpness_filter_test(&data, TEST_FILTER_BASIC);
> - }
> -
> - igt_describe("Verify that varying strength(0-255), affects "
> - "the degree of sharpeness applied.");
> - igt_subtest_with_dynamic("filter-strength") {
> - set_data_defaults(&data);
> -
> - for (int i = 0; i < ARRAY_SIZE(filter_strength_list); i++) {
> - data.filter_strength = filter_strength_list[i];
> -
> - run_sharpness_filter_test(&data, TEST_FILTER_STRENGTH);
> - }
> - }
> -
> - igt_describe("Verify content adaptive sharpness filter with "
> - "varying modifiers.");
> - igt_subtest_with_dynamic("filter-modifiers") {
> - set_data_defaults(&data);
> -
> - for (int i = 0; i < ARRAY_SIZE(modifiers); i++) {
> - data.modifier = modifiers[i].modifier;
> - data.modifier_name = modifiers[i].name;
> -
> - run_sharpness_filter_test(&data, TEST_FILTER_MODIFIERS);
> - }
> - }
> -
> - igt_describe("Verify content adaptive sharpness filter with "
> - "varying rotations.");
> - igt_subtest_with_dynamic("filter-rotations") {
> - set_data_defaults(&data);
> -
> - for (int i = 0; i < ARRAY_SIZE(rotations); i++) {
> - data.rotation = rotations[i];
> -
> - run_sharpness_filter_test(&data, TEST_FILTER_ROTATION);
> - }
> - }
> -
> - igt_describe("Verify content adaptive sharpness filter with "
> - "varying formats.");
> - igt_subtest_with_dynamic("filter-formats") {
> - set_data_defaults(&data);
> -
> - for (int i = 0; i < ARRAY_SIZE(formats); i++) {
> - data.format = formats[i];
> -
> - run_sharpness_filter_test(&data, TEST_FILTER_FORMATS);
> - }
> - }
> -
> - igt_describe("Verify toggling between enabling and disabling "
> - "content adaptive sharpness filter.");
> - igt_subtest_with_dynamic("filter-toggle") {
> - set_data_defaults(&data);
> - data.filter_strength = MAX_FILTER_STRENGTH;
> - run_sharpness_filter_test(&data, TEST_FILTER_TOGGLE);
> - }
> -
> - igt_describe("Verify that following a resolution change, "
> - "distict taps are selected.");
> - igt_subtest_with_dynamic("filter-tap") {
> - set_data_defaults(&data);
> - run_sharpness_filter_test(&data, TEST_FILTER_TAP);
> - }
> -
> - igt_describe("Verify content adaptive sharpness filter "
> - "with DPMS.");
> - igt_subtest_with_dynamic("filter-dpms") {
> - set_data_defaults(&data);
> - run_sharpness_filter_test(&data, TEST_FILTER_DPMS);
> - }
> -
> - igt_describe("Verify content adaptive sharpness filter "
> - "with suspend.");
> - igt_subtest_with_dynamic("filter-suspend") {
> - set_data_defaults(&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") {
> - set_data_defaults(&data);
> - 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") {
> - set_data_defaults(&data);
> - run_sharpness_filter_test(&data, TEST_FILTER_DOWNSCALE);
> - }
> -
> - igt_describe("Negative check for content adaptive sharpness filter "
> - "when 2 plane scalers have already been enabled and "
> - "attempt is made to enable sharpness filter.");
> - igt_subtest_with_dynamic("invalid-filter-with-scaler") {
> - set_data_defaults(&data);
> - run_sharpness_filter_test(&data, TEST_INVALID_FILTER_WITH_SCALER);
> - }
> -
> - igt_describe("Negative check for content adaptive sharpness filter "
> - "when 2 NV12 planes have already been enabled and attempt is "
> - "made to enable the sharpness filter.");
> - igt_subtest_with_dynamic("invalid-filter-with-plane") {
> - set_data_defaults(&data);
> - data.format = DRM_FORMAT_NV12;
> -
> - run_sharpness_filter_test(&data, TEST_INVALID_FILTER_WITH_PLANE);
> - }
> -
> - igt_describe("Negative check for content adaptive sharpness filter "
> - "when 1 NV12 plane and sharpness filter have already been enabled "
> - "and attempt is made to enable the second NV12 plane.");
> - igt_subtest_with_dynamic("invalid-plane-with-filter") {
> - set_data_defaults(&data);
> - data.format = DRM_FORMAT_NV12;
> + for (int s = 0; s < ARRAY_SIZE(subtests); s++) {
> + const struct subtest_entry *p = &subtests[s];
>
> - run_sharpness_filter_test(&data, TEST_INVALID_PLANE_WITH_FILTER);
> - }
> + igt_describe(p->describe);
> + igt_subtest_with_dynamic(p->name) {
> + set_data_defaults(&data);
>
> - igt_describe("Negative check for content adaptive sharpness filter "
> - "when scaling mode is already enabled and attempt is made "
> - "to enable sharpness filter.");
> - igt_subtest_with_dynamic("invalid-filter-with-scaling-mode") {
> - set_data_defaults(&data);
> + if (p->filter_strength != DEFAULT_FILTER_STRENGTH)
> + data.filter_strength = p->filter_strength;
>
> - for (int k = 0; k < ARRAY_SIZE(scaling_modes); k++) {
> - data.scaling_mode = scaling_modes[k];
> + if (p->format != 0)
> + data.format = p->format;
>
> - run_sharpness_filter_test(&data, TEST_INVALID_FILTER_WITH_SCALING_MODE);
> + for (int i = 0; i < iter_count(p->iter); i++) {
> + apply_iter_param(&data, p, i);
> + run_sharpness_filter_test(&data, p->type);
> + }
> }
> }
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH i-g-t v2 4/4] tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement for test
2026-04-16 15:54 ` [PATCH i-g-t v2 4/4] tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement for test Juha-Pekka Heikkila
@ 2026-04-16 19:54 ` Sharma, Swati2
2026-04-17 7:28 ` Jani Nikula
1 sibling, 0 replies; 12+ messages in thread
From: Sharma, Swati2 @ 2026-04-16 19:54 UTC (permalink / raw)
To: Juha-Pekka Heikkila, igt-dev
On 16-04-2026 09:24 pm, Juha-Pekka Heikkila wrote:
> choose mode from connector with lowest bandwidth requirement
> for tests to try to fit tests into bandwidth limitations
Patch LGTM
Reviewed-by: Swati Sharma <swati2.sharma@intel.com>
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> tests/intel/kms_sharpness_filter.c | 35 +++++++++++++++++++++++++++++-
> 1 file changed, 34 insertions(+), 1 deletion(-)
>
> diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
> index 98eb671d1..cf5b0d2c7 100644
> --- a/tests/intel/kms_sharpness_filter.c
> +++ b/tests/intel/kms_sharpness_filter.c
> @@ -609,6 +609,24 @@ static void build_test_suffix(data_t *data, enum test_type type,
> }
> }
>
> +static drmModeModeInfo *find_lowest_mode(igt_output_t *output)
> +{
> + drmModeConnector *connector = output->config.connector;
> + drmModeModeInfo *low = NULL;
> +
> + for (int i = 0; i < connector->count_modes; i++) {
> + drmModeModeInfo *mode = &connector->modes[i];
> + int pixels = mode->hdisplay * mode->vdisplay;
> + int low_pixels = low ? low->hdisplay * low->vdisplay : INT_MAX;
> +
> + if (pixels < low_pixels ||
> + (pixels == low_pixels && mode->vrefresh < low->vrefresh))
> + low = mode;
> + }
> +
> + return low;
> +}
> +
> static void
> run_sharpness_filter_test(data_t *data, enum test_type type)
> {
> @@ -647,7 +665,22 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
> data->mode->vdisplay,
> data->mode->vrefresh);
> } else {
> - data->mode = igt_output_get_mode(data->output);
> + if (is_invalid_test(type)) {
> + data->mode = igt_output_get_mode(data->output);
> + } else {
> + data->mode = find_lowest_mode(data->output);
> + if (!data->mode) {
> + igt_info("No mode found on output %s\n",
> + igt_output_name(data->output));
> + continue;
> + }
> +
> + igt_info("Executing on lowest mode %dx%d@%d@%s\n",
> + data->mode->hdisplay,
> + data->mode->vdisplay,
> + data->mode->vrefresh,
> + data->output->name);
> + }
> }
>
> if (!has_sharpness_filter(data->crtc)) {
^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ Xe.CI.BAT: success for Refactor kms_sharpness_filter tests (rev2)
2026-04-16 15:54 [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests Juha-Pekka Heikkila
` (3 preceding siblings ...)
2026-04-16 15:54 ` [PATCH i-g-t v2 4/4] tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement for test Juha-Pekka Heikkila
@ 2026-04-17 0:39 ` Patchwork
2026-04-17 0:53 ` ✓ i915.CI.BAT: " Patchwork
2026-04-17 3:10 ` ✗ Xe.CI.FULL: failure " Patchwork
6 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-17 0:39 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 1158 bytes --]
== Series Details ==
Series: Refactor kms_sharpness_filter tests (rev2)
URL : https://patchwork.freedesktop.org/series/164197/
State : success
== Summary ==
CI Bug Log - changes from XEIGT_8863_BAT -> XEIGTPW_15002_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* IGT: IGT_8863 -> IGTPW_15002
* Linux: xe-4917-ff84b38d86b994ebb03d940be1c73a63e231f454 -> xe-4918-2a1c604bebed8cbbe6aea00f761777eed424dc55
IGTPW_15002: 874a24e935f57c60527a517395e71a728038f2f7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4917-ff84b38d86b994ebb03d940be1c73a63e231f454: ff84b38d86b994ebb03d940be1c73a63e231f454
xe-4918-2a1c604bebed8cbbe6aea00f761777eed424dc55: 2a1c604bebed8cbbe6aea00f761777eed424dc55
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/index.html
[-- Attachment #2: Type: text/html, Size: 1717 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ i915.CI.BAT: success for Refactor kms_sharpness_filter tests (rev2)
2026-04-16 15:54 [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests Juha-Pekka Heikkila
` (4 preceding siblings ...)
2026-04-17 0:39 ` ✓ Xe.CI.BAT: success for Refactor kms_sharpness_filter tests (rev2) Patchwork
@ 2026-04-17 0:53 ` Patchwork
2026-04-17 3:10 ` ✗ Xe.CI.FULL: failure " Patchwork
6 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-17 0:53 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 3908 bytes --]
== Series Details ==
Series: Refactor kms_sharpness_filter tests (rev2)
URL : https://patchwork.freedesktop.org/series/164197/
State : success
== Summary ==
CI Bug Log - changes from IGT_8863 -> IGTPW_15002
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/index.html
Participating hosts (42 -> 39)
------------------------------
Missing (3): bat-dg2-13 bat-kbl-2 fi-snb-2520m
Known issues
------------
Here are the changes found in IGTPW_15002 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@dmabuf@all-tests:
- fi-skl-6600u: NOTRUN -> [SKIP][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/fi-skl-6600u/igt@dmabuf@all-tests.html
* igt@i915_selftest@live@workarounds:
- bat-arls-5: [PASS][2] -> [DMESG-FAIL][3] ([i915#12061]) +1 other test dmesg-fail
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/bat-arls-5/igt@i915_selftest@live@workarounds.html
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/bat-arls-5/igt@i915_selftest@live@workarounds.html
- bat-dg2-14: [PASS][4] -> [DMESG-FAIL][5] ([i915#12061]) +1 other test dmesg-fail
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/bat-dg2-14/igt@i915_selftest@live@workarounds.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/bat-dg2-14/igt@i915_selftest@live@workarounds.html
* igt@kms_hdmi_inject@inject-audio:
- fi-tgl-1115g4: [PASS][6] -> [FAIL][7] ([i915#14867])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/fi-tgl-1115g4/igt@kms_hdmi_inject@inject-audio.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/fi-tgl-1115g4/igt@kms_hdmi_inject@inject-audio.html
#### Possible fixes ####
* igt@i915_selftest@live:
- fi-skl-6600u: [INCOMPLETE][8] ([i915#15859]) -> [PASS][9]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/fi-skl-6600u/igt@i915_selftest@live.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/fi-skl-6600u/igt@i915_selftest@live.html
* igt@i915_selftest@live@gtt:
- fi-skl-6600u: [INCOMPLETE][10] -> [PASS][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/fi-skl-6600u/igt@i915_selftest@live@gtt.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/fi-skl-6600u/igt@i915_selftest@live@gtt.html
* igt@i915_selftest@live@workarounds:
- bat-dg2-9: [DMESG-FAIL][12] ([i915#12061]) -> [PASS][13] +1 other test pass
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/bat-dg2-9/igt@i915_selftest@live@workarounds.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/bat-dg2-9/igt@i915_selftest@live@workarounds.html
- bat-arls-6: [DMESG-FAIL][14] ([i915#12061]) -> [PASS][15] +1 other test pass
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/bat-arls-6/igt@i915_selftest@live@workarounds.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/bat-arls-6/igt@i915_selftest@live@workarounds.html
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#14867]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14867
[i915#15859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15859
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_8863 -> IGTPW_15002
CI-20190529: 20190529
CI_DRM_18347: 2a1c604bebed8cbbe6aea00f761777eed424dc55 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_15002: 874a24e935f57c60527a517395e71a728038f2f7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15002/index.html
[-- Attachment #2: Type: text/html, Size: 4886 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* ✗ Xe.CI.FULL: failure for Refactor kms_sharpness_filter tests (rev2)
2026-04-16 15:54 [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests Juha-Pekka Heikkila
` (5 preceding siblings ...)
2026-04-17 0:53 ` ✓ i915.CI.BAT: " Patchwork
@ 2026-04-17 3:10 ` Patchwork
6 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-17 3:10 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 12567 bytes --]
== Series Details ==
Series: Refactor kms_sharpness_filter tests (rev2)
URL : https://patchwork.freedesktop.org/series/164197/
State : failure
== Summary ==
CI Bug Log - changes from XEIGT_8863_FULL -> XEIGTPW_15002_FULL
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with XEIGTPW_15002_FULL need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in XEIGTPW_15002_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in XEIGTPW_15002_FULL:
### IGT changes ###
#### Warnings ####
* igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma:
- shard-lnl: [FAIL][1] ([Intel XE#5625]) -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-1/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-lnl-3/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
New tests
---------
New tests have been introduced between XEIGT_8863_FULL and XEIGTPW_15002_FULL:
### New IGT tests (4) ###
* igt@kms_hdr@static-swap@pipe-a-hdmi-a-3-xrgb16161616f:
- Statuses : 1 pass(s)
- Exec time: [1.08] s
* igt@kms_hdr@static-swap@pipe-a-hdmi-a-3-xrgb2101010:
- Statuses : 1 pass(s)
- Exec time: [1.41] s
* igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb16161616f:
- Statuses : 1 pass(s)
- Exec time: [1.25] s
* igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010:
- Statuses : 1 pass(s)
- Exec time: [1.48] s
Known issues
------------
Here are the changes found in XEIGTPW_15002_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@x-tiled-16bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2327])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-7/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html
* igt@kms_ccs@bad-aux-stride-yf-tiled-ccs:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#2887])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-6/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs.html
* igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#6974])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-7/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html
* igt@kms_flip@2x-plain-flip-fb-recreate:
- shard-bmg: [PASS][6] -> [ABORT][7] ([Intel XE#5545] / [Intel XE#6652]) +1 other test abort
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-9/igt@kms_flip@2x-plain-flip-fb-recreate.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-2/igt@kms_flip@2x-plain-flip-fb-recreate.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#7178] / [Intel XE#7351])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-7/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2311]) +3 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][10] -> [SKIP][11] ([Intel XE#1503])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_hdr@invalid-hdr.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-4/igt@kms_hdr@invalid-hdr.html
* igt@kms_psr@fbc-psr2-primary-blt:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2234] / [Intel XE#2850])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-8/igt@kms_psr@fbc-psr2-primary-blt.html
* igt@kms_vrr@flip-dpms:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#1499])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-5/igt@kms_vrr@flip-dpms.html
* igt@xe_exec_multi_queue@two-queues-preempt-mode-dyn-priority:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#6874])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-5/igt@xe_exec_multi_queue@two-queues-preempt-mode-dyn-priority.html
* igt@xe_sriov_flr@flr-vf1-clear:
- shard-bmg: [PASS][15] -> [FAIL][16] ([Intel XE#6569])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-8/igt@xe_sriov_flr@flr-vf1-clear.html
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-2/igt@xe_sriov_flr@flr-vf1-clear.html
#### Possible fixes ####
* igt@intel_hwmon@hwmon-write:
- shard-bmg: [FAIL][17] ([Intel XE#7445]) -> [PASS][18]
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-10/igt@intel_hwmon@hwmon-write.html
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-10/igt@intel_hwmon@hwmon-write.html
* igt@kms_flip@2x-absolute-wf_vblank-interruptible@bc-dp2-hdmi-a3:
- shard-bmg: [FAIL][19] -> [PASS][20] +3 other tests pass
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_flip@2x-absolute-wf_vblank-interruptible@bc-dp2-hdmi-a3.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-5/igt@kms_flip@2x-absolute-wf_vblank-interruptible@bc-dp2-hdmi-a3.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3:
- shard-bmg: [FAIL][21] ([Intel XE#3321]) -> [PASS][22] +1 other test pass
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-10/igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3.html
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [FAIL][23] ([Intel XE#301]) -> [PASS][24] +3 other tests pass
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_universal_plane@disable-primary-vs-flip:
- shard-bmg: [DMESG-WARN][25] ([Intel XE#7725]) -> [PASS][26] +1 other test pass
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_universal_plane@disable-primary-vs-flip.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-4/igt@kms_universal_plane@disable-primary-vs-flip.html
* igt@kms_vrr@cmrr@pipe-a-edp-1:
- shard-lnl: [FAIL][27] ([Intel XE#4459]) -> [PASS][28] +1 other test pass
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-1/igt@kms_vrr@cmrr@pipe-a-edp-1.html
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-lnl-8/igt@kms_vrr@cmrr@pipe-a-edp-1.html
* igt@kms_vrr@flipline:
- shard-lnl: [FAIL][29] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][30] +1 other test pass
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-2/igt@kms_vrr@flipline.html
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-lnl-1/igt@kms_vrr@flipline.html
#### Warnings ####
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt:
- shard-bmg: [SKIP][31] ([Intel XE#2312]) -> [SKIP][32] ([Intel XE#2311])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt.html
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][33] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][34] ([Intel XE#3544])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-4/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [FAIL][35] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][36] ([Intel XE#2426] / [Intel XE#5848])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][37] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][38] ([Intel XE#2426] / [Intel XE#5848])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7445]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7445
[Intel XE#7725]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7725
Build changes
-------------
* IGT: IGT_8863 -> IGTPW_15002
* Linux: xe-4917-ff84b38d86b994ebb03d940be1c73a63e231f454 -> xe-4918-2a1c604bebed8cbbe6aea00f761777eed424dc55
IGTPW_15002: 874a24e935f57c60527a517395e71a728038f2f7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4917-ff84b38d86b994ebb03d940be1c73a63e231f454: ff84b38d86b994ebb03d940be1c73a63e231f454
xe-4918-2a1c604bebed8cbbe6aea00f761777eed424dc55: 2a1c604bebed8cbbe6aea00f761777eed424dc55
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15002/index.html
[-- Attachment #2: Type: text/html, Size: 14007 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH i-g-t v2 4/4] tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement for test
2026-04-16 15:54 ` [PATCH i-g-t v2 4/4] tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement for test Juha-Pekka Heikkila
2026-04-16 19:54 ` Sharma, Swati2
@ 2026-04-17 7:28 ` Jani Nikula
1 sibling, 0 replies; 12+ messages in thread
From: Jani Nikula @ 2026-04-17 7:28 UTC (permalink / raw)
To: Juha-Pekka Heikkila, igt-dev; +Cc: Juha-Pekka Heikkila
On Thu, 16 Apr 2026, Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> wrote:
> choose mode from connector with lowest bandwidth requirement
> for tests to try to fit tests into bandwidth limitations
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> tests/intel/kms_sharpness_filter.c | 35 +++++++++++++++++++++++++++++-
> 1 file changed, 34 insertions(+), 1 deletion(-)
>
> diff --git a/tests/intel/kms_sharpness_filter.c b/tests/intel/kms_sharpness_filter.c
> index 98eb671d1..cf5b0d2c7 100644
> --- a/tests/intel/kms_sharpness_filter.c
> +++ b/tests/intel/kms_sharpness_filter.c
> @@ -609,6 +609,24 @@ static void build_test_suffix(data_t *data, enum test_type type,
> }
> }
>
> +static drmModeModeInfo *find_lowest_mode(igt_output_t *output)
> +{
> + drmModeConnector *connector = output->config.connector;
> + drmModeModeInfo *low = NULL;
> +
> + for (int i = 0; i < connector->count_modes; i++) {
for_each_connector_mode()
> + drmModeModeInfo *mode = &connector->modes[i];
> + int pixels = mode->hdisplay * mode->vdisplay;
> + int low_pixels = low ? low->hdisplay * low->vdisplay : INT_MAX;
> +
> + if (pixels < low_pixels ||
> + (pixels == low_pixels && mode->vrefresh < low->vrefresh))
> + low = mode;
> + }
> +
> + return low;
> +}
> +
> static void
> run_sharpness_filter_test(data_t *data, enum test_type type)
> {
> @@ -647,7 +665,22 @@ run_sharpness_filter_test(data_t *data, enum test_type type)
> data->mode->vdisplay,
> data->mode->vrefresh);
> } else {
> - data->mode = igt_output_get_mode(data->output);
> + if (is_invalid_test(type)) {
> + data->mode = igt_output_get_mode(data->output);
> + } else {
> + data->mode = find_lowest_mode(data->output);
> + if (!data->mode) {
> + igt_info("No mode found on output %s\n",
> + igt_output_name(data->output));
> + continue;
> + }
> +
> + igt_info("Executing on lowest mode %dx%d@%d@%s\n",
> + data->mode->hdisplay,
> + data->mode->vdisplay,
> + data->mode->vrefresh,
> + data->output->name);
> + }
> }
>
> if (!has_sharpness_filter(data->crtc)) {
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-04-17 7:28 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-16 15:54 [PATCH i-g-t v2 0/4] Refactor kms_sharpness_filter tests Juha-Pekka Heikkila
2026-04-16 15:54 ` [PATCH i-g-t v2 1/4] tests/intel/kms_sharpness_filter: sanitize subtest init Juha-Pekka Heikkila
2026-04-16 15:54 ` [PATCH i-g-t v2 2/4] tests/intel/kms_sharpness_filter: refactor test_sharpness_filter function Juha-Pekka Heikkila
2026-04-16 19:53 ` Sharma, Swati2
2026-04-16 15:54 ` [PATCH i-g-t v2 3/4] tests/intel/kms_sharpness_filter: restructure igt_main Juha-Pekka Heikkila
2026-04-16 19:53 ` Sharma, Swati2
2026-04-16 15:54 ` [PATCH i-g-t v2 4/4] tests/intel/kms_sharpness_filter: Find mode with lowest bw requirement for test Juha-Pekka Heikkila
2026-04-16 19:54 ` Sharma, Swati2
2026-04-17 7:28 ` Jani Nikula
2026-04-17 0:39 ` ✓ Xe.CI.BAT: success for Refactor kms_sharpness_filter tests (rev2) Patchwork
2026-04-17 0:53 ` ✓ i915.CI.BAT: " Patchwork
2026-04-17 3:10 ` ✗ Xe.CI.FULL: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox