| 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 |