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

Commit e30a5850 authored by Wiwit Rifa'i's avatar Wiwit Rifa'i Committed by Nathaniel Nifong
Browse files

Change override displayFrame to mBounds

Shrinks the area of the overridebuffer sampled by the dpu to the
boundaries of the layer(s) flattened in that buffer.

Bug: b/192058025

Test: composition unit tests, confirm dpu bandwidth is reduced,
confirm secondary displays are still working.

Change-Id: I46d0401d3a08a9c9019f4e1fef1b301e91e6d241
parent 501e21b7
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -381,12 +381,7 @@ void OutputLayer::writeOutputDependentGeometryStateToHWC(HWC2::Layer* hwcLayer,

    if (outputDependentState.overrideInfo.buffer != nullptr) {
        displayFrame = outputDependentState.overrideInfo.displayFrame;
        sourceCrop =
                FloatRect(0.f, 0.f,
                          static_cast<float>(outputDependentState.overrideInfo.buffer->getBuffer()
                                                     ->getWidth()),
                          static_cast<float>(outputDependentState.overrideInfo.buffer->getBuffer()
                                                     ->getHeight()));
        sourceCrop = displayFrame.toFloatRect();
    }

    ALOGV("Writing display frame [%d, %d, %d, %d]", displayFrame.left, displayFrame.top,
@@ -737,7 +732,7 @@ std::vector<LayerFE::LayerSettings> OutputLayer::getOverrideCompositionList() co
    // framebuffer space of the override buffer to layer space.
    const ProjectionSpace& layerSpace = getOutput().getState().layerStackSpace;
    const ui::Transform transform = getState().overrideInfo.displaySpace.getTransform(layerSpace);
    const Rect boundaries = transform.transform(getState().overrideInfo.displayFrame);
    const Rect boundaries = transform.transform(getState().overrideInfo.displaySpace.getContent());

    LayerFE::LayerSettings settings;
    settings.geometry = renderengine::Geometry{
+2 −2
Original line number Diff line number Diff line
@@ -315,7 +315,7 @@ bool Flattener::mergeWithCachedSets(const std::vector<const LayerState*>& layers
                        state.overrideInfo = {
                                .buffer = mNewCachedSet->getBuffer(),
                                .acquireFence = mNewCachedSet->getDrawFence(),
                                .displayFrame = mNewCachedSet->getTextureBounds(),
                                .displayFrame = mNewCachedSet->getBounds(),
                                .dataspace = mNewCachedSet->getOutputDataspace(),
                                .displaySpace = mNewCachedSet->getOutputSpace(),
                                .damageRegion = Region::INVALID_REGION,
@@ -355,7 +355,7 @@ bool Flattener::mergeWithCachedSets(const std::vector<const LayerState*>& layers
                state.overrideInfo = {
                        .buffer = currentLayerIter->getBuffer(),
                        .acquireFence = currentLayerIter->getDrawFence(),
                        .displayFrame = currentLayerIter->getTextureBounds(),
                        .displayFrame = currentLayerIter->getBounds(),
                        .dataspace = currentLayerIter->getOutputDataspace(),
                        .displaySpace = currentLayerIter->getOutputSpace(),
                        .damageRegion = Region(),
+1 −1
Original line number Diff line number Diff line
@@ -876,7 +876,7 @@ const half4 OutputLayerWriteStateToHWCTest::kColor{81.f / 255.f, 82.f / 255.f, 8
                                                   84.f / 255.f};
const Rect OutputLayerWriteStateToHWCTest::kDisplayFrame{1001, 1002, 1003, 10044};
const Rect OutputLayerWriteStateToHWCTest::kOverrideDisplayFrame{1002, 1003, 1004, 20044};
const FloatRect OutputLayerWriteStateToHWCTest::kOverrideSourceCrop{0.f, 0.f, 4.f, 5.f};
const FloatRect OutputLayerWriteStateToHWCTest::kOverrideSourceCrop{1002, 1003, 1004, 20044};
const Region OutputLayerWriteStateToHWCTest::kOutputSpaceVisibleRegion{
        Rect{1005, 1006, 1007, 1008}};
const Region OutputLayerWriteStateToHWCTest::kOverrideVisibleRegion{Rect{1006, 1007, 1008, 1009}};