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

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

Merge "CompositionEngine: base inverse transform on primary display" into rvc-dev am: 2f116e22

Change-Id: I7ca0b23c5527cb23f1fe7db2ecadd2e46cf9a03a
parents bd28e1cc 2f116e22
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@
#include <compositionengine/LayerFE.h>
#include <compositionengine/LayerFE.h>
#include <compositionengine/OutputColorSetting.h>
#include <compositionengine/OutputColorSetting.h>
#include <math/mat4.h>
#include <math/mat4.h>
#include <ui/Transform.h>


namespace android::compositionengine {
namespace android::compositionengine {


@@ -57,6 +58,9 @@ struct CompositionRefreshArgs {
    // Forces a color mode on the outputs being refreshed
    // Forces a color mode on the outputs being refreshed
    ui::ColorMode forceOutputColorMode{ui::ColorMode::NATIVE};
    ui::ColorMode forceOutputColorMode{ui::ColorMode::NATIVE};


    // Used to correctly apply an inverse-display buffer transform if applicable
    ui::Transform::RotationFlags internalDisplayRotationFlags{ui::Transform::ROT_0};

    // If true, GPU clocks will be increased when rendering blurs
    // If true, GPU clocks will be increased when rendering blurs
    bool blursAreExpensive{false};
    bool blursAreExpensive{false};


+7 −1
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@
#include <optional>
#include <optional>
#include <string>
#include <string>


#include <ui/Transform.h>
#include <utils/StrongPointer.h>
#include <utils/StrongPointer.h>


// TODO(b/129481165): remove the #pragma below and fix conversion issues
// TODO(b/129481165): remove the #pragma below and fix conversion issues
@@ -77,7 +78,12 @@ public:


    // Recalculates the state of the output layer from the output-independent
    // Recalculates the state of the output layer from the output-independent
    // layer. If includeGeometry is false, the geometry state can be skipped.
    // layer. If includeGeometry is false, the geometry state can be skipped.
    virtual void updateCompositionState(bool includeGeometry, bool forceClientComposition) = 0;
    // internalDisplayRotationFlags must be set to the rotation flags for the
    // internal display, and is used to properly compute the inverse-display
    // transform, if needed.
    virtual void updateCompositionState(
            bool includeGeometry, bool forceClientComposition,
            ui::Transform::RotationFlags internalDisplayRotationFlags) = 0;


    // Writes the geometry state to the HWC, or does nothing if this layer does
    // Writes the geometry state to the HWC, or does nothing if this layer does
    // not use the HWC. If includeGeometry is false, the geometry state can be
    // not use the HWC. If includeGeometry is false, the geometry state can be
+4 −2
Original line number Original line Diff line number Diff line
@@ -39,7 +39,8 @@ public:


    void setHwcLayer(std::shared_ptr<HWC2::Layer>) override;
    void setHwcLayer(std::shared_ptr<HWC2::Layer>) override;


    void updateCompositionState(bool includeGeometry, bool forceClientComposition) override;
    void updateCompositionState(bool includeGeometry, bool forceClientComposition,
                                ui::Transform::RotationFlags) override;
    void writeStateToHWC(bool) override;
    void writeStateToHWC(bool) override;
    void writeCursorPositionToHWC() const override;
    void writeCursorPositionToHWC() const override;


@@ -55,7 +56,8 @@ public:


    virtual FloatRect calculateOutputSourceCrop() const;
    virtual FloatRect calculateOutputSourceCrop() const;
    virtual Rect calculateOutputDisplayFrame() const;
    virtual Rect calculateOutputDisplayFrame() const;
    virtual uint32_t calculateOutputRelativeBufferTransform() const;
    virtual uint32_t calculateOutputRelativeBufferTransform(
            uint32_t internalDisplayRotationFlags) const;


protected:
protected:
    // Implemented by the final implementation for the final state it uses.
    // Implemented by the final implementation for the final state it uses.
+1 −1
Original line number Original line Diff line number Diff line
@@ -38,7 +38,7 @@ public:
    MOCK_CONST_METHOD0(getState, const impl::OutputLayerCompositionState&());
    MOCK_CONST_METHOD0(getState, const impl::OutputLayerCompositionState&());
    MOCK_METHOD0(editState, impl::OutputLayerCompositionState&());
    MOCK_METHOD0(editState, impl::OutputLayerCompositionState&());


    MOCK_METHOD2(updateCompositionState, void(bool, bool));
    MOCK_METHOD3(updateCompositionState, void(bool, bool, ui::Transform::RotationFlags));
    MOCK_METHOD1(writeStateToHWC, void(bool));
    MOCK_METHOD1(writeStateToHWC, void(bool));
    MOCK_CONST_METHOD0(writeCursorPositionToHWC, void());
    MOCK_CONST_METHOD0(writeCursorPositionToHWC, void());


+2 −1
Original line number Original line Diff line number Diff line
@@ -588,7 +588,8 @@ void Output::updateAndWriteCompositionState(
    for (auto* layer : getOutputLayersOrderedByZ()) {
    for (auto* layer : getOutputLayersOrderedByZ()) {
        layer->updateCompositionState(refreshArgs.updatingGeometryThisFrame,
        layer->updateCompositionState(refreshArgs.updatingGeometryThisFrame,
                                      refreshArgs.devOptForceClientComposition ||
                                      refreshArgs.devOptForceClientComposition ||
                                              forceClientComposition);
                                              forceClientComposition,
                                      refreshArgs.internalDisplayRotationFlags);


        if (mLayerRequestingBackgroundBlur == layer) {
        if (mLayerRequestingBackgroundBlur == layer) {
            forceClientComposition = false;
            forceClientComposition = false;
Loading