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

Commit c9cab246 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 7538333 from e565bb81 to sc-d1-release

Change-Id: I40c378a73cfa0965880d26dadf0c7c5d2e824425
parents cf5227e3 e565bb81
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@
#include <compositionengine/OutputLayer.h>
#include <compositionengine/RenderSurface.h>
#include <compositionengine/impl/OutputCompositionState.h>
#include <compositionengine/impl/OutputLayerCompositionState.h>
#include <configstore/Utils.h>
#include <cutils/compiler.h>
#include <cutils/properties.h>
@@ -2309,21 +2310,24 @@ void SurfaceFlinger::postComposition() {
        HdrLayerInfoReporter::HdrLayerInfo info;
        int32_t maxArea = 0;
        mDrawingState.traverse([&, compositionDisplay = compositionDisplay](Layer* layer) {
            if (layer->isVisible() &&
                compositionDisplay->belongsInOutput(layer->getCompositionEngineLayerFE())) {
            const auto layerFe = layer->getCompositionEngineLayerFE();
            if (layer->isVisible() && compositionDisplay->belongsInOutput(layerFe)) {
                const Dataspace transfer =
                        static_cast<Dataspace>(layer->getDataSpace() & Dataspace::TRANSFER_MASK);
                const bool isHdr = (transfer == Dataspace::TRANSFER_ST2084 ||
                                    transfer == Dataspace::TRANSFER_HLG);

                if (isHdr) {
                    const auto* outputLayer = compositionDisplay->getOutputLayerForLayer(layerFe);
                    if (outputLayer) {
                        info.numberOfHdrLayers++;
                    auto bufferRect = layer->getCompositionState()->geomBufferSize;
                    int32_t area = bufferRect.width() * bufferRect.height();
                        const auto displayFrame = outputLayer->getState().displayFrame;
                        const int32_t area = displayFrame.width() * displayFrame.height();
                        if (area > maxArea) {
                            maxArea = area;
                        info.maxW = bufferRect.width();
                        info.maxH = bufferRect.height();
                            info.maxW = displayFrame.width();
                            info.maxH = displayFrame.height();
                        }
                    }
                }
            }