summaryrefslogtreecommitdiff
path: root/drmdisplaycompositor.cpp
diff options
context:
space:
mode:
authorAdrian Salido <salidoa@google.com>2017-10-02 11:31:27 -0700
committerRobert Foss <robert.foss@collabora.com>2017-10-17 19:17:37 +0200
commit17561b095b6c77140a5cbc64aafccdc938941e23 (patch)
tree47322d38eecd5f184e778bc66ab3aa688891a98c /drmdisplaycompositor.cpp
parentee8f45b183406324156220e5326d42e85ae048c8 (diff)
drm_hwcomposer: make sure primary plane is allocated for squash
There are instances where the primary plane may have been disabled, look through disabled planes as well to find primary plane to use for squash. Signed-off-by: Adrian Salido <salidoa@google.com> Reviewed-by: Robert Foss <robert.foss@collabora.com>
Diffstat (limited to 'drmdisplaycompositor.cpp')
-rw-r--r--drmdisplaycompositor.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp
index 036a45e..8225726 100644
--- a/drmdisplaycompositor.cpp
+++ b/drmdisplaycompositor.cpp
@@ -933,10 +933,13 @@ int DrmDisplayCompositor::SquashFrame(DrmDisplayComposition *src,
goto move_layers_back;
}
- if (comp_plane.type() == DrmCompositionPlane::Type::kDisable) {
+ if (comp_plane.plane()->type() == DRM_PLANE_TYPE_PRIMARY)
+ squashed_comp.set_plane(comp_plane.plane());
+ else
dst->AddPlaneDisable(comp_plane.plane());
+
+ if (comp_plane.type() == DrmCompositionPlane::Type::kDisable)
continue;
- }
for (auto i : comp_plane.source_layers()) {
DrmHwcLayer &layer = src_layers[i];
@@ -955,11 +958,12 @@ int DrmDisplayCompositor::SquashFrame(DrmDisplayComposition *src,
squashed_comp.source_layers().push_back(
squashed_comp.source_layers().size());
}
+ }
- if (comp_plane.plane()->type() == DRM_PLANE_TYPE_PRIMARY)
- squashed_comp.set_plane(comp_plane.plane());
- else
- dst->AddPlaneDisable(comp_plane.plane());
+ if (squashed_comp.plane() == NULL) {
+ ALOGE("Primary plane not found for squash");
+ ret = -ENOTSUP;
+ goto move_layers_back;
}
ret = dst->SetLayers(dst_layers.data(), dst_layers.size(), false);