OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CompositingReasons_h | 5 #ifndef CompositingReasons_h |
6 #define CompositingReasons_h | 6 #define CompositingReasons_h |
7 | 7 |
8 #include "platform/PlatformExport.h" | 8 #include "platform/PlatformExport.h" |
9 #include "wtf/Allocator.h" | 9 #include "wtf/Allocator.h" |
10 #include <stdint.h> | 10 #include <stdint.h> |
(...skipping 13 matching lines...) Expand all Loading... |
24 const uint64_t CompositingReasonActiveAnimation = UINT64_C(1) << 6; | 24 const uint64_t CompositingReasonActiveAnimation = UINT64_C(1) << 6; |
25 const uint64_t CompositingReasonTransitionProperty = UINT64_C(1) << 7; | 25 const uint64_t CompositingReasonTransitionProperty = UINT64_C(1) << 7; |
26 const uint64_t CompositingReasonScrollDependentPosition = UINT64_C(1) << 8; | 26 const uint64_t CompositingReasonScrollDependentPosition = UINT64_C(1) << 8; |
27 const uint64_t CompositingReasonOverflowScrollingTouch = UINT64_C(1) << 9; | 27 const uint64_t CompositingReasonOverflowScrollingTouch = UINT64_C(1) << 9; |
28 const uint64_t CompositingReasonOverflowScrollingParent = UINT64_C(1) << 10; | 28 const uint64_t CompositingReasonOverflowScrollingParent = UINT64_C(1) << 10; |
29 const uint64_t CompositingReasonOutOfFlowClipping = UINT64_C(1) << 11; | 29 const uint64_t CompositingReasonOutOfFlowClipping = UINT64_C(1) << 11; |
30 const uint64_t CompositingReasonVideoOverlay = UINT64_C(1) << 12; | 30 const uint64_t CompositingReasonVideoOverlay = UINT64_C(1) << 12; |
31 const uint64_t CompositingReasonWillChangeCompositingHint = UINT64_C(1) << 13; | 31 const uint64_t CompositingReasonWillChangeCompositingHint = UINT64_C(1) << 13; |
32 const uint64_t CompositingReasonBackdropFilter = UINT64_C(1) << 14; | 32 const uint64_t CompositingReasonBackdropFilter = UINT64_C(1) << 14; |
33 | 33 |
34 // Overlap reasons that require knowing what's behind you in paint-order before
knowing the answer | 34 // Overlap reasons that require knowing what's behind you in paint-order before |
| 35 // knowing the answer. |
35 const uint64_t CompositingReasonAssumedOverlap = UINT64_C(1) << 15; | 36 const uint64_t CompositingReasonAssumedOverlap = UINT64_C(1) << 15; |
36 const uint64_t CompositingReasonOverlap = UINT64_C(1) << 16; | 37 const uint64_t CompositingReasonOverlap = UINT64_C(1) << 16; |
37 const uint64_t CompositingReasonNegativeZIndexChildren = UINT64_C(1) << 17; | 38 const uint64_t CompositingReasonNegativeZIndexChildren = UINT64_C(1) << 17; |
38 const uint64_t CompositingReasonSquashingDisallowed = UINT64_C(1) << 18; | 39 const uint64_t CompositingReasonSquashingDisallowed = UINT64_C(1) << 18; |
39 | 40 |
40 // Subtree reasons that require knowing what the status of your subtree is befor
e knowing the answer | 41 // Subtree reasons that require knowing what the status of your subtree is |
| 42 // before knowing the answer. |
41 const uint64_t CompositingReasonTransformWithCompositedDescendants = UINT64_C(1) | 43 const uint64_t CompositingReasonTransformWithCompositedDescendants = UINT64_C(1) |
42 << 19; | 44 << 19; |
43 const uint64_t CompositingReasonOpacityWithCompositedDescendants = UINT64_C(1) | 45 const uint64_t CompositingReasonOpacityWithCompositedDescendants = UINT64_C(1) |
44 << 20; | 46 << 20; |
45 const uint64_t CompositingReasonMaskWithCompositedDescendants = UINT64_C(1) | 47 const uint64_t CompositingReasonMaskWithCompositedDescendants = UINT64_C(1) |
46 << 21; | 48 << 21; |
47 const uint64_t CompositingReasonReflectionWithCompositedDescendants = | 49 const uint64_t CompositingReasonReflectionWithCompositedDescendants = |
48 UINT64_C(1) << 22; | 50 UINT64_C(1) << 22; |
49 const uint64_t CompositingReasonFilterWithCompositedDescendants = UINT64_C(1) | 51 const uint64_t CompositingReasonFilterWithCompositedDescendants = UINT64_C(1) |
50 << 23; | 52 << 23; |
51 const uint64_t CompositingReasonBlendingWithCompositedDescendants = UINT64_C(1) | 53 const uint64_t CompositingReasonBlendingWithCompositedDescendants = UINT64_C(1) |
52 << 24; | 54 << 24; |
53 const uint64_t CompositingReasonClipsCompositingDescendants = UINT64_C(1) << 25; | 55 const uint64_t CompositingReasonClipsCompositingDescendants = UINT64_C(1) << 25; |
54 const uint64_t CompositingReasonPerspectiveWith3DDescendants = UINT64_C(1) | 56 const uint64_t CompositingReasonPerspectiveWith3DDescendants = UINT64_C(1) |
55 << 26; | 57 << 26; |
56 const uint64_t CompositingReasonPreserve3DWith3DDescendants = UINT64_C(1) << 27; | 58 const uint64_t CompositingReasonPreserve3DWith3DDescendants = UINT64_C(1) << 27; |
57 const uint64_t CompositingReasonReflectionOfCompositedParent = UINT64_C(1) | 59 const uint64_t CompositingReasonReflectionOfCompositedParent = UINT64_C(1) |
58 << 28; | 60 << 28; |
59 const uint64_t CompositingReasonIsolateCompositedDescendants = UINT64_C(1) | 61 const uint64_t CompositingReasonIsolateCompositedDescendants = UINT64_C(1) |
60 << 29; | 62 << 29; |
61 const uint64_t CompositingReasonPositionFixedWithCompositedDescendants = | 63 const uint64_t CompositingReasonPositionFixedWithCompositedDescendants = |
62 UINT64_C(1) << 30; | 64 UINT64_C(1) << 30; |
63 | 65 |
64 // The root layer is a special case that may be forced to be a layer, but also i
t needs to be | 66 // The root layer is a special case. It may be forced to be a layer, but it also |
65 // a layer if anything else in the subtree is composited. | 67 // needs to be a layer if anything else in the subtree is composited. |
66 const uint64_t CompositingReasonRoot = UINT64_C(1) << 31; | 68 const uint64_t CompositingReasonRoot = UINT64_C(1) << 31; |
67 | 69 |
68 // CompositedLayerMapping internal hierarchy reasons | 70 // CompositedLayerMapping internal hierarchy reasons |
69 const uint64_t CompositingReasonLayerForAncestorClip = UINT64_C(1) << 32; | 71 const uint64_t CompositingReasonLayerForAncestorClip = UINT64_C(1) << 32; |
70 const uint64_t CompositingReasonLayerForDescendantClip = UINT64_C(1) << 33; | 72 const uint64_t CompositingReasonLayerForDescendantClip = UINT64_C(1) << 33; |
71 const uint64_t CompositingReasonLayerForPerspective = UINT64_C(1) << 34; | 73 const uint64_t CompositingReasonLayerForPerspective = UINT64_C(1) << 34; |
72 const uint64_t CompositingReasonLayerForHorizontalScrollbar = UINT64_C(1) << 35; | 74 const uint64_t CompositingReasonLayerForHorizontalScrollbar = UINT64_C(1) << 35; |
73 const uint64_t CompositingReasonLayerForVerticalScrollbar = UINT64_C(1) << 36; | 75 const uint64_t CompositingReasonLayerForVerticalScrollbar = UINT64_C(1) << 36; |
74 const uint64_t CompositingReasonLayerForOverflowControlsHost = UINT64_C(1) | 76 const uint64_t CompositingReasonLayerForOverflowControlsHost = UINT64_C(1) |
75 << 37; | 77 << 37; |
76 const uint64_t CompositingReasonLayerForScrollCorner = UINT64_C(1) << 38; | 78 const uint64_t CompositingReasonLayerForScrollCorner = UINT64_C(1) << 38; |
77 const uint64_t CompositingReasonLayerForScrollingContents = UINT64_C(1) << 39; | 79 const uint64_t CompositingReasonLayerForScrollingContents = UINT64_C(1) << 39; |
78 const uint64_t CompositingReasonLayerForScrollingContainer = UINT64_C(1) << 40; | 80 const uint64_t CompositingReasonLayerForScrollingContainer = UINT64_C(1) << 40; |
79 const uint64_t CompositingReasonLayerForSquashingContents = UINT64_C(1) << 41; | 81 const uint64_t CompositingReasonLayerForSquashingContents = UINT64_C(1) << 41; |
80 const uint64_t CompositingReasonLayerForSquashingContainer = UINT64_C(1) << 42; | 82 const uint64_t CompositingReasonLayerForSquashingContainer = UINT64_C(1) << 42; |
81 const uint64_t CompositingReasonLayerForForeground = UINT64_C(1) << 43; | 83 const uint64_t CompositingReasonLayerForForeground = UINT64_C(1) << 43; |
82 const uint64_t CompositingReasonLayerForBackground = UINT64_C(1) << 44; | 84 const uint64_t CompositingReasonLayerForBackground = UINT64_C(1) << 44; |
83 const uint64_t CompositingReasonLayerForMask = UINT64_C(1) << 45; | 85 const uint64_t CompositingReasonLayerForMask = UINT64_C(1) << 45; |
84 const uint64_t CompositingReasonLayerForClippingMask = UINT64_C(1) << 46; | 86 const uint64_t CompositingReasonLayerForClippingMask = UINT64_C(1) << 46; |
85 const uint64_t CompositingReasonLayerForScrollingBlockSelection = UINT64_C(1) | 87 const uint64_t CompositingReasonLayerForScrollingBlockSelection = UINT64_C(1) |
86 << 47; | 88 << 47; |
87 | 89 |
88 // Composited elements with inline transforms trigger assumed overlap so that | 90 // Composited elements with inline transforms trigger assumed overlap so that |
89 // we can update their transforms quickly. | 91 // we can update their transforms quickly. |
90 const uint64_t CompositingReasonInlineTransform = UINT64_C(1) << 48; | 92 const uint64_t CompositingReasonInlineTransform = UINT64_C(1) << 48; |
91 | 93 |
92 const uint64_t CompositingReasonCompositorProxy = UINT64_C(1) << 49; | 94 const uint64_t CompositingReasonCompositorProxy = UINT64_C(1) << 49; |
93 | 95 |
94 // Various combinations of compositing reasons are defined here also, for more i
ntutive and faster bitwise logic. | 96 // Various combinations of compositing reasons are defined here also, for more |
| 97 // intutive and faster bitwise logic. |
95 const uint64_t CompositingReasonComboAllDirectReasons = | 98 const uint64_t CompositingReasonComboAllDirectReasons = |
96 CompositingReason3DTransform | CompositingReasonVideo | | 99 CompositingReason3DTransform | CompositingReasonVideo | |
97 CompositingReasonCanvas | CompositingReasonPlugin | | 100 CompositingReasonCanvas | CompositingReasonPlugin | |
98 CompositingReasonIFrame | CompositingReasonBackfaceVisibilityHidden | | 101 CompositingReasonIFrame | CompositingReasonBackfaceVisibilityHidden | |
99 CompositingReasonActiveAnimation | CompositingReasonTransitionProperty | | 102 CompositingReasonActiveAnimation | CompositingReasonTransitionProperty | |
100 CompositingReasonScrollDependentPosition | | 103 CompositingReasonScrollDependentPosition | |
101 CompositingReasonOverflowScrollingTouch | | 104 CompositingReasonOverflowScrollingTouch | |
102 CompositingReasonOverflowScrollingParent | | 105 CompositingReasonOverflowScrollingParent | |
103 CompositingReasonOutOfFlowClipping | CompositingReasonVideoOverlay | | 106 CompositingReasonOutOfFlowClipping | CompositingReasonVideoOverlay | |
104 CompositingReasonWillChangeCompositingHint | | 107 CompositingReasonWillChangeCompositingHint | |
(...skipping 28 matching lines...) Expand all Loading... |
133 const uint64_t CompositingReasonComboReasonsThatRequireOwnBacking = | 136 const uint64_t CompositingReasonComboReasonsThatRequireOwnBacking = |
134 CompositingReasonComboAllDirectReasons | CompositingReasonOverlap | | 137 CompositingReasonComboAllDirectReasons | CompositingReasonOverlap | |
135 CompositingReasonAssumedOverlap | CompositingReasonNegativeZIndexChildren | | 138 CompositingReasonAssumedOverlap | CompositingReasonNegativeZIndexChildren | |
136 CompositingReasonSquashingDisallowed | | 139 CompositingReasonSquashingDisallowed | |
137 CompositingReasonTransformWithCompositedDescendants | | 140 CompositingReasonTransformWithCompositedDescendants | |
138 CompositingReasonOpacityWithCompositedDescendants | | 141 CompositingReasonOpacityWithCompositedDescendants | |
139 CompositingReasonMaskWithCompositedDescendants | | 142 CompositingReasonMaskWithCompositedDescendants | |
140 CompositingReasonFilterWithCompositedDescendants | | 143 CompositingReasonFilterWithCompositedDescendants | |
141 CompositingReasonBlendingWithCompositedDescendants | | 144 CompositingReasonBlendingWithCompositedDescendants | |
142 CompositingReasonIsolateCompositedDescendants | | 145 CompositingReasonIsolateCompositedDescendants | |
143 CompositingReasonPreserve3DWith3DDescendants // preserve-3d has to create b
acking store to ensure that 3d-transformed elements intersect. | 146 CompositingReasonPreserve3DWith3DDescendants | // preserve-3d has to create |
144 | CompositingReasonBackdropFilter | | 147 // a backing store to ensure |
| 148 // that 3d-transformed |
| 149 // elements intersect. |
| 150 CompositingReasonBackdropFilter | |
145 CompositingReasonPositionFixedWithCompositedDescendants; | 151 CompositingReasonPositionFixedWithCompositedDescendants; |
146 | 152 |
147 const uint64_t CompositingReasonComboSquashableReasons = | 153 const uint64_t CompositingReasonComboSquashableReasons = |
148 CompositingReasonOverlap | CompositingReasonAssumedOverlap | | 154 CompositingReasonOverlap | CompositingReasonAssumedOverlap | |
149 CompositingReasonOverflowScrollingParent; | 155 CompositingReasonOverflowScrollingParent; |
150 | 156 |
151 typedef uint64_t CompositingReasons; | 157 typedef uint64_t CompositingReasons; |
152 | 158 |
153 // Any reasons other than overlap or assumed overlap will require the layer to b
e separately compositing. | 159 // Any reasons other than overlap or assumed overlap will require the layer to |
| 160 // be separately compositing. |
154 inline bool requiresCompositing(CompositingReasons reasons) { | 161 inline bool requiresCompositing(CompositingReasons reasons) { |
155 return reasons & ~CompositingReasonComboSquashableReasons; | 162 return reasons & ~CompositingReasonComboSquashableReasons; |
156 } | 163 } |
157 | 164 |
158 // If the layer has overlap or assumed overlap, but no other reasons, then it sh
ould be squashed. | 165 // If the layer has overlap or assumed overlap, but no other reasons, then it |
| 166 // should be squashed. |
159 inline bool requiresSquashing(CompositingReasons reasons) { | 167 inline bool requiresSquashing(CompositingReasons reasons) { |
160 return !requiresCompositing(reasons) && | 168 return !requiresCompositing(reasons) && |
161 (reasons & CompositingReasonComboSquashableReasons); | 169 (reasons & CompositingReasonComboSquashableReasons); |
162 } | 170 } |
163 | 171 |
164 struct CompositingReasonStringMap { | 172 struct CompositingReasonStringMap { |
165 STACK_ALLOCATED(); | 173 STACK_ALLOCATED(); |
166 CompositingReasons reason; | 174 CompositingReasons reason; |
167 const char* shortName; | 175 const char* shortName; |
168 const char* description; | 176 const char* description; |
169 }; | 177 }; |
170 | 178 |
171 PLATFORM_EXPORT extern const CompositingReasonStringMap | 179 PLATFORM_EXPORT extern const CompositingReasonStringMap |
172 kCompositingReasonStringMap[]; | 180 kCompositingReasonStringMap[]; |
173 PLATFORM_EXPORT extern const size_t kNumberOfCompositingReasons; | 181 PLATFORM_EXPORT extern const size_t kNumberOfCompositingReasons; |
174 | 182 |
175 } // namespace blink | 183 } // namespace blink |
176 | 184 |
177 #endif // CompositingReasons_h | 185 #endif // CompositingReasons_h |
OLD | NEW |