+ All Categories
Home > Software > Render thead of hwui

Render thead of hwui

Date post: 11-Apr-2017
Category:
Upload: rouyun-pan
View: 495 times
Download: 0 times
Share this document with a friend
19
RenderThread of HWUI on Android Rouyun Pan
Transcript

RenderThread of HWUI on Android

Rouyun Pan

RenderThread Draw first frame

Java - Choreographer

• Choreographer: drawFrame() -> ViewRootImpl: performTraversals () -> performDraw() ->draw(boolean fullRedrawNeeded)

HW Renderer

*Path:frameworks/base/core/java/android/view/ViewRootImpl.java

ThreadedRenderer

*Path:frameworks/base/core/java/android/view/ThreadedRenderer.java

Native:nSyncAndDrawFrame()

*Path: frameworks/base/core/jni/android_view_ThreadedRenderer.cpp

*Path: frameworks/base/libs/hwui/renderthread/RenderProxy.cpp

Native: DrawFrameTask

*Path: frameworks/base/libs/hwui/renderthread/DrawFrameTask.cpp

Queue a RenderTask

*Path: frameworks/base/libs/hwui/renderthread/RenderThread.cpp

HWUI-RenderThread

DrawFrame

syncFrameState(1)• Sync frame state from MainThread to RenderThread

for parallel.

syncFrameState(2)

makeCurrent

prepareTree(1)

prepareTree(2)

Draw(1)

Draw(2)

*Path: frameworks/base/libs/hwui/renderthread/CanvasContext.cpp

Compare between android 4&5*UI Mainthread on Andoid 4.0

*UI MainThread and RenderThread on Andoid 5.0

RenderThread can wake the MainThread up in advance

Q & A


Recommended