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

Commit dd37bf40 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix HDR layer info listener to use the right area" into sc-dev am: e565bb81 am: 377242f2

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15245286

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


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