summaryrefslogtreecommitdiffstats
path: root/libs/hwui
Commit message (Collapse)AuthorAgeFilesLines
* Merge "First OpenGL ES 3.0 based optimization" into jb-mr2-devRomain Guy2013-04-047-13/+40
|\
| * First OpenGL ES 3.0 based optimizationRomain Guy2013-04-047-13/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change uses a new OpenGL ES 3.0 feature to upload less data when the font cache needs to be update. This can result in significant performance improvements on device with large textures or with locales that use a lot of glyphs (CJK for instance.) This change also fixes various unpack alignment issues. The unpack alignment, as well as the unpack row length, is not texture specific but a global state that affect all glTex/SubImage2D calls. Some of them were missing the appropriate glPixelStorei() call. This could result in corrupted textures. Change-Id: Iefb429d4d0d0b4e0faeadf27daafee6d30a21d85
* | Merge "Traverse layers in update order" into jb-mr2-devChris Craik2013-04-043-8/+7
|\ \
| * | Traverse layers in update orderChris Craik2013-04-043-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bug:8540150 Layers now require traversal in update order, as it will be child first, then parent for layer-in-layer Fixes issue with deferred layer playback not flushing in order, and thus child not painting before parent Also fixes DisplayList to only be cleared after flush in deferred list Change-Id: I2f284d00079cdb20798aeef6a1c94e823940db40
* | | Merge "Add internal API to query GL version number" into jb-mr2-devRomain Guy2013-04-042-0/+30
|\ \ \ | |/ / |/| / | |/
| * Add internal API to query GL version numberRomain Guy2013-04-042-0/+30
| | | | | | | | Change-Id: Idc02efc237b8e97445a9bab05c291bf193c7f279
* | Merge "Correct save/restore match up" into jb-mr2-devChris Craik2013-04-031-1/+6
|\ \
| * | Correct save/restore match upChris Craik2013-04-031-1/+6
| |/ | | | | | | | | | | | | | | | | bug:8480642 With the additional save/restore around the operations in flush, the stored restore batches weren't matching up to the correct saves. Change-Id: I2f48f19009bd97289b6973283f43dc8d3e35affd
* | Merge "Account for hairlines in quick rejection logic" into jb-mr2-devChris Craik2013-04-032-1/+6
|\ \
| * | Account for hairlines in quick rejection logicChris Craik2013-04-032-1/+6
| |/ | | | | | | | | bug:8531373 Change-Id: I35444014f23fc61da687694fccc0d13bce718793
* | Update view's alpha and layer docsChris Craik2013-04-013-11/+43
|/ | | | | | | | | | | | 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
* Prevent crash when a single layer is enqueued several times for updatesRomain Guy2013-03-293-19/+36
| | | | | | Bug #8504687 Change-Id: I9b01bbc4e3f37af23dfe5e68d3d03ad3d238b94a
* Merge "Update layers to clear them Bug #8489505" into jb-mr2-devRomain Guy2013-03-281-1/+1
|\
| * Update layers to clear themRomain Guy2013-03-281-1/+1
| | | | | | | | | | | | | | | | | | | | Bug #8489505 A layer should be updated even with an empty deferred display list. It is possible for a layer to request an update just to execute a clear which will be handled by LayerRenderer::prepareDirty(). Change-Id: Iffb98bd71d6caa8d4a701df98197676f9423c0c2
* | am 3ae30483: am a19647d3: Merge "Correct executable bit for source files ↵Elliott Hughes2013-03-282-0/+0
|\ \ | | | | | | | | | | | | | | | | | | [Take 2]" * commit '3ae30483777708ff3a4f59a4fa75c6a76213cc30': Correct executable bit for source files [Take 2]
| * | Correct executable bit for source files [Take 2]Chirayu Desai2013-03-272-0/+0
| | | | | | | | | | | | | | | | | | | | | Change Ieb51bafb46c895a21d2e83696f5a901ba752b2c5 left out some files, this fixes them. Change-Id: Ia949a8581668836ea0251602e048f09c852f5169
* | | Merge "Fix issues related to saveLayer/restore deferral" into jb-mr2-devChris Craik2013-03-285-42/+54
|\ \ \
| * | | Fix issues related to saveLayer/restore deferralChris Craik2013-03-285-42/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | Merge "Don't crash when making a layer larger than supported dimensions Bug ↵Romain Guy2013-03-284-10/+32
|\ \ \ \ | |/ / / |/| | / | | |/ | |/| #8437401" into jb-mr2-dev
| * | Don't crash when making a layer larger than supported dimensionsRomain Guy2013-03-284-10/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Set ignore flag during deferred savelayer" into jb-mr2-devChris Craik2013-03-272-11/+24
|\ \ \ | |/ / |/| |
| * | Set ignore flag during deferred savelayerChris Craik2013-03-272-11/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bug:8471552 Additionally, add ignore check for draw functor In deferred mode, if we don't set ignore, a 0 alpha displayList won't be quickRejected, and not only would its contents be needlessly deferred, but upon playback any functors would be drawn, ignoring the state of the snapshot. Change-Id: Ib1edb3252080f674254086edee6f965f0efcce78
* | | Path precaching creates duplicate cache entriesRomain Guy2013-03-262-10/+16
| | | | | | | | | | | | | | | | | | Bug #8478275 Change-Id: Ib541ea051e42e01cc0d277790e9c09de38ef72ee
* | | Avoid multiple font cache texture uploadsRomain Guy2013-03-266-31/+178
|/ / | | | | | | | | | | | | | | | | | | Bug #8378964 This change defers drawing into layers until after the renderer for FBO0 is ready to draw. At that point, all the precaching is done which means all glyphs can be uploaded at once in the font caches. Change-Id: Ie1f7a7ff30f76f06fb3dbc72c7d05e66207d1ecb
* | Restore final canvas state after deferred flushChris Craik2013-03-221-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | bug:8450062 - Fixes overdraw indication with DeferredDisplayList - Fixes drawHardwareLayer called after flush Additionally changes drawLayer to pass its paint to native via setLayerPaint Wrap flush in save/restore so that reordering doesn't affect final transform Change-Id: I08befa42c28500da6387699eefd4be28aedf9f4c
* | Merge "Isolate tiling clip state from snapshot" into jb-mr2-devChris Craik2013-03-215-10/+23
|\ \
| * | Isolate tiling clip state from snapshotChris Craik2013-03-215-10/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Stop worker threads on memory trim & fix bad pointer accessRomain Guy2013-03-206-8/+86
|/ / | | | | | | Change-Id: I6fe7e31aeb6dd41fa65ab952caed97bc2da510d7
* | Merge "Optimize text GL setup" into jb-mr2-devRomain Guy2013-03-214-60/+83
|\ \
| * | Optimize text GL setupRomain Guy2013-03-204-60/+83
| | | | | | | | | | | | | | | | | | | | | | | | Only performs the GL setup steps when at least one glyph is drawn. This change also skips various draw operations when the specified paint draws with alpha = 0. Change-Id: I9eda148b0503acffc552ee19196f5d52e958a1a2
* | | Merge "Use snapshot alpha in all layer drawing" into jb-mr2-devChris Craik2013-03-211-4/+5
|\ \ \
| * | | Use snapshot alpha in all layer drawingChris Craik2013-03-201-4/+5
| |/ / | | | | | | | | | Change-Id: Icc093390da2fc36b2b6693d0e5e4357b2f730bf9
* | | Update snapshot upon saveLayer deferralChris Craik2013-03-206-49/+90
|/ / | | | | | | | | | | | | | | | | | | | | | | 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-208-133/+71
|\ \
| * | Use snapshot alpha for layersChris Craik2013-03-158-133/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 "Reduce number of glDraw calls when drawing text" into jb-mr2-devRomain Guy2013-03-204-179/+170
|\ \ \
| * | | Reduce number of glDraw calls when drawing textRomain Guy2013-03-194-179/+170
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change moves the mesh buffer from FontRenderer to CacheTexture to help reduce the number of texture binds and glDraw calls when drawing text that spans across multiple textures. Change-Id: I7de574d88313ca3672879ca878c253ff5f131fc1
* | | | Merge "Minimize texture binds when drawing text" into jb-mr2-devRomain Guy2013-03-194-19/+44
|\ \ \ \ | |/ / /
| * | | Minimize texture binds when drawing textRomain Guy2013-03-194-19/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When several CacheTextures are used to draw text, sort the draw batches by texture ID to minimize state changes in the driver. This change also tweaks the font cache size and renames a property that was too long to be set using setprop. Change-Id: I0a36dfffe58c9e75dd7384592d3343c192d042b1
* | | | Merge "Apply ComposeShader's local matrix to children" into jb-mr2-devRomain Guy2013-03-191-2/+8
|\ \ \ \ | |/ / /
| * | | Apply ComposeShader's local matrix to childrenRomain Guy2013-03-181-2/+8
| | | | | | | | | | | | | | | | Change-Id: Idf9b8e7d7b30f8fcd8ba1fd4bfe8991e9ca148e2
* | | | Merge "Merge all shapes/paths caches to PathCache" into jb-mr2-devRomain Guy2013-03-1913-1075/+661
|\ \ \ \ | |/ / /
| * | | Merge all shapes/paths caches to PathCacheRomain Guy2013-03-1813-1075/+661
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change will greatly simplify the multi-threading of all shape types. This change also uses PathTessellator to render convex paths. Change-Id: I4e65bc95c9d24ecae2183b72204de5c2dfb6ada4
* | | | Work around saveLayer clipping/transform deferring issuesChris Craik2013-03-181-1/+1
|/ / / | | | | | | | | | | | | | | | | | | | | | bug:8409891 Disables deferring Change-Id: I93498a4a45a5bfe01143faa154926c6a138db8f9
* | | Reset draw modifiers after flushingChris Craik2013-03-153-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | bug:8401910 This avoids leaving the renderer in a state with stale pointers (to, e.g., shaders or color filters) Change-Id: Idf8b63657041352e70e34e91ea416fe4385d4bc2
* | | Merge "Fully deferred displaylist replay" into jb-mr2-devChris Craik2013-03-1510-358/+732
|\ \ \ | |/ /
| * | Fully deferred displaylist replayChris Craik2013-03-1510-358/+732
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Less aggressive glyphs precachingRomain Guy2013-03-133-10/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Prevent infinite loop when trimming the path cacheRomain Guy2013-03-132-3/+6
|/ / | | | | | | Change-Id: I04b5fa498336068f997c68d8613b35a99f67adbe
* | Add TaskManager APIRomain Guy2013-03-1210-105/+436
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This API can be used to run arbitrary tasks on a pool of worker threads. The number of threads is calculated based on the number of CPU cores available. The API is made of 3 classes: TaskManager Creates and manages the worker threads. Task Describes the work to be done and the type of the output. A task contains a future used to wait for the worker thread to be done computing the result of the task. TaskProcessor The processor dispatches tasks to the TaskManager and is responsible for performing the computation required by each task. A processor will only be asked to process tasks sent to the manager through the processor. A typical use case: class MyTask: Task<MyType> class MyProcessor: TaskProcessor<MyType> TaskManager m = new TaskManager(); MyProcessor p = new MyProcessor(m); MyTask t = new MyTask(); p.add(t); // Waits until the result is available MyType result = t->getResult(); Change-Id: I1fe845ba4c49bb0e1b0627ab147f9a861c8e0749