diff options
author | Adrian Salido <salidoa@google.com> | 2017-10-02 11:18:37 -0700 |
---|---|---|
committer | Adrian Salido <salidoa@google.com> | 2017-10-02 11:20:57 -0700 |
commit | 556f56cea7c73c9ab06acd49c1509f256c4b51c0 (patch) | |
tree | 076888aa1443c96337da2a0fc19d92b373e9757a | |
parent | d6ad94289ec909359d51eb1b605680cb5f223111 (diff) | |
download | drm_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.cpp | 16 |
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); |