summaryrefslogtreecommitdiffstats
path: root/libs/hwui/DisplayList.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Restore previous alpha value on noop'd DisplayList operationsChet Haase2013-05-231-1/+3
| | | | | | | | | | | Previously, when a DisplayList operation was rejected because it was not in the clip bounds, the code would not properly restore the previous state, leading to errors in alpha values of the noop'd op being applied to unrelated operations later in the DisplayList. Issue #9051935 Flash of grey background when transitioning to conversation view Change-Id: I56645cc9ebf2e07be0228ca5e249213dbeb10d7d
* Fix off by one error in log trackingChris Craik2013-05-091-1/+1
| | | | | | | | | bug:8875715 Additionally moves op logging before the op is executed, to print correctly, in pre-order traversal Change-Id: I4e9566261f8363c73739d183e6d82b854f72ffad
* Fix scaled-view droppings artifactChet Haase2013-05-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | Sometimes views that are scaled leave behind rows/columns on the screen as they move/scale around. The problem was that the pivot point around which the scale takes place (in the default case of scaling around the center of the view) was getting truncated to integer coordinates in the display list. Meanwhile, the pivot point at the Java level was using the true float values, resulting in a mis-match between the invalidation rectangle (computed at the Java level) and the drawing-operation rectangle (computed at the native level). This only occurred when views had odd bounds (thus the integer representation of the center differed from the float representation of the center), and only when some other drawing operation would expand the clip rect to allow the incorrect drawing operation (using the wrong pivot point) to draw outside of its clip boundaries. Issue #8617023 7x7 screen not updated correctly Change-Id: If88889b9450d34535df732b78077a29b1f24802d
* Fix quickReject logic to account for setClipChildren() settingChet Haase2013-04-191-16/+17
| | | | | | | | | | | | | | | | 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
* Draw Operation mergingChris Craik2013-04-151-1/+1
| | | | | | | | | | | | | | | | | | 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
* Update view's alpha and layer docsChris Craik2013-04-011-2/+7
| | | | | | | | | | | | bug:8501661 Makes the performance issues and interaction with layer type/paint more clear. Additionally, corrects change from 47ab7d6612e2b5b8b66fb261dafef7c91264e173 to still allow displayList alpha to override layer paint Change-Id: Ic94d75865700820489370461cd8ac9f9077a8d90
* Isolate tiling clip state from snapshotChris Craik2013-03-211-3/+3
| | | | | | | | | | bug:8409891 Snapshots frequently have their clip overwritten due to applying deferred state - now, store tiling clip information in a separate rect, outside of the snapshot so it isn't overwritten. Change-Id: I21ca4c45dcd802eae99e8de86f11525196777ccb
* Update snapshot upon saveLayer deferralChris Craik2013-03-201-1/+1
| | | | | | | | | | | | 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
* Merge "Use snapshot alpha for layers" into jb-mr2-devChris Craik2013-03-201-16/+13
|\
| * Use snapshot alpha for layersChris Craik2013-03-151-16/+13
| | | | | | | | | | | | | | | | | | | | | | 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
* | Merge all shapes/paths caches to PathCacheRomain Guy2013-03-181-3/+3
|/ | | | | | | | | This change will greatly simplify the multi-threading of all shape types. This change also uses PathTessellator to render convex paths. Change-Id: I4e65bc95c9d24ecae2183b72204de5c2dfb6ada4
* Fully deferred displaylist replayChris Craik2013-03-151-48/+103
| | | | | | | | | | | | | | | | | | 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
* Round scale factors to rasterize textRomain Guy2013-03-061-2/+1
| | | | | | Harder, better, faster, stronger. Change-Id: Iee4125de98c4e61603f56bb7f06002cc86458214
* Add deferredList null checkChris Craik2013-02-221-3/+5
| | | | | | Needed for non-deferred mode (debug.hwui.disable_draw_defer = true) Change-Id: I278cbe200aa6ce06fa92dc45c63ceda6e85a0cbe
* Merge "Prettify display lists logging"Romain Guy2013-02-221-3/+5
|\
| * Prettify display lists loggingRomain Guy2013-02-221-3/+5
| | | | | | | | | | | | This change makes it a lot easier to see the tree structure. Change-Id: I4969abd1eb010f1d529671f8d86dc4c930be24f6
* | Fix clipping and stencil layer issuesChris Craik2013-02-211-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "Clean up clipping and deferral logic"Chris Craik2013-02-201-7/+2
|\ \ | |/ |/|
| * Clean up clipping and deferral logicChris Craik2013-02-191-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Expose display list APIsRomain Guy2013-02-191-0/+10
|/ | | | | | | The exposed APIs are slightly simpler than the full APIs used internally. Only APIs useful to applications are exposed. Change-Id: Ie03014628d40ad5ef63dedbc52ce3def84429d54
* DisplayList draw operation reorderingChris Craik2013-02-151-3/+21
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Move DisplayList to its own cpp fileChris Craik2013-02-141-0/+436
Change-Id: Ic9c1bbf4673ad5c756f3908b2ab7e699edd6a119