SF: Use CompositionInfo to program HWComposer

Test: Build and run manually
Merged-Id: I3a4fd676781d0b7db1665430e0d84a6bc9b83f60
Change-Id: I3a4fd676781d0b7db1665430e0d84a6bc9b83f60
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 2c0dec9..8d5c496 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -647,6 +647,7 @@
 
     // set initial conditions (e.g. unblank default device)
     initializeDisplays();
+    ALOGV("Displays initialized");
 
     getBE().mRenderEngine->primeCache();
 
@@ -1971,6 +1972,18 @@
 
     mPreviousColorMatrix = colorMatrix;
 
+    for (size_t dpy = 0; dpy < mDisplays.size(); dpy++) {
+        sp<const DisplayDevice> displayDevice(mDisplays[dpy]);
+        const auto hwcId = displayDevice->getHwcDisplayId();
+        if (hwcId >= 0) {
+            const Vector<sp<Layer>>& currentLayers(
+                    displayDevice->getVisibleLayersSortedByZ());
+            for (auto& layer : currentLayers) {
+                layer->configureHwcLayer(displayDevice);
+            }
+        }
+    }
+
     for (size_t displayId = 0; displayId < mDisplays.size(); ++displayId) {
         auto& displayDevice = mDisplays[displayId];
         if (!displayDevice->isDisplayOn()) {
@@ -2762,6 +2775,7 @@
     }
 
     bool hasClientComposition = getBE().mHwc->hasClientComposition(hwcId);
+    ATRACE_INT("hasClientComposition", hasClientComposition);
     if (hasClientComposition) {
         ALOGV("hasClientComposition");
 
@@ -4872,7 +4886,6 @@
 
 }; // namespace android
 
-
 #if defined(__gl_h_)
 #error "don't include gl/gl.h in this file"
 #endif