drm_hwcomposer: Dump active composition plane/crtc/dimension info

Should help with debugging if we can compare the SF layer info with
what drm_hwc is doing.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I333848b2141dff4c533f6dc22194826fdcf25dff
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp
index cb725a8..d129382 100644
--- a/drmdisplaycompositor.cpp
+++ b/drmdisplaycompositor.cpp
@@ -278,7 +278,17 @@
   if (active_composition_)
     active_composition_->FinishComposition();
 
+  ret = pthread_mutex_lock(&lock_);
+  if (ret)
+    ALOGE("Failed to acquire lock for active_composition swap");
+
   active_composition_.swap(composition);
+
+  if (!ret)
+    ret = pthread_mutex_unlock(&lock_);
+    if (ret)
+      ALOGE("Failed to release lock for active_composition swap");
+
   return ret;
 }
 
@@ -313,6 +323,12 @@
   struct timespec ts;
   ret = clock_gettime(CLOCK_MONOTONIC, &ts);
 
+  DrmCompositionLayerVector_t layers;
+  if (active_composition_)
+    layers = *active_composition_->GetCompositionLayers();
+  else
+    ret = -EAGAIN;
+
   ret |= pthread_mutex_unlock(&lock_);
   if (ret)
     return;
@@ -326,5 +342,30 @@
        << " fps=" << fps << "\n";
 
   dump_last_timestamp_ns_ = cur_ts;
+
+  *out << "---- DrmDisplayCompositor Layers: num=" << layers.size() << "\n";
+  for (DrmCompositionLayerVector_t::iterator iter = layers.begin();
+       iter != layers.end(); ++iter) {
+    hwc_layer_1_t *layer = &iter->layer;
+    DrmPlane *plane = iter->plane;
+
+    *out << "------ DrmDisplayCompositor Layer: plane=" << plane->id() << " ";
+
+    DrmCrtc *crtc = iter->crtc;
+    if (!crtc) {
+      *out << "disabled\n";
+      continue;
+    }
+
+    *out << "crtc=" << crtc->id() << " crtc[x/y/w/h]=" <<
+        layer->displayFrame.left << "/" << layer->displayFrame.top << "/" <<
+        layer->displayFrame.right - layer->displayFrame.left << "/" <<
+        layer->displayFrame.bottom - layer->displayFrame.top << " " <<
+        " src[x/y/w/h]=" << layer->sourceCropf.left << "/" <<
+        layer->sourceCropf.top << "/" <<
+        layer->sourceCropf.right - layer->sourceCropf.left << "/" <<
+        layer->sourceCropf.bottom - layer->sourceCropf.top << "\n";
+  }
+
 }
 }