OSDN Git Service

DO NOT MERGE ANYWHERE libhwui: make setSurface asynchronous
authorThomas Buhot <thomas.buhot@intel.com>
Fri, 4 Dec 2015 11:18:03 +0000 (12:18 +0100)
committerAndriy Naborskyy <andriyn@google.com>
Wed, 26 Oct 2016 01:48:50 +0000 (18:48 -0700)
commit80e6d8873b79ced40e79fcba0bf793ea6528d20c
treefbddcc7ee6ce3699f4af4dc4af5e7b299facf19f
parent43222cec43e32f352185ca66d01f0aee4abf5989
DO NOT MERGE ANYWHERE libhwui: make setSurface asynchronous

from AOSP: https://android-review.googlesource.com/#/c/183305/

On the critical path of the cold launch of applications
the main thread of the started application tells the RenderThread
to create a surface. This process is synchronous and blocks
the main thread of the application until the creation
of the EGLContext is complete.
As a consequence the launch time of the application is delayed
by time spent allocating the EGL Context in the RenderThread.

With this optimization the launch time of any application
is improved (for example settings by 20 to 40 ms).

Change-Id: Ibf47aaa0abb8dedf7aa00693073db3785d9d6b08
Signed-off-by: Thomas Buhot <thomas.buhot@intel.com>
Signed-off-by: Zhiquan Liu <zhiquan.liu@intel.com>
core/java/android/view/ThreadedRenderer.java
core/jni/android_view_ThreadedRenderer.cpp
libs/hwui/renderthread/CanvasContext.cpp
libs/hwui/renderthread/CanvasContext.h
libs/hwui/renderthread/RenderProxy.cpp
libs/hwui/renderthread/RenderProxy.h