4e7b772b733593fbe25c733e95b8dcea293234b6 |
|
16-Jul-2013 |
Romain Guy <romainguy@google.com> |
Fix crashes in setMatrix() and concat() setMatrix() was crashing in native code, only with hw acceleration on. concat() would throw a NullPointerException. It now ignores null matrices. Change-Id: Iebd8b410a957d2ba501570c6fbb3f680ff4a1a23
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
e3b0a0117a2ab4118f868a731b238fe8f2430276 |
|
27-Jun-2013 |
Romain Guy <romainguy@google.com> |
Refcount 9-patches and properly handle GC events This change adds refcounting of Res_png_9patch instances, the native data structure used to represent 9-patches. The Dalvik NinePatch class now holds a native pointer instead of a Dalvik byte[]. This pointer is used whenever we need to draw the 9-patch (software or hardware.) Since we are now tracking garbage collection of NinePatch objects libhwui's PatchCache must keep a list of free blocks in the VBO used to store the meshes. This change also removes unnecessary instances tracking from GLES20DisplayList. Bitmaps and 9-patches are refcounted at the native level and do not need to be tracked by the Dalvik layer. Change-Id: Ib8682d573a538aaf1945f8ec5a9bd5da5d16f74b
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
41541825bc90dac740e424cdd41a8c997e15cdb7 |
|
04-May-2013 |
Chris Craik <ccraik@google.com> |
Use individual glyph positions to determine text bounds. bug:8766924 Previously text bounds were calculated to be from 0 to totalAdvance in the X, and from the font's top to bottom. These are incorrect, especially in light of the font fallback mechanism. Now, we calculate the bounds of the text as we layout each glyph. Since these are much tighter bounds in the common case, this significantly reduces the amount of clipping required (which in turn enables more aggressive text merging). Change-Id: I172e5466bf5975bf837af894a9964c41db538746
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9 |
|
18-Apr-2013 |
Romain Guy <romainguy@google.com> |
Pack preloaded framework assets in a texture atlas When the Android runtime starts, the system preloads a series of assets in the Zygote process. These assets are shared across all processes. Unfortunately, each one of these assets is later uploaded in its own OpenGL texture, once per process. This wastes memory and generates unnecessary OpenGL state changes. This CL introduces an asset server that provides an atlas to all processes. Note: bitmaps used by skia shaders are *not* sampled from the atlas. It's an uncommon use case and would require extra texture transforms in the GL shaders. WHAT IS THE ASSETS ATLAS The "assets atlas" is a single, shareable graphic buffer that contains all the system's preloaded bitmap drawables (this includes 9-patches.) The atlas is made of two distinct objects: the graphic buffer that contains the actual pixels and the map which indicates where each preloaded bitmap can be found in the atlas (essentially a pair of x and y coordinates.) HOW IS THE ASSETS ATLAS GENERATED Because we need to support a wide variety of devices and because it is easy to change the list of preloaded drawables, the atlas is generated at runtime, during the startup phase of the system process. There are several steps that lead to the atlas generation: 1. If the device is booting for the first time, or if the device was updated, we need to find the best atlas configuration. To do so, the atlas service tries a number of width, height and algorithm variations that allows us to pack as many assets as possible while using as little memory as possible. Once a best configuration is found, it gets written to disk in /data/system/framework_atlas 2. Given a best configuration (algorithm variant, dimensions and number of bitmaps that can be packed in the atlas), the atlas service packs all the preloaded bitmaps into a single graphic buffer object. 3. The packing is done using Skia in a temporary native bitmap. The Skia bitmap is then copied into the graphic buffer using OpenGL ES to benefit from texture swizzling. HOW PROCESSES USE THE ATLAS Whenever a process' hardware renderer initializes its EGL context, it queries the atlas service for the graphic buffer and the map. It is important to remember that both the context and the map will be valid for the lifetime of the hardware renderer (if the system process goes down, all apps get killed as well.) Every time the hardware renderer needs to render a bitmap, it first checks whether the bitmap can be found in the assets atlas. When the bitmap is part of the atlas, texture coordinates are remapped appropriately before rendering. Change-Id: I8eaecf53e7f6a33d90da3d0047c5ceec89ea3af0
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
527a3aace1dd72432c2e0472a570e030ad04bf16 |
|
04-Mar-2013 |
Chris Craik <ccraik@google.com> |
Draw Operation merging Merge simple bitmap draw operations and text operations to avoid issuing individual gl draws for each operation. Merging other ops to be done eventually. The methods are different - the bitmap merging generates a single mesh for reused, unclipped images (esp. repeated images in a listview) The text approach queries just defers the normal font rendering until the last drawText in the sequence that can share the same shader. Patches are sorted and merged, but don't yet have a multiDraw implementation. For now, the pretending-to-merge gives better sorting behavior by keeping similar patches together. Change-Id: Ic300cdab0a53814cf7b09c58bf54b1bf0f58ccd6
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ce4a7dfc516ee61301e9af91fad17ca1320efaab |
|
28-Mar-2013 |
Romain Guy <romainguy@google.com> |
Don't crash when making a layer larger than supported dimensions Bug #8437401 A misplaced ref count decrement was causing a crash when attempting to resize a layer to dimensions larger than the max texture size supported by the GPU. This change fixes the crash and clarifies the warnings to make it more obvious what's happening. Change-Id: I632dc1b90aaa2605969e10523491a81c4922d3dc
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
a08f95cfeca7217f9c533b03663bf0dceedd259a |
|
16-Mar-2013 |
Chris Craik <ccraik@google.com> |
Use snapshot alpha for layers Removes mMultipliedAlpha, using the snapshot alpha for all non-overlapping display list alpha control. Additionally, fixes opacity issues where children of hasOverlappingRendering=false displaylists (both hw layer sublists and other sublists with hasOverlappingRendering=false) Change-Id: I6adc16da855835f9f518f8967628e5d0135c789b
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ff78583d8a73ca35ce65b5d2592570ff6fb9901b |
|
08-Mar-2013 |
Chris Craik <ccraik@google.com> |
Fully deferred displaylist replay bug:8037003 A recursive drawDisplayList call is now entirely deferred before playing back to the screen and issuing GL commands. This way, the entire stream can be inspected, optimized, and batch work (such as uploading textures) before issuing commands. Additionally, this fixes an issue where operations draw could move across restores corresponding to saveLayer(alpha). Those and other similar cases (such as complex clipping, requiring the stencil) are now treated as batching barriers, with the operations that change renderer state in a way that's difficult to defer are just re-issued at flush time. Change-Id: Ie7348166662a5ad89fb9b1e87558334fb826b01e
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
0f6675332c04c74909425d1d328f02b32c0ff40e |
|
01-Mar-2013 |
Romain Guy <romainguy@google.com> |
Precache glyphs at final raster size The deferred display lists model now allows us to precache glyphs at their exact size on screen. This change also removes debug markers when the renderer defers and reorders display lists. It also adds a flush event marker. Change-Id: I66ec5216dc12b93ecfdad52a7146b1cfb31fbeb4
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
c3566d06421c8acc0aafb18f7e307e5725ce87e1 |
|
05-Feb-2013 |
Chris Craik <ccraik@google.com> |
DisplayList draw operation reordering bug:8037003 The reordering enables similar operations to draw together, minimizing the OpenGL state change operations that go inbetween draws. Eventually, multiple complete canvas draw operations will be merged (into a single glDrawArrays call, for example) Reorders DisplayList draw operations when: -They can move backwards in the command stream to be after similar operations without violating draw ordering -The OpenGLRenderer is in a simple, replayable state (no complex clip, or filter/shadow etc) Also adds two system properties to control the deferral/reordering: "debug.hwui.disable_draw_defer" "debug.hwui.disable_draw_reorder" which can be set to "true" to control the display list manipulation Change-Id: I5e89f3cb0ea2d2afd3e15c64d7f32b8406777a32
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
0776a6069365bdea83855db154fa2d37f9d1d808 |
|
15-Feb-2013 |
Chris Craik <ccraik@google.com> |
Move DisplayList to its own cpp file Change-Id: Ic9c1bbf4673ad5c756f3908b2ab7e699edd6a119
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
7c1a49f5f5ed6613d736464bf5001b777e89ced2 |
|
13-Feb-2013 |
Chris Craik <ccraik@google.com> |
Revert "Merge remote-tracking branch 'goog/master-chromium' into 'goog/master'" DO NOT MERGE This reverts commit 6c0307dd0aefe9a08794b155fc03ee60ebd14f25, reversing changes made to a2cd828b749c444d55c2c41c7dbb85088ff94b9f. Conflicts: packages/SystemUI/res/values-sv/strings.xml Change-Id: Ia178efe8b14751583d47b2826bfe3d3d5463dd2e
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
2dbd185fd0e5dfe9addb677f42716c442b7e62bd |
|
30-Jan-2013 |
Derek Sollenberger <djsollen@google.com> |
resolved conflicts for merge of c93c6aa5 to master-chromium Change-Id: I51429ed5359355025f873ccab11bfabbbe772a46
|
2af4635e4a9e448a65ff541252f8f94bc6ac48e0 |
|
27-Nov-2012 |
Chris Craik <ccraik@google.com> |
Object-based DisplayList recording bug:8037003 Changes the DisplayList from using stream read/write commands to use an array of objects manually allocated on a linear buffer. Depends on frameworks/native change https://googleplex-android-review.googlesource.com/#/c/257695/ which adds LinearAllocator Also changes drawRects to use float count instead of rect count, to be more like drawLines/drawPoints Change-Id: Ia2e4a11acd8f0a757042a05cbc9e7563cb73ee47
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
616a87736d819a7fe4e1d60d4703aabc7b888cd7 |
|
15-Jan-2013 |
Romain Guy <romainguy@google.com> |
am 61840eb0: Merge "Preliminary Support for region clipping" * commit '61840eb03882e1a964ae971725bd21229c3db42c': Preliminary Support for region clipping
|
735738c4ddf3229caa5f6e634bf591953ac29944 |
|
03-Dec-2012 |
Romain Guy <romainguy@google.com> |
Preliminary Support for region clipping Region clipping, using Canvas.clipPath or Canvas.clipRegion, requires a stencil buffer to be always present. In addition, extra wiring is required in JNI and display lists. This change only adds the necessary JNI/C++ APIs and some extra plumbing to start the real work on properly supporting region clipping. A new debug define called DEBUG_CLIP_REGIONS can be used to draw the current clip region. It is off by default, as is region clipping. The default implementation of clipPath() and clipRegion(), now in native, mimics the previous Dalvik implementation to prevent regressions. Change-Id: I7903e7cfd7412b9b9b622566d4dbfce7bdcec00c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
7bac55434caa9de7fc31f6fd8b0384042c700b4c |
|
05-Jan-2013 |
Romain Guy <romainguy@google.com> |
am 9acd1b4f: Merge "Add visual profiling feature" * commit '9acd1b4fa897f3a007dd23dc1f0471b151fa03ad': Add visual profiling feature
|
672433d90fab7383cd28beac9d4485b566a90940 |
|
05-Jan-2013 |
Romain Guy <romainguy@google.com> |
Add visual profiling feature When profiling is enabled with debug.hwui.profile set to true, setting debug.hwui.profile_visualizer to true will display the profiling data directly on screen. Change-Id: I3d5fe3f0347090815087b1cbfce66b8e76d9347b
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ca79cf69d09efa0c327e9b1237d86a119aea5da7 |
|
14-Aug-2012 |
Derek Sollenberger <djsollen@google.com> |
Update framework to support r5967 of Skia. bug: 6906025 Change-Id: Iefdb830ec3aa2ab3472c1c142484a7aa21788a15
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
7c25aab491707f7324f9941b8cfa9bd2b4b97e76 |
|
19-Oct-2012 |
Romain Guy <romainguy@google.com> |
Defer layer rendering to avoid stalls Bug #7326824 When a layer is taken out of the cache and initialized it gets cleared to prepare it for future rendering. This triggers the following sequence of operations: glBindFramebuffer(layer.fbo) attach texture storage to FBO glClear() glBindFramebuffer(defaultFbo) The clear forces a resolve on tilers which stalls the CPU for a little while, thus producing jank during animations. This change moves the clear to the next frame when we know we will have to execute a resolve anyway. Change-Id: Ic1939c25df20ed65a4c48dc81ee549b2cd8b6ec3
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
6a2d17f71342f981c9df1dc5beff33e30eb3ae2b |
|
30-Sep-2012 |
Chet Haase <chet@google.com> |
Fix texture corruption When memory gets low on a device, activities flush everything they can. Hardware-accelerated activites, such as Launcher, flush GL resources and destroy the GL context. However, some resources were still hanging around, due to deferred destruction policies (we don't delete layers until the DisplayLists they are in are finalized, to ensure we don't deref deleted objects). This meant that we were referring to obsolete GL data in these objects. in particular, it meant that we might come around later, after a new GL context was created, and delete a texture object that was incorrect. We use the layer's "texture id" to refer to the texture underlying the layer. But if there's a new GL context, then this texture ID is no longer valid, and we may be deleting the texture that a different object (layer, icon, whatever) is referring to, because the driver may return that same ID under the new GL context. The fix is to more aggressively delete things that we know will not be used again when the GL context is destroyed. In particular, we delete all resources being used by all DisplayLists at GL context destruction time. Issue #7195815 Textures corruption on all devices, in many apps Change-Id: I52d2d208173690dbb794a83402d38f14ea4c6c22
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
54c1a64d5441a964890b44280e4457e11f4f924a |
|
28-Sep-2012 |
Romain Guy <romainguy@google.com> |
Don't use the QCOM_tiled_rendering extension with functors Bug #7247880 Change-Id: I4f6c38e37b953c58e6107097c613891a49dac766
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
603f6de35f21d74ae242d52d501f4f5c25ff4f4c |
|
15-Sep-2012 |
Chet Haase <chet@google.com> |
Fix occasional crash bug with layers Launcher occasionally crashes with a stack trace indicating that the memory of a Layer object is corrupt. It is possible for us to delete a Layer structure and then, briefly, use it to draw a DisplayList again before that DisplayList gets recreated (without the layer that got deleted). When this happens, if the memory got corrupted, it's possible to crash. The fix is to add Layer to the other objects which we currently refcount (bitmaps, shaders, etc.). Then instead of deleting a Layer, we decrement the refcount. We increment when creating it, then increment it again when it's referenced from a DisplayList. Then we decrement the refcount instead of deleting it, and decrement when we clear a DisplayList that refers to it. Then when the refcount reaches 0, we delete it. Issue #6994632 Native crash in launcher when trying to launch all apps screen Change-Id: I0627be8d49bb2f9ba8d158a84b764bb4e7df934c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
58ecc204fbcacef34806290492384677a330d4d4 |
|
07-Sep-2012 |
Romain Guy <romainguy@google.com> |
Reduce the number of locks acquired by display lists Change-Id: I1123aae0355de84db705bb75042c7083fc69c9f2
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
e816baea651476aca4407200d4a5e629b9ab8dfa |
|
09-Aug-2012 |
Chet Haase <chet@google.com> |
Optimize interactions with glyph cache There are two fixes here: - precaching: instead of caching-then-drawing whenever there is a new glyph, we cache at DisplayList record time. Then when we finally draw that DisplayList, we just upload the affected texture(s) once, instead of once per change. This is a huge savings in upload time, especially when there are larger glyphs being used by the app. - packing: Previously, glyphs would line up horizontally on each cache line, leaving potentially tons of space vertically, especially when smaller glyphs got put into cache lines intended for large glyphs (which can happen when an app uses lots of unique glyphs, a common case with, for example, chinese/japanese/korean languages). The new approach packs glyphs vertically as well as horizontally to use the space more efficiently and provide space for more glyphs in these situations. Change-Id: I84338aa25db208c7bf13f3f92b4d05ed40c33527
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
c25259519f1b74bb62a2b051b74537f073436b5c |
|
28-Jul-2012 |
Romain Guy <romainguy@google.com> |
Rename drawGeneralText to drawText Change-Id: I5062ea5b0605fc7af27f410fafc930d10f38e926
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
996e57c84368058be793897ebc355b917a59abc2 |
|
24-Jul-2012 |
Raph Levien <raph@google.com> |
Hardware implementation of glyph positioning (bug 5443796) This implementation adds a drawGeneralText() method to the OpenGL Renderer, which supports both a global x, y position, an array of individual glyph positions, and also a length parameter (which enables drawing of underline and strikethrough. It also adds the method to the display list (with marshalling and unmarshalling). With this change, the existing drawText() method is removed entirely, as it's subsumed by the new method. It's easy enough to revert to the old functionality if needed by passing in a NULL positions array. Change-Id: I8c9e6ce4309fd51cc5511db85df99f6de8f4f6f5
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
44b2fe3fc114ee5f7273c6b0fee2cc999bf244a2 |
|
07-Jun-2012 |
Chet Haase <chet@google.com> |
Track canvas clearing for swap buffers logic. A previous fix made it necessary for a frame to render something to GL in order to cause a call to eglSwapBuffers(). Besides the calls being tracked as part of issuing a DisplayList, there is also a potential call to clear the canvas (via glClear()) on non-opaque surfaces. This call is also good to track, since a surface that gets cleared without any other drawing operations is worth flipping to the screen (to erase old contents on that surface). This fix tracks the status of the pre-draw operations to find out whether glClear() was called and then sets the drawing status appropriately. Issue #6606422 QuickContact dismissal is janky again (Tracking) Change-Id: I5fcaccfdc9293dd46b83f2fc279730a5d2740ebf
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
486590963e2207d68eebd6944fec70d50d41116a |
|
01-Jun-2012 |
Chet Haase <chet@google.com> |
Skip eglSwapBuffers() call when we do not draw to GL The fix is to track when we issue GL drawing commands, and to skip the call to eglSwapBuffers() when a DisplayList does not result in any actual rendering calls to GL. Issue #6364143 QuickMuni list items and buttons flicker instead of fade Change-Id: I60a02c61a58c32d92481a1e814b4c8a49c6a37a3
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
f26c8be01bb218619e073a209c9d57fe9d26c517 |
|
18-May-2012 |
Romain Guy <romainguy@google.com> |
Sanitize display list properties The comparisons used in the various properties setters could fail badly in some specific conditions. The scale properties in particular did not use the same comparisons. This change also clamps alpha to the 0..1 range which avoids overflow issues with lowp registers in GLSL computations. Change-Id: I3e73b584e907a14e2c33d0865ca0d2d4d5bff31d
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
49c5fc0b9e850497233e189ff9dcc71a78ebe6e7 |
|
15-May-2012 |
Romain Guy <romainguy@google.com> |
Avoid unnecessary copy when invoking drawBitmap(int[]) Bug #6483390 Change-Id: I4d2d725ef50c9401b4bd998b6160128102b40745
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
e651cc6239616a202f6e96ebc2ed93b4b8b3627c |
|
15-May-2012 |
Romain Guy <romainguy@google.com> |
Remove all Dalvik allocations from Cavnas.drawBitmap(int[], ...) Change-Id: Ie28538a2104d21154fdc78a56525e7403f08287d
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
4bbcae7eb80704d919d8115d523196798e208439 |
|
07-May-2012 |
Chet Haase <chet@google.com> |
Merge "Fix issue where scale-animating text would jump temporarily a few pixels" into jb-dev
|
d3efd6920e64d0207a0655640297d87d4937ee27 |
|
07-May-2012 |
Chet Haase <chet@google.com> |
Fix issue where scale-animating text would jump temporarily a few pixels Some logic in the native matrix code would determine that a matrix was 'pureTranslate' based on the scale values of a matrix being close-enough to 1, which was within a very small epsilon. This works in general, because screen space coordinates make that epsilon value irrelevant, so close-enough really is close-enough. However, TextView, when centering text, works in a coordinate system that is quite huge, with left/right values about 500,000. These numbers multiplied times that small epsilon value would give a result that was significant, and would cause a miscalculation of up to 4-5 pixels, causing the snap that we'd see for a couple of frames as the scale got "close enough" to 1. The fix is to remove the optimization of "close enough". What we really need the matrix to do is to identify itself as being translate-only when no scale as been set (which is the default). For the purposes of that check, it is good enough to simply check the values against 1 directly. Similarly, the bounds-check logic needs to check against 0 and 1 directly. Issue #6452687: Glitch when changing scale of a view containing text Change-Id: I167fb45d02201fb879deea0e5a7ca95e38128e17
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
d34dd71800d9a1077e58c3b7f2511c46848da417 |
|
03-May-2012 |
Chet Haase <chet@google.com> |
Fix hang/crash in native path code An optimization for paths is to only create a texture for the original native Path object, and have all copies of that object use that texture. This works in most cases, but sometimes that original path object may get destroyed (when the SDK path object is finalized) while we are still referencing and using that object in the DisplayList code. This causes undefined errors such as crashes and hanging as we iterate through the operations of a destroyed (and garbage-filled) path object. The fix is to use the existing ResourceCache to refcount the original path until we are done with it. Issue #6414050 Analytics Dogfood App crashes reliably on Jellybean Change-Id: I5dbec5c069f7d6a1e68c13424f454976a7d188e9
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
1271e2cc80b01d577e9db339459ef0222bb9320d |
|
20-Apr-2012 |
Chet Haase <chet@google.com> |
Remove USE_DISPLAY_LIST_PROPERTIES flag This flag was still hanging around pending any need to disable DisplayList properties. But things seem stable, so it's time to clean up and simplify the code. At the same time, I reduced redundance in DisplayList dimensions. We used to call drawDisplayList() with width/height parameters that were used to do a clip reject. This is redundant with the DisplayList properties that set the bounds of the DisplayList; the left/right and top/bottom properties represent the same width/height properties formerly used in drawDisplayList(). The new approach is to not pass dimensions to drawDisplayList(), but to instead pull those dimensions directly from the DisplayList when needed. Change-Id: I8871beff03b1d4be95f7c6e079c31a71d31e0c56
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
db8c9a6a4d9bf8c39f834b25611926caf21380f6 |
|
22-Mar-2012 |
Chet Haase <chet@google.com> |
Optimization of alpha with DisplayList properties Some views (such as ImageView and TextView) handle non-opaque alpha values directly. This was originally an optimization, but we can handle it faster in many cases without this optimization when DisplayList properties are enabled. Basically, if a view has non-overlapping rendering, we set the alpha value directly on the renderer (the equivalent of setting it on the Paint object) and draw each primitive with that alpha value. Doing it this way avoids re-creating DisplayLists while getting the same speedup that onSetAlpha() used to get pre-DisplayList properties. Change-Id: I0f7827f075d3b35093a882d4adbb300a1063c288
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
8d56b0e1d24f7392314df4be6503af395a843696 |
|
03-Apr-2012 |
Chet Haase <chet@google.com> |
Enabling DisplayList properties An earlier commit fixed problems with enabling DisplayList properties. This CL actually enables the properties. Change-Id: I5c41d0c64e9241822af53eb367de0fed7d9608e0
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
9420abd56a2af7ddbeb70562b79d61b2dca8c5a1 |
|
30-Mar-2012 |
Chet Haase <chet@google.com> |
Re-enable DisplayList properties. Re-enabling DisplayList properties last week caused some app errors due to the way that some transforms were being handled (specifically, those coming from the old Animations and ViewGroup's childStaticTransformation field). This change pushes *all* transform/alpha data from View.draw() into the view's DisplayList, making DisplayLists more encapsulated (and correct). Change-Id: Ia702c6aae050784bb3ed505aa87553113f8a1938
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
76240dafe8654cc3b858241e76618e5b2db5451c |
|
29-Mar-2012 |
Chet Haase <chet@google.com> |
Disable DisplayList properties pending fixes for AlphaAnimation The new DisplayList properties design has ordering conflicts with the way that alpha works with old animations (AlphaAnimation). This CL disables DiksplayList properties while I'm working on a fix and some more thorough tests for old animations-vs-DL properties in general. Change-Id: I8f6893138f939171491c2ec3c889214ee55d17b7
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
b85967b9af76e1e60f7a96603e2567a6449d2e04 |
|
26-Mar-2012 |
Chet Haase <chet@google.com> |
Re-enabling DisplayList properties Several issues came up after DisplayList properties were enabled, so they were disabled pending fixes. Those issues have been fixed, so DisplayList properties are once again being enabled by default. This CL both re-enables these properties (in View.java and DisplayListRenderer.h) and fixes the various issues that enabling them caused the first time around. Related issues (all currently marked as Fixed, though that was simply because DL properties were disabled - this CL provides the real fixes now that DL properties are enabled by default): Issue #6198276 Text input broken Issue #6198472 Native crash at pc 00076428 in many different apps in JRM80 Issue #6204173 Date/time picker isn't rendering all parts of UI Issue #6203941 All Apps overscroll effect is rendered weirdly/has flickering Issue #6200058 CAB rendering issue - not drawing items? Issue #6198578 Front camera shows black screen after taking picture. Issue #6232010 Layers not recreated when children change (DisplayList properties) Change-Id: I8b5f9ec342208ecb20d3e6a60d26cf7c6112ec8b
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
6554943a1dd6854c0f4976900956e556767b49e1 |
|
27-Mar-2012 |
Romain Guy <romainguy@google.com> |
Use a status_t return type for GL functors WebView needs more fine-grained control over the behavior of the framework upon execution of the display lists. The new status_t allows WebView to requests its functor to be re-executed directly without causing a redraw of the entire hierarchy. Change-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ad13c81371cb0b7e49b4c33159a346ce08ac5d69 |
|
22-Mar-2012 |
Chet Haase <chet@google.com> |
Disable DisplayList properties DisplayList properties are (again) disabled by default, via flags in View.java and DisplayListRenderer.h. There are various artifacts to chase down before enabling by default. Issue #6198472 Native crash at pc 00076428 in many different apps in JRM80 Issue #6204173 Date/time picker isn't rendering all parts of UI Issue #6203941 All Apps overscroll effect is rendered weirdly/has flickering Issue #6200058 CAB rendering issue - not drawing items? Issue #6198578 Front camera shows black screen after taking picture. Change-Id: I045dc82ce1d85fedbae3bb88eb2a2dfb6891d41f
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
bdd896c26453ffc56831b0cd167e8780068cee53 |
|
19-Mar-2012 |
Chet Haase <chet@google.com> |
Enable DisplayList properties This CL simply enables DisplayList property functionality. The code for this feature is already there, but it's been disabled by default pending further testing and analysis. This change sets these build-type flags to true so that all hw-accelerated apps will now use DisplayList properties by default. In particular, this feature enables a fast-path for changes that affect the handful of View properties involved in animations (alpha, translationX, etc.). Setting these properties now gets propagated to the native DisplayList associated with the View, avoiding costly recreation of the SDK-level DisplayList and also enabling faster invalidation of the view hierarchy. Change-Id: Ic99c8f28fa9183f2e54e9e4860b333eb9c540f7c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
acdd4b9c4b03bc6660274ab878731383adb5bca5 |
|
15-Mar-2012 |
Romain Guy <romainguy@google.com> |
Set the default text length to -1, not 1 Change-Id: Iccf6f8366c0b659ba7c90df99ae05ebc5d81fcbb
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
390f882f8905e8d1ac0d4b7f2e01aa04dccc3c16 |
|
14-Mar-2012 |
Romain Guy <romainguy@google.com> |
Correctly compute the number of bytes written by each op. Bug #6157792 Previously, DisplayListRenderer would compute the number of bytes written after a drawing op by looking at the difference between the start pointer of the command stream and the end pointer of the command stream. The SkWriter class used to record the commands stream allocates blocks of storage which would cause a crash when a command spanned two blocks. Change-Id: I4d79d3feeb6d72d9d4e6ab05ecebd72d004be56c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3 |
|
21-Feb-2012 |
Chet Haase <chet@google.com> |
Handle view properties at the native level Basic functionality of handling View properties (transforms, left/right/top/bottom, and alpha) at the native DisplayList level. This logic is disabled for now (via compile-time flags in View.java and DisplayListRenderer.h) as we continue work on it (there is no advantage to the new approach until we optimize invalidation and rendering paths to use the new code path). Change-Id: I370c8d21fbd291be415f55515ab8dced6f6d51a3
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
bb0acdf9e1d862a7cf0e2533321fc1105c29b5e3 |
|
05-Mar-2012 |
Romain Guy <romainguy@google.com> |
Delete display list objects and resources on the UI thread Bug #6073717 Bug #6065504 Bug #6026515 Bug #5971725 Prior to this patch, the destructor of DisplayList would always run on the finalizer thread. This could cause a race condition if the UI thread was busy rendering display lists at the same time leading to various random native crashes. Change-Id: Ie11108e3b1538d4b358a1a8b4cce1b2d33152d0c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ad1daaa87b793af30f3dd67a0f3cd5c0fd6ac0c1 |
|
02-Mar-2012 |
Romain Guy <romainguy@google.com> |
Remove stray log Change-Id: I0c1979aab395098651c8a63d0bae0198ebc3746b
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
325740fb444af8fc7fb0119b2e30ce322c2ae134 |
|
25-Feb-2012 |
Romain Guy <romainguy@google.com> |
Add hooks to implement Canvas.drawTextOnPath() in GL Change-Id: I165c9e05facf5365aa6850605688e538640c7fcc
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
4bcb7467a174ed03a67b0c62950c555813ddf00d |
|
24-Feb-2012 |
Romain Guy <romainguy@google.com> |
Only recreate path textures when necessary When a drawPath command is recorded in a display list, a copy of the source path is made to preserve against possible modifications of the said source path. Copies are discarded when a display list is cleared, which usually happens on invalidate(). This means that even if a path is never modified, the texture generated to draw it on screen is destroyed every time an invalidate() is issued. This change fixes this problem by introducing a reference to the source path in the copy. If both the copy and the source path have the same genID, they are the same path and can share the same texture. Change-Id: I34849311c183e06336a1391d2d1568a087f973f6
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
96ebc6b5097ab73eef45e094241e444f4c21bfcc |
|
22-Feb-2012 |
Romain Guy <romainguy@google.com> |
Only copy paths, paints and shaders when we need to. Change-Id: Iba7a9c92c865f698821b6ff7bc4f502659642ac1
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
33f6beb10f98e8ba96250e284876d607055d278d |
|
17-Feb-2012 |
Romain Guy <romainguy@google.com> |
Record possible clip rejects when recording display lists This optimization allows us to quickly skip operations that lie entirely outside of the known bounds of a display list. Because of ViewGroup.setClipChildren, we must keep the operations recorded in the display list. setClipChildren(false) is however a very uncommon operation and we will therefore often benefit from this new optimization. Change-Id: I0942c864e55298e6dccd9977d15adefbce3ba3ad
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
13631f3da855f200a151e7837ed9f6b079622b58 |
|
31-Jan-2012 |
Romain Guy <romainguy@google.com> |
Add debug markers to OpenGLRenderer These markers will be used to group the GL commands by View in the OpenGL ES debugging tool. This will help correlate individual GL calls to higher level components like Views. Change-Id: I73607ba2e7224a80ac32527968261ee008f049c6
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
5ff9df658230d49e42c43586997a02d8e4dd417e |
|
24-Jan-2012 |
Romain Guy <romainguy@google.com> |
Add full support for Canvas.setDrawFilter() Change-Id: I0ad35d0603c4eeda469014803be14c1dcdde918c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
22d418437e44587cb0fba4353515719453269189 |
|
20-Jan-2012 |
Romain Guy <romainguy@google.com> |
Fix the build, for real Change-Id: I6263f7e5e3ae2f7efe045f8b464c0ed1b87fc793
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
eb9a5367e8f0e970db8509ffb2584f5376bc62ed |
|
18-Jan-2012 |
Romain Guy <romainguy@google.com> |
First pass at implementing Canvas.drawPosText() in GL Change-Id: Ia3ac347e95d57eb86c63045156c8dbc0572b03cb
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
5baa3a62a97544669fba6d65a11c07f252e654dd |
|
20-Dec-2011 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE See https://android-git.corp.google.com/g/156016 Bug: 5449033 Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
8f9a9f61ab793d9387a5942b307e74324704893b |
|
05-Dec-2011 |
Romain Guy <romainguy@google.com> |
Clip text correctly Bug #5706056 A newly introduced optimization relied on the display list renderer to properly measure text to perform fast clipping. The paint used to measure text needs to have AA and glyph id encoding set to return the correct results. Unfortunately these properties were set by the GL renderer and not by the display list renderer. This change simply sets the properties in the display list renderer instead. This change also improves the error message printed out when the application attempts to use a bitmap larger than the max texture size. Change-Id: I4d84e1c7d194aed9ad476f69434eaa2c8f3836a8
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
cac5fd3e09e9dc918753d4aff624bf29a367ade3 |
|
02-Dec-2011 |
Romain Guy <romainguy@google.com> |
Faster text clipping Change-Id: I03a00c4261d81a416b1ad7b86ce2d432c71908b4
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
7953745dd565167113f8cbfc461bc0521d32d870 |
|
12-Oct-2011 |
Romain Guy <romainguy@google.com> |
Reduce the size of libhwui by 50% This change removes unnessary symbols. All symbols are hidden by default, public APIs with exported symbols are explicitly marked with ANDROID_API. Change-Id: I692fde432a86c12108de1cfd1f6504919a7d5f3f
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
04c9d8c2ffd028c35c750bac0a4a7b79e48059b5 |
|
25-Aug-2011 |
Romain Guy <romainguy@google.com> |
Optimize display lists Remove redundant or useless operations Change-Id: If989b4eaa9143eef4254c38b39959aeed1f2b9ab
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
65b345fa22b878e141b8fd8ece9c208df00fa40f |
|
28-Jul-2011 |
Romain Guy <romainguy@google.com> |
Reclaim more memory, more often. Yay. Change-Id: I04557ad575c307a55088549f48f0e9ad994b7275
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
6d7475d666baefaa3ba9f0dcee25238739454241 |
|
28-Jul-2011 |
Romain Guy <romainguy@google.com> |
Destroy layers and flush layers cache when a window is destroyed. Change-Id: I3fa1bc3ff50fb99e3d2e490925bd6b0a0f809fff
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
162a0217563f4665da6eb183dfce0fef740f641f |
|
22-Jul-2011 |
Jeff Brown <jeffbrown@google.com> |
Decouple GLES20RecordingCanvas lifetime from GLES20DisplayList. Bug: 5062011 Previously, each GLES20DisplayList would hold onto an instance of GLES20RecordingCanvas. In turn, each GLES20RecordingCanvas held onto an SkWriter with a 16Kb buffer along with several other objects. With one display list per view and hundreds of views, the overhead could add up to a few megabytes. Ensured that the GLES20RecordingCanvas is reset as soon as the display list has been constructed, thereby promptly freeing the 16Kb buffer. Changed GLES20DisplayList so that it acquires a GLES20RecordingCanvas from a pool as needed and recycles it when done. Removed some dead code and cruft related to the construction of GLES20Canvas objects in general. Some code was written with the assumption that the underlying renderer object could change behind the scenes or might be lazily constructed, but that isn't actually the case so we can simplify things. Removed an unnecessary weak reference from GLES20DisplayList to the View. It isn't actually used anywhere. Fixed a bug in GLES20DisplayList where isValid() would return true while the display list was being recorded. This is incorrect because the native display list might not actually exist. Worse, even if the native display list does exist, it is stale and potentially refers to old Bitmaps that have been GC'd (because the mBitmaps list was cleared when recording started). Change-Id: Ib12d5483688cb253478edeb0156d34c476c2566b
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
d586ad9c9fec80aa1d24d6b53cd2c8d5b47fe868 |
|
23-Jun-2011 |
Romain Guy <romainguy@google.com> |
Fix another memory leak in OpenGLRenderer Change-Id: I23ed56891452a05cf3ca13f6919c4fef90d5ff4e
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
f6a63ae3a7004a8eca87fca5a66cfb6aef4e86b5 |
|
23-Jun-2011 |
Romain Guy <romainguy@google.com> |
Fix memory leak in OpenGLRenderer. When creating a display list, matrices are duplicated locally. They were however never deleted, thus causing apps to slowly leak memory (a matrix is about 40 bytes.) Change-Id: Iac465b720d4c4c9b5ca3fce870c0c912c14a74ab
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ed30fd8e9a2d65ee5c8520de55b0089c219f390c |
|
23-Apr-2011 |
Chet Haase <chet@google.com> |
Add ability for hierarchyviewer to output displaylist info Clicking on a node in hierarchyviewer1 and hierarchyviewer2 and then clicking the new "Dump DisplayList" button will cause the display list for the selected node (including its children) to be output into logcat. Change-Id: Iad05f5f6cca0f8b465dccd962b501dc18fe6e053
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
a17de9b493123f0d6e6d0b842150bf29322b7a88 |
|
05-May-2011 |
Chet Haase <chet@google.com> |
Revert "Add ability for hierarchyviewer to output displaylist info" This reverts commit b2a4b52e8d5e499d33e2765e8c47851bf0266299.
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
b2a4b52e8d5e499d33e2765e8c47851bf0266299 |
|
23-Apr-2011 |
Chet Haase <chet@google.com> |
Add ability for hierarchyviewer to output displaylist info Clicking on a node in hierarchyviewer1 and hierarchyviewer2 and then clicking the new "Dump DisplayList" button will cause the display list for the selected node (including its children) to be output into logcat. Change-Id: Id32f62569ad1ab4d533bc62987f3a7390c1bb4e6
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
9c1e23baf5bfbebd1aebbd6d9a18c225325567ce |
|
24-Mar-2011 |
Chet Haase <chet@google.com> |
Add logging of graphics acceleration info to bugreports Change-Id: I9fa4cda6ccf92df9d1c644ccdc0e7274a30106e0
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ed6fcb034b44d9a6ac2fc72fee6030417811f234 |
|
21-Mar-2011 |
Romain Guy <romainguy@google.com> |
Add support for drawPoint() and drawPoints(). Change-Id: I01bef50c08ec3160f8d40dc060b2cf6c2e4d7639
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
b29cfbf768eab959b31410aafc0a99e20249e9d7 |
|
19-Mar-2011 |
Romain Guy <romainguy@google.com> |
Fix paths rendering issues. See ApiDemos, PathEffect and PathFillTypes. Change-Id: I9f9593c1da33d0d013b5b89c86bc5bd71128a192
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
7b5b6abf852c039983eded25ebe43a70fef5a4ab |
|
15-Mar-2011 |
Romain Guy <romainguy@google.com> |
Fix rendering artifact in edge fades. Bug #4092053 The problem always existed but was made visible by partial invalidation. When saving a layer, the renderer would try to postpone glClear() operations until the next drawing command. This however does not work since the clip might have changed. The fix is rather simple and simply gets rid of this "optimization" (that turned out to be usless anyway given how View issues saveLayer() calls.) This change also fixes an issue with gradients (color stops where not properly computed when using a null stops array) and optimizes display lists rendering (quickly rejects larger portions of the tree to avoid executing unnecessary code.) Change-Id: I0f5b5f6e1220d41a09cc2fa84c212b0b4afd9c46
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
cabfcc1364eb7e4de0b15b3574fba45027b45cfc |
|
08-Mar-2011 |
Romain Guy <romainguy@google.com> |
Add support for partial invalidates in WebView Bug #3461349 This change also fixes two bugs that prevented partial invalidates from working with other views. Both bugs were in our EGL implementation: they were preventing the caller from comparing the current context/surface with another context/surface. This was causing HardwareRenderer to always redraw the entire screen. Change-Id: I33e096b304d4a0b7e6c8f92930f71d2ece9bebf5
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
6062c5912dc79704b489fc8c289b78a400ed05ee |
|
22-Feb-2011 |
Derek Sollenberger <djsollen@google.com> |
Skia Merge (revision 808) This is a companion CL to the one found in /external/skia Change-Id: If81748545435cab20a5d8479329ab333cb973e16
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
5a7e828842c26f64bb6e0ef3e0019e1949b245ee |
|
04-Feb-2011 |
Chet Haase <chet@google.com> |
Fix crash when Paths are GCd in hw accelerated apps A recent change to optimize path rendering didn't account for the destruction of native objects by the VM finalizer. We may be done with the Java level version before we're done with the native structure that's used by the display list. For example, a drawing method on a View that creates a temporary path to render into the canvas will implicitly create a native structure that is put onto the GL display list. That temporary path may go away, but the native version should stick around as long as the display list does. The fix is to refcount the original native version of the path and only delete it when the refcoutn reaches zero (which means that it is no longer needed by any display list). This is a similar mechanism used for bitmaps and shaders. Change-Id: I4de1047415066d425d1c689aa60827f97729b470
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
d63cbd10765e8f48e39b07b15f0a4b70bf853ec8 |
|
04-Feb-2011 |
Chet Haase <chet@google.com> |
Fix leak in reused display lists Change-Id: I32a9c41abf8f8cbcaaaa6fcc82d296800014a1b2
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
2fc941e4650d618ff6e122f28b616d9032ffa134 |
|
04-Feb-2011 |
Romain Guy <romainguy@google.com> |
Fixes cache misses and extra allocations. Bug #3421454 Change-Id: If4d5c960a7e4c581a9d213073e658284b4e1c497
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
2b1847ea60650a9f68372abe860415f18b55081d |
|
26-Jan-2011 |
Romain Guy <romainguy@google.com> |
Remove unused API Change-Id: I1714fd82a64b752f0350ef4ef9179ce19e089c6a
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
7d7b5490a0b0763e831b31bc11f17d8159b5914a |
|
25-Jan-2011 |
Romain Guy <romainguy@google.com> |
Enable partial invalidates when rendering with OpenGL. Change-Id: Ie8be06c4776b815e8737753eb8003b4fd8936130
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
daf98e941e140e8739458126640183b9f296a2ab |
|
10-Jan-2011 |
Chet Haase <chet@google.com> |
Use optimized display lists for all hwaccelerated rendering Previously, display lists were used only if hardware acceleration was enabled for an application (hardwareAccelerated=true) *and* if setDrawingCacheEnabled(true) was called. This change makes the framework use display lists for all views in an application if hardware acceleration is enabled. In addition, display list renderering has been optimized so that any view's recreation of its own display list (which is necessary whenever the visuals of that view change) will not cause any other display list in its parent hierarchy to change. Instead, when there are any visual changes in the hierarchy, only those views which need to have new display list content will recreate their display lists. This optimization works by caching display list references in each parent display list (so the container of some child will refer to its child's display list by a reference to the child's display list). Then when a view needs to recreate its display list, it will do so inside the same display list object. This will cause the content to get refreshed, but not the reference to that content. Then when the view hierarchy is redrawn, it will automatically pick up the new content from the old reference. This optimization will not necessarily improve performance when applications need to update the entire view hierarchy or redraw the entire screen, but it does show significant improvements when redrawing only a portion of the screen, especially when the regions that are not refreshed are complex and time- consuming to redraw. Change-Id: I68d21cac6a224a05703070ec85253220cb001eb4
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
8b2f5267f16c295f12faab810527cd6311997e34 |
|
24-Jan-2011 |
Romain Guy <romainguy@google.com> |
Add support for arcs. Change-Id: I96c057ff4eb1b464b03f132da0b85333777bee4f
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
c1cd9ba335b293f11e1082447ef08e474710a05f |
|
23-Jan-2011 |
Romain Guy <romainguy@google.com> |
Add support for ovals and stroked rectangles. Change-Id: I1292e241386763c82e6622c8f7ed90b0f5b7bd4f
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
27454a42de8b3c54cdd3b2b2a12446c2c10c8cb9 |
|
23-Jan-2011 |
Romain Guy <romainguy@google.com> |
Collapse sucessive calls to restoreToCount() in display lists. Change-Id: Icb3d3dc2c579436d375269a9cb0b821a931c5a79
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
5a7b466a2b4b7ced739bd5c31e022de61650545a |
|
21-Jan-2011 |
Romain Guy <romainguy@google.com> |
Add support for drawBitmapMesh(). Change-Id: Ic77f9c534bb90dc7b9458299544bd50b8b6ae6a5
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
01d58e43ede5ca98cbebdd166f9b0c545032c01b |
|
20-Jan-2011 |
Romain Guy <romainguy@google.com> |
Add rounded rects and circles support to OpenGLRenderer. Change-Id: I6cedf2b495d58de7c0437096809fa9e4518a1b8c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
807daf7df615b60ce6fc41355aabe3aa353cebab |
|
18-Jan-2011 |
Romain Guy <romainguy@google.com> |
Add support for skew() Change-Id: Ia3a9a867f74fd78b61f75179e3788fdc2f0cacd0
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
43ccf4663c822ddd435b7683cc05221f6169c6c3 |
|
15-Jan-2011 |
Romain Guy <romainguy@google.com> |
Don't crash Launcher on config change. Change-Id: Ibbbd7146c5ff69e9639b433f39041053654d808c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
1f1fcb70b6e43a6b4df0dbab75a34429d4744624 |
|
15-Jan-2011 |
Romain Guy <romainguy@google.com> |
Don't delete objects twice... Change-Id: Ibc67aed098c9300cf45eb46abda1938c418808c3
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
24c00216687ac87fe531dc4d4168ac0c0ca04ea6 |
|
15-Jan-2011 |
Romain Guy <romainguy@google.com> |
Copy shaders when recording them in display lists. Change-Id: I3f22dd35f1e31c9e5102955d76548098b7b0cd8d
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ffac7fc5042296a459d0f5a450dbfe20917093dc |
|
14-Jan-2011 |
Romain Guy <romainguy@google.com> |
Add debug logs for display lists. Change-Id: I7bae8fd96e9eccb51f29f73e4069b4d3e6bdbdd7
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ada830f639591b99c3e40de22b07296c7932a33f |
|
13-Jan-2011 |
Romain Guy <romainguy@google.com> |
Cleanup implementation of hardware layers. The new implementation relies on OpenGLRenderer's existing layer code instead of duplicating it. The new code is much cleaner, with simpler and better APIs and allows tracking of drawn regions inside layers. Region tracking is not yet enabled but this will be done in a future CL. Change-Id: Ie826121a2227de8252c77b992a61218defea5143
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
6c319ca1275c8db892c39b48fc54864c949f9171 |
|
11-Jan-2011 |
Romain Guy <romainguy@google.com> |
Better backend for hardware layers. With this new backend, a hardware layer is only recreated when its associated view is udpated. This offers fast composition in GL and fast update of the layer in GL as well. Change-Id: I97c43a612f5955c6bf1c192c8ca4af10fdf1d076
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
5977baa1fa24125c148a72699b53e62abaf08960 |
|
06-Jan-2011 |
Chet Haase <chet@google.com> |
Reuse of native display list objects Change-Id: Ia4553e23930ad20e56c11faa7809be788a1ad4bb
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
0fe478ea04720a57ef3919dbc23711bc7eba517f |
|
08-Nov-2010 |
Romain Guy <romainguy@google.com> |
Support nested display lists. Change-Id: I3815a2832fc0f722c668ba8f51c5f177edb77c94
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
5b3b35296e8b2c8d3f07d32bb645d5414db41a1d |
|
28-Oct-2010 |
Romain Guy <romainguy@google.com> |
Optimize FBO drawing with regions. This optimization is currently disabled until Launcher is modified to take advantage of it. The optimization can be enabled by turning on RENDER_LAYERS_AS_REGIONS in the OpenGLRenderer.h file. Change-Id: I2fdf59d0f4dc690a3d7f712173ab8db3848b27b1
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
ad93c2bb63dfc813b2eefa1043aa63afbddce655 |
|
23-Oct-2010 |
Chet Haase <chet@google.com> |
Optimizing ColorFilter in display lists Change-Id: Ie4d5e5b0bc45e0ce47bba144049303c270762e54
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
d98aa2de9ab18e09c2be1997f41212740f51f6e6 |
|
26-Oct-2010 |
Chet Haase <chet@google.com> |
DisplayList optimizations and fixes. We now use a copy of SkPaint objects to avoid having it changed from under us. We reuse copies that have not changed. We also copy the SkMatrix every time to avoid the same problem. Change-Id: If3fd80698f2d43ea16d23302063e0fd8d0549027
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
5c13d89c1332fcc499379b9064b891187b75ca32 |
|
08-Oct-2010 |
Chet Haase <chet@google.com> |
Optimizing display lists by referencing pointers to resources instead of copying them Change-Id: I81ad3551d74aa1e5bb64d69e33d2eb29a6c1eb6a
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
4bb942083a0d4db746adf95349108dd8ef842e32 |
|
13-Oct-2010 |
Romain Guy <romainguy@google.com> |
Optimize 9patch rendering. This change detects empty quads in 9patches and removes them from the mesh to avoid unnecessary blending. Change-Id: I4500566fb4cb6845d64dcb59b522c0be7a0ec704
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
6b7bd24659fb175fe1f0e97c86c18969918b496a |
|
07-Oct-2010 |
Romain Guy <romainguy@google.com> |
Don't clear the framebuffer when not needed.
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
7975fb6d12cb1eb96b75e3a563627cd4c4081bd6 |
|
02-Oct-2010 |
Romain Guy <romainguy@google.com> |
Apply bilinear filtering to text. Change-Id: I2c81ad657ee2a11a2139e0b11ae3749db54c0749
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
b051e895ccb696604349c6c5efe7c4747e1d1ab6 |
|
29-Sep-2010 |
Romain Guy <romainguy@google.com> |
Add display lists caching. Change-Id: Iac3a248a81ed8cb076a83ef9d186b8ebba685b4c
/frameworks/base/libs/hwui/DisplayListRenderer.h
|
4aa90573bbf86db0d33a3a790c5dbd0d93b95cfe |
|
27-Sep-2010 |
Romain Guy <romainguy@google.com> |
Adding display lists to the GL renderer (checkpoint.) Change-Id: Iaa49757600a53b39369dbb23f8c3feab282518e6
/frameworks/base/libs/hwui/DisplayListRenderer.h
|