render thead of hwui

19
RenderThread of HWUI on Android Rouyun Pan

Upload: rouyun-pan

Post on 11-Apr-2017

498 views

Category:

Software


0 download

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