diff options
| author | 2021-02-03 23:19:29 +0100 | |
|---|---|---|
| committer | 2021-02-17 14:55:22 +0100 | |
| commit | 71db8892acc0c80c343141139bde8cfd3f037c4a (patch) | |
| tree | 9f40ac7b2cf2d535d24d9e6eacf8c353e8dcabc8 /libs/hwui/ProfileDataContainer.h | |
| parent | 5fdf7b8d26f3cd1a2f2fb8a441d40d33270d3b77 (diff) | |
Add GPU completion to FrameMetrics (1/3)
- Add SurfaceStatsCallback to TransactionCompletedListener
- Register a callback in RenderProxy to be called when we have
surface stats from SF via the BLAST callback.
- Instead of finishing a frame for frame metrics reporting
immediately, wait until BLAST callback fires, note GPU completion
time and finish frame.
- Expose GPU_COMPLETION in FrameMetrics
- Modify TOTAL_DURATION to also include GPU_COMPLETION
Test: FrameMetricsListenerTest
Fixes: 171046219
Change-Id: I16fa1d80cfc4e7a5527c18fec7e885409f17ee4d
Diffstat (limited to 'libs/hwui/ProfileDataContainer.h')
| -rw-r--r-- | libs/hwui/ProfileDataContainer.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libs/hwui/ProfileDataContainer.h b/libs/hwui/ProfileDataContainer.h index a39869491ede..a61b8dcf390e 100644 --- a/libs/hwui/ProfileDataContainer.h +++ b/libs/hwui/ProfileDataContainer.h @@ -19,6 +19,9 @@ #include "ProfileData.h" #include "utils/Macros.h" +#include <mutex> +#include <utils/Mutex.h> + namespace android { namespace uirenderer { @@ -26,7 +29,8 @@ class ProfileDataContainer { PREVENT_COPY_AND_ASSIGN(ProfileDataContainer); public: - explicit ProfileDataContainer() {} + explicit ProfileDataContainer(std::mutex& jankDataMutex) + : mData(new ProfileData()), mJankDataMutex(jankDataMutex) {} ~ProfileDataContainer() { freeData(); } @@ -36,13 +40,16 @@ public: ProfileData* get() { return mData; } ProfileData* operator->() { return mData; } + std::mutex& getDataMutex() { return mJankDataMutex; } + private: void freeData(); // By default this will use malloc memory. It may be moved later to ashmem // if there is shared space for it and a request comes in to do that. - ProfileData* mData = new ProfileData; + ProfileData* mData GUARDED_BY(mJankDataMutex); bool mIsMapped = false; + std::mutex& mJankDataMutex; }; } /* namespace uirenderer */ |