Loading libs/gui/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,10 @@ cc_defaults { "bufferqueue/2.0/types.cpp", ], whole_static_libs: [ "LibGuiProperties", ], shared_libs: [ "android.hardware.graphics.bufferqueue@1.0", "android.hardware.graphics.bufferqueue@2.0", Loading libs/gui/FrameTimestamps.cpp +11 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define LOG_TAG "FrameEvents" #include <LibGuiProperties.sysprop.h> #include <android-base/stringprintf.h> #include <cutils/compiler.h> // For CC_[UN]LIKELY #include <inttypes.h> Loading Loading @@ -167,6 +168,11 @@ struct FrameNumberEqual { } // namespace const size_t FrameEventHistory::MAX_FRAME_HISTORY = sysprop::LibGuiProperties::frame_event_history_size().value_or(8); FrameEventHistory::FrameEventHistory() : mFrames(std::vector<FrameEvents>(MAX_FRAME_HISTORY)) {} FrameEventHistory::~FrameEventHistory() = default; FrameEvents* FrameEventHistory::getFrame(uint64_t frameNumber) { Loading Loading @@ -348,6 +354,9 @@ std::shared_ptr<FenceTime> ProducerFrameEventHistory::createFenceTime( // ConsumerFrameEventHistory // ============================================================================ ConsumerFrameEventHistory::ConsumerFrameEventHistory() : mFramesDirty(std::vector<FrameEventDirtyFields>(MAX_FRAME_HISTORY)) {} ConsumerFrameEventHistory::~ConsumerFrameEventHistory() = default; void ConsumerFrameEventHistory::onDisconnect() { Loading Loading @@ -443,9 +452,8 @@ void ConsumerFrameEventHistory::addRelease(uint64_t frameNumber, mFramesDirty[mReleaseOffset].setDirty<FrameEvent::RELEASE>(); } void ConsumerFrameEventHistory::getFrameDelta( FrameEventHistoryDelta* delta, const std::array<FrameEvents, MAX_FRAME_HISTORY>::iterator& frame) { void ConsumerFrameEventHistory::getFrameDelta(FrameEventHistoryDelta* delta, const std::vector<FrameEvents>::iterator& frame) { mProducerWantsEvents = true; size_t i = static_cast<size_t>(std::distance(mFrames.begin(), frame)); if (mFramesDirty[i].anyDirty()) { Loading libs/gui/include/gui/FrameTimestamps.h +6 −4 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ struct CompositorTiming { // producer via deltas. class FrameEventHistory { public: FrameEventHistory(); virtual ~FrameEventHistory(); FrameEvents* getFrame(uint64_t frameNumber); Loading @@ -113,10 +114,10 @@ public: void checkFencesForCompletion(); void dump(std::string& outString) const; static constexpr size_t MAX_FRAME_HISTORY = 8; static const size_t MAX_FRAME_HISTORY; protected: std::array<FrameEvents, MAX_FRAME_HISTORY> mFrames; std::vector<FrameEvents> mFrames; CompositorTiming mCompositorTiming; }; Loading Loading @@ -204,6 +205,7 @@ private: // The consumer's interface to FrameEventHistory class ConsumerFrameEventHistory : public FrameEventHistory { public: ConsumerFrameEventHistory(); ~ConsumerFrameEventHistory() override; void onDisconnect(); Loading @@ -224,9 +226,9 @@ public: private: void getFrameDelta(FrameEventHistoryDelta* delta, const std::array<FrameEvents, MAX_FRAME_HISTORY>::iterator& frame); const std::vector<FrameEvents>::iterator& frame); std::array<FrameEventDirtyFields, MAX_FRAME_HISTORY> mFramesDirty; std::vector<FrameEventDirtyFields> mFramesDirty; size_t mQueueOffset{0}; size_t mCompositionOffset{0}; Loading libs/gui/sysprop/Android.bp 0 → 100644 +7 −0 Original line number Diff line number Diff line sysprop_library { name: "LibGuiProperties", srcs: ["*.sysprop"], api_packages: ["android.sysprop"], property_owner: "Platform", vendor_available: true, } libs/gui/sysprop/LibGuiProperties.sysprop 0 → 100644 +25 −0 Original line number Diff line number Diff line # Copyright (C) 2020 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. module: "android.sysprop.LibGuiProperties" owner: Platform # Indicates how many elements should be present in the frame event histories. prop { api_name: "frame_event_history_size" type: Integer scope: Public access: Readonly prop_name: "ro.lib_gui.frame_event_history_size" } Loading
libs/gui/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,10 @@ cc_defaults { "bufferqueue/2.0/types.cpp", ], whole_static_libs: [ "LibGuiProperties", ], shared_libs: [ "android.hardware.graphics.bufferqueue@1.0", "android.hardware.graphics.bufferqueue@2.0", Loading
libs/gui/FrameTimestamps.cpp +11 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define LOG_TAG "FrameEvents" #include <LibGuiProperties.sysprop.h> #include <android-base/stringprintf.h> #include <cutils/compiler.h> // For CC_[UN]LIKELY #include <inttypes.h> Loading Loading @@ -167,6 +168,11 @@ struct FrameNumberEqual { } // namespace const size_t FrameEventHistory::MAX_FRAME_HISTORY = sysprop::LibGuiProperties::frame_event_history_size().value_or(8); FrameEventHistory::FrameEventHistory() : mFrames(std::vector<FrameEvents>(MAX_FRAME_HISTORY)) {} FrameEventHistory::~FrameEventHistory() = default; FrameEvents* FrameEventHistory::getFrame(uint64_t frameNumber) { Loading Loading @@ -348,6 +354,9 @@ std::shared_ptr<FenceTime> ProducerFrameEventHistory::createFenceTime( // ConsumerFrameEventHistory // ============================================================================ ConsumerFrameEventHistory::ConsumerFrameEventHistory() : mFramesDirty(std::vector<FrameEventDirtyFields>(MAX_FRAME_HISTORY)) {} ConsumerFrameEventHistory::~ConsumerFrameEventHistory() = default; void ConsumerFrameEventHistory::onDisconnect() { Loading Loading @@ -443,9 +452,8 @@ void ConsumerFrameEventHistory::addRelease(uint64_t frameNumber, mFramesDirty[mReleaseOffset].setDirty<FrameEvent::RELEASE>(); } void ConsumerFrameEventHistory::getFrameDelta( FrameEventHistoryDelta* delta, const std::array<FrameEvents, MAX_FRAME_HISTORY>::iterator& frame) { void ConsumerFrameEventHistory::getFrameDelta(FrameEventHistoryDelta* delta, const std::vector<FrameEvents>::iterator& frame) { mProducerWantsEvents = true; size_t i = static_cast<size_t>(std::distance(mFrames.begin(), frame)); if (mFramesDirty[i].anyDirty()) { Loading
libs/gui/include/gui/FrameTimestamps.h +6 −4 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ struct CompositorTiming { // producer via deltas. class FrameEventHistory { public: FrameEventHistory(); virtual ~FrameEventHistory(); FrameEvents* getFrame(uint64_t frameNumber); Loading @@ -113,10 +114,10 @@ public: void checkFencesForCompletion(); void dump(std::string& outString) const; static constexpr size_t MAX_FRAME_HISTORY = 8; static const size_t MAX_FRAME_HISTORY; protected: std::array<FrameEvents, MAX_FRAME_HISTORY> mFrames; std::vector<FrameEvents> mFrames; CompositorTiming mCompositorTiming; }; Loading Loading @@ -204,6 +205,7 @@ private: // The consumer's interface to FrameEventHistory class ConsumerFrameEventHistory : public FrameEventHistory { public: ConsumerFrameEventHistory(); ~ConsumerFrameEventHistory() override; void onDisconnect(); Loading @@ -224,9 +226,9 @@ public: private: void getFrameDelta(FrameEventHistoryDelta* delta, const std::array<FrameEvents, MAX_FRAME_HISTORY>::iterator& frame); const std::vector<FrameEvents>::iterator& frame); std::array<FrameEventDirtyFields, MAX_FRAME_HISTORY> mFramesDirty; std::vector<FrameEventDirtyFields> mFramesDirty; size_t mQueueOffset{0}; size_t mCompositionOffset{0}; Loading
libs/gui/sysprop/Android.bp 0 → 100644 +7 −0 Original line number Diff line number Diff line sysprop_library { name: "LibGuiProperties", srcs: ["*.sysprop"], api_packages: ["android.sysprop"], property_owner: "Platform", vendor_available: true, }
libs/gui/sysprop/LibGuiProperties.sysprop 0 → 100644 +25 −0 Original line number Diff line number Diff line # Copyright (C) 2020 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. module: "android.sysprop.LibGuiProperties" owner: Platform # Indicates how many elements should be present in the frame event histories. prop { api_name: "frame_event_history_size" type: Integer scope: Public access: Readonly prop_name: "ro.lib_gui.frame_event_history_size" }