dd671599bed9d3ca28e2c744e8c224e1e15bc914 |
|
19-Apr-2013 |
Chet Haase <chet@google.com> |
Fix quickReject logic to account for setClipChildren() setting The rendering code optimizes by rejecting drawing operations that lie outside of the bounds of their views. This works in most situations, but breaks down when containers have called setClipChildren(false), because we reject drawing that is outside of that container, but which should be drawn anyway. Fix is to pass in the value of that flag to the DisplayList drawing routines which take that flag into account when deciding whether to quickReject any particular operation. Issue #8659277 animation clipping Change-Id: Ief568e4db01b533a97b3c5ea5ad777c03c0eea71
/frameworks/base/libs/hwui/DisplayListOp.h
|
ee5b2c6de7fb32d945a5a1303012a5f94b719dfa |
|
18-Apr-2013 |
Chris Craik <ccraik@google.com> |
Prevent transformed ops from merging in the first place bug:8649215 Previously we prevented ops with non-translate transforms from merging, but missed the case of the first op in a merging batch containing a non-translate transform. This fulfills the assumption of drawText's non-immediate mode that merged ops will have pure translate transforms. Change-Id: I6f6db341aff3f7e84e74b4c3ccf970d585a2db1a
/frameworks/base/libs/hwui/DisplayListOp.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/DisplayListOp.h
|
e7c69c6fe3eac1fb01126ede550e5dc32979804a |
|
03-Apr-2013 |
Chris Craik <ccraik@google.com> |
Account for hairlines in quick rejection logic bug:8531373 Change-Id: I35444014f23fc61da687694fccc0d13bce718793
/frameworks/base/libs/hwui/DisplayListOp.h
|
7273daace9303f4662444111c40bb83d3ead4a92 |
|
28-Mar-2013 |
Chris Craik <ccraik@google.com> |
Fix issues related to saveLayer/restore deferral bug:8464795 Changes drawModifiers and alpha to be restored for all operations, since saveLayer/restore use these values, not just draw operations Also forces a renderer state restoration before a deferred restore op is played back, in case it is associated with a saveLayer that doesn't have the save_clip flag set Change-Id: I9da5d44fefbfffdee164c98f4f139843dacf85df
/frameworks/base/libs/hwui/DisplayListOp.h
|
d90144db52c7297879b950cbbc85137ed123ab5b |
|
19-Mar-2013 |
Chris Craik <ccraik@google.com> |
Update snapshot upon saveLayer deferral bug:8409891 In order to defer fbo-targetting saveLayer operations, it's necessary to update the snapshot at defer time so that deferred display state (namely, clip and transform) are fbo relative. Re-enables deferring, as the issues with saveLayer are fixed. Change-Id: I74b0779bc732675c747208f0757c3ea85f6dfbed
/frameworks/base/libs/hwui/DisplayListOp.h
|
4494599e5a4931426d5649e1d1c4f9db83824ae8 |
|
20-Mar-2013 |
Chris Craik <ccraik@google.com> |
Merge "Use snapshot alpha for layers" into jb-mr2-dev
|
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/DisplayListOp.h
|
f40b8a939fef0a19b40188f007a3364311d6dabf |
|
15-Mar-2013 |
Chris Craik <ccraik@google.com> |
Merge "Fully deferred displaylist replay" into jb-mr2-dev
|
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/DisplayListOp.h
|
bd3055f95e67a55648fd84a125e939293115171b |
|
14-Mar-2013 |
Romain Guy <romainguy@google.com> |
Less aggressive glyphs precaching The renderer used to pre-cache glyphs at record time. This then changed to pre-caching at the beginning of every frame. This unfortunately entails a lot of duplicate work on every frame, which amounts to 0.5 to 1ms in some stock applications. This change is somewhere in the middle: pre-caching happens the first time a DrawTextOp is deferred or every time the screen-space transform is different from the last pre-caching operation. Change-Id: Id6d9e2599d90a5b75010b0f0a28746befbf3c205
/frameworks/base/libs/hwui/DisplayListOp.h
|
ca89e2a68703bd428e8b66547d033a6ed35b3595 |
|
09-Mar-2013 |
Romain Guy <romainguy@google.com> |
Precache paths from a worker thread Change-Id: I3e7b53d67e0e03e403beaf55c39350ead7f1e309
/frameworks/base/libs/hwui/DisplayListOp.h
|
624234f69b2a4781d24f3e4c6ae6450729e38397 |
|
06-Mar-2013 |
Romain Guy <romainguy@google.com> |
Take only the scale params into account to rasterize text This change extracts the scale parameters of the current transform to pass then to the font renderer. Rotation and perspective are applied to the generated mesh inside the vertex shader. This limits the number of glyphs we have to create in the font cache and thus reduces memory churn. Change-Id: Ic5b3bae2b2b0e0250a8ee723b071a1709725c749
/frameworks/base/libs/hwui/DisplayListOp.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/DisplayListOp.h
|
d6960a49b40703e8af55c1fb628a2e0c5d2b40cf |
|
28-Feb-2013 |
Chris Craik <ccraik@google.com> |
Account for text alignment in Op bounds calculation bug:8243821 Previously this wasn't done for deferred clipping + reordering, so non-left-aligned text would be clipped at defer time, when it wouldn't have been at draw time (in OpenGLRenderer::quickReject()) Change-Id: Ic96949c2dca4378f284606b37d9411ed42f8d203
/frameworks/base/libs/hwui/DisplayListOp.h
|
758724fd09a1599f2c55130f81953cfa6c17c300 |
|
27-Feb-2013 |
Romain Guy <romainguy@google.com> |
Don't increment the paint's generation ID when drawing bitmaps When the renderer draws a bitmap as part of a display list with an alpha < 1.0f, the paint is temporarily modified to alter the opacity of the bitmap. This has the side effect of increasing the paint's generation ID counter which can break paint caching. Change-Id: I5055d059ad1639829fa50af3d946e296c4dab877
/frameworks/base/libs/hwui/DisplayListOp.h
|
505d1d64eda6e47caabf8701cb39ec9b176b3238 |
|
22-Feb-2013 |
Romain Guy <romainguy@google.com> |
Merge "Prettify display lists logging"
|
7031ff68bb998dbbd7caf3b2fd75eef747a86725 |
|
22-Feb-2013 |
Romain Guy <romainguy@google.com> |
Prettify display lists logging This change makes it a lot easier to see the tree structure. Change-Id: I4969abd1eb010f1d529671f8d86dc4c930be24f6
/frameworks/base/libs/hwui/DisplayListOp.h
|
b98a016c6769b9e80d392df22fe77a2fca048d9f |
|
21-Feb-2013 |
Chris Craik <ccraik@google.com> |
Fix clipping and stencil layer issues bug:8235699 Ensure rectangle clipping operations disable deferring when necessary (i.e., when the op might create a non-rect region), including in DisplayList::setViewProperties Additionally, makes clipping with a kUnion always use a region, for consistency with software rendering Change-Id: I6730f1a80250bcf3f91cd4afde646d470a12dbc2
/frameworks/base/libs/hwui/DisplayListOp.h
|
5d11676414b3606792e23c269cf75b44faa1a2af |
|
20-Feb-2013 |
Chris Craik <ccraik@google.com> |
Clean up clipping and deferral logic bug:8037003 -Merges replay methods -Bounds checking for DrawBitmapMesh, DrawRects and DrawDisplayList -Use clip as bounds for otherwise unbounded draw operations Clip-as-bounds is correct for drawColor and functor, but other draw operations (pos text, text on path, and layers) still need true bounds calculation Change-Id: I5d5149d2c624f01e3fe46628bf156e835e69b9d5
/frameworks/base/libs/hwui/DisplayListOp.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/DisplayListOp.h
|
0776a6069365bdea83855db154fa2d37f9d1d808 |
|
15-Feb-2013 |
Chris Craik <ccraik@google.com> |
Move DisplayList to its own cpp file Change-Id: Ic9c1bbf4673ad5c756f3908b2ab7e699edd6a119
/frameworks/base/libs/hwui/DisplayListOp.h
|
3dc553babe515fbf9bd042dd63a792e5de578ecd |
|
04-Feb-2013 |
Chris Craik <ccraik@google.com> |
Simplify display list logging, removing pointers Also fix save indents Change-Id: Ia1add83422fbc200b85fd6688f5be60292b0f178
/frameworks/base/libs/hwui/DisplayListOp.h
|
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/DisplayListOp.h
|