Skip to contentSkip to conversation

drm_hwcomposer: make sure primary plane is allocated for squash

PATCH In review Adrian Salido 2 participants 2 messages Oct 2, 2017 – Oct 17, 2017

lore
Share & tools
lore
#0 lore raw

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
index a07d3588d1f5..80e3eba60ccf 100644
@@ -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
#1 lore raw

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.

---
 drmdisplaycompositor.cpp | 16 ++++++++++------

 1 file changed, 10 insertions(+), 6 deletions(-)
drmdisplaycompositor.cpp +0 -0
index a07d3588d1f5..80e3eba60ccf 100644
@@ -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;
+    goto move_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