[PATCH i-g-t v1 2/2] tests/kms_plane_scaling: Simplify pixel format test flow
Naladala Ramanaidu
ramanaidu.naladala at intel.com
Tue Jul 15 22:08:10 UTC 2025
This patch improves the structure and clarity of the scaler pixel
format tests by adopting a more modular and scalable approach.
Rather than handling all pixel format variations within a single
test block, the tests are now divided into distinct subtests for
each pixel format model.
Signed-off-by: Naladala Ramanaidu <ramanaidu.naladala at intel.com>
---
tests/kms_plane_scaling.c | 124 ++++++++++++++++++++++++++++----------
1 file changed, 91 insertions(+), 33 deletions(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 63d35d76b..922d984a0 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -89,13 +89,25 @@
*/
/**
- * SUBTEST: plane-scaler-unity-scaling-with-pixel-format
+ * SUBTEST: plane-scaler-unity-scaling-with-pixel-format-rgb
+ * Description: Tests scaling with pixel formats, unity scaling.
+ *
+ * SUBTEST: plane-scaler-unity-scaling-with-pixel-format-packed
+ * Description: Tests scaling with pixel formats, unity scaling.
+ *
+ * SUBTEST: plane-scaler-unity-scaling-with-pixel-format-planar
* Description: Tests scaling with pixel formats, unity scaling.
*
* SUBTEST: plane-scaler-with-clipping-clamping-pixel-formats
* Description: Tests scaling with clipping and clamping, pixel formats.
*
- * SUBTEST: plane-upscale-%s-with-pixel-format
+ * SUBTEST: plane-upscale-%s-with-pixel-format-rgb
+ * Description: Tests upscaling with pixel formats %arg[1].
+ *
+ * SUBTEST: plane-upscale-%s-with-pixel-format-packed
+ * Description: Tests upscaling with pixel formats %arg[1].
+ *
+ * SUBTEST: plane-upscale-%s-with-pixel-format-planar
* Description: Tests upscaling with pixel formats %arg[1].
*
* arg[1]:
@@ -105,7 +117,13 @@
*/
/**
- * SUBTEST: plane-downscale-factor-%s-with-pixel-format
+ * SUBTEST: plane-downscale-factor-%s-with-pixel-format-rgb
+ * Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
+ *
+ * SUBTEST: plane-downscale-factor-%s-with-pixel-format-packed
+ * Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
+ *
+ * SUBTEST: plane-downscale-factor-%s-with-pixel-format-planar
* Description: Tests downscaling with pixel formats for %arg[1] scaling factor.
*
* arg[1]:
@@ -204,6 +222,7 @@ typedef struct {
igt_display_t display;
struct igt_fb fb[4];
bool extended;
+ const char *pixel_format_type;
} data_t;
struct invalid_paramtests {
@@ -815,7 +834,14 @@ test_scaler_with_pixel_format_pipe(data_t *d, double sf_plane,
if (test_format(d, &tested_formats, format) &&
igt_plane_has_format_mod(plane, format, modifier) &&
- can_scale(d, format))
+ can_scale(d, format)) {
+ if (strcmp(d->pixel_format_type, "packed") == 0) {
+ if (!igt_format_is_packedyuv(format))
+ continue;
+ } else if (strcmp(d->pixel_format_type, "planar") == 0) {
+ if (!igt_format_is_planaryuv(format))
+ continue;
+ }
ret = check_scaling_pipe_plane_rot(d, plane,
format, modifier,
sf_plane,
@@ -823,9 +849,10 @@ test_scaler_with_pixel_format_pipe(data_t *d, double sf_plane,
is_upscale,
pipe, output,
IGT_ROTATION_0);
- if (ret != 0) {
- igt_vec_fini(&tested_formats);
- return ret;
+ if (ret != 0) {
+ igt_vec_fini(&tested_formats);
+ return ret;
+ }
}
}
igt_vec_fini(&tested_formats);
@@ -1324,6 +1351,62 @@ pipe_output_combo_valid(igt_display_t *display,
return ret;
}
+static void
+scaler_pixel_format(data_t *d, uint32_t index)
+{
+ uint32_t ret = -EINVAL;
+ uint32_t z;
+ char subtest_name[128];
+ enum pipe pipe;
+ igt_output_t *output;
+
+ const char *append[3] = {
+ "rgb",
+ "planar",
+ "packed"
+ };
+
+ for (z = 0; z < ARRAY_SIZE(append); z++) {
+ snprintf(subtest_name, sizeof(subtest_name), "%s-%s",
+ scaler_with_pixel_format_tests[index].name,
+ append[z]);
+
+ igt_subtest_with_dynamic(subtest_name) {
+ d->pixel_format_type = append[z];
+
+ for_each_pipe(&d->display, pipe) {
+ igt_dynamic_f("pipe-%s",
+ kmstest_pipe_name(pipe)) {
+ for_each_valid_output_on_pipe(&d->display,
+ pipe,
+ output) {
+ igt_info("Trying on %s\n",
+ igt_output_name(output));
+ if (!pipe_output_combo_valid(&d->display,
+ pipe, output))
+ continue;
+ if (get_num_scalers(&d->display, pipe) < 1)
+ continue;
+
+ ret = test_scaler_with_pixel_format_pipe(d,
+ scaler_with_pixel_format_tests[index].sf,
+ false,
+ scaler_with_pixel_format_tests[index].is_upscale,
+ pipe, output);
+ if (ret == 0)
+ break;
+ igt_info("Required scaling operation not supported on %s trying on next output\n",
+ igt_output_name(output));
+ }
+ igt_skip_on_f(ret == -ERANGE || ret == -EINVAL,
+ "Unsupported scaling operation in driver with return value %s\n",
+ (ret == -EINVAL) ? "-EINVAL" : "-ERANGE");
+ }
+ }
+ }
+ }
+}
+
static int opt_handler(int opt, int opt_index, void *_data)
{
data_t *data = _data;
@@ -1365,32 +1448,7 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
for (int index = 0; index < ARRAY_SIZE(scaler_with_pixel_format_tests); index++) {
igt_describe(scaler_with_pixel_format_tests[index].describe);
- igt_subtest_with_dynamic(scaler_with_pixel_format_tests[index].name) {
- for_each_pipe(&data.display, pipe) {
- igt_dynamic_f("pipe-%s", kmstest_pipe_name(pipe)) {
- for_each_valid_output_on_pipe(&data.display, pipe, output) {
- igt_info("Trying on %s\n", igt_output_name(output));
- if (!pipe_output_combo_valid(&data.display, pipe, output))
- continue;
- if (get_num_scalers(&data.display, pipe) < 1)
- continue;
-
- ret = test_scaler_with_pixel_format_pipe(&data,
- scaler_with_pixel_format_tests[index].sf,
- false,
- scaler_with_pixel_format_tests[index].is_upscale,
- pipe, output);
- if (ret == 0)
- break;
- igt_info("Required scaling operation not supported on %s trying on next output\n",
- igt_output_name(output));
- }
- igt_skip_on_f(ret == -ERANGE || ret == -EINVAL,
- "Unsupported scaling operation in driver with return value %s\n",
- (ret == -EINVAL) ? "-EINVAL" : "-ERANGE");
- }
- }
- }
+ scaler_pixel_format(&data, index);
}
for (int index = 0; index < ARRAY_SIZE(scaler_with_rotation_tests); index++) {
--
2.43.0
More information about the igt-dev
mailing list