summaryrefslogtreecommitdiff
path: root/lib/igt_kms.c
diff options
context:
space:
mode:
authorAbhinav Kumar <quic_abhinavk@quicinc.com>2022-03-23 12:00:54 -0700
committerAbhinav Kumar <quic_abhinavk@quicinc.com>2022-03-28 12:50:16 -0700
commit49582e9bdf9378f2df62f911a15a2349ab8be0d1 (patch)
tree4b9bc44b06be32f3ae746afe88bf3dc193bf1679 /lib/igt_kms.c
parente0746d25f9d913e1235cda992690f7aebc83cccc (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.c4
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 {