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

Commit d0815162 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Don't blur too many layers" into tm-dev am: a3eac43d

parents 5f8d44b4 a3eac43d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ public:
        Region aboveOpaqueLayers;
        // The region of the output which should be considered dirty
        Region dirtyRegion;
        int32_t aboveBlurRequests = 0;
    };

    virtual ~Output();
+1 −0
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ protected:
private:
    void dirtyEntireOutput();
    compositionengine::OutputLayer* findLayerRequestingBackgroundComposition() const;
    void sanitizeOutputLayers() const;
    void finishPrepareFrame();
    ui::Dataspace getBestDataspace(ui::Dataspace*, bool*) const;
    compositionengine::Output::ColorProfile pickColorProfile(
+3 −0
Original line number Diff line number Diff line
@@ -94,6 +94,9 @@ struct OutputLayerCompositionState {
    // order to save power.
    Region outputSpaceBlockingRegionHint;

    // ignore blur requests if there's just too many on top of this layer
    bool ignoreBlur{false};

    // Overrides the buffer, acquire fence, and display frame stored in LayerFECompositionState
    struct {
        std::shared_ptr<renderengine::ExternalTexture> buffer = nullptr;
+1 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ public:
        const std::string& getName() const { return mState->getName(); }
        int32_t getBackgroundBlurRadius() const { return mState->getBackgroundBlurRadius(); }
        Rect getDisplayFrame() const { return mState->getDisplayFrame(); }
        bool hasBlurBehind() const { return mState->hasBlurBehind(); }
        const Region& getVisibleRegion() const { return mState->getVisibleRegion(); }
        const sp<GraphicBuffer>& getBuffer() const {
            return mState->getOutputLayer()->getLayerFE().getCompositionState()->buffer;
+8 −3
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ enum class LayerStateField : uint32_t {
    SolidColor            = 1u << 16,
    BackgroundBlurRadius  = 1u << 17,
    BlurRegions           = 1u << 18,
    BlursDisabled         = 1u << 19,
};
// clang-format on

@@ -232,7 +233,8 @@ public:
    Rect getDisplayFrame() const { return mDisplayFrame.get(); }
    const Region& getVisibleRegion() const { return mVisibleRegion.get(); }
    bool hasBlurBehind() const {
        return mBackgroundBlurRadius.get() > 0 || !mBlurRegions.get().empty();
        return (mBackgroundBlurRadius.get() > 0 || !mBlurRegions.get().empty()) &&
                !mIsBlursDisabled.get();
    }
    int32_t getBackgroundBlurRadius() const { return mBackgroundBlurRadius.get(); }
    aidl::android::hardware::graphics::composer3::Composition getCompositionType() const {
@@ -482,7 +484,10 @@ private:
                                      return hash;
                                  }};

    static const constexpr size_t kNumNonUniqueFields = 17;
    OutputLayerState<bool, LayerStateField::BlursDisabled> mIsBlursDisabled{
            [](auto layer) { return layer->getState().ignoreBlur; }};

    static const constexpr size_t kNumNonUniqueFields = 18;

    std::array<StateInterface*, kNumNonUniqueFields> getNonUniqueFields() {
        std::array<const StateInterface*, kNumNonUniqueFields> constFields =
@@ -501,7 +506,7 @@ private:
                &mAlpha,        &mLayerMetadata,  &mVisibleRegion,        &mOutputDataspace,
                &mPixelFormat,  &mColorTransform, &mCompositionType,      &mSidebandStream,
                &mBuffer,       &mSolidColor,     &mBackgroundBlurRadius, &mBlurRegions,
                &mFrameNumber,
                &mFrameNumber,  &mIsBlursDisabled
        };
    }
};
Loading