[igt-dev] [PATCH i-g-t v1] tests/kms_universal_plane: Skip pageflip_test_pipe subtest if pipe has more than 1 primary plane
Jessica Zhang
quic_jesszhan at quicinc.com
Fri Apr 29 01:11:17 UTC 2022
Currently, IGT assumes that the first primary plane it encounters in
display->planes is the primary plane being assigned to the current pipe
in the driver [1]. However, this is not always the case when planes are
being shared between pipes and there are multiple possible primary
planes.
It's possible for IGT to set pipe->plane_primary to a primary plane
that's different from the one being used in the driver, since IGT uses
possible_crtcs to find the primary planes and stops at the first match.
Unfortunately, DRM doesn't expose which primary plane is being used by a
pipe, so let's skip pageflip_test_pipe for cases where there are
multiple possible primary planes.
[1]
https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/blob/master/lib/igt_kms.c#L2305
Signed-off-by: Jessica Zhang <quic_jesszhan at quicinc.com>
---
tests/kms_universal_plane.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index 3cb6d704a6ef..95cae2be1aaf 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -470,13 +470,25 @@ static void
pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
{
pageflip_test_t test = { .data = data };
- igt_plane_t *primary;
+ igt_plane_t *primary, *plane;
struct timeval timeout = { .tv_sec = 0, .tv_usec = 500 };
drmEventContext evctx = { .version = 2 };
fd_set fds;
+ int primary_plane_count = 0;
int ret = 0;
+ for_each_plane_on_pipe(&data->display, pipe, plane)
+ if (plane->type == DRM_PLANE_TYPE_PRIMARY)
+ primary_plane_count++;
+
+ /*
+ * Skip subtest when there are multiple primary planes since we
+ * aren't able to distinguish which primary plane is actually being
+ * assigned a pipe
+ */
+ igt_skip_on(primary_plane_count > 1);
+
igt_require_pipe(&data->display, pipe);
igt_output_set_pipe(output, pipe);
--
2.31.0
More information about the igt-dev
mailing list