summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/CanvasContext.h
AgeCommit message (Collapse)Author
2016-01-22expose hwui frame stats through FrameStatsObserverAndres Morales
Change-Id: I88884bafc8e2f6d7f67a36d3609490e83cf8afd5
2015-12-16Merge "Add TextureView support to new renderer/reorderer"Chris Craik
2015-12-16Add TextureView support to new renderer/reordererChris Craik
bug:22480459 Change-Id: I2e4c0bc6b904706132f3f5087ededc9cac9b40fb
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-25Move BakedOpDispatcher to separate fileChris Craik
Change-Id: If7aad6db6b7e54a33eac9b9eddbe8cd844207282
2015-11-16Finish shadow support in new reorderer/rendererChris Craik
Now passes alphas and light radius, and correctly transforms light center for layers. Also fixes begin-frame/layer clears to be damage rect aware. Change-Id: I3b1415cd7bf1518c510145ebebdb745f494a2542
2015-11-02Initial HW layer support in new reorderer/rendererChris Craik
Shares vast majority of clipped savelayer code, with only minor differences in lifecycle. Doesn't yet handle fill region, resize, or window transform. Change-Id: Iabdd71811590d2b937eb11e1b01ce556ade54a5a
2015-10-29Merge "Simplify TreeInfo"Chris Craik
2015-10-28Simplify TreeInfoChris Craik
Change-Id: I8f05e9046236d607016b6c2bb77a333cfb47ba47
2015-10-28Merge "Tune scheduling a bit, avoid a binder ipc"John Reck
2015-10-28Tune scheduling a bit, avoid a binder ipcJohn Reck
Don't query running behind if it's not possible to be behind such as having received a vsync since the last call to swap buffers. This also avoids an accidental-starvation issue where if surface flinger was a bit sluggish to dequeue then renderthread would drop thinking the queue was full. Also be a bit smarter about tracking if we've already drawn for this vsync target to avoid producing two frames for the same vsync Change-Id: Ib266500a693c27000b2e8ea578f111229d75147a
2015-10-27CleanupsJohn Reck
Change-Id: I10001711afb2530c5dc19aebf2d055ae41f58c6a
2015-10-15Add partial damage support to new draw pathChris Craik
Change-Id: I612578fd181240de71297c9a28bc9a8f350764a7
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-08-12Support new EGL extensionsJohn Reck
Bug: 21753739 Includes a revert of 13d1b4ab10fbee5e81a2ba1ac59cfae1e51d3ef0 as that only supported EGL_EXT_buffer_age Change-Id: Ia86a47d19e3355c067934d7764c330b640c6958d
2015-08-04renderthread: add EGL_EXT_buffer_age supportSeason Li
EGL_EXT_buffer_age is better than EGL_BUFFER_PRESERVED because it can save memory bandwidth used to blit back buffer into front buffer. Change-Id: I2fea0ee08dc7dd66e348b04dd694d075d509d01b
2015-07-30Replace most usages of utils/Vector.hJohn Reck
Change-Id: I540d1b3523244d6c71fc52d6fb30555271c25644
2015-07-06Adjust for pipeline stallsJohn Reck
Bug: 20853441 Calculating duration that crosses the UI-RT sync point will now subtract out the time spent waiting in queue under the assumption that this time will be accounted for in the previous frame's metrics Change-Id: Ia8213f4410638840613f5ae439e98dfb77532a6a
2015-05-20Eliminate requireGlContextJohn Reck
Bug: 20297820 Change-Id: I37c63bab6f6c0d2337c8c6002046d2ef17e74097
2015-05-14Adjust light source for window positionAlan Viverette
Bug: 16523629 Change-Id: I2f3fed1edcac0a3cfd5034aded45e08ececfebaf
2015-05-12Unify DrawProfiler/JankStatsJohn Reck
Bug: 20822400 Change-Id: I24345c3120440bfce14e8cbe7e880b39f10b744a
2015-05-08Add eglSwapBuffersWithDamageKHR supportJohn Reck
BUG: 20761426 Disabled temporarily Change-Id: I0b6b6f0eebab886145e13fa35aefe76826965cf5
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-11Cleanups & simplificationsJohn Reck
Change-Id: I5ad5e3b8fe55b1528f2e20c63e5abe51d9e40ff1
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-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-23Cleanup various clang warnings, use unique_ptrs in several placesChris Craik
Change-Id: I347904b25e51fcc7de14b1e72f1acd0f6ba26f3f
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-07Have an actual fallback if the surface is lostJohn Reck
Bug: 17516789 This will force a relayout/reinitialize pass if the Surface is lost mid-render instead of crashing on the next frame Change-Id: If08bfa16f740728fa7c05904fa11e26f07b81e2e
2014-10-23Add some free zoom to lockHardwareCanvasJohn Reck
Bug: 18099195 Don't use EGL_SWAP_BUFFER_PRESERVED on surfaces that will never benefit. Also clean up some confusing naming Change-Id: I674ca64e0464a3282cff79e5ecd350d08f47c014
2014-10-03Cleanup DeferredLayerUpdaterJohn Reck
Bug: 17765082 DeferredLayerUpdater had fallen behind RT updates. Re-snap to latest expectations, ensuring to call requireGlContext() prior to detachSurfaceTexture to avoid leaking SurfaceTextures Change-Id: Ic65fb9831e5284f658866da8da9ad5af1d227699
2014-09-04Yet more layer tracking loggingJohn Reck
Bug: 17208461 Change-Id: I55e7d0921eb565867e966d68b798b7b92c391b55
2014-09-03Have destroy call freePrefetchedLayersJohn Reck
Bug: 17208461 There's a potential race condition between HardwareRenderer.destroy() being called (which calls destroyCanvasAndSurface()) and the renderer being finalized (which is what calls freePrefetchedLayers), during which time it's possible we get a TRIM_MEMORY_COMPLETE and destroy the EGL context. Fix this race condition by moving stopDrawing() and freePrefetchedLayers() into destroyCanvasAndSurface() where they should have been in the first place. Also, if we hit the assertion failure, dump the current state of Caches to try and provide more context for the failure. Change-Id: Ife0ba3562041e8b08e87e3e13640472b3004eed6
2014-08-28Track buildLayer calls, destroy if unusedJohn Reck
Bug: 17208461 Change-Id: Ibdb104a493285d77a6891c5e74e38a52c7014da9
2014-08-27Animator stuffJohn Reck
Bug: 17228458 Change-Id: Id884a429a512f9cd2be0ed16dbd0f10e92b4440d
2014-08-20Implement full View.buildLayerJohn Reck
Bug: 17152292 Change-Id: Ia3cc2aadf72fe14517f50762fc634794df51ad5a
2014-07-24Connect shadow style attributes to rendererChris Craik
bug:15859361 Moves lighting info out of StatefulBaseRenderer, since it's not useful at record time, and only used by OGLR. Change-Id: I7ab065d02d9304afad1dc4c48597a7a621366f8e
2014-06-30Fix onTrimMemory for HardwareRendererJohn Reck
Also fixes detachFunctor possibly drawing after return Bug: 15189843 Bug: 15990672 Change-Id: I64c48cb674c461a8eeaba407b697e09f72c98ce3
2014-06-26Animator refactoring & fixesJohn Reck
Tweaks animators to have less unnecessary refcounting Pull animator management out into seperate class More control to tweak animator lifecycle, such as doing Java-side handling of start delay by attaching but not starting the animator Change-Id: I4ff8207580ca11fb38f45ef0007b406e0097281c
2014-06-23No-fail invokeFunctorJohn Reck
Bug: 15513308 Bug: 15449247 Change-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c
2014-06-04Even FASTER damage calculations!John Reck
* Now with more native! * Less matrix math thanks to bulk-property-update support! * Zero JNI on the View.damageInParent() path! * Fully aware of RT-driven animators! * Likely full of new and exciting bugs! * But it also fixes at least 1 existing invalidate bug! Change-Id: Ie0773f85a60850ff2668370c58defef2e8aa079f
2014-05-30Re-jigger layersJohn Reck
Bug: 15185239 Bug: 15238382 Make DeferredLayerUpdater ref counted so that HardwareLayer:finalizer() works non-crashily on leaked layers Give DeferredLayerUpdater the ability to have a layer destroyer set so that leaked layers can still be recycled on the RenderThread Order layer updates based off of pushLayerUpdate() calls to fix issue with nested layers Change-Id: I4449cee607f7e5126e02fed7464cf48038e3dfdf
2014-05-29Enable debug stuffsJohn Reck
Bug: 14596762 * dumpsys gfxinfo implemented * profile GPU visual_bars implemented Change-Id: Icb948a9d5af5989b5615504d0d76ade64b93ef5b
2014-05-23Implement FlushCaches TODOJohn Reck
Change-Id: Id05429e98ffe0858275b32c41fb215c1d8d930b2
2014-05-23Bag of scheduling tweaksJohn Reck
Bug: 15118640 * Prevent over-stuffing the queue by dropping frames * Prevent double-drawing in one pulse by RT by deferring vsync registration until post-draw so that it catches the next vsync pulse instead of the current one * Bias vsync race condition towards the UI thread * Fix queueDelay to actually work Change-Id: Ibf584258bd93ebcbba058bd976dc8b307f1c6155
2014-05-21Define light position (using new lighting spec) in JavaChris Craik
Also updates the relative shadow strengths. Change-Id: I6cac7275d38df98aea9f0dda463cd7207102986a
2014-05-13Wire up texture atlasJohn Reck
Bug: 14590563 Change-Id: I2dffbc089dc801f5fb2d1c8fd38e1c71d160e110