summaryrefslogtreecommitdiffstats
path: root/libs/hwui
Commit message (Collapse)AuthorAgeFilesLines
* Fix quickReject logic to account for setClipChildren() settingChet Haase2013-04-193-35/+46
| | | | | | | | | | | | | | | | 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
* Merge "Prevent transformed ops from merging in the first place" into jb-mr2-devChris Craik2013-04-181-0/+2
|\
| * Prevent transformed ops from merging in the first placeChris Craik2013-04-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Make layer double drawing visible in overdraw debug modeChris Craik2013-04-163-6/+31
|/ | | | | | | | | | | | | | | | | | A clipped saveLayer will cause two draws - first to an onscreen buffer, then again back to the framebuffer. This change - when in overdraw debug - reissues draws associated with a clipped saveLayer, but only to the stencil buffer. Operations within a saveLayer are shown correctly to be twice drawn, and View.setAlpha() without an associated hardware layer, or hasOverlappingRendering() are made more visible. Hardware layers, on any frame that they are updated, similarly draw twice, and will also be counted against the stencil buffer doubly. Note: greater depths of layers - e.g. a saveLayer within a saveLayer - are not respected, as that would require additional region tracking. Change-Id: I61fb0e61038fe66013d59914c20bb47a550dea7d
* Merge "Draw Operation merging" into jb-mr2-devChris Craik2013-04-1512-176/+627
|\
| * Draw Operation mergingChris Craik2013-04-1512-176/+627
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | There should be a mandatory coder's license.Romain Guy2013-04-121-0/+1
| | | | | | | | | | | | | | | | Bug #8586560 And I don't deserve to pass the test. Change-Id: Ic7886205511f16145a925fc860e4a03dfaf473d5
* | Properly computer gradient textures widthRomain Guy2013-04-121-2/+5
|/ | | | | | Only on devices that do not have the npot extension Change-Id: I472a13dc707d2abaf5fcc06f99c9da343b333558
* Introduce PixelBuffer API to enable PBOsRomain Guy2013-04-1116-113/+576
| | | | | | | | | | | | | | | | | | | | | | | PBOs (Pixel Buffer Objects) can be used on OpenGL ES 3.0 to perform asynchronous texture uploads to free up the CPU. This change does not enable the use of PBOs unless a specific property is set (Adreno drivers have issues with PBOs at the moment, Mali drivers work just fine.) This change also cleans up Font/FontRenderer a little bit and improves performance of drop shadows generations by using memcpy() instead of a manual byte-by-byte copy. On GL ES 2.0 devices, or when PBOs are disabled, a PixelBuffer instance behaves like a simple byte array. The extra APIs introduced for PBOs (map/unmap and bind/unbind) are pretty much no-ops for CPU pixel buffers and won't introduce any significant overhead. This change also fixes a bug with text drop shadows: if the drop shadow is larger than the max texture size, the renderer would leave the GL context in a bad state and generate 0x501 errors. This change simply skips drop shadows if they are too large. Change-Id: I2700aadb0c6093431dc5dee3d587d689190c4e23
* Merge "Fix Contacts animation jank" into jb-mr2-devChet Haase2013-04-101-4/+5
|\
| * Fix Contacts animation jankChet Haase2013-04-101-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The last frame of an animation stays stuck on the screen for a couple of frames. Specifically, the "Quick Contact" animation that animates the picture closed (fades/scales it away) animates all the way to the end... then hangs there briefly before being taken down. The problem is a rendering bug where we correctly detect that a DisplayList has nothing to draw (since the last frame is completely transparent, alpha==0), but incorrectly ignore the fact that we cleared the transparent-background window prior to not-drawing that DisplayList. When we detect that there's nothing to draw, we don't bother swapping buffers. So even though we drew the right thing (clearing the buffer), we didn't actually post the buffer to the screen. This change factors in both the clear and the draw to decide when to swap buffers. Issue #8564865 Quick contact close animation jank redux Change-Id: Ib922cff88a94f025b62f7461c1a29e96fe454838
* | Merge "Add liblog" into jb-mr2-devYing Wang2013-04-101-1/+1
|\ \
| * | Add liblogYing Wang2013-04-091-1/+1
| |/ | | | | | | | | Bug: 8580410 Change-Id: I746aa8258866508c3a725d0773faf4518096548f
* | Change the dither texture's swizzlingRomain Guy2013-04-092-1/+5
|/ | | | | | | | | | This is a more elegant way to sample from a float alpha texture. Instead of sampling from the red channel in the fragment shader we can set the alpha channel swizzle to redirect it to the red channel. This lets us sample from the alpha channel in the fragment shader and get the correct value. Change-Id: I95bbf7a82964e1bf42c0fee1b782b6bdbbcef618
* Use float textures to render gradients when possibleRomain Guy2013-04-056-122/+192
| | | | | | | | | | | Float textures offer better precision for dithering. In addition this change removes two uniforms from gradient shaders. These uniforms were used to dither gradients but their value is a build time constant. Instead we hardcode the value directly in the shader source at compile time. Change-Id: I05e9fd3eef93771843bbd91b453274452dfaefee
* 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