Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73939a9a authored by Yichi Chen's avatar Yichi Chen Committed by Android (Google) Code Review
Browse files

Merge "SF: Restore geometry state when it had been overridden" into sc-dev

parents 910d8366 413d46ae
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -115,6 +115,9 @@ struct OutputLayerCompositionState {
        // The buffer cache for this layer. This is used to lower the
        // cost of sending reused buffers to the HWC.
        HwcBufferCache hwcBufferCache;

        // Set to true when overridden info has been sent to HW composer
        bool stateOverridden = false;
    };

    // The HWC state is optional, and is only set up if there is any potential
+1 −4
Original line number Diff line number Diff line
@@ -722,10 +722,7 @@ void Output::writeCompositionState(const compositionengine::CompositionRefreshAr
            previousOverride = layer->getState().overrideInfo.buffer;
        }

        // TODO(b/181172795): We now update geometry for all flattened layers. We should update it
        // only when the geometry actually changes
        const bool includeGeometry = refreshArgs.updatingGeometryThisFrame ||
                layer->getState().overrideInfo.buffer != nullptr || skipLayer;
        const bool includeGeometry = refreshArgs.updatingGeometryThisFrame;
        layer->writeStateToHWC(includeGeometry, skipLayer);
    }
}
+7 −1
Original line number Diff line number Diff line
@@ -333,7 +333,11 @@ void OutputLayer::writeStateToHWC(bool includeGeometry, bool skipLayer) {

    auto requestedCompositionType = outputIndependentState->compositionType;

    if (includeGeometry) {
    // TODO(b/181172795): We now update geometry for all flattened layers. We should update it
    // only when the geometry actually changes
    const bool isOverridden = state.overrideInfo.buffer != nullptr;
    const bool prevOverridden = state.hwc->stateOverridden;
    if (isOverridden || prevOverridden || skipLayer || includeGeometry) {
        writeOutputDependentGeometryStateToHWC(hwcLayer.get(), requestedCompositionType);
        writeOutputIndependentGeometryStateToHWC(hwcLayer.get(), *outputIndependentState,
                                                 skipLayer);
@@ -346,6 +350,8 @@ void OutputLayer::writeStateToHWC(bool includeGeometry, bool skipLayer) {

    // Always set the layer color after setting the composition type.
    writeSolidColorStateToHWC(hwcLayer.get(), *outputIndependentState);

    editState().hwc->stateOverridden = isOverridden;
}

void OutputLayer::writeOutputDependentGeometryStateToHWC(