diff options
author | Abhinav Kumar <quic_abhinavk@quicinc.com> | 2022-03-23 12:00:54 -0700 |
---|---|---|
committer | Abhinav Kumar <quic_abhinavk@quicinc.com> | 2022-03-28 12:50:16 -0700 |
commit | 49582e9bdf9378f2df62f911a15a2349ab8be0d1 (patch) | |
tree | 4b9bc44b06be32f3ae746afe88bf3dc193bf1679 /lib/igt_kms.c | |
parent | e0746d25f9d913e1235cda992690f7aebc83cccc (diff) |
lib/igt_kms: commit only the primary plane which is prepared
kms_atomic's test-only sub-test prepares only one primary plane
but igt_plane_commit() tries to commit all the primary planes.
For drivers having only one primary plane per display still
work fine but when there is more than one primary plane, since
FB_ID is not assigned for the second one, the API
igt_primary_plane_commit_legacy() ends up calling the CRTC
disable path incorrectly and hence failing the test.
Since only one primary plane has been prepared, commit only
that one by matching the primary_plane handle with the plane
which has been passed.
changes in v2:
- compare the primary_plane and current plane's handle
to determine whether the current plane is the primary
plane instead of comparing the index
Reviewed-by: Mark Yacoub <markyacoub@chromium.org>
Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Diffstat (limited to 'lib/igt_kms.c')
-rw-r--r-- | lib/igt_kms.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 34a2aa00..7838ff28 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -3189,6 +3189,8 @@ static int igt_plane_commit(igt_plane_t *plane, enum igt_commit_style s, bool fail_on_error) { + igt_plane_t *plane_primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY); + if (pipe->display->first_commit || (s == COMMIT_UNIVERSAL && igt_plane_is_prop_changed(plane, IGT_PLANE_ROTATION))) { int ret; @@ -3199,7 +3201,7 @@ static int igt_plane_commit(igt_plane_t *plane, if (plane->type == DRM_PLANE_TYPE_CURSOR && s == COMMIT_LEGACY) { return igt_cursor_commit_legacy(plane, pipe, fail_on_error); - } else if (plane->type == DRM_PLANE_TYPE_PRIMARY && s == COMMIT_LEGACY) { + } else if (plane == plane_primary && s == COMMIT_LEGACY) { return igt_primary_plane_commit_legacy(plane, pipe, fail_on_error); } else { |