drm_hwcomposer: make sure primary plane is allocated for squash
PATCH 1/1 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.
--- drmdisplaycompositor.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)
drmdisplaycompositor.cpp +10 -6
@@ -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);
Signature · 6 lines
2.14.2.822.g60be5d43e6-goog _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hey Adrian,
This looks good to me. Pushed!
Sorry about the late reply, I was under the weather for a bit. Would you be interested in commit rights to this project?
Rob.
Quoted 41 lines · Adrian Salido
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 <[email protected]>---
drmdisplaycompositor.cpp | 16 ++++++++++------1 file changed, 10 insertions(+), 6 deletions(-)drmdisplaycompositor.cpp +0
-0@@ -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];drmdisplaycompositor.cpp +0
-0@@ -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
Quoted 8 lines
- dst->AddPlaneDisable(comp_plane.plane());
+ if (squashed_comp.plane()== NULL) {
+ ALOGE("Primary plane not found for squash");
+ ret =-ENOTSUP;
+ gotomove_layers_back;
}
ret =dst->SetLayers(dst_layers.data(), dst_layers.size(), false);
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel