surfacefligner: revert recent BE/FE split changes

This reverts the following changes:

  "SF: Restructure message refresh"
  "SF: Add sideband stream setup to setUpHwComposer"
  "SF: Support SolidColor layers in setUpHwComposer"
  "SF: Move config of HWComposer to setupHwComposer"
  "SF: Use CompositionInfo to program HWComposer"

Bug: 76421986
Bug: 76426897
Bug: 76432611
Test: manual and CTS
Change-Id: Ia0c5edaa3a077ba148c8880bee740381fd72f2ca
diff --git a/services/surfaceflinger/BufferLayer.cpp b/services/surfaceflinger/BufferLayer.cpp
index 916576a..7dad780 100644
--- a/services/surfaceflinger/BufferLayer.cpp
+++ b/services/surfaceflinger/BufferLayer.cpp
@@ -593,14 +593,32 @@
     const auto& viewport = displayDevice->getViewport();
     Region visible = tr.transform(visibleRegion.intersect(viewport));
     auto hwcId = displayDevice->getHwcDisplayId();
+    auto& hwcInfo = getBE().mHwcLayers[hwcId];
+    auto& hwcLayer = hwcInfo.layer;
+    auto error = (*hwcLayer)->setVisibleRegion(visible);
+    if (error != HWC2::Error::None) {
+        ALOGE("[%s] Failed to set visible region: %s (%d)", mName.string(),
+              to_string(error).c_str(), static_cast<int32_t>(error));
+        visible.dump(LOG_TAG);
+    }
 
-    getBE().compositionInfo.hwc.visibleRegion = visible;
-    getBE().compositionInfo.hwc.surfaceDamage = surfaceDamageRegion;
+    error = (*hwcLayer)->setSurfaceDamage(surfaceDamageRegion);
+    if (error != HWC2::Error::None) {
+        ALOGE("[%s] Failed to set surface damage: %s (%d)", mName.string(),
+              to_string(error).c_str(), static_cast<int32_t>(error));
+        surfaceDamageRegion.dump(LOG_TAG);
+    }
 
     // Sideband layers
     if (getBE().compositionInfo.hwc.sidebandStream.get()) {
         setCompositionType(hwcId, HWC2::Composition::Sideband);
-        getBE().compositionInfo.compositionType = HWC2::Composition::Sideband;
+        ALOGV("[%s] Requesting Sideband composition", mName.string());
+        error = (*hwcLayer)->setSidebandStream(getBE().compositionInfo.hwc.sidebandStream->handle());
+        if (error != HWC2::Error::None) {
+            ALOGE("[%s] Failed to set sideband stream %p: %s (%d)", mName.string(),
+                  getBE().compositionInfo.hwc.sidebandStream->handle(), to_string(error).c_str(),
+                  static_cast<int32_t>(error));
+        }
         return;
     }
 
@@ -613,13 +631,32 @@
         setCompositionType(hwcId, HWC2::Composition::Device);
     }
 
-    getBE().compositionInfo.hwc.dataspace = mDrawingState.dataSpace;
-    getBE().compositionInfo.hwc.hdrMetadata = mConsumer->getCurrentHdrMetadata();
+    ALOGV("setPerFrameData: dataspace = %d", mDrawingState.dataSpace);
+    error = (*hwcLayer)->setDataspace(mDrawingState.dataSpace);
+    if (error != HWC2::Error::None) {
+        ALOGE("[%s] Failed to set dataspace %d: %s (%d)", mName.string(), mDrawingState.dataSpace,
+              to_string(error).c_str(), static_cast<int32_t>(error));
+    }
+
+    const HdrMetadata& metadata = mConsumer->getCurrentHdrMetadata();
+    error = (*hwcLayer)->setHdrMetadata(metadata);
+    if (error != HWC2::Error::None && error != HWC2::Error::Unsupported) {
+        ALOGE("[%s] Failed to set hdrMetadata: %s (%d)", mName.string(),
+              to_string(error).c_str(), static_cast<int32_t>(error));
+    }
+
+    uint32_t hwcSlot = 0;
+    sp<GraphicBuffer> hwcBuffer;
+    getBE().mHwcLayers[hwcId].bufferCache.getHwcBuffer(mActiveBufferSlot, mActiveBuffer, &hwcSlot,
+                                                       &hwcBuffer);
 
     auto acquireFence = mConsumer->getCurrentFence();
-    getBE().compositionInfo.mBufferSlot = mActiveBufferSlot;
-    getBE().compositionInfo.mBuffer = mActiveBuffer;
-    getBE().compositionInfo.hwc.fence = acquireFence;
+    error = (*hwcLayer)->setBuffer(hwcSlot, hwcBuffer, acquireFence);
+    if (error != HWC2::Error::None) {
+        ALOGE("[%s] Failed to set buffer %p: %s (%d)", mName.string(),
+              getBE().compositionInfo.mBuffer->handle, to_string(error).c_str(),
+              static_cast<int32_t>(error));
+    }
 }
 
 bool BufferLayer::isOpaque(const Layer::State& s) const {
@@ -793,17 +830,27 @@
     texCoords[2] = vec2(right, 1.0f - bottom);
     texCoords[3] = vec2(right, 1.0f - top);
 
-    getBE().compositionInfo.re.preMultipliedAlpha = mPremultipliedAlpha;
-    getBE().compositionInfo.re.opaque = isOpaque(s);
-    getBE().compositionInfo.re.disableTexture = false;
-    getBE().compositionInfo.re.color = getColor();
-    getBE().compositionInfo.hwc.dataspace = mCurrentState.dataSpace;
+    //getBE().compositionInfo.re.preMultipliedAlpha = mPremultipliedAlpha;
+    //getBE().compositionInfo.re.opaque = isOpaque(s);
+    //getBE().compositionInfo.re.disableTexture = false;
+    //getBE().compositionInfo.re.color = getColor();
+    //getBE().compositionInfo.hwc.dataspace = mCurrentState.dataSpace;
 
+  auto& engine(mFlinger->getRenderEngine());
+    engine.setupLayerBlending(mPremultipliedAlpha, isOpaque(s), false /* disableTexture */,
+                              getColor());
+    engine.setSourceDataSpace(mCurrentState.dataSpace);
+    
     if (mCurrentState.dataSpace == HAL_DATASPACE_BT2020_ITU_PQ &&
         mConsumer->getCurrentApi() == NATIVE_WINDOW_API_MEDIA &&
         getBE().compositionInfo.mBuffer->getPixelFormat() == HAL_PIXEL_FORMAT_RGBA_1010102) {
-        getBE().compositionInfo.re.Y410BT2020 = true;
+        engine.setSourceY410BT2020(true);
     }
+
+    engine.drawMesh(getBE().mMesh);
+    engine.disableBlending();
+
+    engine.setSourceY410BT2020(false);
 }
 
 uint32_t BufferLayer::getProducerStickyTransform() const {