aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Salido <salidoa@google.com>2017-10-02 11:18:37 -0700
committerAdrian Salido <salidoa@google.com>2017-10-02 11:20:57 -0700
commit556f56cea7c73c9ab06acd49c1509f256c4b51c0 (patch)
tree076888aa1443c96337da2a0fc19d92b373e9757a
parentd6ad94289ec909359d51eb1b605680cb5f223111 (diff)
downloaddrm_hwcomposer-556f56cea7c73c9ab06acd49c1509f256c4b51c0.tar.gz
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. Change-Id: I615b4d94e852d21fa647ede6f2b53d55705d3011 Fixes: 66931966 Signed-off-by: Adrian Salido <salidoa@google.com>
-rw-r--r--drmdisplaycompositor.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp
index 3d27f13..14b87aa 100644
--- a/drmdisplaycompositor.cpp
+++ b/drmdisplaycompositor.cpp
@@ -982,10 +982,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];
@@ -1004,11 +1007,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);