summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/RenderProxy.cpp
AgeCommit message (Collapse)Author
2016-04-12Merge "Framework-side of SurfaceView#getBitmap" into nyc-devJohn Reck
2016-04-11Framework-side of SurfaceView#getBitmapJohn Reck
Bug: 27708453 Change-Id: Ie6fd7eca522d3e6549d8af587c975fd7e6053649
2016-04-11Merge "Revert "Make stopped state a first-class thing"" into nyc-devJohn Reck
2016-04-11Revert "Make stopped state a first-class thing"John Reck
This reverts commit 945961f78a78eced823d5ba78505c781b079703d. Change-Id: Iebc1d49fac33380233f8785fc39bec6c30a5e714
2016-04-08Merge "Make stopped state a first-class thing" into nyc-devJohn Reck
2016-04-08Merge "Fix a derp" into nyc-devJohn Reck
2016-04-07Fix a derpJohn Reck
Fixes: 28074465 I knew I added that flag for a reason... Change-Id: I6e28237dcd50191769a828bf2646c3a00c14387c
2016-04-07Make stopped state a first-class thingJohn Reck
Bug: 27286867 WindowManager has committed to stopped state controlling the lifecycle of the Surface, so make that a first-class thing in HWUI as well. This makes it more resistent to things like a rogue updateSurface() happening while mStopped=true, leading to bad things down the line. Instead let the surface be changed/updated as often as desired, and just block any attempt to draw on that surface. Also removes some unnecessary makeCurrent()s, as EglManager ensures that we *always* have a valid GL context now (using a pbuffer surface if there is no window surface set) Change-Id: Iead78ddebc7997e8fdb0c9534836352f5e54b9bd
2016-04-07Fix some edge casesJohn Reck
Bug: 27709981 This desperately needs a refactor, but to keep the current (really needed & nice) behavior of dispatching after sync finishes would be difficult to handle cleanly without lots of ripping so... #yolo Change-Id: I831a06c6ae7412a062720d68ecbe3085190f0258
2016-03-31Expand JankTrackerJohn Reck
Bug: 27922347 * Dump the full histogram * Expand the histogram to have a slow-frame section with large 50ms buckets to raise the cap to 5s to give more insight into system-health * Stop excluding first-frame metrics as we want to include those in our global tracking. Automated tests already filter these out by doing resets before running anyway. Change-Id: Idaba8aad591f59d10a6477b11efc0767ff715083
2016-02-09updates to FrameStatsObserver APIAndres Morales
- Rename to FrameMetrics to avoid collision with existing android.view.FrameStats class - Make FrameMetricsObserver implementation detail, exposing FrameMetricsListener interface as public API and wrapping in FrameStatsObserver to maintain state - Remove dropped frame count call, in favor of passing as parameter to callback method. - Move away from raw timestamp access in favor of Metric IDs which represent higher-level, more stable stages in a frame lifecycle and match the categories exposed in the onscreen bars. - Support many-to-many Window<->FrameMetricsListener relationship Change-Id: I00e741d664d4c868b1b6d0131a23f8316bd8c5c2
2016-02-04Have RT drive window positioningJohn Reck
Bug: 22802885 Change-Id: I6beed5474d3a943b16e9097f7bd61ce3cbd37505
2016-01-22expose hwui frame stats through FrameStatsObserverAndres Morales
Change-Id: I88884bafc8e2f6d7f67a36d3609490e83cf8afd5
2016-01-19Merge "fix race condition between HWUI cache and renderThread" am: 2c2b5e8514John Reck
am: 4354ae9883 * commit '4354ae9883ae1282ac457539f46d529bdfa89fec': fix race condition between HWUI cache and renderThread
2016-01-19fix race condition between HWUI cache and renderThreadThomas Buhot
getMaximumBitmapWidth() and getMaximumBitmapHeight() of DisplayListCanvas need HWUI cache instance. Since the initialization of the cache is asynchronous it may crash if not yet ready. Add a staticFence() call to guarantee the cache has been created prior issuing the call. Change-Id: I5ed9e5cc084444c8d1872a77fef50e294ae14e93 Signed-off-by: Thomas Buhot <thomas.buhot@intel.com> Signed-off-by: Zhiquan Liu <zhiquan.liu@intel.com>
2016-01-14Log render pipeline in gfxinfo dumpChris Craik
Change-Id: Ia50c445b29d918f274ec45632d61d8b8479c72eb
2015-12-16resolve merge conflicts of 04ce46db64 to master.John Reck
Change-Id: I935bb47718f0e7d5fb48945dd8de6e28dac136e5
2015-12-10libhwui: make setSurface asynchronousThomas Buhot
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>
2015-11-10Fix threading issuesJohn Reck
Bug: 25584167 Change-Id: I413ef9e0c86f7cca1f7d085e0071745ca0192853
2015-11-03Remove almost-all android::Singleton usersJohn Reck
Bug: 25426213 Change-Id: I88e6206e8915cce95c3a8a8a82a4bb8fbf668141
2015-10-20Add initial OpReorderer benchmarksChris Craik
Change-Id: I6ca8ea89be2159331b2ad7031769c65f54161918
2015-10-02Rendering the window frame with a second threadSkuhne
Using a multi threaded render node to render the window frame asynchronously from the application relayout. Bug: 22527834 Bug: 24400680 Bug: 24459827 Bug: 24409773 Bug: 24537510 Change-Id: I1010fc6a8b6e38424178140afa3ca124433ab7e4
2015-09-21MultiThreaded rendering of different renderNodesSkuhne
This is adding the renderer side infrastructure to allow rendering multiple render nodes with different threads. This is a pre-step for decoupling a non client decor resize reder from a content resize render. Multiple render nodes can be added to be drawn, and to prevent overdrawing, a content bounds area can be set Bug: 22527834 Change-Id: Ie7271e20895bf38957e5a84aeefc883e282039ad
2015-08-26Serializing display listsJohn Reck
This is a WIP prototype Change-Id: Id4bfcf2b7bf905221c3734b7b6887c9b2efd37e6
2015-07-29Re-enable -Werror on clangJohn Reck
Change-Id: I582bd0665752c7a9deb4f9de094d0dd0a50cda6a
2015-06-02Handle shader matrix correctly when ignoring canvas transformChris Craik
bug:20063841 Restores old SkShader matrix behavior from before the Glop refactor. Many drawing operations draw without sending the canvas transform to the GL shader. In such cases, we need to adapt the matrix sent to the SkShader logic to invert the canvas transform that's built into the mesh. Change-Id: I42b6f59df36ce46436322b95bf9ad2140795ee58
2015-05-14Adjust light source for window positionAlan Viverette
Bug: 16523629 Change-Id: I2f3fed1edcac0a3cfd5034aded45e08ececfebaf
2015-05-07Fix clang warnings on unused variable, mismatched tag, print format.Chih-Hung Hsieh
BUG: 20890093 Change-Id: I91588f481d80b69823bc9d104b8bd09167ee5373
2015-05-05Merge "Cleanup properties" into mnc-devChris Craik
2015-05-05Dump profile info after running testJohn Reck
Bug: 20824843 Not really a proper "benchmark mode" but it turns out we already have reasonably good profile data, so tweak the test app to spit it out after a run. Change-Id: Iaee9c0d61b5508daf282fe5f95d0b37ee419a8f1
2015-05-05Cleanup propertiesChris Craik
bug:19967854 Separate properties from Caches, into static, RenderThread-only class. Also rewrites the means for java to set properties to correctly handle threading, and adds an override for profile bars so that SysUi doesn't clutter the screen with them. Change-Id: I6e21a96065f52b9ecc49d1a126244804ba106fa9
2015-05-04Fix setName use-after-freeJohn Reck
Bug: 20764439 Change-Id: I7a0f85bb82629b1302db02015fa493dc09eb31f7
2015-04-30A bunch more cleanupsJohn Reck
Switch a few places to using android::canvas instead of SkCanvas as well which eliminated some JNI Change-Id: I8f98b56442a06362b82b984cd1bd3a92398d8dbc
2015-04-17Revert "A bunch more cleanups"John Reck
This reverts commit c294d128d03bc9a9982b273a82516c04583438cc. Change-Id: Id1ebb236950f7c36c6d86e1dd95566d3a200748d
2015-04-14A bunch more cleanupsJohn Reck
Switch a few places to using android::canvas instead of SkCanvas as well which eliminated some JNI Change-Id: I8f98b56442a06362b82b984cd1bd3a92398d8dbc
2015-03-30Merge "Add GraphicsStatsService"John Reck
2015-03-27Add GraphicsStatsServiceJohn Reck
More S's for More Speed Split JankTracker's backing data from the class to allow for data relocation to/from ashmem regions Pack the jank tracking data to fit in 256 bytes Change-Id: Ife86a64b71a328fbd0c8075fe6a0404e081f725b
2015-03-24resolved conflicts for merge of 4142f026 to masterJohn Reck
Change-Id: Iabe3aa0ac6911a26d2ba7219f18332897276ed6f
2015-03-20Don't create unnecessary RenderThread's instance when executing 'dumpsys ↵youngmin0822.lee
gfxinfo' To obtain the gfxinfo for each process, the static method of RenderProxy is used, which is named outputLogBuffer(). In there, 1. RenderTask is created for getting DisplayList Commands in RenderNode. 2. staticPostAndWait() is called 3. RenderThread's instance is created by 'RenderThread::getInstance()' in staticPostAndWait() In case of the service, they don't use HW Acceleration, so don't need RenderThread. But, by the process of No.3, RenderThread is created for all process. As we know, RenderThread never be destroyed while the process is alive. This patch checks RenderThread instance before the creation of RenderTask. And, there is no one, just return to prevent the unnecessay creation of it. Change-Id: I4fe29d83c9ced3e8b67177c0874c5d8ee62e1870
2015-03-11Cleanups & simplificationsJohn Reck
Change-Id: I5ad5e3b8fe55b1528f2e20c63e5abe51d9e40ff1
2015-02-20C++11 style fixupsJohn Reck
Change-Id: I356d02338820bfef41a9e278c88dafc17cfe1cf9
2015-02-20Initial attempt at jank-tracking stat collectionJohn Reck
Is a bit naive, perhaps overly aggressive, but sorta works Change-Id: I01a774e00dbe681439c02557d9728ae43c45ce50
2015-01-21Remove DisplayListLogBufferChris Craik
Change-Id: I001832fc444b6d532f4a382e0a31cc1d8956dbd8
2015-01-05Add overrides and switch to nullptr keyword for all filesChris Craik
Adds remaining missing overrides and nullptr usages, missed due to an extreme failure in tool usage. Change-Id: I56abd72975a3999ad13330003c348db40f59aebf
2014-12-04resolved conflicts for merge of a75b0ad3 to masterJohn Reck
Change-Id: I32a2d129c556407727ada909daa6470309d42499
2014-12-04resolved conflicts for merge of a51a0901 to lmp-mr1-dev-plus-aospJohn Reck
Change-Id: Id7df835f0bd3d5d276b162635ddfb7fe0918dfed
2014-12-03Resume RT-animations after a pauseSurfaceJohn Reck
Bug: 18203577 The issue occurs as a result of performTraversals() both doing a window relayout call *and* early-returning because it's not dirty. To fix this pauseSurface() returns whether or not the RT-side is "dirty" to force ViewRootImpl to do a draw even if mDirty is otherwise empty. Change-Id: I534f367e75d18d273ebf14df3927f5c464ef6bef
2014-11-22Revert "resolved conflicts for merge of 220c3f4f to master"Andreas Gampe
Reverted as hwui doesn't agree. This reverts commit 8a902d9f24e83c87b054adb5836b4a5b8a257be9. Change-Id: I109e7b02bee2921e2155ded6df36f52e6f574b5a
2014-11-21resolved conflicts for merge of 99377df1 to lmp-mr1-dev-plus-aospAndreas Gampe
Change-Id: I3a98f55832ac447b1ed0dd129c7a93d088025943
2014-11-21Frameworks/base: Unused parameters in hwuiAndreas Gampe
Remove Clang cutout for unused parameters. Fix warnings. Remove Clang cutout for deprecated Skia function usage. Has been fixed in the L push. Change-Id: I7ea073ff67127cc1e14e798b655e2c50615fe8e7