diff options
author | Derek Sollenberger <djsollen@google.com> | 2014-10-15 09:21:10 -0400 |
---|---|---|
committer | Derek Sollenberger <djsollen@google.com> | 2014-10-17 10:44:29 -0400 |
commit | 09c2d4fe15fbac2faf8a97ba2cc59132ee12222a (patch) | |
tree | b081d9c1fa74eac1d37f067603074357246e3f08 /libs/hwui/DeferredDisplayList.cpp | |
parent | de2dc4e115d98a81fd0615d0e2934e5c1cfe70da (diff) | |
download | frameworks_base-09c2d4fe15fbac2faf8a97ba2cc59132ee12222a.zip frameworks_base-09c2d4fe15fbac2faf8a97ba2cc59132ee12222a.tar.gz frameworks_base-09c2d4fe15fbac2faf8a97ba2cc59132ee12222a.tar.bz2 |
Refactor HWUI to better handle Canvas DrawFilters.
First, this CL removes the need to decompose the DrawFilters
in Java and instead passes the SkDrawFilter to HWUI directly.
This also allows the removal of duplicated logic between HWUI
and other Canvas implementations regarding Paint filter levels.
Second, the DrawFilter is now stored in the DisplayListRenderer
where we apply it to every paint BEFORE it is stored in the
DisplayList. This eliminates the need to filter all Paints on
playback and removes additional complexity at playback.
Finally, as a result of storing the filtered paint we can now
do a better job caching the paints. This takes advantage of
recent changes in Skia to quickly enable quick hashing and
comparison of paint objects.
Change-Id: Iec507a2d894827975cc4f1d22241542bb0534b4e
Diffstat (limited to 'libs/hwui/DeferredDisplayList.cpp')
-rw-r--r-- | libs/hwui/DeferredDisplayList.cpp | 20 |
1 files changed, 0 insertions, 20 deletions
diff --git a/libs/hwui/DeferredDisplayList.cpp b/libs/hwui/DeferredDisplayList.cpp index a998594..d716957 100644 --- a/libs/hwui/DeferredDisplayList.cpp +++ b/libs/hwui/DeferredDisplayList.cpp @@ -235,26 +235,6 @@ public: return false; } - /* Draw Modifiers compatibility check - * - * Shadows are ignored, as only text uses them, and in that case they are drawn - * per-DrawTextOp, before the unified text draw. Because of this, it's always safe to merge - * text UNLESS a later draw's shadow should overlays a previous draw's text. This is covered - * above with the intersection check. - * - * OverrideLayerAlpha is also ignored, as it's only used for drawing layers, which are never - * merged. - * - * These ignore cases prevent us from simply memcmp'ing the drawModifiers - */ - const DrawModifiers& lhsMod = lhs->mDrawModifiers; - const DrawModifiers& rhsMod = rhs->mDrawModifiers; - - // Draw filter testing expects bit fields to be clear if filter not set. - if (lhsMod.mHasDrawFilter != rhsMod.mHasDrawFilter) return false; - if (lhsMod.mPaintFilterClearBits != rhsMod.mPaintFilterClearBits) return false; - if (lhsMod.mPaintFilterSetBits != rhsMod.mPaintFilterSetBits) return false; - return true; } |