| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 #include "cc/trees/occlusion_tracker.h" | 5 #include "cc/trees/occlusion_tracker.h" |
| 6 | 6 |
| 7 #include "cc/animation/layer_animation_controller.h" | 7 #include "cc/animation/layer_animation_controller.h" |
| 8 #include "cc/base/math_util.h" | 8 #include "cc/base/math_util.h" |
| 9 #include "cc/layers/layer.h" | 9 #include "cc/layers/layer.h" |
| 10 #include "cc/layers/layer_impl.h" | 10 #include "cc/layers/layer_impl.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 static ContentLayerPtrType CreateContentLayer(HostType* host) { | 120 static ContentLayerPtrType CreateContentLayer(HostType* host) { |
| 121 return make_scoped_refptr(new ContentLayerType()); | 121 return make_scoped_refptr(new ContentLayerType()); |
| 122 } | 122 } |
| 123 | 123 |
| 124 template <typename T> | 124 template <typename T> |
| 125 static LayerPtrType PassLayerPtr(T* layer) { | 125 static LayerPtrType PassLayerPtr(T* layer) { |
| 126 LayerPtrType ref(*layer); | 126 LayerPtrType ref(*layer); |
| 127 *layer = NULL; | 127 *layer = NULL; |
| 128 return ref; | 128 return ref; |
| 129 } | 129 } |
| 130 static void SetForceRenderSurface(LayerType* layer, bool force) { |
| 131 layer->SetForceRenderSurface(force); |
| 132 } |
| 130 | 133 |
| 131 static void DestroyLayer(LayerPtrType* layer) { *layer = NULL; } | 134 static void DestroyLayer(LayerPtrType* layer) { *layer = NULL; } |
| 132 | 135 |
| 133 static void RecursiveUpdateNumChildren(LayerType* layerType) {} | 136 static void RecursiveUpdateNumChildren(LayerType* layerType) {} |
| 134 }; | 137 }; |
| 135 | 138 |
| 136 struct OcclusionTrackerTestImplThreadTypes { | 139 struct OcclusionTrackerTestImplThreadTypes { |
| 137 typedef LayerImpl LayerType; | 140 typedef LayerImpl LayerType; |
| 138 typedef LayerTreeImpl HostType; | 141 typedef LayerTreeImpl HostType; |
| 139 typedef RenderSurfaceImpl RenderSurfaceType; | 142 typedef RenderSurfaceImpl RenderSurfaceType; |
| 140 typedef TestContentLayerImpl ContentLayerType; | 143 typedef TestContentLayerImpl ContentLayerType; |
| 141 typedef scoped_ptr<LayerImpl> LayerPtrType; | 144 typedef scoped_ptr<LayerImpl> LayerPtrType; |
| 142 typedef scoped_ptr<ContentLayerType> ContentLayerPtrType; | 145 typedef scoped_ptr<ContentLayerType> ContentLayerPtrType; |
| 143 typedef LayerIterator<LayerImpl> TestLayerIterator; | 146 typedef LayerIterator<LayerImpl> TestLayerIterator; |
| 144 typedef OcclusionTracker<LayerImpl> OcclusionTrackerType; | 147 typedef OcclusionTracker<LayerImpl> OcclusionTrackerType; |
| 145 | 148 |
| 146 static LayerPtrType CreateLayer(HostType* host) { | 149 static LayerPtrType CreateLayer(HostType* host) { |
| 147 return LayerImpl::Create(host, next_layer_impl_id++); | 150 return LayerImpl::Create(host, next_layer_impl_id++); |
| 148 } | 151 } |
| 149 static ContentLayerPtrType CreateContentLayer(HostType* host) { | 152 static ContentLayerPtrType CreateContentLayer(HostType* host) { |
| 150 return make_scoped_ptr(new ContentLayerType(host, next_layer_impl_id++)); | 153 return make_scoped_ptr(new ContentLayerType(host, next_layer_impl_id++)); |
| 151 } | 154 } |
| 152 static int next_layer_impl_id; | 155 static int next_layer_impl_id; |
| 153 | 156 |
| 154 template <typename T> | 157 template <typename T> |
| 155 static LayerPtrType PassLayerPtr(T* layer) { | 158 static LayerPtrType PassLayerPtr(T* layer) { |
| 156 return layer->Pass(); | 159 return layer->Pass(); |
| 157 } | 160 } |
| 158 | 161 |
| 162 static void SetForceRenderSurface(LayerType* layer, bool force) { |
| 163 layer->SetHasRenderSurface(force); |
| 164 } |
| 159 static void DestroyLayer(LayerPtrType* layer) { layer->reset(); } | 165 static void DestroyLayer(LayerPtrType* layer) { layer->reset(); } |
| 160 | 166 |
| 161 static void RecursiveUpdateNumChildren(LayerType* layer) { | 167 static void RecursiveUpdateNumChildren(LayerType* layer) { |
| 162 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(layer); | 168 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(layer); |
| 163 } | 169 } |
| 164 }; | 170 }; |
| 165 | 171 |
| 166 int OcclusionTrackerTestImplThreadTypes::next_layer_impl_id = 1; | 172 int OcclusionTrackerTestImplThreadTypes::next_layer_impl_id = 1; |
| 167 | 173 |
| 168 template <typename Types> class OcclusionTrackerTest : public testing::Test { | 174 template <typename Types> class OcclusionTrackerTest : public testing::Test { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 182 const gfx::PointF& position, | 188 const gfx::PointF& position, |
| 183 const gfx::Size& bounds) { | 189 const gfx::Size& bounds) { |
| 184 typename Types::ContentLayerPtrType layer( | 190 typename Types::ContentLayerPtrType layer( |
| 185 Types::CreateContentLayer(GetHost())); | 191 Types::CreateContentLayer(GetHost())); |
| 186 typename Types::ContentLayerType* layer_ptr = layer.get(); | 192 typename Types::ContentLayerType* layer_ptr = layer.get(); |
| 187 SetProperties(layer_ptr, transform, position, bounds); | 193 SetProperties(layer_ptr, transform, position, bounds); |
| 188 | 194 |
| 189 DCHECK(!root_.get()); | 195 DCHECK(!root_.get()); |
| 190 root_ = Types::PassLayerPtr(&layer); | 196 root_ = Types::PassLayerPtr(&layer); |
| 191 | 197 |
| 198 Types::SetForceRenderSurface(layer_ptr, true); |
| 192 SetRootLayerOnMainThread(layer_ptr); | 199 SetRootLayerOnMainThread(layer_ptr); |
| 193 | 200 |
| 194 return layer_ptr; | 201 return layer_ptr; |
| 195 } | 202 } |
| 196 | 203 |
| 197 typename Types::LayerType* CreateLayer(typename Types::LayerType* parent, | 204 typename Types::LayerType* CreateLayer(typename Types::LayerType* parent, |
| 198 const gfx::Transform& transform, | 205 const gfx::Transform& transform, |
| 199 const gfx::PointF& position, | 206 const gfx::PointF& position, |
| 200 const gfx::Size& bounds) { | 207 const gfx::Size& bounds) { |
| 201 typename Types::LayerPtrType layer(Types::CreateLayer(GetHost())); | 208 typename Types::LayerPtrType layer(Types::CreateLayer(GetHost())); |
| 202 typename Types::LayerType* layer_ptr = layer.get(); | 209 typename Types::LayerType* layer_ptr = layer.get(); |
| 203 SetProperties(layer_ptr, transform, position, bounds); | 210 SetProperties(layer_ptr, transform, position, bounds); |
| 204 parent->AddChild(Types::PassLayerPtr(&layer)); | 211 parent->AddChild(Types::PassLayerPtr(&layer)); |
| 205 return layer_ptr; | 212 return layer_ptr; |
| 206 } | 213 } |
| 207 | 214 |
| 208 typename Types::LayerType* CreateSurface(typename Types::LayerType* parent, | 215 typename Types::LayerType* CreateSurface(typename Types::LayerType* parent, |
| 209 const gfx::Transform& transform, | 216 const gfx::Transform& transform, |
| 210 const gfx::PointF& position, | 217 const gfx::PointF& position, |
| 211 const gfx::Size& bounds) { | 218 const gfx::Size& bounds) { |
| 212 typename Types::LayerType* layer = | 219 typename Types::LayerType* layer = |
| 213 CreateLayer(parent, transform, position, bounds); | 220 CreateLayer(parent, transform, position, bounds); |
| 214 layer->SetForceRenderSurface(true); | 221 Types::SetForceRenderSurface(layer, true); |
| 215 return layer; | 222 return layer; |
| 216 } | 223 } |
| 217 | 224 |
| 218 typename Types::ContentLayerType* CreateDrawingLayer( | 225 typename Types::ContentLayerType* CreateDrawingLayer( |
| 219 typename Types::LayerType* parent, | 226 typename Types::LayerType* parent, |
| 220 const gfx::Transform& transform, | 227 const gfx::Transform& transform, |
| 221 const gfx::PointF& position, | 228 const gfx::PointF& position, |
| 222 const gfx::Size& bounds, | 229 const gfx::Size& bounds, |
| 223 bool opaque) { | 230 bool opaque) { |
| 224 typename Types::ContentLayerPtrType layer( | 231 typename Types::ContentLayerPtrType layer( |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 } | 272 } |
| 266 | 273 |
| 267 typename Types::ContentLayerType* CreateDrawingSurface( | 274 typename Types::ContentLayerType* CreateDrawingSurface( |
| 268 typename Types::LayerType* parent, | 275 typename Types::LayerType* parent, |
| 269 const gfx::Transform& transform, | 276 const gfx::Transform& transform, |
| 270 const gfx::PointF& position, | 277 const gfx::PointF& position, |
| 271 const gfx::Size& bounds, | 278 const gfx::Size& bounds, |
| 272 bool opaque) { | 279 bool opaque) { |
| 273 typename Types::ContentLayerType* layer = | 280 typename Types::ContentLayerType* layer = |
| 274 CreateDrawingLayer(parent, transform, position, bounds, opaque); | 281 CreateDrawingLayer(parent, transform, position, bounds, opaque); |
| 275 layer->SetForceRenderSurface(true); | 282 Types::SetForceRenderSurface(layer, true); |
| 276 return layer; | 283 return layer; |
| 277 } | 284 } |
| 278 | 285 |
| 279 void DestroyLayers() { | 286 void DestroyLayers() { |
| 280 Types::DestroyLayer(&root_); | 287 Types::DestroyLayer(&root_); |
| 281 render_surface_layer_list_ = nullptr; | 288 render_surface_layer_list_ = nullptr; |
| 282 render_surface_layer_list_impl_.clear(); | 289 render_surface_layer_list_impl_.clear(); |
| 283 replica_layers_.clear(); | 290 replica_layers_.clear(); |
| 284 mask_layers_.clear(); | 291 mask_layers_.clear(); |
| 285 ResetLayerIterator(); | 292 ResetLayerIterator(); |
| 286 } | 293 } |
| 287 | 294 |
| 288 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {} | 295 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {} |
| 289 | 296 |
| 290 void AddCopyRequest(Layer* layer) { | 297 void AddCopyRequest(Layer* layer) { |
| 291 layer->RequestCopyOfOutput( | 298 layer->RequestCopyOfOutput( |
| 292 CopyOutputRequest::CreateBitmapRequest(base::Bind( | 299 CopyOutputRequest::CreateBitmapRequest(base::Bind( |
| 293 &OcclusionTrackerTest<Types>::CopyOutputCallback, | 300 &OcclusionTrackerTest<Types>::CopyOutputCallback, |
| 294 base::Unretained(this)))); | 301 base::Unretained(this)))); |
| 295 } | 302 } |
| 296 | 303 |
| 297 void AddCopyRequest(LayerImpl* layer) { | 304 void AddCopyRequest(LayerImpl* layer) { |
| 298 ScopedPtrVector<CopyOutputRequest> requests; | 305 ScopedPtrVector<CopyOutputRequest> requests; |
| 299 requests.push_back( | 306 requests.push_back( |
| 300 CopyOutputRequest::CreateBitmapRequest(base::Bind( | 307 CopyOutputRequest::CreateBitmapRequest(base::Bind( |
| 301 &OcclusionTrackerTest<Types>::CopyOutputCallback, | 308 &OcclusionTrackerTest<Types>::CopyOutputCallback, |
| 302 base::Unretained(this)))); | 309 base::Unretained(this)))); |
| 310 layer->SetHasRenderSurface(true); |
| 303 layer->PassCopyRequests(&requests); | 311 layer->PassCopyRequests(&requests); |
| 304 } | 312 } |
| 305 | 313 |
| 306 void CalcDrawEtc(TestContentLayerImpl* root) { | 314 void CalcDrawEtc(TestContentLayerImpl* root) { |
| 307 DCHECK(root == root_.get()); | 315 DCHECK(root == root_.get()); |
| 308 DCHECK(!root->render_surface()); | |
| 309 | 316 |
| 310 Types::RecursiveUpdateNumChildren(root); | 317 Types::RecursiveUpdateNumChildren(root); |
| 311 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 318 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
| 312 root, root->bounds(), &render_surface_layer_list_impl_); | 319 root, root->bounds(), &render_surface_layer_list_impl_); |
| 313 inputs.can_adjust_raster_scales = true; | 320 inputs.can_adjust_raster_scales = true; |
| 314 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 321 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
| 315 | 322 |
| 316 layer_iterator_ = layer_iterator_begin_ = | 323 layer_iterator_ = layer_iterator_begin_ = |
| 317 Types::TestLayerIterator::Begin(&render_surface_layer_list_impl_); | 324 Types::TestLayerIterator::Begin(&render_surface_layer_list_impl_); |
| 318 } | 325 } |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 727 : OcclusionTrackerTest<Types>(opaque_layers) {} | 734 : OcclusionTrackerTest<Types>(opaque_layers) {} |
| 728 | 735 |
| 729 void RunMyTest() override { | 736 void RunMyTest() override { |
| 730 typename Types::ContentLayerType* parent = this->CreateRoot( | 737 typename Types::ContentLayerType* parent = this->CreateRoot( |
| 731 this->identity_matrix, gfx::PointF(), gfx::Size(200, 200)); | 738 this->identity_matrix, gfx::PointF(), gfx::Size(200, 200)); |
| 732 | 739 |
| 733 gfx::Transform layer1_matrix; | 740 gfx::Transform layer1_matrix; |
| 734 layer1_matrix.Scale(2.0, 2.0); | 741 layer1_matrix.Scale(2.0, 2.0); |
| 735 typename Types::ContentLayerType* layer1 = this->CreateDrawingLayer( | 742 typename Types::ContentLayerType* layer1 = this->CreateDrawingLayer( |
| 736 parent, layer1_matrix, gfx::PointF(), gfx::Size(100, 100), true); | 743 parent, layer1_matrix, gfx::PointF(), gfx::Size(100, 100), true); |
| 737 layer1->SetForceRenderSurface(true); | 744 Types::SetForceRenderSurface(layer1, true); |
| 738 | 745 |
| 739 gfx::Transform layer2_matrix; | 746 gfx::Transform layer2_matrix; |
| 740 layer2_matrix.Translate(25.0, 25.0); | 747 layer2_matrix.Translate(25.0, 25.0); |
| 741 typename Types::ContentLayerType* layer2 = this->CreateDrawingLayer( | 748 typename Types::ContentLayerType* layer2 = this->CreateDrawingLayer( |
| 742 layer1, layer2_matrix, gfx::PointF(), gfx::Size(50, 50), true); | 749 layer1, layer2_matrix, gfx::PointF(), gfx::Size(50, 50), true); |
| 743 typename Types::ContentLayerType* occluder = | 750 typename Types::ContentLayerType* occluder = |
| 744 this->CreateDrawingLayer(parent, | 751 this->CreateDrawingLayer(parent, |
| 745 this->identity_matrix, | 752 this->identity_matrix, |
| 746 gfx::PointF(100.f, 100.f), | 753 gfx::PointF(100.f, 100.f), |
| 747 gfx::Size(500, 500), | 754 gfx::Size(500, 500), |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 child_transform.Rotate(95.0); | 848 child_transform.Rotate(95.0); |
| 842 child_transform.Translate(-250.0, -250.0); | 849 child_transform.Translate(-250.0, -250.0); |
| 843 | 850 |
| 844 gfx::Transform layer_transform; | 851 gfx::Transform layer_transform; |
| 845 layer_transform.Translate(10.0, 10.0); | 852 layer_transform.Translate(10.0, 10.0); |
| 846 | 853 |
| 847 typename Types::ContentLayerType* root = this->CreateRoot( | 854 typename Types::ContentLayerType* root = this->CreateRoot( |
| 848 this->identity_matrix, gfx::PointF(), gfx::Size(1000, 1000)); | 855 this->identity_matrix, gfx::PointF(), gfx::Size(1000, 1000)); |
| 849 typename Types::ContentLayerType* parent = this->CreateDrawingLayer( | 856 typename Types::ContentLayerType* parent = this->CreateDrawingLayer( |
| 850 root, this->identity_matrix, gfx::PointF(), gfx::Size(100, 100), true); | 857 root, this->identity_matrix, gfx::PointF(), gfx::Size(100, 100), true); |
| 851 typename Types::LayerType* child = this->CreateLayer( | 858 typename Types::LayerType* child = this->CreateSurface( |
| 852 parent, child_transform, gfx::PointF(30.f, 30.f), gfx::Size(500, 500)); | 859 parent, child_transform, gfx::PointF(30.f, 30.f), gfx::Size(500, 500)); |
| 853 child->SetMasksToBounds(true); | |
| 854 typename Types::ContentLayerType* layer = this->CreateDrawingLayer( | 860 typename Types::ContentLayerType* layer = this->CreateDrawingLayer( |
| 855 child, layer_transform, gfx::PointF(), gfx::Size(500, 500), true); | 861 child, layer_transform, gfx::PointF(), gfx::Size(500, 500), true); |
| 856 this->CalcDrawEtc(root); | 862 this->CalcDrawEtc(root); |
| 857 | 863 |
| 858 TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( | 864 TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( |
| 859 gfx::Rect(0, 0, 1000, 1000)); | 865 gfx::Rect(0, 0, 1000, 1000)); |
| 860 | 866 |
| 861 gfx::Rect clipped_layer_in_child = MathUtil::MapEnclosingClippedRect( | 867 gfx::Rect clipped_layer_in_child = MathUtil::MapEnclosingClippedRect( |
| 862 layer_transform, layer->visible_content_rect()); | 868 layer_transform, layer->visible_content_rect()); |
| 863 | 869 |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1162 gfx::PointF(30.f, 30.f), | 1168 gfx::PointF(30.f, 30.f), |
| 1163 gfx::Size(500, 500), | 1169 gfx::Size(500, 500), |
| 1164 true); | 1170 true); |
| 1165 typename Types::ContentLayerType* opacity_layer = | 1171 typename Types::ContentLayerType* opacity_layer = |
| 1166 this->CreateDrawingLayer(parent, | 1172 this->CreateDrawingLayer(parent, |
| 1167 layer_transform, | 1173 layer_transform, |
| 1168 gfx::PointF(30.f, 30.f), | 1174 gfx::PointF(30.f, 30.f), |
| 1169 gfx::Size(500, 500), | 1175 gfx::Size(500, 500), |
| 1170 true); | 1176 true); |
| 1171 | 1177 |
| 1178 Types::SetForceRenderSurface(blur_layer, true); |
| 1172 FilterOperations filters; | 1179 FilterOperations filters; |
| 1173 filters.Append(FilterOperation::CreateBlurFilter(10.f)); | 1180 filters.Append(FilterOperation::CreateBlurFilter(10.f)); |
| 1174 blur_layer->SetFilters(filters); | 1181 blur_layer->SetFilters(filters); |
| 1175 | 1182 |
| 1183 Types::SetForceRenderSurface(opaque_layer, true); |
| 1176 filters.Clear(); | 1184 filters.Clear(); |
| 1177 filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f)); | 1185 filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f)); |
| 1178 opaque_layer->SetFilters(filters); | 1186 opaque_layer->SetFilters(filters); |
| 1179 | 1187 |
| 1188 Types::SetForceRenderSurface(opacity_layer, true); |
| 1180 filters.Clear(); | 1189 filters.Clear(); |
| 1181 filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); | 1190 filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
| 1182 opacity_layer->SetFilters(filters); | 1191 opacity_layer->SetFilters(filters); |
| 1183 | 1192 |
| 1184 this->CalcDrawEtc(parent); | 1193 this->CalcDrawEtc(parent); |
| 1185 | 1194 |
| 1186 TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( | 1195 TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( |
| 1187 gfx::Rect(0, 0, 1000, 1000)); | 1196 gfx::Rect(0, 0, 1000, 1000)); |
| 1188 | 1197 |
| 1189 // Opacity layer won't contribute to occlusion. | 1198 // Opacity layer won't contribute to occlusion. |
| (...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2222 // surface is scaled to test that the pixel moving is done in the target | 2231 // surface is scaled to test that the pixel moving is done in the target |
| 2223 // space, where the background filter is applied. | 2232 // space, where the background filter is applied. |
| 2224 typename Types::ContentLayerType* parent = this->CreateRoot( | 2233 typename Types::ContentLayerType* parent = this->CreateRoot( |
| 2225 this->identity_matrix, gfx::PointF(), gfx::Size(200, 200)); | 2234 this->identity_matrix, gfx::PointF(), gfx::Size(200, 200)); |
| 2226 typename Types::LayerType* filtered_surface = | 2235 typename Types::LayerType* filtered_surface = |
| 2227 this->CreateDrawingLayer(parent, | 2236 this->CreateDrawingLayer(parent, |
| 2228 scale_by_half, | 2237 scale_by_half, |
| 2229 gfx::PointF(50.f, 50.f), | 2238 gfx::PointF(50.f, 50.f), |
| 2230 gfx::Size(100, 100), | 2239 gfx::Size(100, 100), |
| 2231 false); | 2240 false); |
| 2241 Types::SetForceRenderSurface(filtered_surface, true); |
| 2232 filtered_surface->SetBackgroundFilters(filters); | 2242 filtered_surface->SetBackgroundFilters(filters); |
| 2233 | |
| 2234 gfx::Rect occlusion_rect; | 2243 gfx::Rect occlusion_rect; |
| 2235 switch (i) { | 2244 switch (i) { |
| 2236 case LEFT: | 2245 case LEFT: |
| 2237 occlusion_rect = gfx::Rect(0, 0, 50, 200); | 2246 occlusion_rect = gfx::Rect(0, 0, 50, 200); |
| 2238 break; | 2247 break; |
| 2239 case RIGHT: | 2248 case RIGHT: |
| 2240 occlusion_rect = gfx::Rect(100, 0, 50, 200); | 2249 occlusion_rect = gfx::Rect(100, 0, 50, 200); |
| 2241 break; | 2250 break; |
| 2242 case TOP: | 2251 case TOP: |
| 2243 occlusion_rect = gfx::Rect(0, 0, 200, 50); | 2252 occlusion_rect = gfx::Rect(0, 0, 200, 50); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2334 typename Types::LayerType* filtered_surface2 = this->CreateDrawingLayer( | 2343 typename Types::LayerType* filtered_surface2 = this->CreateDrawingLayer( |
| 2335 parent, scale_by_half, gfx::PointF(), gfx::Size(300, 300), false); | 2344 parent, scale_by_half, gfx::PointF(), gfx::Size(300, 300), false); |
| 2336 typename Types::LayerType* occluding_layer_above = | 2345 typename Types::LayerType* occluding_layer_above = |
| 2337 this->CreateDrawingLayer(parent, | 2346 this->CreateDrawingLayer(parent, |
| 2338 this->identity_matrix, | 2347 this->identity_matrix, |
| 2339 gfx::PointF(100.f, 100.f), | 2348 gfx::PointF(100.f, 100.f), |
| 2340 gfx::Size(50, 50), | 2349 gfx::Size(50, 50), |
| 2341 true); | 2350 true); |
| 2342 | 2351 |
| 2343 // Filters make the layers own surfaces. | 2352 // Filters make the layers own surfaces. |
| 2353 Types::SetForceRenderSurface(filtered_surface1, true); |
| 2354 Types::SetForceRenderSurface(filtered_surface2, true); |
| 2344 FilterOperations filters; | 2355 FilterOperations filters; |
| 2345 filters.Append(FilterOperation::CreateBlurFilter(1.f)); | 2356 filters.Append(FilterOperation::CreateBlurFilter(1.f)); |
| 2346 filtered_surface1->SetBackgroundFilters(filters); | 2357 filtered_surface1->SetBackgroundFilters(filters); |
| 2347 filtered_surface2->SetBackgroundFilters(filters); | 2358 filtered_surface2->SetBackgroundFilters(filters); |
| 2348 | 2359 |
| 2349 // Save the distance of influence for the blur effect. | 2360 // Save the distance of influence for the blur effect. |
| 2350 int outset_top, outset_right, outset_bottom, outset_left; | 2361 int outset_top, outset_right, outset_bottom, outset_left; |
| 2351 filters.GetOutsets( | 2362 filters.GetOutsets( |
| 2352 &outset_top, &outset_right, &outset_bottom, &outset_left); | 2363 &outset_top, &outset_right, &outset_bottom, &outset_left); |
| 2353 | 2364 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2420 scale_by_half, | 2431 scale_by_half, |
| 2421 gfx::PointF(50.f, 50.f), | 2432 gfx::PointF(50.f, 50.f), |
| 2422 gfx::Size(100, 100), | 2433 gfx::Size(100, 100), |
| 2423 false); | 2434 false); |
| 2424 this->CreateReplicaLayer(filtered_surface, | 2435 this->CreateReplicaLayer(filtered_surface, |
| 2425 this->identity_matrix, | 2436 this->identity_matrix, |
| 2426 gfx::PointF(300.f, 0.f), | 2437 gfx::PointF(300.f, 0.f), |
| 2427 gfx::Size()); | 2438 gfx::Size()); |
| 2428 | 2439 |
| 2429 // Filters make the layer own a surface. | 2440 // Filters make the layer own a surface. |
| 2441 Types::SetForceRenderSurface(filtered_surface, true); |
| 2430 FilterOperations filters; | 2442 FilterOperations filters; |
| 2431 filters.Append(FilterOperation::CreateBlurFilter(3.f)); | 2443 filters.Append(FilterOperation::CreateBlurFilter(3.f)); |
| 2432 filtered_surface->SetBackgroundFilters(filters); | 2444 filtered_surface->SetBackgroundFilters(filters); |
| 2433 | 2445 |
| 2434 this->CalcDrawEtc(parent); | 2446 this->CalcDrawEtc(parent); |
| 2435 | 2447 |
| 2436 TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( | 2448 TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( |
| 2437 gfx::Rect(0, 0, 1000, 1000)); | 2449 gfx::Rect(0, 0, 1000, 1000)); |
| 2438 | 2450 |
| 2439 // The surface has a background blur, so it blurs non-opaque pixels below | 2451 // The surface has a background blur, so it blurs non-opaque pixels below |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2494 gfx::Size(100, 100), | 2506 gfx::Size(100, 100), |
| 2495 false); | 2507 false); |
| 2496 typename Types::LayerType* occluding_layer = | 2508 typename Types::LayerType* occluding_layer = |
| 2497 this->CreateDrawingLayer(parent, | 2509 this->CreateDrawingLayer(parent, |
| 2498 this->identity_matrix, | 2510 this->identity_matrix, |
| 2499 gfx::PointF(50.f, 50.f), | 2511 gfx::PointF(50.f, 50.f), |
| 2500 gfx::Size(50, 50), | 2512 gfx::Size(50, 50), |
| 2501 true); | 2513 true); |
| 2502 | 2514 |
| 2503 // Filters make the layer own a surface. | 2515 // Filters make the layer own a surface. |
| 2516 Types::SetForceRenderSurface(filtered_surface, true); |
| 2504 FilterOperations filters; | 2517 FilterOperations filters; |
| 2505 filters.Append(FilterOperation::CreateBlurFilter(3.f)); | 2518 filters.Append(FilterOperation::CreateBlurFilter(3.f)); |
| 2506 filtered_surface->SetBackgroundFilters(filters); | 2519 filtered_surface->SetBackgroundFilters(filters); |
| 2507 | 2520 |
| 2508 this->CalcDrawEtc(parent); | 2521 this->CalcDrawEtc(parent); |
| 2509 | 2522 |
| 2510 TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( | 2523 TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( |
| 2511 gfx::Rect(0, 0, 1000, 1000)); | 2524 gfx::Rect(0, 0, 1000, 1000)); |
| 2512 | 2525 |
| 2513 this->VisitLayer(occluding_layer, &occlusion); | 2526 this->VisitLayer(occluding_layer, &occlusion); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2590 gfx::Size(10, 10), | 2603 gfx::Size(10, 10), |
| 2591 true); | 2604 true); |
| 2592 typename Types::LayerType* beside_replica_layer = | 2605 typename Types::LayerType* beside_replica_layer = |
| 2593 this->CreateDrawingLayer(parent, | 2606 this->CreateDrawingLayer(parent, |
| 2594 this->identity_matrix, | 2607 this->identity_matrix, |
| 2595 gfx::PointF(200.f, 40.f), | 2608 gfx::PointF(200.f, 40.f), |
| 2596 gfx::Size(10, 10), | 2609 gfx::Size(10, 10), |
| 2597 true); | 2610 true); |
| 2598 | 2611 |
| 2599 // Filters make the layer own a surface. | 2612 // Filters make the layer own a surface. |
| 2613 Types::SetForceRenderSurface(filtered_surface, true); |
| 2600 FilterOperations filters; | 2614 FilterOperations filters; |
| 2601 filters.Append(FilterOperation::CreateBlurFilter(3.f)); | 2615 filters.Append(FilterOperation::CreateBlurFilter(3.f)); |
| 2602 filtered_surface->SetBackgroundFilters(filters); | 2616 filtered_surface->SetBackgroundFilters(filters); |
| 2603 | 2617 |
| 2604 // Save the distance of influence for the blur effect. | 2618 // Save the distance of influence for the blur effect. |
| 2605 int outset_top, outset_right, outset_bottom, outset_left; | 2619 int outset_top, outset_right, outset_bottom, outset_left; |
| 2606 filters.GetOutsets( | 2620 filters.GetOutsets( |
| 2607 &outset_top, &outset_right, &outset_bottom, &outset_left); | 2621 &outset_top, &outset_right, &outset_bottom, &outset_left); |
| 2608 | 2622 |
| 2609 this->CalcDrawEtc(parent); | 2623 this->CalcDrawEtc(parent); |
| (...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3301 EXPECT_EQ(gfx::Rect(), | 3315 EXPECT_EQ(gfx::Rect(), |
| 3302 occlusion.UnoccludedSurfaceContentRect( | 3316 occlusion.UnoccludedSurfaceContentRect( |
| 3303 surface, gfx::Rect(80, 70, 50, 50))); | 3317 surface, gfx::Rect(80, 70, 50, 50))); |
| 3304 } | 3318 } |
| 3305 }; | 3319 }; |
| 3306 | 3320 |
| 3307 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestUnoccludedSurfaceQuery) | 3321 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestUnoccludedSurfaceQuery) |
| 3308 | 3322 |
| 3309 } // namespace | 3323 } // namespace |
| 3310 } // namespace cc | 3324 } // namespace cc |
| OLD | NEW |