Merge "hwui: improve RenderThread jank classificaion" into udc-qpr-dev
This commit is contained in:
@@ -405,8 +405,17 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo, int64_t sy
|
||||
|
||||
// If the previous frame was dropped we don't need to hold onto it, so
|
||||
// just keep using the previous frame's structure instead
|
||||
if (!wasSkipped(mCurrentFrameInfo)) {
|
||||
if (wasSkipped(mCurrentFrameInfo)) {
|
||||
// Use the oldest skipped frame in case we skip more than a single frame
|
||||
if (!mSkippedFrameInfo) {
|
||||
mSkippedFrameInfo.emplace();
|
||||
mSkippedFrameInfo->vsyncId =
|
||||
mCurrentFrameInfo->get(FrameInfoIndex::FrameTimelineVsyncId);
|
||||
mSkippedFrameInfo->startTime = mCurrentFrameInfo->get(FrameInfoIndex::FrameStartTime);
|
||||
}
|
||||
} else {
|
||||
mCurrentFrameInfo = mJankTracker.startFrame();
|
||||
mSkippedFrameInfo.reset();
|
||||
}
|
||||
|
||||
mCurrentFrameInfo->importUiThreadInfo(uiFrameInfo);
|
||||
@@ -602,10 +611,18 @@ void CanvasContext::draw(bool solelyTextureViewUpdates) {
|
||||
if (vsyncId != UiFrameInfoBuilder::INVALID_VSYNC_ID) {
|
||||
const auto inputEventId =
|
||||
static_cast<int32_t>(mCurrentFrameInfo->get(FrameInfoIndex::InputEventId));
|
||||
native_window_set_frame_timeline_info(
|
||||
mNativeSurface->getNativeWindow(), frameCompleteNr, vsyncId, inputEventId,
|
||||
mCurrentFrameInfo->get(FrameInfoIndex::FrameStartTime),
|
||||
solelyTextureViewUpdates);
|
||||
const ANativeWindowFrameTimelineInfo ftl = {
|
||||
.frameNumber = frameCompleteNr,
|
||||
.frameTimelineVsyncId = vsyncId,
|
||||
.inputEventId = inputEventId,
|
||||
.startTimeNanos = mCurrentFrameInfo->get(FrameInfoIndex::FrameStartTime),
|
||||
.useForRefreshRateSelection = solelyTextureViewUpdates,
|
||||
.skippedFrameVsyncId = mSkippedFrameInfo ? mSkippedFrameInfo->vsyncId
|
||||
: UiFrameInfoBuilder::INVALID_VSYNC_ID,
|
||||
.skippedFrameStartTimeNanos =
|
||||
mSkippedFrameInfo ? mSkippedFrameInfo->startTime : 0,
|
||||
};
|
||||
native_window_set_frame_timeline_info(mNativeSurface->getNativeWindow(), ftl);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -366,6 +366,12 @@ private:
|
||||
|
||||
ColorMode mColorMode = ColorMode::Default;
|
||||
float mTargetSdrHdrRatio = 1.f;
|
||||
|
||||
struct SkippedFrameInfo {
|
||||
int64_t vsyncId;
|
||||
int64_t startTime;
|
||||
};
|
||||
std::optional<SkippedFrameInfo> mSkippedFrameInfo;
|
||||
};
|
||||
|
||||
} /* namespace renderthread */
|
||||
|
||||
Reference in New Issue
Block a user