[igt-dev] [PATCH i-g-t v2] tests/kms_plane: Test Refactoring
Karthik B S
karthik.b.s at intel.com
Tue Jun 14 08:25:25 UTC 2022
Add igt_display_reset in test_init().
Add new function to call all the subtests to avoid code duplication.
v2: -Call test_init() before igt_output_set_pipe() (Bhanu)
-Declare and initialize 'count' variable together (Bhanu)
Signed-off-by: Karthik B S <karthik.b.s at intel.com>
---
tests/kms_plane.c | 123 ++++++++++++++++------------------------------
1 file changed, 43 insertions(+), 80 deletions(-)
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index b1be44c3..c885a813 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -61,6 +61,7 @@ typedef struct {
int num_colors;
uint32_t crop;
bool extended;
+ unsigned int flags;
} data_t;
static bool all_pipes;
@@ -74,7 +75,9 @@ static color_t blue = { 0.0f, 0.0f, 1.0f };
*/
static void test_init(data_t *data, enum pipe pipe)
{
+ igt_require(data->display.pipes[pipe].n_planes > 0);
data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
+ igt_display_reset(&data->display);
}
static void test_fini(data_t *data)
@@ -264,7 +267,7 @@ test_plane_position_with_output(data_t *data,
}
static void
-test_plane_position(data_t *data, enum pipe pipe, unsigned int flags)
+test_plane_position(data_t *data, enum pipe pipe)
{
int n_planes = data->display.pipes[pipe].n_planes;
igt_output_t *output;
@@ -274,12 +277,12 @@ test_plane_position(data_t *data, enum pipe pipe, unsigned int flags)
igt_require(output);
test_init(data, pipe);
- test_grab_crc(data, output, pipe, &green, flags, &reference_crc);
+ test_grab_crc(data, output, pipe, &green, data->flags, &reference_crc);
for (int plane = 1; plane < n_planes; plane++)
test_plane_position_with_output(data, pipe, plane,
output, &reference_crc,
- flags);
+ data->flags);
test_fini(data);
}
@@ -372,7 +375,7 @@ test_plane_panning_with_output(data_t *data,
}
static void
-test_plane_panning(data_t *data, enum pipe pipe, unsigned int flags)
+test_plane_panning(data_t *data, enum pipe pipe)
{
igt_output_t *output;
igt_crc_t ref_crc;
@@ -382,12 +385,12 @@ test_plane_panning(data_t *data, enum pipe pipe, unsigned int flags)
test_init(data, pipe);
- if (flags & TEST_PANNING_TOP_LEFT)
- test_grab_crc(data, output, pipe, &red, flags, &ref_crc);
+ if (data->flags & TEST_PANNING_TOP_LEFT)
+ test_grab_crc(data, output, pipe, &red, data->flags, &ref_crc);
else
- test_grab_crc(data, output, pipe, &blue, flags, &ref_crc);
+ test_grab_crc(data, output, pipe, &blue, data->flags, &ref_crc);
- test_plane_panning_with_output(data, pipe, output, &ref_crc, flags);
+ test_plane_panning_with_output(data, pipe, output, &ref_crc, data->flags);
test_fini(data);
}
@@ -1055,6 +1058,8 @@ test_pixel_formats(data_t *data, enum pipe pipe)
data->num_colors = ARRAY_SIZE(colors_reduced);
}
+ test_init(data, pipe);
+
output = igt_get_single_output_for_pipe(&data->display, pipe);
igt_require(output);
@@ -1071,8 +1076,6 @@ test_pixel_formats(data_t *data, enum pipe pipe)
set_legacy_lut(data, pipe, LUT_MASK);
- test_init(data, pipe);
-
result = true;
for_each_plane_on_pipe(&data->display, pipe, plane) {
if (skip_plane(data, plane))
@@ -1097,110 +1100,70 @@ static bool is_pipe_limit_reached(int count) {
return count >= CRTC_RESTRICT_CNT && !all_pipes;
}
-static void
-run_tests_for_pipe_plane(data_t *data)
+static void run_test(data_t *data, void (*test)(data_t *, enum pipe))
{
enum pipe pipe;
- int count;
- igt_fixture {
- igt_require_pipe(&data->display, pipe);
- igt_require(data->display.pipes[pipe].n_planes > 0);
+ int count = 0;
+
+ for_each_pipe(&data->display, pipe) {
+ igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
+ test(data, pipe);
+
+ if (is_pipe_limit_reached(++count))
+ break;
}
+}
+static void
+run_tests_for_pipe_plane(data_t *data)
+{
igt_describe("verify the pixel formats for given plane and pipe");
- igt_subtest_with_dynamic_f("pixel-format") {
- count = 0;
- for_each_pipe(&data->display, pipe) {
- igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
- test_pixel_formats(data, pipe);
- if (is_pipe_limit_reached(++count))
- break;
- }
- }
+ igt_subtest_with_dynamic_f("pixel-format")
+ run_test(data, test_pixel_formats);
+
igt_describe("verify the pixel formats for given plane and pipe with source clamping");
igt_subtest_with_dynamic_f("pixel-format-source-clamping") {
- count = 0;
- for_each_pipe(&data->display, pipe) {
- igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe)) {
- data->crop = 4;
- test_pixel_formats(data, pipe);
- }
- if (is_pipe_limit_reached(++count))
- break;
- }
+ data->crop = 4;
+ run_test(data, test_pixel_formats);
}
data->crop = 0;
igt_describe("verify plane position using two planes to create a fully covered screen");
igt_subtest_with_dynamic_f("plane-position-covered") {
- count = 0;
- for_each_pipe(&data->display, pipe) {
- igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
- test_plane_position(data, pipe, 0);
- if (is_pipe_limit_reached(++count))
- break;
- }
+ data->flags = 0;
+ run_test(data, test_plane_position);
}
igt_describe("verify plane position using two planes to create a partially covered screen");
igt_subtest_with_dynamic_f("plane-position-hole") {
- count = 0;
- for_each_pipe(&data->display, pipe) {
- igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
- test_plane_position(data, pipe,
- TEST_POSITION_PARTIALLY_COVERED);
- if (is_pipe_limit_reached(++count))
- break;
- }
+ data->flags = TEST_POSITION_PARTIALLY_COVERED;
+ run_test(data, test_plane_position);
}
igt_describe("verify plane position using two planes to create a partially covered screen and"
"check for DPMS");
igt_subtest_with_dynamic_f("plane-position-hole-dpms") {
- count = 0;
- for_each_pipe(&data->display, pipe) {
- igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
- test_plane_position(data, pipe,
- TEST_POSITION_PARTIALLY_COVERED | TEST_DPMS);
- if (is_pipe_limit_reached(++count))
- break;
- }
+ data->flags = TEST_POSITION_PARTIALLY_COVERED | TEST_DPMS;
+ run_test(data, test_plane_position);
}
igt_describe("verify plane panning at top-left position using primary plane");
igt_subtest_with_dynamic_f("plane-panning-top-left") {
- count = 0;
- for_each_pipe(&data->display, pipe) {
- igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
- test_plane_panning(data, pipe, TEST_PANNING_TOP_LEFT);
- if (is_pipe_limit_reached(++count))
- break;
- }
+ data->flags = TEST_PANNING_TOP_LEFT;
+ run_test(data, test_plane_panning);
}
igt_describe("verify plane panning at bottom-right position using primary plane");
igt_subtest_with_dynamic_f("plane-panning-bottom-right") {
- count = 0;
- for_each_pipe(&data->display, pipe) {
- igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
- test_plane_panning(data, pipe, TEST_PANNING_BOTTOM_RIGHT);
- if (is_pipe_limit_reached(++count))
- break;
- }
+ data->flags = TEST_PANNING_BOTTOM_RIGHT;
+ run_test(data, test_plane_panning);
}
igt_describe("verify plane panning at bottom-right position using primary plane and executes system"
"suspend cycles");
igt_subtest_with_dynamic_f("plane-panning-bottom-right-suspend") {
- count = 0;
- for_each_pipe(&data->display, pipe) {
- igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
- test_plane_panning(data, pipe,
- TEST_PANNING_BOTTOM_RIGHT |
- TEST_SUSPEND_RESUME);
- if (is_pipe_limit_reached(++count))
- break;
- }
+ data->flags = TEST_PANNING_BOTTOM_RIGHT | TEST_SUSPEND_RESUME;
+ run_test(data, test_plane_panning);
}
}
--
2.22.0
More information about the igt-dev
mailing list