summaryrefslogtreecommitdiffstats
path: root/libs/hwui/DisplayList.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Yank ResourceCache out of CachesJohn Reck2014-11-061-9/+8
| | | | | | | | | | | Bug: 17947547 Pull the ResourceCache (aka, ref-counting side channel) out of Caches so that DisplayListRenderer doesn't use Caches, avoiding the risk of instantiating Caches on the wrong thread or without a GL context Change-Id: I7d63b70b3b0a0163308c5dedd6ef255eadebe8fd
* Layer changesJohn Reck2014-10-311-5/+0
| | | | | | | | | | | | Bug: 17208461 * Switch Layer to be VirtualLightRefBase instead of Caches' side-channel ref-counting * Include active layers in gfxinfo dump * Run gfxinfo dump on the correct thread * Dump gfxinfo on Layer creation failure Change-Id: I28d195699e2334518e215ab28c7a17355aee9678
* Create z reordering boundaries around dispatchDrawChris Craik2014-08-251-4/+2
| | | | | | | | | | bug:16012254 This means rendernodes with a Z will no longer be drawn at the end of their parent's DisplayList, but at the end of the associated reorder region (DisplayListData::Chunk). Change-Id: Ia033fee9d9a4db567b2a8d5e90fc57a4d0a64544
* Add kModeSyncJohn Reck2014-07-241-2/+1
| | | | | | Bug: 16526750 Change-Id: I4c087160e80432739321172fd57880846c8de6e0
* Update 'DisplayList' vs 'RenderNode' naming in several placesChris Craik2014-06-231-2/+2
| | | | Change-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287
* Update HWUI matrix APIDerek Sollenberger2014-05-291-5/+0
| | | | | | | 1. more closely mirror Skia API by using const ref instead of ptrs 2. store SkMatrix in the drawOp instead of the linear allocation heap Change-Id: I4b9f6f76b9f7d19325e29303d27b793679fd4823
* Inspect SkShader to determine hw shader.Leon Scroggins III2014-05-221-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of duplicating internal info about SkShader, inspect the SkShader installed on the SkPaint. core/java/android/view/GLES20Canvas.java: Remove setupModifiers, nResetModifiers, and nSetupShader. core/jni/android/graphics/Shader.cpp: Remove calls to create/destroy the (previously) attached SkiaShader. core/jni/android_view_GLES20Canvas.cpp: Remove native code for setupShader and resetModifiers. graphics/java/android/graphics/BitmapShader.java: graphics/java/android/graphics/ComposeShader.java: graphics/java/android/graphics/LinearGradient.java: graphics/java/android/graphics/RadialGradient.java: graphics/java/android/graphics/Shader.java: graphics/java/android/graphics/SweepGradient.java: Remove code keeping track of native SkiaShader. libs/hwui/Caches.h: Include Extensions.h. libs/hwui/DeferredDisplayList.cpp: Compare shaders on the paint, instead of on DrawModifiers. libs/hwui/DisplayList.cpp: libs/hwui/DisplayList.h: Remove vector of SkiaShaders. libs/hwui/DisplayListOp.h: Access the SkShader on mPaint. Remove SetupShaderOp and ResetShaderOp. libs/hwui/DisplayListRenderer.cpp: libs/hwui/DisplayListRenderer.h: Remove resetShader, setupShader, refShader, and mShaderMap. libs/hwui/FontRenderer.cpp: Pass SkShader to setupDrawShader and setupDrawShaderUniforms. libs/hwui/OpenGLRenderer.cpp: libs/hwui/OpenGLRenderer.h: Add LayerShader, a class inheriting from SkShader, to mimic the behavior of SkiaLayerShader. Unlike SkiaLayerShader, it can be set on the SkPaint so it can be inspected later. Set a LayerShader instead of a SkiaLayerShader. setupDrawShader and setupDrawShaderUniforms now inspect an SkShader passed in. Inspect SkShader instead of mDrawModifiers.mShader. Remove resetShader and setupShader. setupDrawColorUniforms now takes a boolean indicating whether there is a shader. Add an inline function for accessing the SkShader on an SkPaint. In setupDrawBlending(Layer*, bool), do not check the shader (which will never be set), but do check whether the color filter may change the alpha (newly fixed behavior). In setupDrawBlending(SkPaint, ...), check the SkShader and whether the color filter affects alpha (the latter is new behavior). libs/hwui/Renderer.h: Remove pure virtual functions setupShader and resetShader. libs/hwui/ResourceCache.cpp: libs/hwui/ResourceCache.h: Remove functions for refing/unrefing shaders. libs/hwui/SkiaShader.cpp: libs/hwui/SkiaShader.h: Much of this code was redundant and has been removed. Convert structs into class with nothing but static functions for calling describe/setupProgram. libs/hwui/TextureCache.cpp: libs/hwui/TextureCache.h: Use the SkPixelRef as the key to the bitmap Lru cache, since shader inspection will provide a different SkBitmap pointer (though it will hold the correct SkPixelRef with the correct generation ID). tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java: tests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java: Update manual test to have more shaders: radial, sweep, compose, invalid compose. BUG:10650594 Change-Id: Iaa7189178bda1c55f96da044d2a9fa602ba36034
* Clip TouchFeedbackDrawable effect to receiver OutlineChris Craik2014-04-231-1/+4
| | | | | | | | Projected RenderNodes are now wrapped with a ClipRect or masked SaveLayer, so that they are clipped to the outline of the projection receiver surface. Change-Id: I1d4afc1bb5d638d650bc0b1dac51a498f216773e
* Refcount RenderNodeJohn Reck2014-04-071-0/+14
| | | | Change-Id: I7a86db8acc2b78ef33d987a43a119f5933d7d752
* Move RenderNode to own fileJohn Reck2014-03-191-537/+0
| | | | Change-Id: I9380d161fd3ddd7b569c262dd8e7aa0c96151b1e
* Remove castsShadow and globalCamera APIsChris Craik2014-03-171-1/+1
| | | | Change-Id: I5c1c375f45946609b1635d952c5adf55e23bdd60
* Revert "Remove castsShadow and globalCamera APIs"Chris Craik2014-03-171-1/+1
| | | | | | This reverts commit 0334c314a5721f49b4d172a9cefe10f157cb28a4. Change-Id: I64714d17fb877e1b43c65eb44820d1128281c7a2
* Remove castsShadow and globalCamera APIsChris Craik2014-03-171-1/+1
| | | | Change-Id: I4d81a7849eba60a1a9debce74eedd55d6331842d
* Split out RenderPropertiesJohn Reck2014-03-121-192/+91
| | | | Change-Id: Ia9888b4fb2c849d95a8c395cafef2e2294a23aae
* No-op isolatedZVolumen propertyJohn Reck2014-03-121-1/+0
| | | | Change-Id: I7aa474d65a3d12efd4ffb731e07ee42f4d348183
* Rename DisplayList->RenderNodeJohn Reck2014-03-121-24/+24
| | | | Change-Id: Id42e23c9a1a6eb6eaeafef707ced7fa6887b03d0
* Fix orthographic shadows projection, simplify shadow reorderingChris Craik2014-03-121-53/+70
| | | | | | | | | Separate matrix passed to shadow system into two parts, one for transforming the polygon XY points (using the actual draw matrix) and a separate one which respects correct 4x4 3d rotations and translations for determining Z values. Change-Id: I7e30a84774a8709df6b2241e8f51fc5583648fe8
* Remove experimental perspective projectionChris Craik2014-03-111-35/+21
| | | | Change-Id: Iad688c8395ccd4673cc129973802b5f01dfb45ba
* Improve shadow tessellation performanceChris Craik2014-03-111-1/+1
| | | | | | | | - Tune and simplify shadow parameters - Remove additional inner rings - Improve polygon ray casting algorithm Change-Id: If0f28b2d66ae0480b675942bb65e8fcd2864425d
* Make sure we register functor countJohn Reck2014-03-061-0/+3
| | | | | | Bug: 13339664 Change-Id: Iafb8ba77bdf1d971c1d0a345ff525e7f7fa80352
* Merge "Draw shadows from casters together if the Z values are similar"Chris Craik2014-03-061-18/+52
|\
| * Draw shadows from casters together if the Z values are similarChris Craik2014-03-051-18/+52
| | | | | | | | Change-Id: Ib5d00c83e81d9d4c384685a84988a681da8b4490
* | Fix warnings in hwuiChris Craik2014-03-051-1/+1
|/ | | | Change-Id: I6ad6b78531cc0426dc2ea82a32775f7b0265b5b1
* DisplayList overhaulJohn Reck2014-03-041-177/+90
| | | | Change-Id: I53418d580c98f706e971545cff81b9921c12cc5f
* Modulate shadow alpha by caster alphaChris Craik2014-02-211-1/+2
| | | | Change-Id: Ibc4b3958feb3b5dba91d30af470d76555a6209c8
* Make outline and shadow APIs publicChris Craik2014-02-181-1/+1
| | | | Change-Id: If40dc27b2fdc41c3ed355bc9029474b1344c1a03
* Merge "Removing SkiaColorFilter and inspecting the native object directly."Derek Sollenberger2014-02-101-12/+0
|\
| * Removing SkiaColorFilter and inspecting the native object directly.Derek Sollenberger2014-02-071-12/+0
| | | | | | | | | | bug: 10650594 Change-Id: I4fcf66d008765afa0e35d011f58bc792183cb74f
* | Add shadow casting / global perspective APIs, hidden for now.Chris Craik2014-02-071-7/+6
| | | | | | | | | | | | Global perspective isn't yet hooked up in rendering. Change-Id: I64ad272ea5dc523505260ce114f0a6bebdcfe9dc
* | Add the clipToOutline by just using the clipPathOpztenghui2014-02-071-0/+5
|/ | | | Change-Id: I6ba23b589e579599d018600d0744be0efe2028c1
* Merge "Keep the SkPaint used when creating a layer."Derek Sollenberger2014-02-071-2/+1
|\
| * Keep the SkPaint used when creating a layer.Derek Sollenberger2014-02-071-2/+1
| | | | | | | | | | | | | | | | This will allow us to inspect the paint for thing other than color and xfermode, such as SkColorFilters and SkShaders. bug: 10650594 Change-Id: I2c3ddd07a3966e1e77af34136307e2b59b2898c1
* | Merge "Rework and clean up DisplayList projection"Chris Craik2014-02-071-24/+44
|\ \
| * | Rework and clean up DisplayList projectionChris Craik2014-02-061-24/+44
| |/ | | | | | | | | | | | | | | | | | | Move the projection surface to be a property of a DisplayList, set to true for every background drawable. Additionally, handle a projecting view background such that it doesn't try to project onto itself (which is undesirable). Change-Id: Ic70b17474bd87340e80767f8518f73b233419c7a
* | Simplify DisplayList matricesChris Craik2014-02-051-45/+44
|/ | | | | | | Somewhat unifies the ortho/perspecive paths - the property matrix (translate/scale/rotate) is now always a Matrix4. Change-Id: I36e4fe83d1150ee6e4be5f64f34d0fc8d6525cc6
* Add initial hidden outline APIsChris Craik2014-01-301-5/+5
| | | | | | | Background drawable outline usage and drawable outline calculation still to come. Change-Id: I8c7539f1638f86e1f8eb11f4fe49f705f61d58ba
* Update reordering method names, and make 3d reordering API publicChris Craik2014-01-291-4/+4
| | | | | | | | | | IsContainedVolume -> hasIsolatedZVolume conveys that this affects Z ordering of views ProjectToContainedBackground -> ProjectBackwards, since it ended up using its own projection target, separate from the 3d volume bit Change-Id: Ia2cde838cc4da134366fe6ff623290fbd65e50c3
* Remove logging of DisplayList stalenessChris Craik2014-01-271-32/+3
| | | | Change-Id: Ie6b3af3065d4d10ec0bc9b419223d3458d297ea8
* Clear root level reorder lists to prevent accessing stale DisplayListsChris Craik2014-01-241-6/+39
| | | | | | | | | bug:12581401 Adds temporary logging which should log/crash earlier on incorrectly reordering hierarchies. Change-Id: Iee00940718c3cc868161e754aff93cd3b2747094
* Fix view z translation with 3d projection disabledChris Craik2014-01-161-4/+9
| | | | | | | The ortho projection can't handle 3d translation, so skip that step if perspective projection isn't enabled. Change-Id: I231e6bcecc82e876b697e098e034f0fd3b06efde
* Support projection of DisplayLists onto ancestors.Chris Craik2014-01-151-23/+73
| | | | | | | | | | | | | | | For now, ancestor views signal the acceptance of projections with a save(0x20)/restore pair. During the order traversal, each view with the save(0x20) code will collect descendent views with mProjectToContainedVolume (which still needs to be renamed) so that they can be drawn out of order later. - *Temporary* sample code added to HwAccelerationTest. - Note that a projected displaylist must not be clipped. Change-Id: I45c493e845961535b958d59c53e8aff3f8891d9f
* Simplify Z reordering logicChris Craik2014-01-141-33/+31
| | | | Change-Id: I9e36f68d7be5cfd4d69a84a51824cb9a642fe18d
* Add DisplayList bit for projecting onto a contained volumeAlan Viverette2014-01-081-0/+1
| | | | | | Does not handle reordering/translating the projected DisplayList. Change-Id: I6f1ebb2b20b7436c86fe849b35d582fd9c8a8967
* Use const where possible for drawing parametersChris Craik2014-01-031-8/+8
| | | | | | They should never be modified by a Renderer, only read and copied. Change-Id: I9d8d55dca19115ee9dfeb2bb3f092ba2fb327cd4
* Fix Clang warnings/errorsChris Craik2014-01-021-2/+2
| | | | | | | Fix several build warnings (struct != class, int != size_t) and errors (variable leng non-POD arrays). Change-Id: I70b4e784365514303d8954bfcb1f39d7c22c1321
* Create abstract base class for OpenGLRendererChris Craik2013-12-271-2/+1
| | | | | | | | | | | | This will eventually serve as a base class to allow DisplayListRenderer to split off from OpenGLRenderer, and could eventually support other rendering approaches, such as an SkCanvas/SkPicture. This will also be the main source of (implementation-independent) documentation of the canvas/renderer methods. Change-Id: I52047f338f5cf86a3b0b3002af7154bff5c3c227
* Add initial APIs for 3d view manipulation.Chris Craik2013-12-201-2/+2
| | | | Change-Id: I6de00bc577d5b3a1fbc9ca3a3b3668fcfa32b867
* Check mDisplayListData before derefChris Craik2013-12-171-2/+4
| | | | | bug:12191897 Change-Id: I72ed3801e72c657b9d7736b0efb33c5e7cfd5b57
* Create private properties on GLCanvas for experimentation with 3dChris Craik2013-12-161-13/+13
| | | | Change-Id: I17772f61efce727cb4c1111f4d97f58c741786b8
* 3d view system!Chris Craik2013-12-121-55/+209
| | | | | | | | | | | | | | | | | | | True 3d transformations are now supported by DisplayLists and the renderer, initially with the translationZ property on view. Renderer operations used directly by DisplayList (formerly, clip/save/restore/saveLayer) are now more simply managed by allocating them temporarily on the handler's allocator, which exists for a single frame. This is much simpler than continuing to expand the pool of pre-allocated DisplayListOps now that more operations are called directly by DisplayList, especially with z ordered drawing. Still TODO: -APIs for camera positioning, shadows -Make Z apis public, and expose through XML -Make invalidation / input 3d aware Change-Id: I95fe6fa03f9b6ddd34a7e0c6ec8dd9fe47c6c6eb