Loading include/input/Flags.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -84,7 +84,7 @@ constexpr auto flag_name() { template <typename F> template <typename F> constexpr std::optional<std::string_view> flag_name(F flag) { constexpr std::optional<std::string_view> flag_name(F flag) { using U = std::underlying_type_t<F>; using U = std::underlying_type_t<F>; auto idx = __builtin_ctzl(static_cast<U>(flag)); auto idx = static_cast<size_t>(__builtin_ctzl(static_cast<U>(flag))); return details::flag_names<F>[idx]; return details::flag_names<F>[idx]; } } Loading services/surfaceflinger/CompositionEngine/Android.bp +3 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ cc_defaults { "liblog", "liblog", "libnativewindow", "libnativewindow", "libprotobuf-cpp-lite", "libprotobuf-cpp-lite", "libSurfaceFlingerProp", "libtimestats", "libtimestats", "libui", "libui", "libutils", "libutils", Loading @@ -51,6 +52,8 @@ cc_library { name: "libcompositionengine", name: "libcompositionengine", defaults: ["libcompositionengine_defaults"], defaults: ["libcompositionengine_defaults"], srcs: [ srcs: [ "src/planner/LayerState.cpp", "src/planner/Planner.cpp", "src/ClientCompositionRequestCache.cpp", "src/ClientCompositionRequestCache.cpp", "src/CompositionEngine.cpp", "src/CompositionEngine.cpp", "src/Display.cpp", "src/Display.cpp", Loading services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -135,6 +135,9 @@ public: // Gets some kind of identifier for the layer for debug purposes. // Gets some kind of identifier for the layer for debug purposes. virtual const char* getDebugName() const = 0; virtual const char* getDebugName() const = 0; // Gets the sequence number: a serial number that uniquely identifies a Layer virtual int32_t getSequence() const = 0; }; }; // TODO(b/121291683): Specialize std::hash<> for sp<T> so these and others can // TODO(b/121291683): Specialize std::hash<> for sp<T> so these and others can Loading services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h +7 −1 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ #include <ui/Region.h> #include <ui/Region.h> #include <ui/Transform.h> #include <ui/Transform.h> #include <utils/StrongPointer.h> #include <utils/StrongPointer.h> #include <utils/Vector.h> #include "DisplayHardware/DisplayIdentification.h" #include "DisplayHardware/DisplayIdentification.h" Loading Loading @@ -183,6 +184,9 @@ public: // Outputs a string with a state dump // Outputs a string with a state dump virtual void dump(std::string&) const = 0; virtual void dump(std::string&) const = 0; // Outputs planner information virtual void dumpPlannerInfo(const Vector<String16>& args, std::string&) const = 0; // Gets the debug name for the output // Gets the debug name for the output virtual const std::string& getName() const = 0; virtual const std::string& getName() const = 0; Loading Loading @@ -264,7 +268,9 @@ protected: virtual void ensureOutputLayerIfVisible(sp<LayerFE>&, CoverageState&) = 0; virtual void ensureOutputLayerIfVisible(sp<LayerFE>&, CoverageState&) = 0; virtual void setReleasedLayers(const CompositionRefreshArgs&) = 0; virtual void setReleasedLayers(const CompositionRefreshArgs&) = 0; virtual void updateAndWriteCompositionState(const CompositionRefreshArgs&) = 0; virtual void updateCompositionState(const CompositionRefreshArgs&) = 0; virtual void planComposition() = 0; virtual void writeCompositionState(const CompositionRefreshArgs&) = 0; virtual void setColorTransform(const CompositionRefreshArgs&) = 0; virtual void setColorTransform(const CompositionRefreshArgs&) = 0; virtual void updateColorProfile(const CompositionRefreshArgs&) = 0; virtual void updateColorProfile(const CompositionRefreshArgs&) = 0; virtual void beginFrame() = 0; virtual void beginFrame() = 0; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h +10 −1 Original line number Original line Diff line number Diff line Loading @@ -28,10 +28,15 @@ namespace android::compositionengine::impl { namespace android::compositionengine::impl { namespace planner { class Planner; } // namespace planner // The implementation class contains the common implementation, but does not // The implementation class contains the common implementation, but does not // actually contain the final output state. // actually contain the final output state. class Output : public virtual compositionengine::Output { class Output : public virtual compositionengine::Output { public: public: Output(); ~Output() override; ~Output() override; // compositionengine::Output overrides // compositionengine::Output overrides Loading @@ -48,6 +53,7 @@ public: void setColorProfile(const ColorProfile&) override; void setColorProfile(const ColorProfile&) override; void dump(std::string&) const override; void dump(std::string&) const override; void dumpPlannerInfo(const Vector<String16>& args, std::string&) const override; const std::string& getName() const override; const std::string& getName() const override; void setName(const std::string&) override; void setName(const std::string&) override; Loading Loading @@ -77,7 +83,9 @@ public: void setReleasedLayers(const compositionengine::CompositionRefreshArgs&) override; void setReleasedLayers(const compositionengine::CompositionRefreshArgs&) override; void updateLayerStateFromFE(const CompositionRefreshArgs&) const override; void updateLayerStateFromFE(const CompositionRefreshArgs&) const override; void updateAndWriteCompositionState(const compositionengine::CompositionRefreshArgs&) override; void updateCompositionState(const compositionengine::CompositionRefreshArgs&) override; void planComposition() override; void writeCompositionState(const compositionengine::CompositionRefreshArgs&) override; void updateColorProfile(const compositionengine::CompositionRefreshArgs&) override; void updateColorProfile(const compositionengine::CompositionRefreshArgs&) override; void beginFrame() override; void beginFrame() override; void prepareFrame() override; void prepareFrame() override; Loading Loading @@ -130,6 +138,7 @@ private: ReleasedLayers mReleasedLayers; ReleasedLayers mReleasedLayers; OutputLayer* mLayerRequestingBackgroundBlur = nullptr; OutputLayer* mLayerRequestingBackgroundBlur = nullptr; std::unique_ptr<ClientCompositionRequestCache> mClientCompositionRequestCache; std::unique_ptr<ClientCompositionRequestCache> mClientCompositionRequestCache; std::unique_ptr<planner::Planner> mPlanner; }; }; // This template factory function standardizes the implementation details of the // This template factory function standardizes the implementation details of the Loading Loading
include/input/Flags.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -84,7 +84,7 @@ constexpr auto flag_name() { template <typename F> template <typename F> constexpr std::optional<std::string_view> flag_name(F flag) { constexpr std::optional<std::string_view> flag_name(F flag) { using U = std::underlying_type_t<F>; using U = std::underlying_type_t<F>; auto idx = __builtin_ctzl(static_cast<U>(flag)); auto idx = static_cast<size_t>(__builtin_ctzl(static_cast<U>(flag))); return details::flag_names<F>[idx]; return details::flag_names<F>[idx]; } } Loading
services/surfaceflinger/CompositionEngine/Android.bp +3 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ cc_defaults { "liblog", "liblog", "libnativewindow", "libnativewindow", "libprotobuf-cpp-lite", "libprotobuf-cpp-lite", "libSurfaceFlingerProp", "libtimestats", "libtimestats", "libui", "libui", "libutils", "libutils", Loading @@ -51,6 +52,8 @@ cc_library { name: "libcompositionengine", name: "libcompositionengine", defaults: ["libcompositionengine_defaults"], defaults: ["libcompositionengine_defaults"], srcs: [ srcs: [ "src/planner/LayerState.cpp", "src/planner/Planner.cpp", "src/ClientCompositionRequestCache.cpp", "src/ClientCompositionRequestCache.cpp", "src/CompositionEngine.cpp", "src/CompositionEngine.cpp", "src/Display.cpp", "src/Display.cpp", Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -135,6 +135,9 @@ public: // Gets some kind of identifier for the layer for debug purposes. // Gets some kind of identifier for the layer for debug purposes. virtual const char* getDebugName() const = 0; virtual const char* getDebugName() const = 0; // Gets the sequence number: a serial number that uniquely identifies a Layer virtual int32_t getSequence() const = 0; }; }; // TODO(b/121291683): Specialize std::hash<> for sp<T> so these and others can // TODO(b/121291683): Specialize std::hash<> for sp<T> so these and others can Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h +7 −1 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ #include <ui/Region.h> #include <ui/Region.h> #include <ui/Transform.h> #include <ui/Transform.h> #include <utils/StrongPointer.h> #include <utils/StrongPointer.h> #include <utils/Vector.h> #include "DisplayHardware/DisplayIdentification.h" #include "DisplayHardware/DisplayIdentification.h" Loading Loading @@ -183,6 +184,9 @@ public: // Outputs a string with a state dump // Outputs a string with a state dump virtual void dump(std::string&) const = 0; virtual void dump(std::string&) const = 0; // Outputs planner information virtual void dumpPlannerInfo(const Vector<String16>& args, std::string&) const = 0; // Gets the debug name for the output // Gets the debug name for the output virtual const std::string& getName() const = 0; virtual const std::string& getName() const = 0; Loading Loading @@ -264,7 +268,9 @@ protected: virtual void ensureOutputLayerIfVisible(sp<LayerFE>&, CoverageState&) = 0; virtual void ensureOutputLayerIfVisible(sp<LayerFE>&, CoverageState&) = 0; virtual void setReleasedLayers(const CompositionRefreshArgs&) = 0; virtual void setReleasedLayers(const CompositionRefreshArgs&) = 0; virtual void updateAndWriteCompositionState(const CompositionRefreshArgs&) = 0; virtual void updateCompositionState(const CompositionRefreshArgs&) = 0; virtual void planComposition() = 0; virtual void writeCompositionState(const CompositionRefreshArgs&) = 0; virtual void setColorTransform(const CompositionRefreshArgs&) = 0; virtual void setColorTransform(const CompositionRefreshArgs&) = 0; virtual void updateColorProfile(const CompositionRefreshArgs&) = 0; virtual void updateColorProfile(const CompositionRefreshArgs&) = 0; virtual void beginFrame() = 0; virtual void beginFrame() = 0; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h +10 −1 Original line number Original line Diff line number Diff line Loading @@ -28,10 +28,15 @@ namespace android::compositionengine::impl { namespace android::compositionengine::impl { namespace planner { class Planner; } // namespace planner // The implementation class contains the common implementation, but does not // The implementation class contains the common implementation, but does not // actually contain the final output state. // actually contain the final output state. class Output : public virtual compositionengine::Output { class Output : public virtual compositionengine::Output { public: public: Output(); ~Output() override; ~Output() override; // compositionengine::Output overrides // compositionengine::Output overrides Loading @@ -48,6 +53,7 @@ public: void setColorProfile(const ColorProfile&) override; void setColorProfile(const ColorProfile&) override; void dump(std::string&) const override; void dump(std::string&) const override; void dumpPlannerInfo(const Vector<String16>& args, std::string&) const override; const std::string& getName() const override; const std::string& getName() const override; void setName(const std::string&) override; void setName(const std::string&) override; Loading Loading @@ -77,7 +83,9 @@ public: void setReleasedLayers(const compositionengine::CompositionRefreshArgs&) override; void setReleasedLayers(const compositionengine::CompositionRefreshArgs&) override; void updateLayerStateFromFE(const CompositionRefreshArgs&) const override; void updateLayerStateFromFE(const CompositionRefreshArgs&) const override; void updateAndWriteCompositionState(const compositionengine::CompositionRefreshArgs&) override; void updateCompositionState(const compositionengine::CompositionRefreshArgs&) override; void planComposition() override; void writeCompositionState(const compositionengine::CompositionRefreshArgs&) override; void updateColorProfile(const compositionengine::CompositionRefreshArgs&) override; void updateColorProfile(const compositionengine::CompositionRefreshArgs&) override; void beginFrame() override; void beginFrame() override; void prepareFrame() override; void prepareFrame() override; Loading Loading @@ -130,6 +138,7 @@ private: ReleasedLayers mReleasedLayers; ReleasedLayers mReleasedLayers; OutputLayer* mLayerRequestingBackgroundBlur = nullptr; OutputLayer* mLayerRequestingBackgroundBlur = nullptr; std::unique_ptr<ClientCompositionRequestCache> mClientCompositionRequestCache; std::unique_ptr<ClientCompositionRequestCache> mClientCompositionRequestCache; std::unique_ptr<planner::Planner> mPlanner; }; }; // This template factory function standardizes the implementation details of the // This template factory function standardizes the implementation details of the Loading