Initial attempt at jank-tracking stat collection
Is a bit naive, perhaps overly aggressive, but sorta works Change-Id: I01a774e00dbe681439c02557d9728ae43c45ce50
This commit is contained in:
@@ -34,8 +34,6 @@ namespace renderthread {
|
||||
DrawFrameTask::DrawFrameTask()
|
||||
: mRenderThread(nullptr)
|
||||
, mContext(nullptr)
|
||||
, mFrameTimeNanos(0)
|
||||
, mRecordDurationNanos(0)
|
||||
, mDensity(1.0f) // safe enough default
|
||||
, mSyncResult(kSync_OK) {
|
||||
}
|
||||
@@ -68,18 +66,12 @@ void DrawFrameTask::removeLayerUpdate(DeferredLayerUpdater* layer) {
|
||||
}
|
||||
}
|
||||
|
||||
int DrawFrameTask::drawFrame(nsecs_t frameTimeNanos, nsecs_t recordDurationNanos) {
|
||||
int DrawFrameTask::drawFrame() {
|
||||
LOG_ALWAYS_FATAL_IF(!mContext, "Cannot drawFrame with no CanvasContext!");
|
||||
|
||||
mSyncResult = kSync_OK;
|
||||
mFrameTimeNanos = frameTimeNanos;
|
||||
mRecordDurationNanos = recordDurationNanos;
|
||||
postAndWait();
|
||||
|
||||
// Reset the single-frame data
|
||||
mFrameTimeNanos = 0;
|
||||
mRecordDurationNanos = 0;
|
||||
|
||||
return mSyncResult;
|
||||
}
|
||||
|
||||
@@ -93,7 +85,7 @@ void DrawFrameTask::run() {
|
||||
ATRACE_NAME("DrawFrame");
|
||||
|
||||
mContext->profiler().setDensity(mDensity);
|
||||
mContext->profiler().startFrame(mRecordDurationNanos);
|
||||
mContext->profiler().startFrame();
|
||||
|
||||
bool canUnblockUiThread;
|
||||
bool canDrawThisFrame;
|
||||
@@ -122,7 +114,7 @@ void DrawFrameTask::run() {
|
||||
|
||||
bool DrawFrameTask::syncFrameState(TreeInfo& info) {
|
||||
ATRACE_CALL();
|
||||
mRenderThread->timeLord().vsyncReceived(mFrameTimeNanos);
|
||||
mRenderThread->timeLord().vsyncReceived(mFrameInfo[FrameInfoIndex::kVsync]);
|
||||
mContext->makeCurrent();
|
||||
Caches::getInstance().textureCache.resetMarkInUse();
|
||||
|
||||
@@ -130,7 +122,7 @@ bool DrawFrameTask::syncFrameState(TreeInfo& info) {
|
||||
mContext->processLayerUpdate(mLayers[i].get());
|
||||
}
|
||||
mLayers.clear();
|
||||
mContext->prepareTree(info);
|
||||
mContext->prepareTree(info, mFrameInfo);
|
||||
|
||||
// This is after the prepareTree so that any pending operations
|
||||
// (RenderNode tree state, prefetched layers, etc...) will be flushed.
|
||||
|
||||
Reference in New Issue
Block a user