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

Commit 2ca7b8f9 authored by Ady Abraham's avatar Ady Abraham Committed by Android (Google) Code Review
Browse files

Merge changes from topics "sf_flattener", "sf_planner" into sc-dev

* changes:
  SF: Add Planner flattener
  SF: Add Planner predictor
parents 834da01d 6166c312
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -43,8 +43,11 @@ cc_library {
    name: "libcompositionengine",
    name: "libcompositionengine",
    defaults: ["libcompositionengine_defaults"],
    defaults: ["libcompositionengine_defaults"],
    srcs: [
    srcs: [
        "src/planner/CachedSet.cpp",
        "src/planner/Flattener.cpp",
        "src/planner/LayerState.cpp",
        "src/planner/LayerState.cpp",
        "src/planner/Planner.cpp",
        "src/planner/Planner.cpp",
        "src/planner/Predictor.cpp",
        "src/ClientCompositionRequestCache.cpp",
        "src/ClientCompositionRequestCache.cpp",
        "src/CompositionEngine.cpp",
        "src/CompositionEngine.cpp",
        "src/Display.cpp",
        "src/Display.cpp",
+1 −0
Original line number Original line Diff line number Diff line
@@ -280,6 +280,7 @@ protected:
    virtual std::optional<base::unique_fd> composeSurfaces(
    virtual std::optional<base::unique_fd> composeSurfaces(
            const Region&, const compositionengine::CompositionRefreshArgs& refreshArgs) = 0;
            const Region&, const compositionengine::CompositionRefreshArgs& refreshArgs) = 0;
    virtual void postFramebuffer() = 0;
    virtual void postFramebuffer() = 0;
    virtual void renderCachedSets() = 0;
    virtual void chooseCompositionStrategy() = 0;
    virtual void chooseCompositionStrategy() = 0;
    virtual bool getSkipColorTransform() const = 0;
    virtual bool getSkipColorTransform() const = 0;
    virtual FrameFences presentAndGetFrameFences() = 0;
    virtual FrameFences presentAndGetFrameFences() = 0;
+9 −3
Original line number Original line Diff line number Diff line
@@ -30,6 +30,8 @@
#include "DisplayHardware/ComposerHal.h"
#include "DisplayHardware/ComposerHal.h"
#include "DisplayHardware/DisplayIdentification.h"
#include "DisplayHardware/DisplayIdentification.h"


#include "LayerFE.h"

// TODO(b/129481165): remove the #pragma below and fix conversion issues
// TODO(b/129481165): remove the #pragma below and fix conversion issues
#pragma clang diagnostic pop // ignored "-Wconversion -Wextra"
#pragma clang diagnostic pop // ignored "-Wconversion -Wextra"


@@ -43,7 +45,6 @@ namespace compositionengine {


class CompositionEngine;
class CompositionEngine;
class Output;
class Output;
class LayerFE;


namespace impl {
namespace impl {
struct OutputLayerCompositionState;
struct OutputLayerCompositionState;
@@ -88,8 +89,9 @@ public:


    // 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
    // skipped.
    // skipped. If skipLayer is true, then the alpha of the layer is forced to
    virtual void writeStateToHWC(bool includeGeometry) = 0;
    // 0 so that HWC will ignore it.
    virtual void writeStateToHWC(bool includeGeometry, bool skipLayer) = 0;


    // Updates the cursor position with the HWC
    // Updates the cursor position with the HWC
    virtual void writeCursorPositionToHWC() const = 0;
    virtual void writeCursorPositionToHWC() const = 0;
@@ -115,6 +117,10 @@ public:
    // Returns true if the composition settings scale pixels
    // Returns true if the composition settings scale pixels
    virtual bool needsFiltering() const = 0;
    virtual bool needsFiltering() const = 0;


    // Returns a composition list to be used by RenderEngine if the layer has been overridden
    // during the composition process
    virtual std::vector<LayerFE::LayerSettings> getOverrideCompositionList() const = 0;

    // Debugging
    // Debugging
    virtual void dump(std::string& result) const = 0;
    virtual void dump(std::string& result) const = 0;
};
};
+2 −0
Original line number Original line Diff line number Diff line
@@ -94,12 +94,14 @@ public:
    std::optional<base::unique_fd> composeSurfaces(
    std::optional<base::unique_fd> composeSurfaces(
            const Region&, const compositionengine::CompositionRefreshArgs& refreshArgs) override;
            const Region&, const compositionengine::CompositionRefreshArgs& refreshArgs) override;
    void postFramebuffer() override;
    void postFramebuffer() override;
    void renderCachedSets() override;
    void cacheClientCompositionRequests(uint32_t) override;
    void cacheClientCompositionRequests(uint32_t) override;


    // Testing
    // Testing
    const ReleasedLayers& getReleasedLayersForTest() const;
    const ReleasedLayers& getReleasedLayersForTest() const;
    void setDisplayColorProfileForTest(std::unique_ptr<compositionengine::DisplayColorProfile>);
    void setDisplayColorProfileForTest(std::unique_ptr<compositionengine::DisplayColorProfile>);
    void setRenderSurfaceForTest(std::unique_ptr<compositionengine::RenderSurface>);
    void setRenderSurfaceForTest(std::unique_ptr<compositionengine::RenderSurface>);
    bool plannerEnabled() const { return mPlanner != nullptr; }


protected:
protected:
    std::unique_ptr<compositionengine::OutputLayer> createOutputLayer(const sp<LayerFE>&) const;
    std::unique_ptr<compositionengine::OutputLayer> createOutputLayer(const sp<LayerFE>&) const;
+5 −2
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@
#include <memory>
#include <memory>
#include <string>
#include <string>


#include <compositionengine/LayerFE.h>
#include <compositionengine/OutputLayer.h>
#include <compositionengine/OutputLayer.h>
#include <ui/FloatRect.h>
#include <ui/FloatRect.h>
#include <ui/Rect.h>
#include <ui/Rect.h>
@@ -41,7 +42,7 @@ public:


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


    HWC2::Layer* getHwcLayer() const override;
    HWC2::Layer* getHwcLayer() const override;
@@ -51,6 +52,7 @@ public:
    void prepareForDeviceLayerRequests() override;
    void prepareForDeviceLayerRequests() override;
    void applyDeviceLayerRequest(Hwc2::IComposerClient::LayerRequest request) override;
    void applyDeviceLayerRequest(Hwc2::IComposerClient::LayerRequest request) override;
    bool needsFiltering() const override;
    bool needsFiltering() const override;
    std::vector<LayerFE::LayerSettings> getOverrideCompositionList() const override;


    void dump(std::string&) const override;
    void dump(std::string&) const override;


@@ -66,7 +68,8 @@ protected:
private:
private:
    Rect calculateInitialCrop() const;
    Rect calculateInitialCrop() const;
    void writeOutputDependentGeometryStateToHWC(HWC2::Layer*, Hwc2::IComposerClient::Composition);
    void writeOutputDependentGeometryStateToHWC(HWC2::Layer*, Hwc2::IComposerClient::Composition);
    void writeOutputIndependentGeometryStateToHWC(HWC2::Layer*, const LayerFECompositionState&);
    void writeOutputIndependentGeometryStateToHWC(HWC2::Layer*, const LayerFECompositionState&,
                                                  bool skipLayer);
    void writeOutputDependentPerFrameStateToHWC(HWC2::Layer*);
    void writeOutputDependentPerFrameStateToHWC(HWC2::Layer*);
    void writeOutputIndependentPerFrameStateToHWC(HWC2::Layer*, const LayerFECompositionState&);
    void writeOutputIndependentPerFrameStateToHWC(HWC2::Layer*, const LayerFECompositionState&);
    void writeSolidColorStateToHWC(HWC2::Layer*, const LayerFECompositionState&);
    void writeSolidColorStateToHWC(HWC2::Layer*, const LayerFECompositionState&);
Loading