| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| 11 #include "base/synchronization/waitable_event.h" | 11 #include "base/synchronization/waitable_event.h" |
| 12 #include "base/threading/thread.h" | 12 #include "base/threading/thread.h" |
| 13 #include "base/time/time.h" | 13 #include "base/time/time.h" |
| 14 #include "cc/layers/delegated_frame_provider.h" |
| 15 #include "cc/layers/delegated_frame_resource_collection.h" |
| 14 #include "cc/layers/delegated_renderer_layer.h" | 16 #include "cc/layers/delegated_renderer_layer.h" |
| 15 #include "cc/layers/delegated_renderer_layer_client.h" | 17 #include "cc/layers/delegated_renderer_layer_client.h" |
| 16 #include "cc/layers/delegated_renderer_layer_impl.h" | 18 #include "cc/layers/delegated_renderer_layer_impl.h" |
| 17 #include "cc/output/compositor_frame.h" | 19 #include "cc/output/compositor_frame.h" |
| 18 #include "cc/output/compositor_frame_ack.h" | 20 #include "cc/output/compositor_frame_ack.h" |
| 19 #include "cc/output/delegated_frame_data.h" | 21 #include "cc/output/delegated_frame_data.h" |
| 20 #include "cc/quads/render_pass_draw_quad.h" | 22 #include "cc/quads/render_pass_draw_quad.h" |
| 21 #include "cc/quads/shared_quad_state.h" | 23 #include "cc/quads/shared_quad_state.h" |
| 22 #include "cc/quads/texture_draw_quad.h" | 24 #include "cc/quads/texture_draw_quad.h" |
| 23 #include "cc/resources/returned_resource.h" | 25 #include "cc/resources/returned_resource.h" |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 false, // is_replica | 183 false, // is_replica |
| 182 0, // mask_resource_id | 184 0, // mask_resource_id |
| 183 damage_rect, | 185 damage_rect, |
| 184 gfx::Rect(0, 0, 1, 1), // mask_uv_rect | 186 gfx::Rect(0, 0, 1, 1), // mask_uv_rect |
| 185 filters, | 187 filters, |
| 186 background_filters); | 188 background_filters); |
| 187 frame->render_pass_list[0]->shared_quad_state_list.push_back(sqs.Pass()); | 189 frame->render_pass_list[0]->shared_quad_state_list.push_back(sqs.Pass()); |
| 188 frame->render_pass_list[0]->quad_list.push_back(quad.PassAs<DrawQuad>()); | 190 frame->render_pass_list[0]->quad_list.push_back(quad.PassAs<DrawQuad>()); |
| 189 } | 191 } |
| 190 | 192 |
| 191 scoped_ptr<DelegatedFrameData> CreateEmptyFrameData() { | |
| 192 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); | |
| 193 return frame.Pass(); | |
| 194 } | |
| 195 | |
| 196 | |
| 197 static ResourceProvider::ResourceId AppendResourceId( | 193 static ResourceProvider::ResourceId AppendResourceId( |
| 198 std::vector<ResourceProvider::ResourceId>* resources_in_last_sent_frame, | 194 std::vector<ResourceProvider::ResourceId>* resources_in_last_sent_frame, |
| 199 ResourceProvider::ResourceId resource_id) { | 195 ResourceProvider::ResourceId resource_id) { |
| 200 resources_in_last_sent_frame->push_back(resource_id); | 196 resources_in_last_sent_frame->push_back(resource_id); |
| 201 return resource_id; | 197 return resource_id; |
| 202 } | 198 } |
| 203 | 199 |
| 204 void ReturnUnusedResourcesFromParent(LayerTreeHostImpl* host_impl) { | 200 void ReturnUnusedResourcesFromParent(LayerTreeHostImpl* host_impl) { |
| 205 DelegatedFrameData* delegated_frame_data = | 201 DelegatedFrameData* delegated_frame_data = |
| 206 output_surface()->last_sent_frame().delegated_frame_data.get(); | 202 output_surface()->last_sent_frame().delegated_frame_data.get(); |
| 207 if (!delegated_frame_data) | 203 if (!delegated_frame_data) |
| 208 return; | 204 return; |
| 209 | 205 |
| 210 std::vector<ResourceProvider::ResourceId> resources_in_last_sent_frame; | 206 std::vector<ResourceProvider::ResourceId> resources_in_last_sent_frame; |
| 211 for (size_t i = 0; i < delegated_frame_data->render_pass_list.size(); ++i) { | 207 for (size_t i = 0; i < delegated_frame_data->resource_list.size(); ++i) { |
| 212 RenderPass* pass = delegated_frame_data->render_pass_list.at(i); | 208 resources_in_last_sent_frame.push_back( |
| 213 for (size_t j = 0; j < pass->quad_list.size(); ++j) { | 209 delegated_frame_data->resource_list[i].id); |
| 214 DrawQuad* quad = pass->quad_list[j]; | |
| 215 quad->IterateResources(base::Bind(&AppendResourceId, | |
| 216 &resources_in_last_sent_frame)); | |
| 217 } | |
| 218 } | 210 } |
| 219 | 211 |
| 220 std::vector<ResourceProvider::ResourceId> resources_to_return; | 212 std::vector<ResourceProvider::ResourceId> resources_to_return; |
| 221 | 213 |
| 222 const TransferableResourceArray& resources_held_by_parent = | 214 const TransferableResourceArray& resources_held_by_parent = |
| 223 output_surface()->resources_held_by_parent(); | 215 output_surface()->resources_held_by_parent(); |
| 224 for (size_t i = 0; i < resources_held_by_parent.size(); ++i) { | 216 for (size_t i = 0; i < resources_held_by_parent.size(); ++i) { |
| 225 ResourceProvider::ResourceId resource_in_parent = | 217 ResourceProvider::ResourceId resource_in_parent = |
| 226 resources_held_by_parent[i].id; | 218 resources_held_by_parent[i].id; |
| 227 bool resource_in_parent_is_not_part_of_frame = | 219 bool resource_in_parent_is_not_part_of_frame = |
| (...skipping 10 matching lines...) Expand all Loading... |
| 238 CompositorFrameAck ack; | 230 CompositorFrameAck ack; |
| 239 for (size_t i = 0; i < resources_to_return.size(); ++i) | 231 for (size_t i = 0; i < resources_to_return.size(); ++i) |
| 240 output_surface()->ReturnResource(resources_to_return[i], &ack); | 232 output_surface()->ReturnResource(resources_to_return[i], &ack); |
| 241 host_impl->ReclaimResources(&ack); | 233 host_impl->ReclaimResources(&ack); |
| 242 host_impl->OnSwapBuffersComplete(); | 234 host_impl->OnSwapBuffersComplete(); |
| 243 } | 235 } |
| 244 }; | 236 }; |
| 245 | 237 |
| 246 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer | 238 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer |
| 247 : public LayerTreeHostDelegatedTest, | 239 : public LayerTreeHostDelegatedTest, |
| 248 public DelegatedRendererLayerClient { | 240 public DelegatedRendererLayerClient, |
| 241 public DelegatedFrameResourceCollectionClient { |
| 249 public: | 242 public: |
| 250 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer() : available_(false) {} | 243 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer() |
| 244 : resource_collection_( |
| 245 make_scoped_ptr(new DelegatedFrameResourceCollection(this))), |
| 246 available_(false) {} |
| 251 | 247 |
| 252 virtual void SetupTree() OVERRIDE { | 248 virtual void SetupTree() OVERRIDE { |
| 253 root_ = Layer::Create(); | 249 root_ = Layer::Create(); |
| 254 root_->SetAnchorPoint(gfx::PointF()); | 250 root_->SetAnchorPoint(gfx::PointF()); |
| 255 root_->SetBounds(gfx::Size(10, 10)); | 251 root_->SetBounds(gfx::Size(10, 10)); |
| 256 | 252 |
| 257 delegated_ = FakeDelegatedRendererLayer::Create(this); | |
| 258 delegated_->SetAnchorPoint(gfx::PointF()); | |
| 259 delegated_->SetBounds(gfx::Size(10, 10)); | |
| 260 delegated_->SetIsDrawable(true); | |
| 261 | |
| 262 root_->AddChild(delegated_); | |
| 263 layer_tree_host()->SetRootLayer(root_); | 253 layer_tree_host()->SetRootLayer(root_); |
| 264 LayerTreeHostDelegatedTest::SetupTree(); | 254 LayerTreeHostDelegatedTest::SetupTree(); |
| 265 } | 255 } |
| 266 | 256 |
| 267 virtual void BeginTest() OVERRIDE { | 257 virtual void BeginTest() OVERRIDE { |
| 268 PostSetNeedsCommitToMainThread(); | 258 PostSetNeedsCommitToMainThread(); |
| 269 } | 259 } |
| 270 | 260 |
| 261 void SetFrameData(scoped_ptr<DelegatedFrameData> frame_data) { |
| 262 RenderPass* root_pass = frame_data->render_pass_list.back(); |
| 263 gfx::Size frame_size = root_pass->output_rect.size(); |
| 264 |
| 265 if (frame_provider_ && frame_size == frame_provider_->frame_size()) { |
| 266 frame_provider_->SetFrameData(frame_data.Pass()); |
| 267 return; |
| 268 } |
| 269 |
| 270 if (delegated_.get()) { |
| 271 delegated_->RemoveFromParent(); |
| 272 delegated_ = NULL; |
| 273 frame_provider_.reset(); |
| 274 } |
| 275 |
| 276 frame_provider_ = make_scoped_ptr(new DelegatedFrameProvider( |
| 277 resource_collection_.get(), frame_data.Pass())); |
| 278 |
| 279 delegated_ = CreateDelegatedLayer(frame_provider_.get()); |
| 280 } |
| 281 |
| 282 scoped_refptr<DelegatedRendererLayer> CreateDelegatedLayer( |
| 283 DelegatedFrameProvider* frame_provider) { |
| 284 scoped_refptr<DelegatedRendererLayer> delegated = |
| 285 FakeDelegatedRendererLayer::Create(this, frame_provider); |
| 286 delegated->SetAnchorPoint(gfx::PointF()); |
| 287 delegated->SetBounds(gfx::Size(10, 10)); |
| 288 delegated->SetIsDrawable(true); |
| 289 |
| 290 root_->AddChild(delegated); |
| 291 return delegated; |
| 292 } |
| 293 |
| 271 virtual void AfterTest() OVERRIDE {} | 294 virtual void AfterTest() OVERRIDE {} |
| 272 | 295 |
| 273 // DelegatedRendererLayerClient implementation. | 296 // DelegatedRendererLayerClient implementation. |
| 274 virtual void DidCommitFrameData() OVERRIDE {} | 297 virtual void DidCommitFrameData() OVERRIDE {} |
| 298 |
| 299 // DelegatedFrameProviderClient implementation. |
| 275 virtual void UnusedResourcesAreAvailable() OVERRIDE { available_ = true; } | 300 virtual void UnusedResourcesAreAvailable() OVERRIDE { available_ = true; } |
| 276 | 301 |
| 277 bool TestAndResetAvailable() { | 302 bool TestAndResetAvailable() { |
| 278 bool available = available_; | 303 bool available = available_; |
| 279 available_ = false; | 304 available_ = false; |
| 280 return available; | 305 return available; |
| 281 } | 306 } |
| 282 | 307 |
| 283 protected: | 308 protected: |
| 309 scoped_ptr<DelegatedFrameResourceCollection> resource_collection_; |
| 310 scoped_ptr<DelegatedFrameProvider> frame_provider_; |
| 284 scoped_refptr<Layer> root_; | 311 scoped_refptr<Layer> root_; |
| 285 scoped_refptr<DelegatedRendererLayer> delegated_; | 312 scoped_refptr<DelegatedRendererLayer> delegated_; |
| 286 bool available_; | 313 bool available_; |
| 287 }; | 314 }; |
| 288 | 315 |
| 289 class LayerTreeHostDelegatedTestClientDidCommitCallback | 316 class LayerTreeHostDelegatedTestClientDidCommitCallback |
| 290 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 317 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 291 public: | 318 public: |
| 292 LayerTreeHostDelegatedTestClientDidCommitCallback() | 319 LayerTreeHostDelegatedTestClientDidCommitCallback() |
| 293 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 320 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
| 294 num_did_commit_frame_data_(0) {} | 321 num_did_commit_frame_data_(0) {} |
| 295 | 322 |
| 296 virtual void DidCommit() OVERRIDE { | 323 virtual void DidCommit() OVERRIDE { |
| 297 if (TestEnded()) | 324 if (TestEnded()) |
| 298 return; | 325 return; |
| 299 | 326 |
| 300 EXPECT_EQ(1, num_did_commit_frame_data_); | 327 EXPECT_EQ(1, num_did_commit_frame_data_); |
| 301 EndTest(); | 328 EndTest(); |
| 302 } | 329 } |
| 303 | 330 |
| 304 virtual void BeginTest() OVERRIDE { | 331 virtual void BeginTest() OVERRIDE { |
| 305 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), | 332 SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
| 306 gfx::Rect(0, 0, 1, 1))); | |
| 307 PostSetNeedsCommitToMainThread(); | 333 PostSetNeedsCommitToMainThread(); |
| 308 } | 334 } |
| 309 | 335 |
| 310 virtual void DidCommitFrameData() OVERRIDE { | 336 virtual void DidCommitFrameData() OVERRIDE { |
| 311 num_did_commit_frame_data_++; | 337 num_did_commit_frame_data_++; |
| 312 } | 338 } |
| 313 | 339 |
| 314 protected: | 340 protected: |
| 315 int num_did_commit_frame_data_; | 341 int num_did_commit_frame_data_; |
| 316 }; | 342 }; |
| 317 | 343 |
| 318 SINGLE_AND_MULTI_THREAD_TEST_F( | 344 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 319 LayerTreeHostDelegatedTestClientDidCommitCallback); | 345 LayerTreeHostDelegatedTestClientDidCommitCallback); |
| 320 | 346 |
| 321 class LayerTreeHostDelegatedTestCreateChildId | 347 class LayerTreeHostDelegatedTestCreateChildId |
| 322 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 348 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 323 public: | 349 public: |
| 324 LayerTreeHostDelegatedTestCreateChildId() | 350 LayerTreeHostDelegatedTestCreateChildId() |
| 325 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 351 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
| 326 num_activates_(0), | 352 num_activates_(0), |
| 327 did_reset_child_id_(false) {} | 353 did_reset_child_id_(false) {} |
| 328 | 354 |
| 329 virtual void DidCommit() OVERRIDE { | 355 virtual void DidCommit() OVERRIDE { |
| 330 if (TestEnded()) | 356 if (TestEnded()) |
| 331 return; | 357 return; |
| 332 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), | 358 SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
| 333 gfx::Rect(0, 0, 1, 1))); | |
| 334 } | 359 } |
| 335 | 360 |
| 336 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 361 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 362 if (host_impl->active_tree()->source_frame_number() < 1) |
| 363 return; |
| 364 |
| 337 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 365 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 338 FakeDelegatedRendererLayerImpl* delegated_impl = | 366 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 339 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 367 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 340 | 368 |
| 341 ContextProvider* context_provider = | 369 ContextProvider* context_provider = |
| 342 host_impl->output_surface()->context_provider(); | 370 host_impl->output_surface()->context_provider(); |
| 343 | 371 |
| 344 ++num_activates_; | 372 ++num_activates_; |
| 345 switch (num_activates_) { | 373 switch (num_activates_) { |
| 346 case 2: | 374 case 2: |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 | 412 |
| 385 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCreateChildId); | 413 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCreateChildId); |
| 386 | 414 |
| 387 class LayerTreeHostDelegatedTestOffscreenContext_NoFilters | 415 class LayerTreeHostDelegatedTestOffscreenContext_NoFilters |
| 388 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 416 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 389 protected: | 417 protected: |
| 390 virtual void BeginTest() OVERRIDE { | 418 virtual void BeginTest() OVERRIDE { |
| 391 scoped_ptr<DelegatedFrameData> frame = | 419 scoped_ptr<DelegatedFrameData> frame = |
| 392 CreateFrameData(gfx::Rect(0, 0, 1, 1), | 420 CreateFrameData(gfx::Rect(0, 0, 1, 1), |
| 393 gfx::Rect(0, 0, 1, 1)); | 421 gfx::Rect(0, 0, 1, 1)); |
| 394 delegated_->SetFrameData(frame.Pass()); | 422 SetFrameData(frame.Pass()); |
| 395 | 423 |
| 396 PostSetNeedsCommitToMainThread(); | 424 PostSetNeedsCommitToMainThread(); |
| 397 } | 425 } |
| 398 | 426 |
| 399 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 427 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 400 EXPECT_FALSE(host_impl->offscreen_context_provider()); | 428 EXPECT_FALSE(host_impl->offscreen_context_provider()); |
| 401 EndTest(); | 429 EndTest(); |
| 402 } | 430 } |
| 403 | 431 |
| 404 virtual void AfterTest() OVERRIDE {} | 432 virtual void AfterTest() OVERRIDE {} |
| (...skipping 11 matching lines...) Expand all Loading... |
| 416 gfx::Rect(0, 0, 1, 1)); | 444 gfx::Rect(0, 0, 1, 1)); |
| 417 | 445 |
| 418 FilterOperations filters; | 446 FilterOperations filters; |
| 419 filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f)); | 447 filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f)); |
| 420 AddRenderPass(frame.get(), | 448 AddRenderPass(frame.get(), |
| 421 RenderPass::Id(2, 1), | 449 RenderPass::Id(2, 1), |
| 422 gfx::Rect(0, 0, 1, 1), | 450 gfx::Rect(0, 0, 1, 1), |
| 423 gfx::Rect(0, 0, 1, 1), | 451 gfx::Rect(0, 0, 1, 1), |
| 424 filters, | 452 filters, |
| 425 FilterOperations()); | 453 FilterOperations()); |
| 426 delegated_->SetFrameData(frame.Pass()); | 454 SetFrameData(frame.Pass()); |
| 427 | 455 |
| 428 PostSetNeedsCommitToMainThread(); | 456 PostSetNeedsCommitToMainThread(); |
| 429 } | 457 } |
| 430 | 458 |
| 431 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 459 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 432 bool expect_context = !delegating_renderer(); | 460 bool expect_context = !delegating_renderer(); |
| 433 EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider()); | 461 EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider()); |
| 434 EndTest(); | 462 EndTest(); |
| 435 } | 463 } |
| 436 | 464 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 449 gfx::Rect(0, 0, 1, 1)); | 477 gfx::Rect(0, 0, 1, 1)); |
| 450 | 478 |
| 451 FilterOperations filters; | 479 FilterOperations filters; |
| 452 filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f)); | 480 filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f)); |
| 453 AddRenderPass(frame.get(), | 481 AddRenderPass(frame.get(), |
| 454 RenderPass::Id(2, 1), | 482 RenderPass::Id(2, 1), |
| 455 gfx::Rect(0, 0, 1, 1), | 483 gfx::Rect(0, 0, 1, 1), |
| 456 gfx::Rect(0, 0, 1, 1), | 484 gfx::Rect(0, 0, 1, 1), |
| 457 FilterOperations(), | 485 FilterOperations(), |
| 458 filters); | 486 filters); |
| 459 delegated_->SetFrameData(frame.Pass()); | 487 SetFrameData(frame.Pass()); |
| 460 | 488 |
| 461 PostSetNeedsCommitToMainThread(); | 489 PostSetNeedsCommitToMainThread(); |
| 462 } | 490 } |
| 463 | 491 |
| 464 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 492 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 465 bool expect_context = !delegating_renderer(); | 493 bool expect_context = !delegating_renderer(); |
| 466 EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider()); | 494 EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider()); |
| 467 EndTest(); | 495 EndTest(); |
| 468 } | 496 } |
| 469 | 497 |
| 470 virtual void AfterTest() OVERRIDE {} | 498 virtual void AfterTest() OVERRIDE {} |
| 471 }; | 499 }; |
| 472 | 500 |
| 473 SINGLE_AND_MULTI_THREAD_TEST_F( | 501 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 474 LayerTreeHostDelegatedTestOffscreenContext_BackgroundFilters); | 502 LayerTreeHostDelegatedTestOffscreenContext_BackgroundFilters); |
| 475 | 503 |
| 476 class LayerTreeHostDelegatedTestOffscreenContext_Filters_AddedToTree | 504 class LayerTreeHostDelegatedTestOffscreenContext_Filters_AddedToTree |
| 477 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 505 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 478 protected: | 506 protected: |
| 479 virtual void BeginTest() OVERRIDE { | 507 virtual void BeginTest() OVERRIDE { |
| 480 scoped_ptr<DelegatedFrameData> frame = | 508 scoped_ptr<DelegatedFrameData> frame_no_filters = |
| 481 CreateFrameData(gfx::Rect(0, 0, 1, 1), | 509 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 482 gfx::Rect(0, 0, 1, 1)); | 510 |
| 511 scoped_ptr<DelegatedFrameData> frame_with_filters = |
| 512 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 483 | 513 |
| 484 FilterOperations filters; | 514 FilterOperations filters; |
| 485 filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f)); | 515 filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f)); |
| 486 AddRenderPass(frame.get(), | 516 AddRenderPass(frame_with_filters.get(), |
| 487 RenderPass::Id(2, 1), | 517 RenderPass::Id(2, 1), |
| 488 gfx::Rect(0, 0, 1, 1), | 518 gfx::Rect(0, 0, 1, 1), |
| 489 gfx::Rect(0, 0, 1, 1), | 519 gfx::Rect(0, 0, 1, 1), |
| 490 filters, | 520 filters, |
| 491 FilterOperations()); | 521 FilterOperations()); |
| 492 | 522 |
| 523 SetFrameData(frame_no_filters.Pass()); |
| 493 delegated_->RemoveFromParent(); | 524 delegated_->RemoveFromParent(); |
| 494 delegated_->SetFrameData(frame.Pass()); | 525 SetFrameData(frame_with_filters.Pass()); |
| 495 layer_tree_host()->root_layer()->AddChild(delegated_); | 526 layer_tree_host()->root_layer()->AddChild(delegated_); |
| 496 | 527 |
| 497 PostSetNeedsCommitToMainThread(); | 528 PostSetNeedsCommitToMainThread(); |
| 498 } | 529 } |
| 499 | 530 |
| 500 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 531 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 501 bool expect_context = !delegating_renderer(); | 532 bool expect_context = !delegating_renderer(); |
| 502 EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider()); | 533 EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider()); |
| 503 EndTest(); | 534 EndTest(); |
| 504 } | 535 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 515 LayerTreeHostDelegatedTestLayerUsesFrameDamage() | 546 LayerTreeHostDelegatedTestLayerUsesFrameDamage() |
| 516 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 547 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
| 517 first_draw_for_source_frame_(true) {} | 548 first_draw_for_source_frame_(true) {} |
| 518 | 549 |
| 519 virtual void DidCommit() OVERRIDE { | 550 virtual void DidCommit() OVERRIDE { |
| 520 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 551 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 521 switch (next_source_frame_number) { | 552 switch (next_source_frame_number) { |
| 522 case 1: | 553 case 1: |
| 523 // The first time the layer gets a frame the whole layer should be | 554 // The first time the layer gets a frame the whole layer should be |
| 524 // damaged. | 555 // damaged. |
| 525 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), | 556 SetFrameData( |
| 526 gfx::Rect(0, 0, 1, 1))); | 557 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
| 527 break; | 558 break; |
| 528 case 2: | 559 case 2: |
| 560 // A different frame size will damage the whole layer. |
| 561 SetFrameData( |
| 562 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(0, 0, 0, 0))); |
| 563 break; |
| 564 case 3: |
| 529 // Should create a total amount of gfx::Rect(2, 2, 10, 6) damage. | 565 // Should create a total amount of gfx::Rect(2, 2, 10, 6) damage. |
| 530 // The frame size is 20x20 while the layer is 10x10, so this should | 566 // The frame size is 20x20 while the layer is 10x10, so this should |
| 531 // produce a gfx::Rect(1, 1, 5, 3) damage rect. | 567 // produce a gfx::Rect(1, 1, 5, 3) damage rect. |
| 532 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20), | 568 SetFrameData( |
| 533 gfx::Rect(2, 2, 5, 5))); | 569 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(2, 2, 5, 5))); |
| 534 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20), | 570 SetFrameData( |
| 535 gfx::Rect(7, 2, 5, 6))); | 571 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(7, 2, 5, 6))); |
| 536 break; | 572 break; |
| 537 case 3: | 573 case 4: |
| 538 // Should create zero damage. | 574 // Should create zero damage. |
| 539 layer_tree_host()->SetNeedsCommit(); | 575 layer_tree_host()->SetNeedsCommit(); |
| 540 break; | 576 break; |
| 541 case 4: | 577 case 5: |
| 542 // Should damage the full viewport. | 578 // Should damage the full viewport. |
| 543 delegated_->SetBounds(gfx::Size(2, 2)); | 579 delegated_->SetBounds(gfx::Size(2, 2)); |
| 544 break; | 580 break; |
| 545 case 5: | 581 case 6: |
| 546 // Should create zero damage. | 582 // Should create zero damage. |
| 547 layer_tree_host()->SetNeedsCommit(); | 583 layer_tree_host()->SetNeedsCommit(); |
| 548 break; | 584 break; |
| 549 case 6: | 585 case 7: |
| 550 // Should damage the full layer. | 586 // Should damage the full layer, tho the frame size is not changing. |
| 551 delegated_->SetBounds(gfx::Size(6, 6)); | 587 delegated_->SetBounds(gfx::Size(6, 6)); |
| 552 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), | 588 SetFrameData( |
| 553 gfx::Rect(1, 1, 2, 2))); | 589 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(1, 1, 2, 2))); |
| 554 break; | 590 break; |
| 555 case 7: | 591 case 8: |
| 556 // Should create zero damage. | 592 // Should create zero damage. |
| 557 layer_tree_host()->SetNeedsCommit(); | 593 layer_tree_host()->SetNeedsCommit(); |
| 558 break; | 594 break; |
| 559 case 8: | 595 case 9: |
| 560 // Should damage the full layer. | 596 // Should damage the full layer. |
| 561 delegated_->SetDisplaySize(gfx::Size(10, 10)); | 597 delegated_->SetDisplaySize(gfx::Size(10, 10)); |
| 562 break; | 598 break; |
| 563 case 9: | 599 case 10: |
| 564 // Should create zero damage. | 600 // Should create zero damage. |
| 565 layer_tree_host()->SetNeedsCommit(); | 601 layer_tree_host()->SetNeedsCommit(); |
| 566 break; | 602 break; |
| 567 case 10: | |
| 568 // Setting an empty frame should damage the whole layer the | |
| 569 // first time. | |
| 570 delegated_->SetFrameData(CreateEmptyFrameData()); | |
| 571 break; | |
| 572 case 11: | 603 case 11: |
| 573 // Setting an empty frame shouldn't damage anything after the | 604 // Changing the frame size damages the full layer. |
| 574 // first time. | 605 SetFrameData( |
| 575 delegated_->SetFrameData(CreateEmptyFrameData()); | 606 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(4, 4, 1, 1))); |
| 576 break; | 607 break; |
| 577 case 12: | 608 case 12: |
| 578 // Having valid content to display agains should damage the whole layer. | 609 // An invalid frame isn't used, so it should not cause damage. |
| 579 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 10, 10), | 610 SetFrameData(CreateInvalidFrameData(gfx::Rect(0, 0, 5, 5), |
| 580 gfx::Rect(5, 5, 1, 1))); | 611 gfx::Rect(4, 4, 1, 1))); |
| 581 break; | 612 break; |
| 582 case 13: | 613 case 13: |
| 583 // An invalid frame isn't used, so it should not cause damage. | |
| 584 delegated_->SetFrameData(CreateInvalidFrameData(gfx::Rect(0, 0, 10, 10), | |
| 585 gfx::Rect(5, 5, 1, 1))); | |
| 586 break; | |
| 587 case 14: | |
| 588 // Should create gfx::Rect(1, 1, 2, 2) of damage. The frame size is | 614 // Should create gfx::Rect(1, 1, 2, 2) of damage. The frame size is |
| 589 // 5x5 and the display size is now set to 10x10, so this should result | 615 // 5x5 and the display size is now set to 10x10, so this should result |
| 590 // in a gfx::Rect(2, 2, 4, 4) damage rect. | 616 // in a gfx::Rect(2, 2, 4, 4) damage rect. |
| 591 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), | 617 SetFrameData( |
| 592 gfx::Rect(1, 1, 2, 2))); | 618 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(1, 1, 2, 2))); |
| 593 break; | 619 break; |
| 594 case 15: | 620 case 14: |
| 595 // Should create zero damage. | 621 // Should create zero damage. |
| 596 layer_tree_host()->SetNeedsCommit(); | 622 layer_tree_host()->SetNeedsCommit(); |
| 597 break; | 623 break; |
| 598 case 16: | 624 case 15: |
| 599 // Moving the layer out of the tree and back in will damage the whole | 625 // Moving the layer out of the tree and back in will damage the whole |
| 600 // impl layer. | 626 // impl layer. |
| 601 delegated_->RemoveFromParent(); | 627 delegated_->RemoveFromParent(); |
| 602 layer_tree_host()->root_layer()->AddChild(delegated_); | 628 layer_tree_host()->root_layer()->AddChild(delegated_); |
| 603 break; | 629 break; |
| 604 case 17: | 630 case 16: |
| 605 // Make a larger frame with lots of damage. Then a frame smaller than | 631 // Make a larger frame with lots of damage. Then a frame smaller than |
| 606 // the first frame's damage. The entire layer should be damaged, but | 632 // the first frame's damage. The entire layer should be damaged, but |
| 607 // nothing more. | 633 // nothing more. |
| 608 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 10, 10), | 634 SetFrameData( |
| 609 gfx::Rect(0, 0, 10, 10))); | 635 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 10, 10))); |
| 610 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), | 636 SetFrameData( |
| 611 gfx::Rect(1, 1, 2, 2))); | 637 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(1, 1, 2, 2))); |
| 612 break; | 638 break; |
| 613 case 18: | 639 case 17: |
| 614 // Make a frame with lots of damage. Then replace it with an empty | 640 // Make a frame with lots of damage. Then replace it with a frame with |
| 615 // frame. The entire layer should be damaged, but nothing more. | 641 // no damage. The entire layer should be damaged, but nothing more. |
| 616 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 10, 10), | 642 SetFrameData( |
| 617 gfx::Rect(0, 0, 10, 10))); | 643 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 10, 10))); |
| 618 delegated_->SetFrameData(CreateEmptyFrameData()); | 644 SetFrameData( |
| 645 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 0, 0))); |
| 619 break; | 646 break; |
| 620 } | 647 } |
| 621 first_draw_for_source_frame_ = true; | 648 first_draw_for_source_frame_ = true; |
| 622 } | 649 } |
| 623 | 650 |
| 624 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 651 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 625 LayerTreeHostImpl::FrameData* frame, | 652 LayerTreeHostImpl::FrameData* frame, |
| 626 bool result) OVERRIDE { | 653 bool result) OVERRIDE { |
| 627 EXPECT_TRUE(result); | 654 EXPECT_TRUE(result); |
| 628 | 655 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 641 case 0: | 668 case 0: |
| 642 // First frame is damaged because of viewport resize. | 669 // First frame is damaged because of viewport resize. |
| 643 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), | 670 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
| 644 damage_rect.ToString()); | 671 damage_rect.ToString()); |
| 645 break; | 672 break; |
| 646 case 1: | 673 case 1: |
| 647 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), | 674 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
| 648 damage_rect.ToString()); | 675 damage_rect.ToString()); |
| 649 break; | 676 break; |
| 650 case 2: | 677 case 2: |
| 678 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
| 679 damage_rect.ToString()); |
| 680 break; |
| 681 case 3: |
| 651 EXPECT_EQ(gfx::RectF(1.f, 1.f, 5.f, 3.f).ToString(), | 682 EXPECT_EQ(gfx::RectF(1.f, 1.f, 5.f, 3.f).ToString(), |
| 652 damage_rect.ToString()); | 683 damage_rect.ToString()); |
| 653 break; | 684 break; |
| 654 case 3: | 685 case 4: |
| 655 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 686 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
| 656 damage_rect.ToString()); | 687 damage_rect.ToString()); |
| 657 break; | 688 break; |
| 658 case 4: | 689 case 5: |
| 659 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), | 690 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
| 660 damage_rect.ToString()); | 691 damage_rect.ToString()); |
| 661 break; | 692 break; |
| 662 case 5: | 693 case 6: |
| 663 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 694 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
| 664 damage_rect.ToString()); | 695 damage_rect.ToString()); |
| 665 break; | 696 break; |
| 666 case 6: | 697 case 7: |
| 667 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 698 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), |
| 668 damage_rect.ToString()); | 699 damage_rect.ToString()); |
| 669 break; | 700 break; |
| 670 case 7: | 701 case 8: |
| 671 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 702 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
| 672 damage_rect.ToString()); | 703 damage_rect.ToString()); |
| 673 break; | 704 break; |
| 674 case 8: | 705 case 9: |
| 675 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 706 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), |
| 676 damage_rect.ToString()); | 707 damage_rect.ToString()); |
| 677 break; | 708 break; |
| 678 case 9: | 709 case 10: |
| 679 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 710 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
| 680 damage_rect.ToString()); | 711 damage_rect.ToString()); |
| 681 break; | 712 break; |
| 682 case 10: | 713 case 11: |
| 683 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 714 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
| 684 damage_rect.ToString()); | 715 damage_rect.ToString()); |
| 685 break; | 716 break; |
| 686 case 11: | 717 case 12: |
| 687 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 718 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
| 688 damage_rect.ToString()); | 719 damage_rect.ToString()); |
| 689 break; | 720 break; |
| 690 case 12: | 721 case 13: |
| 691 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 722 EXPECT_EQ(gfx::RectF(2.f, 2.f, 4.f, 4.f).ToString(), |
| 692 damage_rect.ToString()); | 723 damage_rect.ToString()); |
| 693 break; | 724 break; |
| 694 case 13: | 725 case 14: |
| 695 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 726 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
| 696 damage_rect.ToString()); | 727 damage_rect.ToString()); |
| 697 break; | 728 break; |
| 698 case 14: | |
| 699 EXPECT_EQ(gfx::RectF(2.f, 2.f, 4.f, 4.f).ToString(), | |
| 700 damage_rect.ToString()); | |
| 701 break; | |
| 702 case 15: | 729 case 15: |
| 703 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 730 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
| 704 damage_rect.ToString()); | 731 damage_rect.ToString()); |
| 705 break; | 732 break; |
| 706 case 16: | 733 case 16: |
| 707 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 734 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
| 708 damage_rect.ToString()); | 735 damage_rect.ToString()); |
| 709 break; | 736 break; |
| 710 case 17: | 737 case 17: |
| 711 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 738 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
| 712 damage_rect.ToString()); | |
| 713 break; | |
| 714 case 18: | |
| 715 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | |
| 716 damage_rect.ToString()); | 739 damage_rect.ToString()); |
| 717 EndTest(); | 740 EndTest(); |
| 718 break; | 741 break; |
| 719 } | 742 } |
| 720 | 743 |
| 721 return result; | 744 return result; |
| 722 } | 745 } |
| 723 | 746 |
| 724 protected: | 747 protected: |
| 725 bool first_draw_for_source_frame_; | 748 bool first_draw_for_source_frame_; |
| 726 }; | 749 }; |
| 727 | 750 |
| 728 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage); | 751 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage); |
| 729 | 752 |
| 730 class LayerTreeHostDelegatedTestMergeResources | 753 class LayerTreeHostDelegatedTestMergeResources |
| 731 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 754 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 732 public: | 755 public: |
| 733 virtual void BeginTest() OVERRIDE { | 756 virtual void BeginTest() OVERRIDE { |
| 734 // Push two frames to the delegated renderer layer with no commit between. | 757 // Push two frames to the delegated renderer layer with no commit between. |
| 735 | 758 |
| 736 // The first frame has resource 999. | 759 // The first frame has resource 999. |
| 737 scoped_ptr<DelegatedFrameData> frame1 = | 760 scoped_ptr<DelegatedFrameData> frame1 = |
| 738 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 761 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 739 AddTextureQuad(frame1.get(), 999); | 762 AddTextureQuad(frame1.get(), 999); |
| 740 AddTransferableResource(frame1.get(), 999); | 763 AddTransferableResource(frame1.get(), 999); |
| 741 delegated_->SetFrameData(frame1.Pass()); | 764 SetFrameData(frame1.Pass()); |
| 742 | 765 |
| 743 // The second frame uses resource 999 still, but also adds 555. | 766 // The second frame uses resource 999 still, but also adds 555. |
| 744 scoped_ptr<DelegatedFrameData> frame2 = | 767 scoped_ptr<DelegatedFrameData> frame2 = |
| 745 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 768 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 746 AddTextureQuad(frame2.get(), 999); | 769 AddTextureQuad(frame2.get(), 999); |
| 747 AddTransferableResource(frame2.get(), 999); | 770 AddTransferableResource(frame2.get(), 999); |
| 748 AddTextureQuad(frame2.get(), 555); | 771 AddTextureQuad(frame2.get(), 555); |
| 749 AddTransferableResource(frame2.get(), 555); | 772 AddTransferableResource(frame2.get(), 555); |
| 750 delegated_->SetFrameData(frame2.Pass()); | 773 SetFrameData(frame2.Pass()); |
| 751 | 774 |
| 752 // The resource 999 from frame1 is returned since it is still on the main | 775 // The resource 999 from frame1 is returned since it is still on the main |
| 753 // thread. | 776 // thread. |
| 754 ReturnedResourceArray returned_resources; | 777 ReturnedResourceArray returned_resources; |
| 755 delegated_->TakeUnusedResourcesForChildCompositor(&returned_resources); | 778 resource_collection_->TakeUnusedResourcesForChildCompositor( |
| 779 &returned_resources); |
| 756 { | 780 { |
| 757 unsigned expected[] = {999}; | 781 unsigned expected[] = {999}; |
| 758 EXPECT_RESOURCES(expected, returned_resources); | 782 EXPECT_RESOURCES(expected, returned_resources); |
| 759 EXPECT_TRUE(TestAndResetAvailable()); | 783 EXPECT_TRUE(TestAndResetAvailable()); |
| 760 } | 784 } |
| 761 | 785 |
| 762 PostSetNeedsCommitToMainThread(); | 786 PostSetNeedsCommitToMainThread(); |
| 763 } | 787 } |
| 764 | 788 |
| 765 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 789 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 792 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 816 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 793 public: | 817 public: |
| 794 virtual void BeginTest() OVERRIDE { | 818 virtual void BeginTest() OVERRIDE { |
| 795 // Generate a frame with two resources in it. | 819 // Generate a frame with two resources in it. |
| 796 scoped_ptr<DelegatedFrameData> frame = | 820 scoped_ptr<DelegatedFrameData> frame = |
| 797 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 821 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 798 AddTextureQuad(frame.get(), 999); | 822 AddTextureQuad(frame.get(), 999); |
| 799 AddTransferableResource(frame.get(), 999); | 823 AddTransferableResource(frame.get(), 999); |
| 800 AddTextureQuad(frame.get(), 555); | 824 AddTextureQuad(frame.get(), 555); |
| 801 AddTransferableResource(frame.get(), 555); | 825 AddTransferableResource(frame.get(), 555); |
| 802 delegated_->SetFrameData(frame.Pass()); | 826 SetFrameData(frame.Pass()); |
| 803 | 827 |
| 804 PostSetNeedsCommitToMainThread(); | 828 PostSetNeedsCommitToMainThread(); |
| 805 } | 829 } |
| 806 | 830 |
| 807 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 831 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 808 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 832 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 809 FakeDelegatedRendererLayerImpl* delegated_impl = | 833 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 810 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 834 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 811 | 835 |
| 812 const ResourceProvider::ResourceIdMap& map = | 836 const ResourceProvider::ResourceIdMap& map = |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 852 | 876 |
| 853 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 877 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 854 switch (next_source_frame_number) { | 878 switch (next_source_frame_number) { |
| 855 case 1: | 879 case 1: |
| 856 // Generate a frame with two resources in it. | 880 // Generate a frame with two resources in it. |
| 857 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 881 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 858 AddTextureQuad(frame.get(), 999); | 882 AddTextureQuad(frame.get(), 999); |
| 859 AddTransferableResource(frame.get(), 999); | 883 AddTransferableResource(frame.get(), 999); |
| 860 AddTextureQuad(frame.get(), 555); | 884 AddTextureQuad(frame.get(), 555); |
| 861 AddTransferableResource(frame.get(), 555); | 885 AddTransferableResource(frame.get(), 555); |
| 862 delegated_->SetFrameData(frame.Pass()); | 886 SetFrameData(frame.Pass()); |
| 863 break; | 887 break; |
| 864 case 2: | 888 case 2: |
| 865 // All of the resources are in use. | 889 // All of the resources are in use. |
| 866 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 890 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 867 EXPECT_EQ(0u, resources.size()); | 891 EXPECT_EQ(0u, resources.size()); |
| 868 EXPECT_FALSE(TestAndResetAvailable()); | 892 EXPECT_FALSE(TestAndResetAvailable()); |
| 869 | 893 |
| 870 // Keep using 999 but stop using 555. | 894 // Keep using 999 but stop using 555. |
| 871 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 895 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 872 AddTextureQuad(frame.get(), 999); | 896 AddTextureQuad(frame.get(), 999); |
| 873 AddTransferableResource(frame.get(), 999); | 897 AddTransferableResource(frame.get(), 999); |
| 874 AddTextureQuad(frame.get(), 444); | 898 AddTextureQuad(frame.get(), 444); |
| 875 AddTransferableResource(frame.get(), 444); | 899 AddTransferableResource(frame.get(), 444); |
| 876 delegated_->SetFrameData(frame.Pass()); | 900 SetFrameData(frame.Pass()); |
| 877 break; | 901 break; |
| 878 case 3: | 902 case 3: |
| 879 // 555 is no longer in use. | 903 // 555 is no longer in use. |
| 880 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 904 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 881 { | 905 { |
| 882 unsigned expected[] = {555}; | 906 unsigned expected[] = {555}; |
| 883 EXPECT_RESOURCES(expected, resources); | 907 EXPECT_RESOURCES(expected, resources); |
| 884 EXPECT_TRUE(TestAndResetAvailable()); | 908 EXPECT_TRUE(TestAndResetAvailable()); |
| 885 } | 909 } |
| 886 | 910 |
| 887 // Stop using any resources. | 911 // Stop using any resources. |
| 888 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 912 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 889 delegated_->SetFrameData(frame.Pass()); | 913 SetFrameData(frame.Pass()); |
| 890 break; | 914 break; |
| 891 case 4: | 915 case 4: |
| 892 // Postpone collecting resources for a frame. They should still be there | 916 // Postpone collecting resources for a frame. They should still be there |
| 893 // the next frame. | 917 // the next frame. |
| 894 layer_tree_host()->SetNeedsCommit(); | 918 layer_tree_host()->SetNeedsCommit(); |
| 895 return; | 919 return; |
| 896 case 5: | 920 case 5: |
| 897 // 444 and 999 are no longer in use. We sent two refs to 999, so we | 921 // 444 and 999 are no longer in use. We sent two refs to 999, so we |
| 898 // should get two back. | 922 // should get two back. |
| 899 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 923 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 900 { | 924 { |
| 901 unsigned expected[] = {444, 999, 999}; | 925 unsigned expected[] = {444, 999, 999}; |
| 902 EXPECT_RESOURCES(expected, resources); | 926 EXPECT_RESOURCES(expected, resources); |
| 903 EXPECT_TRUE(TestAndResetAvailable()); | 927 EXPECT_TRUE(TestAndResetAvailable()); |
| 904 } | 928 } |
| 905 EndTest(); | 929 EndTest(); |
| 906 break; | 930 break; |
| 907 } | 931 } |
| 908 | 932 |
| 909 // Resources are never immediately released. | 933 // Resources are never immediately released. |
| 910 ReturnedResourceArray empty_resources; | 934 ReturnedResourceArray empty_resources; |
| 911 delegated_->TakeUnusedResourcesForChildCompositor(&empty_resources); | 935 resource_collection_->TakeUnusedResourcesForChildCompositor( |
| 936 &empty_resources); |
| 912 EXPECT_EQ(0u, empty_resources.size()); | 937 EXPECT_EQ(0u, empty_resources.size()); |
| 913 EXPECT_FALSE(TestAndResetAvailable()); | 938 EXPECT_FALSE(TestAndResetAvailable()); |
| 914 } | 939 } |
| 915 | 940 |
| 916 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 941 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, |
| 917 bool result) OVERRIDE { | 942 bool result) OVERRIDE { |
| 918 ReturnUnusedResourcesFromParent(host_impl); | 943 ReturnUnusedResourcesFromParent(host_impl); |
| 919 } | 944 } |
| 920 | 945 |
| 921 virtual void AfterTest() OVERRIDE {} | 946 virtual void AfterTest() OVERRIDE {} |
| (...skipping 17 matching lines...) Expand all Loading... |
| 939 switch (next_source_frame_number) { | 964 switch (next_source_frame_number) { |
| 940 case 1: | 965 case 1: |
| 941 // Generate a frame with some resources in it. | 966 // Generate a frame with some resources in it. |
| 942 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 967 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 943 AddTextureQuad(frame.get(), 999); | 968 AddTextureQuad(frame.get(), 999); |
| 944 AddTransferableResource(frame.get(), 999); | 969 AddTransferableResource(frame.get(), 999); |
| 945 AddTextureQuad(frame.get(), 555); | 970 AddTextureQuad(frame.get(), 555); |
| 946 AddTransferableResource(frame.get(), 555); | 971 AddTransferableResource(frame.get(), 555); |
| 947 AddTextureQuad(frame.get(), 444); | 972 AddTextureQuad(frame.get(), 444); |
| 948 AddTransferableResource(frame.get(), 444); | 973 AddTransferableResource(frame.get(), 444); |
| 949 delegated_->SetFrameData(frame.Pass()); | 974 SetFrameData(frame.Pass()); |
| 950 break; | 975 break; |
| 951 case 2: | 976 case 2: |
| 952 // All of the resources are in use. | 977 // All of the resources are in use. |
| 953 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 978 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 954 EXPECT_EQ(0u, resources.size()); | 979 EXPECT_EQ(0u, resources.size()); |
| 955 EXPECT_FALSE(TestAndResetAvailable()); | 980 EXPECT_FALSE(TestAndResetAvailable()); |
| 956 | 981 |
| 957 // Keep using 999 but stop using 555 and 444. | 982 // Keep using 999 but stop using 555 and 444. |
| 958 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 983 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 959 AddTextureQuad(frame.get(), 999); | 984 AddTextureQuad(frame.get(), 999); |
| 960 AddTransferableResource(frame.get(), 999); | 985 AddTransferableResource(frame.get(), 999); |
| 961 delegated_->SetFrameData(frame.Pass()); | 986 SetFrameData(frame.Pass()); |
| 962 | 987 |
| 963 // Resource are not immediately released. | 988 // Resource are not immediately released. |
| 964 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 989 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 965 EXPECT_EQ(0u, resources.size()); | 990 EXPECT_EQ(0u, resources.size()); |
| 966 EXPECT_FALSE(TestAndResetAvailable()); | 991 EXPECT_FALSE(TestAndResetAvailable()); |
| 967 | 992 |
| 968 // Now using 555 and 444 again, but not 999. | 993 // Now using 555 and 444 again, but not 999. |
| 969 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 994 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 970 AddTextureQuad(frame.get(), 555); | 995 AddTextureQuad(frame.get(), 555); |
| 971 AddTransferableResource(frame.get(), 555); | 996 AddTransferableResource(frame.get(), 555); |
| 972 AddTextureQuad(frame.get(), 444); | 997 AddTextureQuad(frame.get(), 444); |
| 973 AddTransferableResource(frame.get(), 444); | 998 AddTransferableResource(frame.get(), 444); |
| 974 delegated_->SetFrameData(frame.Pass()); | 999 SetFrameData(frame.Pass()); |
| 975 break; | 1000 break; |
| 976 case 3: | 1001 case 3: |
| 977 // The 999 resource is the only unused one. Two references were sent, so | 1002 // The 999 resource is the only unused one. Two references were sent, so |
| 978 // two should be returned. | 1003 // two should be returned. |
| 979 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1004 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 980 { | 1005 { |
| 981 unsigned expected[] = {999, 999}; | 1006 unsigned expected[] = {999, 999}; |
| 982 EXPECT_RESOURCES(expected, resources); | 1007 EXPECT_RESOURCES(expected, resources); |
| 983 EXPECT_TRUE(TestAndResetAvailable()); | 1008 EXPECT_TRUE(TestAndResetAvailable()); |
| 984 } | 1009 } |
| 985 EndTest(); | 1010 EndTest(); |
| 986 break; | 1011 break; |
| 987 } | 1012 } |
| 988 } | 1013 } |
| 989 | 1014 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1012 switch (next_source_frame_number) { | 1037 switch (next_source_frame_number) { |
| 1013 case 1: | 1038 case 1: |
| 1014 // Generate a frame with some resources in it. | 1039 // Generate a frame with some resources in it. |
| 1015 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1040 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1016 AddTextureQuad(frame.get(), 999); | 1041 AddTextureQuad(frame.get(), 999); |
| 1017 AddTransferableResource(frame.get(), 999); | 1042 AddTransferableResource(frame.get(), 999); |
| 1018 AddTextureQuad(frame.get(), 555); | 1043 AddTextureQuad(frame.get(), 555); |
| 1019 AddTransferableResource(frame.get(), 555); | 1044 AddTransferableResource(frame.get(), 555); |
| 1020 AddTextureQuad(frame.get(), 444); | 1045 AddTextureQuad(frame.get(), 444); |
| 1021 AddTransferableResource(frame.get(), 444); | 1046 AddTransferableResource(frame.get(), 444); |
| 1022 delegated_->SetFrameData(frame.Pass()); | 1047 SetFrameData(frame.Pass()); |
| 1023 break; | 1048 break; |
| 1024 case 2: | 1049 case 2: |
| 1025 // All of the resources are in use. | 1050 // All of the resources are in use. |
| 1026 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1051 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1027 EXPECT_EQ(0u, resources.size()); | 1052 EXPECT_EQ(0u, resources.size()); |
| 1028 EXPECT_FALSE(TestAndResetAvailable()); | 1053 EXPECT_FALSE(TestAndResetAvailable()); |
| 1029 | 1054 |
| 1030 // Keep using 999 but stop using 555 and 444. | 1055 // Keep using 999 but stop using 555 and 444. |
| 1031 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1056 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1032 AddTextureQuad(frame.get(), 999); | 1057 AddTextureQuad(frame.get(), 999); |
| 1033 AddTransferableResource(frame.get(), 999); | 1058 AddTransferableResource(frame.get(), 999); |
| 1034 delegated_->SetFrameData(frame.Pass()); | 1059 SetFrameData(frame.Pass()); |
| 1035 | 1060 |
| 1036 // Resource are not immediately released. | 1061 // Resource are not immediately released. |
| 1037 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1062 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1038 EXPECT_EQ(0u, resources.size()); | 1063 EXPECT_EQ(0u, resources.size()); |
| 1039 EXPECT_FALSE(TestAndResetAvailable()); | 1064 EXPECT_FALSE(TestAndResetAvailable()); |
| 1040 | 1065 |
| 1041 // The parent compositor (this one) does a commit. | 1066 // The parent compositor (this one) does a commit. |
| 1042 break; | 1067 break; |
| 1043 case 3: | 1068 case 3: |
| 1044 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1069 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1045 { | 1070 { |
| 1046 unsigned expected[] = {444, 555}; | 1071 unsigned expected[] = {444, 555}; |
| 1047 EXPECT_RESOURCES(expected, resources); | 1072 EXPECT_RESOURCES(expected, resources); |
| 1048 EXPECT_TRUE(TestAndResetAvailable()); | 1073 EXPECT_TRUE(TestAndResetAvailable()); |
| 1049 } | 1074 } |
| 1050 | 1075 |
| 1051 // The child compositor sends a frame referring to resources not in the | 1076 // The child compositor sends a frame referring to resources not in the |
| 1052 // frame. | 1077 // frame. |
| 1053 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1078 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1054 AddTextureQuad(frame.get(), 999); | 1079 AddTextureQuad(frame.get(), 999); |
| 1055 AddTextureQuad(frame.get(), 555); | 1080 AddTextureQuad(frame.get(), 555); |
| 1056 AddTextureQuad(frame.get(), 444); | 1081 AddTextureQuad(frame.get(), 444); |
| 1057 delegated_->SetFrameData(frame.Pass()); | 1082 SetFrameData(frame.Pass()); |
| 1058 break; | 1083 break; |
| 1059 } | 1084 } |
| 1060 } | 1085 } |
| 1061 | 1086 |
| 1062 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 1087 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 1063 if (host_impl->active_tree()->source_frame_number() != 3) | 1088 if (host_impl->active_tree()->source_frame_number() != 3) |
| 1064 return; | 1089 return; |
| 1065 | 1090 |
| 1066 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1091 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 1067 FakeDelegatedRendererLayerImpl* delegated_impl = | 1092 FakeDelegatedRendererLayerImpl* delegated_impl = |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1114 switch (next_source_frame_number) { | 1139 switch (next_source_frame_number) { |
| 1115 case 1: | 1140 case 1: |
| 1116 // Generate a frame with some resources in it. | 1141 // Generate a frame with some resources in it. |
| 1117 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1142 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1118 AddTextureQuad(frame.get(), 999); | 1143 AddTextureQuad(frame.get(), 999); |
| 1119 AddTransferableResource(frame.get(), 999); | 1144 AddTransferableResource(frame.get(), 999); |
| 1120 AddTextureQuad(frame.get(), 555); | 1145 AddTextureQuad(frame.get(), 555); |
| 1121 AddTransferableResource(frame.get(), 555); | 1146 AddTransferableResource(frame.get(), 555); |
| 1122 AddTextureQuad(frame.get(), 444); | 1147 AddTextureQuad(frame.get(), 444); |
| 1123 AddTransferableResource(frame.get(), 444); | 1148 AddTransferableResource(frame.get(), 444); |
| 1124 delegated_->SetFrameData(frame.Pass()); | 1149 SetFrameData(frame.Pass()); |
| 1125 break; | 1150 break; |
| 1126 case 2: | 1151 case 2: |
| 1127 // All of the resources are in use. | 1152 // All of the resources are in use. |
| 1128 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1153 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1129 EXPECT_EQ(0u, resources.size()); | 1154 EXPECT_EQ(0u, resources.size()); |
| 1130 EXPECT_FALSE(TestAndResetAvailable()); | 1155 EXPECT_FALSE(TestAndResetAvailable()); |
| 1131 | 1156 |
| 1132 // Keep using 999 but stop using 555 and 444. | 1157 // Keep using 999 but stop using 555 and 444. |
| 1133 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1158 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1134 AddTextureQuad(frame.get(), 999); | 1159 AddTextureQuad(frame.get(), 999); |
| 1135 AddTransferableResource(frame.get(), 999); | 1160 AddTransferableResource(frame.get(), 999); |
| 1136 delegated_->SetFrameData(frame.Pass()); | 1161 SetFrameData(frame.Pass()); |
| 1137 | 1162 |
| 1138 // Resource are not immediately released. | 1163 // Resource are not immediately released. |
| 1139 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1164 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1140 EXPECT_EQ(0u, resources.size()); | 1165 EXPECT_EQ(0u, resources.size()); |
| 1141 EXPECT_FALSE(TestAndResetAvailable()); | 1166 EXPECT_FALSE(TestAndResetAvailable()); |
| 1142 | 1167 |
| 1143 // The parent compositor (this one) does a commit. | 1168 // The parent compositor (this one) does a commit. |
| 1144 break; | 1169 break; |
| 1145 case 3: | 1170 case 3: |
| 1146 // The child compositor sends a frame before taking resources back | 1171 // The child compositor sends a frame before taking resources back |
| 1147 // from the previous commit. This frame makes use of the resources 555 | 1172 // from the previous commit. This frame makes use of the resources 555 |
| 1148 // and 444, which were just released during commit. | 1173 // and 444, which were just released during commit. |
| 1149 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1174 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1150 AddTextureQuad(frame.get(), 999); | 1175 AddTextureQuad(frame.get(), 999); |
| 1151 AddTransferableResource(frame.get(), 999); | 1176 AddTransferableResource(frame.get(), 999); |
| 1152 AddTextureQuad(frame.get(), 555); | 1177 AddTextureQuad(frame.get(), 555); |
| 1153 AddTransferableResource(frame.get(), 555); | 1178 AddTransferableResource(frame.get(), 555); |
| 1154 AddTextureQuad(frame.get(), 444); | 1179 AddTextureQuad(frame.get(), 444); |
| 1155 AddTransferableResource(frame.get(), 444); | 1180 AddTransferableResource(frame.get(), 444); |
| 1156 delegated_->SetFrameData(frame.Pass()); | 1181 SetFrameData(frame.Pass()); |
| 1157 | 1182 |
| 1158 // The resources are used by the new frame but are returned anyway since | 1183 // The resources are used by the new frame but are returned anyway since |
| 1159 // we passed them again. | 1184 // we passed them again. |
| 1160 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1185 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1161 { | 1186 { |
| 1162 unsigned expected[] = {444, 555}; | 1187 unsigned expected[] = {444, 555}; |
| 1163 EXPECT_RESOURCES(expected, resources); | 1188 EXPECT_RESOURCES(expected, resources); |
| 1164 EXPECT_TRUE(TestAndResetAvailable()); | 1189 EXPECT_TRUE(TestAndResetAvailable()); |
| 1165 } | 1190 } |
| 1166 break; | 1191 break; |
| 1167 case 4: | 1192 case 4: |
| 1168 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1193 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1169 EXPECT_EQ(0u, resources.size()); | 1194 EXPECT_EQ(0u, resources.size()); |
| 1170 EXPECT_FALSE(TestAndResetAvailable()); | 1195 EXPECT_FALSE(TestAndResetAvailable()); |
| 1171 EndTest(); | 1196 EndTest(); |
| 1172 break; | 1197 break; |
| 1173 } | 1198 } |
| 1174 } | 1199 } |
| 1175 | 1200 |
| 1176 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 1201 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 1177 if (host_impl->active_tree()->source_frame_number() != 3) | 1202 if (host_impl->active_tree()->source_frame_number() != 3) |
| 1178 return; | 1203 return; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1234 | 1259 |
| 1235 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1260 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1236 switch (next_source_frame_number) { | 1261 switch (next_source_frame_number) { |
| 1237 case 1: | 1262 case 1: |
| 1238 // Generate a frame with some resources in it. | 1263 // Generate a frame with some resources in it. |
| 1239 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1264 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1240 AddTextureQuad(frame.get(), 999); | 1265 AddTextureQuad(frame.get(), 999); |
| 1241 AddTransferableResource(frame.get(), 999); | 1266 AddTransferableResource(frame.get(), 999); |
| 1242 AddTextureQuad(frame.get(), 555); | 1267 AddTextureQuad(frame.get(), 555); |
| 1243 AddTransferableResource(frame.get(), 555); | 1268 AddTransferableResource(frame.get(), 555); |
| 1244 delegated_->SetFrameData(frame.Pass()); | 1269 SetFrameData(frame.Pass()); |
| 1245 break; | 1270 break; |
| 1246 case 2: | 1271 case 2: |
| 1247 // All of the resources are in use. | 1272 // All of the resources are in use. |
| 1248 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1273 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1249 EXPECT_EQ(0u, resources.size()); | 1274 EXPECT_EQ(0u, resources.size()); |
| 1250 EXPECT_FALSE(TestAndResetAvailable()); | 1275 EXPECT_FALSE(TestAndResetAvailable()); |
| 1251 | 1276 |
| 1252 // Generate a bad frame with a resource the layer doesn't have. The | 1277 // Generate a bad frame with a resource the layer doesn't have. The |
| 1253 // 885 and 775 resources are unknown, while ownership of the legit 444 | 1278 // 885 and 775 resources are unknown, while ownership of the legit 444 |
| 1254 // resource is passed in here. The bad frame does not use any of the | 1279 // resource is passed in here. The bad frame does not use any of the |
| 1255 // previous resources, 999 or 555. | 1280 // previous resources, 999 or 555. |
| 1256 // A bad quad is present both before and after the good quad. | 1281 // A bad quad is present both before and after the good quad. |
| 1257 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1282 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1258 AddTextureQuad(frame.get(), 885); | 1283 AddTextureQuad(frame.get(), 885); |
| 1259 AddTextureQuad(frame.get(), 444); | 1284 AddTextureQuad(frame.get(), 444); |
| 1260 AddTransferableResource(frame.get(), 444); | 1285 AddTransferableResource(frame.get(), 444); |
| 1261 AddTextureQuad(frame.get(), 775); | 1286 AddTextureQuad(frame.get(), 775); |
| 1262 delegated_->SetFrameData(frame.Pass()); | 1287 SetFrameData(frame.Pass()); |
| 1263 | 1288 |
| 1264 // The parent compositor (this one) does a commit. | 1289 // The parent compositor (this one) does a commit. |
| 1265 break; | 1290 break; |
| 1266 case 3: | 1291 case 3: |
| 1267 // The bad frame's resource is given back to the child compositor. | 1292 // The bad frame's resource is given back to the child compositor. |
| 1268 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1293 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1269 { | 1294 { |
| 1270 unsigned expected[] = {444}; | 1295 unsigned expected[] = {444}; |
| 1271 EXPECT_RESOURCES(expected, resources); | 1296 EXPECT_RESOURCES(expected, resources); |
| 1272 EXPECT_TRUE(TestAndResetAvailable()); | 1297 EXPECT_TRUE(TestAndResetAvailable()); |
| 1273 } | 1298 } |
| 1274 | 1299 |
| 1275 // Now send a good frame with 999 again. | 1300 // Now send a good frame with 999 again. |
| 1276 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1301 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1277 AddTextureQuad(frame.get(), 999); | 1302 AddTextureQuad(frame.get(), 999); |
| 1278 delegated_->SetFrameData(frame.Pass()); | 1303 SetFrameData(frame.Pass()); |
| 1279 break; | 1304 break; |
| 1280 case 4: | 1305 case 4: |
| 1281 // The unused 555 from the last good frame is now released. | 1306 // The unused 555 from the last good frame is now released. |
| 1282 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1307 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1283 { | 1308 { |
| 1284 unsigned expected[] = {555}; | 1309 unsigned expected[] = {555}; |
| 1285 EXPECT_RESOURCES(expected, resources); | 1310 EXPECT_RESOURCES(expected, resources); |
| 1286 EXPECT_TRUE(TestAndResetAvailable()); | 1311 EXPECT_TRUE(TestAndResetAvailable()); |
| 1287 } | 1312 } |
| 1288 | 1313 |
| 1289 EndTest(); | 1314 EndTest(); |
| 1290 break; | 1315 break; |
| 1291 } | 1316 } |
| 1292 } | 1317 } |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1385 ReturnedResourceArray resources; | 1410 ReturnedResourceArray resources; |
| 1386 | 1411 |
| 1387 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1412 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1388 switch (next_source_frame_number) { | 1413 switch (next_source_frame_number) { |
| 1389 case 1: | 1414 case 1: |
| 1390 // This frame includes two resources in it, but only uses one. | 1415 // This frame includes two resources in it, but only uses one. |
| 1391 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1416 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1392 AddTransferableResource(frame.get(), 999); | 1417 AddTransferableResource(frame.get(), 999); |
| 1393 AddTextureQuad(frame.get(), 555); | 1418 AddTextureQuad(frame.get(), 555); |
| 1394 AddTransferableResource(frame.get(), 555); | 1419 AddTransferableResource(frame.get(), 555); |
| 1395 delegated_->SetFrameData(frame.Pass()); | 1420 SetFrameData(frame.Pass()); |
| 1396 break; | 1421 break; |
| 1397 case 2: | 1422 case 2: |
| 1398 // The unused resource should be returned. | 1423 // The unused resource should be returned. |
| 1399 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1424 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1400 { | 1425 { |
| 1401 unsigned expected[] = {999}; | 1426 unsigned expected[] = {999}; |
| 1402 EXPECT_RESOURCES(expected, resources); | 1427 EXPECT_RESOURCES(expected, resources); |
| 1403 EXPECT_TRUE(TestAndResetAvailable()); | 1428 EXPECT_TRUE(TestAndResetAvailable()); |
| 1404 } | 1429 } |
| 1405 | 1430 |
| 1406 EndTest(); | 1431 EndTest(); |
| 1407 break; | 1432 break; |
| 1408 } | 1433 } |
| 1409 } | 1434 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1446 | 1471 |
| 1447 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1472 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1448 switch (next_source_frame_number) { | 1473 switch (next_source_frame_number) { |
| 1449 case 1: | 1474 case 1: |
| 1450 // This frame includes two resources in it. | 1475 // This frame includes two resources in it. |
| 1451 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1476 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1452 AddTextureQuad(frame.get(), 999); | 1477 AddTextureQuad(frame.get(), 999); |
| 1453 AddTransferableResource(frame.get(), 999); | 1478 AddTransferableResource(frame.get(), 999); |
| 1454 AddTextureQuad(frame.get(), 555); | 1479 AddTextureQuad(frame.get(), 555); |
| 1455 AddTransferableResource(frame.get(), 555); | 1480 AddTransferableResource(frame.get(), 555); |
| 1456 delegated_->SetFrameData(frame.Pass()); | 1481 SetFrameData(frame.Pass()); |
| 1457 | 1482 |
| 1458 // But then we immediately stop using 999. | 1483 // But then we immediately stop using 999. |
| 1459 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1484 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1460 AddTextureQuad(frame.get(), 555); | 1485 AddTextureQuad(frame.get(), 555); |
| 1461 AddTransferableResource(frame.get(), 555); | 1486 AddTransferableResource(frame.get(), 555); |
| 1462 delegated_->SetFrameData(frame.Pass()); | 1487 SetFrameData(frame.Pass()); |
| 1463 break; | 1488 break; |
| 1464 case 2: | 1489 case 2: |
| 1465 // The unused resources should be returned. 555 is still used, but it's | 1490 // The unused resources should be returned. 555 is still used, but it's |
| 1466 // returned once to account for the first frame. | 1491 // returned once to account for the first frame. |
| 1467 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1492 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1468 { | 1493 { |
| 1469 unsigned expected[] = {555, 999}; | 1494 unsigned expected[] = {555, 999}; |
| 1470 EXPECT_RESOURCES(expected, resources); | 1495 EXPECT_RESOURCES(expected, resources); |
| 1471 EXPECT_TRUE(TestAndResetAvailable()); | 1496 EXPECT_TRUE(TestAndResetAvailable()); |
| 1472 } | 1497 } |
| 1473 // Send a frame with no resources in it. | 1498 // Send a frame with no resources in it. |
| 1474 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1499 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1475 delegated_->SetFrameData(frame.Pass()); | 1500 SetFrameData(frame.Pass()); |
| 1476 break; | 1501 break; |
| 1477 case 3: | 1502 case 3: |
| 1478 // The now unused resource 555 should be returned. | 1503 // The now unused resource 555 should be returned. |
| 1479 resources.clear(); | 1504 resources.clear(); |
| 1480 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1505 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1481 { | 1506 { |
| 1482 unsigned expected[] = {555}; | 1507 unsigned expected[] = {555}; |
| 1483 EXPECT_RESOURCES(expected, resources); | 1508 EXPECT_RESOURCES(expected, resources); |
| 1484 EXPECT_TRUE(TestAndResetAvailable()); | 1509 EXPECT_TRUE(TestAndResetAvailable()); |
| 1485 } | 1510 } |
| 1486 EndTest(); | 1511 EndTest(); |
| 1487 break; | 1512 break; |
| 1488 } | 1513 } |
| 1489 } | 1514 } |
| 1490 | 1515 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1527 | 1552 |
| 1528 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1553 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1529 switch (next_source_frame_number) { | 1554 switch (next_source_frame_number) { |
| 1530 case 1: | 1555 case 1: |
| 1531 // This frame includes two resources in it. | 1556 // This frame includes two resources in it. |
| 1532 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1557 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1533 AddTextureQuad(frame.get(), 999); | 1558 AddTextureQuad(frame.get(), 999); |
| 1534 AddTransferableResource(frame.get(), 999); | 1559 AddTransferableResource(frame.get(), 999); |
| 1535 AddTextureQuad(frame.get(), 555); | 1560 AddTextureQuad(frame.get(), 555); |
| 1536 AddTransferableResource(frame.get(), 555); | 1561 AddTransferableResource(frame.get(), 555); |
| 1537 delegated_->SetFrameData(frame.Pass()); | 1562 SetFrameData(frame.Pass()); |
| 1538 break; | 1563 break; |
| 1539 case 2: | 1564 case 2: |
| 1540 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1565 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1541 EXPECT_EQ(0u, resources.size()); | 1566 EXPECT_EQ(0u, resources.size()); |
| 1542 EXPECT_FALSE(TestAndResetAvailable()); | 1567 EXPECT_FALSE(TestAndResetAvailable()); |
| 1543 | 1568 |
| 1544 // 999 is in use in the grandparent compositor, generate a frame without | 1569 // 999 is in use in the grandparent compositor, generate a frame without |
| 1545 // it present. | 1570 // it present. |
| 1546 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1571 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1547 AddTextureQuad(frame.get(), 555); | 1572 AddTextureQuad(frame.get(), 555); |
| 1548 AddTransferableResource(frame.get(), 555); | 1573 AddTransferableResource(frame.get(), 555); |
| 1549 delegated_->SetFrameData(frame.Pass()); | 1574 SetFrameData(frame.Pass()); |
| 1550 break; | 1575 break; |
| 1551 case 3: | 1576 case 3: |
| 1552 // Since 999 is in the grandparent it is not returned. | 1577 // Since 999 is in the grandparent it is not returned. |
| 1553 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1578 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1554 EXPECT_EQ(0u, resources.size()); | 1579 EXPECT_EQ(0u, resources.size()); |
| 1555 EXPECT_FALSE(TestAndResetAvailable()); | 1580 EXPECT_FALSE(TestAndResetAvailable()); |
| 1556 | 1581 |
| 1557 // The impl side will get back the resource at some point. | 1582 // The impl side will get back the resource at some point. |
| 1558 ImplThreadTaskRunner()->PostTask(FROM_HERE, | 1583 ImplThreadTaskRunner()->PostTask(FROM_HERE, |
| 1559 receive_resource_on_thread_); | 1584 receive_resource_on_thread_); |
| 1560 break; | 1585 break; |
| 1561 } | 1586 } |
| 1562 } | 1587 } |
| 1563 | 1588 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1576 host_impl->ReclaimResources(&ack); | 1601 host_impl->ReclaimResources(&ack); |
| 1577 host_impl->OnSwapBuffersComplete(); | 1602 host_impl->OnSwapBuffersComplete(); |
| 1578 } | 1603 } |
| 1579 | 1604 |
| 1580 virtual void UnusedResourcesAreAvailable() OVERRIDE { | 1605 virtual void UnusedResourcesAreAvailable() OVERRIDE { |
| 1581 EXPECT_EQ(3, layer_tree_host()->source_frame_number()); | 1606 EXPECT_EQ(3, layer_tree_host()->source_frame_number()); |
| 1582 | 1607 |
| 1583 ReturnedResourceArray resources; | 1608 ReturnedResourceArray resources; |
| 1584 | 1609 |
| 1585 // 999 was returned from the grandparent and could be released. | 1610 // 999 was returned from the grandparent and could be released. |
| 1586 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1611 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1587 { | 1612 { |
| 1588 unsigned expected[] = {999}; | 1613 unsigned expected[] = {999}; |
| 1589 EXPECT_RESOURCES(expected, resources); | 1614 EXPECT_RESOURCES(expected, resources); |
| 1590 } | 1615 } |
| 1591 | 1616 |
| 1592 EndTest(); | 1617 EndTest(); |
| 1593 } | 1618 } |
| 1594 | 1619 |
| 1595 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 1620 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 1596 if (host_impl->active_tree()->source_frame_number() < 1) | 1621 if (host_impl->active_tree()->source_frame_number() < 1) |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1668 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1693 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1669 switch (next_source_frame_number) { | 1694 switch (next_source_frame_number) { |
| 1670 case 1: | 1695 case 1: |
| 1671 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1696 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1672 AddTextureQuad(frame.get(), 999); | 1697 AddTextureQuad(frame.get(), 999); |
| 1673 AddTransferableResource(frame.get(), 999); | 1698 AddTransferableResource(frame.get(), 999); |
| 1674 AddTextureQuad(frame.get(), 555); | 1699 AddTextureQuad(frame.get(), 555); |
| 1675 AddTransferableResource(frame.get(), 555); | 1700 AddTransferableResource(frame.get(), 555); |
| 1676 AddTextureQuad(frame.get(), 444); | 1701 AddTextureQuad(frame.get(), 444); |
| 1677 AddTransferableResource(frame.get(), 444); | 1702 AddTransferableResource(frame.get(), 444); |
| 1678 delegated_->SetFrameData(frame.Pass()); | 1703 SetFrameData(frame.Pass()); |
| 1679 break; | 1704 break; |
| 1680 case 2: | 1705 case 2: |
| 1681 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1706 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1682 EXPECT_EQ(0u, resources.size()); | 1707 EXPECT_EQ(0u, resources.size()); |
| 1683 EXPECT_FALSE(TestAndResetAvailable()); | 1708 EXPECT_FALSE(TestAndResetAvailable()); |
| 1684 | 1709 |
| 1685 // Stop using 999 and 444 in this frame and commit. | 1710 // Stop using 999 and 444 in this frame and commit. |
| 1686 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1711 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1687 AddTextureQuad(frame.get(), 555); | 1712 AddTextureQuad(frame.get(), 555); |
| 1688 AddTransferableResource(frame.get(), 555); | 1713 AddTransferableResource(frame.get(), 555); |
| 1689 delegated_->SetFrameData(frame.Pass()); | 1714 SetFrameData(frame.Pass()); |
| 1690 // 999 and 444 will be returned for frame 1, but not 555 since it's in | 1715 // 999 and 444 will be returned for frame 1, but not 555 since it's in |
| 1691 // the current frame. | 1716 // the current frame. |
| 1692 break; | 1717 break; |
| 1693 case 3: | 1718 case 3: |
| 1694 // Don't take resources here, but set a new frame that uses 999 again. | 1719 // Don't take resources here, but set a new frame that uses 999 again. |
| 1695 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1720 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1696 AddTextureQuad(frame.get(), 999); | 1721 AddTextureQuad(frame.get(), 999); |
| 1697 AddTransferableResource(frame.get(), 999); | 1722 AddTransferableResource(frame.get(), 999); |
| 1698 AddTextureQuad(frame.get(), 555); | 1723 AddTextureQuad(frame.get(), 555); |
| 1699 AddTransferableResource(frame.get(), 555); | 1724 AddTransferableResource(frame.get(), 555); |
| 1700 delegated_->SetFrameData(frame.Pass()); | 1725 SetFrameData(frame.Pass()); |
| 1701 break; | 1726 break; |
| 1702 case 4: | 1727 case 4: |
| 1703 // 555 from frame 1 and 2 isn't returned since it's still in use. 999 | 1728 // 555 from frame 1 and 2 isn't returned since it's still in use. 999 |
| 1704 // from frame 1 is returned though. | 1729 // from frame 1 is returned though. |
| 1705 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1730 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1706 { | 1731 { |
| 1707 unsigned expected[] = {444, 999}; | 1732 unsigned expected[] = {444, 999}; |
| 1708 EXPECT_RESOURCES(expected, resources); | 1733 EXPECT_RESOURCES(expected, resources); |
| 1709 EXPECT_TRUE(TestAndResetAvailable()); | 1734 EXPECT_TRUE(TestAndResetAvailable()); |
| 1710 } | 1735 } |
| 1711 | 1736 |
| 1712 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1737 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1713 delegated_->SetFrameData(frame.Pass()); | 1738 SetFrameData(frame.Pass()); |
| 1714 // 555 will be returned 3 times for frames 1 2 and 3, and 999 will be | 1739 // 555 will be returned 3 times for frames 1 2 and 3, and 999 will be |
| 1715 // returned once for frame 3. | 1740 // returned once for frame 3. |
| 1716 break; | 1741 break; |
| 1717 case 5: | 1742 case 5: |
| 1718 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1743 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1719 { | 1744 { |
| 1720 unsigned expected[] = {555, 555, 555, 999}; | 1745 unsigned expected[] = {555, 555, 555, 999}; |
| 1721 EXPECT_RESOURCES(expected, resources); | 1746 EXPECT_RESOURCES(expected, resources); |
| 1722 EXPECT_TRUE(TestAndResetAvailable()); | 1747 EXPECT_TRUE(TestAndResetAvailable()); |
| 1723 } | 1748 } |
| 1724 | 1749 |
| 1725 EndTest(); | 1750 EndTest(); |
| 1726 break; | 1751 break; |
| 1727 } | 1752 } |
| 1728 } | 1753 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1783 wait_thread_.Start(); | 1808 wait_thread_.Start(); |
| 1784 } | 1809 } |
| 1785 | 1810 |
| 1786 virtual void BeginTest() OVERRIDE { | 1811 virtual void BeginTest() OVERRIDE { |
| 1787 activate_count_ = 0; | 1812 activate_count_ = 0; |
| 1788 | 1813 |
| 1789 scoped_ptr<DelegatedFrameData> frame = | 1814 scoped_ptr<DelegatedFrameData> frame = |
| 1790 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1815 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1791 AddTextureQuad(frame.get(), 999); | 1816 AddTextureQuad(frame.get(), 999); |
| 1792 AddTransferableResource(frame.get(), 999); | 1817 AddTransferableResource(frame.get(), 999); |
| 1793 delegated_->SetFrameData(frame.Pass()); | 1818 SetFrameData(frame.Pass()); |
| 1794 | 1819 |
| 1795 PostSetNeedsCommitToMainThread(); | 1820 PostSetNeedsCommitToMainThread(); |
| 1796 } | 1821 } |
| 1797 | 1822 |
| 1798 virtual void WillActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1823 virtual void WillActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1799 // Slow down activation so the main thread DidCommit() will run if | 1824 // Slow down activation so the main thread DidCommit() will run if |
| 1800 // not blocked. | 1825 // not blocked. |
| 1801 wait_thread_.message_loop()->PostDelayedTask( | 1826 wait_thread_.message_loop()->PostDelayedTask( |
| 1802 FROM_HERE, | 1827 FROM_HERE, |
| 1803 base::Bind(&base::WaitableEvent::Signal, | 1828 base::Bind(&base::WaitableEvent::Signal, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1821 void DidActivate() { | 1846 void DidActivate() { |
| 1822 base::AutoLock lock(activate_lock_); | 1847 base::AutoLock lock(activate_lock_); |
| 1823 switch (activate_count_) { | 1848 switch (activate_count_) { |
| 1824 case 1: { | 1849 case 1: { |
| 1825 // The first frame has been activated. Set a new frame, and | 1850 // The first frame has been activated. Set a new frame, and |
| 1826 // expect the next commit to finish *after* it is activated. | 1851 // expect the next commit to finish *after* it is activated. |
| 1827 scoped_ptr<DelegatedFrameData> frame = | 1852 scoped_ptr<DelegatedFrameData> frame = |
| 1828 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1853 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1829 AddTextureQuad(frame.get(), 555); | 1854 AddTextureQuad(frame.get(), 555); |
| 1830 AddTransferableResource(frame.get(), 555); | 1855 AddTransferableResource(frame.get(), 555); |
| 1831 delegated_->SetFrameData(frame.Pass()); | 1856 SetFrameData(frame.Pass()); |
| 1832 // So this commit number should complete after the second activate. | 1857 // So this commit number should complete after the second activate. |
| 1833 EXPECT_EQ(1, layer_tree_host()->source_frame_number()); | 1858 EXPECT_EQ(1, layer_tree_host()->source_frame_number()); |
| 1834 break; | 1859 break; |
| 1835 } | 1860 } |
| 1836 case 2: | 1861 case 2: |
| 1837 // The second frame has been activated. Remove the layer from | 1862 // The second frame has been activated. Remove the layer from |
| 1838 // the tree to cause another commit/activation. The commit should | 1863 // the tree to cause another commit/activation. The commit should |
| 1839 // finish *after* the layer is removed from the active tree. | 1864 // finish *after* the layer is removed from the active tree. |
| 1840 delegated_->RemoveFromParent(); | 1865 delegated_->RemoveFromParent(); |
| 1841 // So this commit number should complete after the third activate. | 1866 // So this commit number should complete after the third activate. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1852 case 2: { | 1877 case 2: { |
| 1853 // The activate for the 2nd frame should have happened before now. | 1878 // The activate for the 2nd frame should have happened before now. |
| 1854 base::AutoLock lock(activate_lock_); | 1879 base::AutoLock lock(activate_lock_); |
| 1855 EXPECT_EQ(2, activate_count_); | 1880 EXPECT_EQ(2, activate_count_); |
| 1856 break; | 1881 break; |
| 1857 } | 1882 } |
| 1858 case 3: { | 1883 case 3: { |
| 1859 // The activate to remove the layer should have happened before now. | 1884 // The activate to remove the layer should have happened before now. |
| 1860 base::AutoLock lock(activate_lock_); | 1885 base::AutoLock lock(activate_lock_); |
| 1861 EXPECT_EQ(3, activate_count_); | 1886 EXPECT_EQ(3, activate_count_); |
| 1887 |
| 1888 ReturnedResourceArray resources; |
| 1889 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1890 { |
| 1891 unsigned expected[] = {999, 555}; |
| 1892 EXPECT_RESOURCES(expected, resources); |
| 1893 EXPECT_TRUE(TestAndResetAvailable()); |
| 1894 } |
| 1862 break; | 1895 break; |
| 1863 } | 1896 } |
| 1864 } | 1897 } |
| 1865 } | 1898 } |
| 1866 | 1899 |
| 1867 | 1900 |
| 1868 virtual void AfterTest() OVERRIDE {} | 1901 virtual void AfterTest() OVERRIDE {} |
| 1869 | 1902 |
| 1870 base::Thread wait_thread_; | 1903 base::Thread wait_thread_; |
| 1871 base::WaitableEvent wait_event_; | 1904 base::WaitableEvent wait_event_; |
| 1872 base::Lock activate_lock_; | 1905 base::Lock activate_lock_; |
| 1873 int activate_count_; | 1906 int activate_count_; |
| 1874 }; | 1907 }; |
| 1875 | 1908 |
| 1876 SINGLE_AND_MULTI_THREAD_TEST_F( | 1909 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 1877 DelegatedFrameIsActivatedDuringCommit); | 1910 DelegatedFrameIsActivatedDuringCommit); |
| 1878 | 1911 |
| 1912 class LayerTreeHostDelegatedTestTwoImplLayers |
| 1913 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1914 public: |
| 1915 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 1916 |
| 1917 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 1918 scoped_ptr<DelegatedFrameData> frame; |
| 1919 ReturnedResourceArray resources; |
| 1920 |
| 1921 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1922 switch (next_source_frame_number) { |
| 1923 case 1: |
| 1924 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1925 AddTextureQuad(frame.get(), 999); |
| 1926 AddTransferableResource(frame.get(), 999); |
| 1927 AddTextureQuad(frame.get(), 555); |
| 1928 AddTransferableResource(frame.get(), 555); |
| 1929 SetFrameData(frame.Pass()); |
| 1930 break; |
| 1931 case 2: |
| 1932 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1933 EXPECT_EQ(0u, resources.size()); |
| 1934 EXPECT_FALSE(TestAndResetAvailable()); |
| 1935 |
| 1936 // Remove the delegated layer and replace it with a new one. Use the |
| 1937 // same frame and resources for it. |
| 1938 delegated_->RemoveFromParent(); |
| 1939 delegated_ = CreateDelegatedLayer(frame_provider_.get()); |
| 1940 break; |
| 1941 case 3: |
| 1942 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1943 EXPECT_EQ(0u, resources.size()); |
| 1944 EXPECT_FALSE(TestAndResetAvailable()); |
| 1945 |
| 1946 // Use a frame with no resources in it. |
| 1947 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1948 SetFrameData(frame.Pass()); |
| 1949 break; |
| 1950 case 4: |
| 1951 // We gave one frame to the frame provider, so we should get one |
| 1952 // ref back for each resource. |
| 1953 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1954 { |
| 1955 unsigned expected[] = {555, 999}; |
| 1956 EXPECT_RESOURCES(expected, resources); |
| 1957 EXPECT_TRUE(TestAndResetAvailable()); |
| 1958 } |
| 1959 EndTest(); |
| 1960 break; |
| 1961 } |
| 1962 } |
| 1963 |
| 1964 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, |
| 1965 bool result) OVERRIDE { |
| 1966 ReturnUnusedResourcesFromParent(host_impl); |
| 1967 } |
| 1968 |
| 1969 virtual void AfterTest() OVERRIDE {} |
| 1970 }; |
| 1971 |
| 1972 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoImplLayers); |
| 1973 |
| 1974 class LayerTreeHostDelegatedTestTwoImplLayersTwoFrames |
| 1975 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1976 public: |
| 1977 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 1978 |
| 1979 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 1980 scoped_ptr<DelegatedFrameData> frame; |
| 1981 ReturnedResourceArray resources; |
| 1982 |
| 1983 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1984 switch (next_source_frame_number) { |
| 1985 case 1: |
| 1986 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1987 AddTextureQuad(frame.get(), 999); |
| 1988 AddTransferableResource(frame.get(), 999); |
| 1989 AddTextureQuad(frame.get(), 555); |
| 1990 AddTransferableResource(frame.get(), 555); |
| 1991 SetFrameData(frame.Pass()); |
| 1992 break; |
| 1993 case 2: |
| 1994 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1995 EXPECT_EQ(0u, resources.size()); |
| 1996 EXPECT_FALSE(TestAndResetAvailable()); |
| 1997 |
| 1998 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1999 AddTextureQuad(frame.get(), 999); |
| 2000 AddTransferableResource(frame.get(), 999); |
| 2001 AddTextureQuad(frame.get(), 555); |
| 2002 AddTransferableResource(frame.get(), 555); |
| 2003 |
| 2004 // Remove the delegated layer and replace it with a new one. Make a new |
| 2005 // frame but with the same resources for it. |
| 2006 delegated_->RemoveFromParent(); |
| 2007 delegated_ = NULL; |
| 2008 |
| 2009 frame_provider_->SetFrameData(frame.Pass()); |
| 2010 delegated_ = CreateDelegatedLayer(frame_provider_.get()); |
| 2011 break; |
| 2012 case 3: |
| 2013 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 2014 EXPECT_EQ(0u, resources.size()); |
| 2015 EXPECT_FALSE(TestAndResetAvailable()); |
| 2016 |
| 2017 // Use a frame with no resources in it. |
| 2018 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 2019 SetFrameData(frame.Pass()); |
| 2020 break; |
| 2021 case 4: |
| 2022 // We gave two frames to the frame provider, so we should get two |
| 2023 // refs back for each resource. |
| 2024 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 2025 { |
| 2026 unsigned expected[] = {555, 555, 999, 999}; |
| 2027 EXPECT_RESOURCES(expected, resources); |
| 2028 EXPECT_TRUE(TestAndResetAvailable()); |
| 2029 } |
| 2030 EndTest(); |
| 2031 break; |
| 2032 } |
| 2033 } |
| 2034 |
| 2035 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, |
| 2036 bool result) OVERRIDE { |
| 2037 ReturnUnusedResourcesFromParent(host_impl); |
| 2038 } |
| 2039 |
| 2040 virtual void AfterTest() OVERRIDE {} |
| 2041 }; |
| 2042 |
| 2043 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 2044 LayerTreeHostDelegatedTestTwoImplLayersTwoFrames); |
| 2045 |
| 2046 class LayerTreeHostDelegatedTestTwoLayers |
| 2047 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 2048 public: |
| 2049 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 2050 |
| 2051 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 2052 scoped_ptr<DelegatedFrameData> frame; |
| 2053 ReturnedResourceArray resources; |
| 2054 |
| 2055 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 2056 switch (next_source_frame_number) { |
| 2057 case 1: |
| 2058 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 2059 AddTextureQuad(frame.get(), 999); |
| 2060 AddTransferableResource(frame.get(), 999); |
| 2061 AddTextureQuad(frame.get(), 555); |
| 2062 AddTransferableResource(frame.get(), 555); |
| 2063 |
| 2064 // Create a DelegatedRendererLayer using the frame. |
| 2065 SetFrameData(frame.Pass()); |
| 2066 |
| 2067 // Create a second DelegatedRendererLayer using the same frame provider. |
| 2068 delegated_thief_ = CreateDelegatedLayer(frame_provider_.get()); |
| 2069 break; |
| 2070 case 2: |
| 2071 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 2072 EXPECT_EQ(0u, resources.size()); |
| 2073 EXPECT_FALSE(TestAndResetAvailable()); |
| 2074 |
| 2075 // Remove one delegated layer from the tree. No resources should be |
| 2076 // returned yet. |
| 2077 delegated_->RemoveFromParent(); |
| 2078 break; |
| 2079 case 3: |
| 2080 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 2081 EXPECT_EQ(0u, resources.size()); |
| 2082 EXPECT_FALSE(TestAndResetAvailable()); |
| 2083 |
| 2084 // Put the first layer back, and remove the other layer. No resources |
| 2085 // should be returned yet. |
| 2086 root_->AddChild(delegated_); |
| 2087 delegated_thief_->RemoveFromParent(); |
| 2088 break; |
| 2089 case 4: |
| 2090 // Removing both layers from the tree should cause resources to be |
| 2091 // returned. |
| 2092 delegated_->RemoveFromParent(); |
| 2093 break; |
| 2094 case 5: |
| 2095 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 2096 { |
| 2097 unsigned expected[] = {555, 999}; |
| 2098 EXPECT_RESOURCES(expected, resources); |
| 2099 EXPECT_TRUE(TestAndResetAvailable()); |
| 2100 } |
| 2101 EndTest(); |
| 2102 break; |
| 2103 } |
| 2104 } |
| 2105 |
| 2106 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, |
| 2107 bool result) OVERRIDE { |
| 2108 ReturnUnusedResourcesFromParent(host_impl); |
| 2109 } |
| 2110 |
| 2111 virtual void AfterTest() OVERRIDE {} |
| 2112 |
| 2113 scoped_refptr<DelegatedRendererLayer> delegated_thief_; |
| 2114 }; |
| 2115 |
| 2116 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoLayers); |
| 2117 |
| 2118 class LayerTreeHostDelegatedTestTwoLayersAfterCommit |
| 2119 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 2120 public: |
| 2121 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 2122 |
| 2123 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 2124 scoped_ptr<DelegatedFrameData> frame; |
| 2125 ReturnedResourceArray resources; |
| 2126 |
| 2127 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 2128 switch (next_source_frame_number) { |
| 2129 case 1: |
| 2130 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 2131 AddTextureQuad(frame.get(), 999); |
| 2132 AddTransferableResource(frame.get(), 999); |
| 2133 AddTextureQuad(frame.get(), 555); |
| 2134 AddTransferableResource(frame.get(), 555); |
| 2135 |
| 2136 // Create a DelegatedRendererLayer using the frame. |
| 2137 SetFrameData(frame.Pass()); |
| 2138 break; |
| 2139 case 2: |
| 2140 // Once the first layer is happily using the frame provider, make |
| 2141 // another layer steal it. |
| 2142 delegated_thief_ = CreateDelegatedLayer(frame_provider_.get()); |
| 2143 break; |
| 2144 case 3: |
| 2145 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 2146 EXPECT_EQ(0u, resources.size()); |
| 2147 EXPECT_FALSE(TestAndResetAvailable()); |
| 2148 |
| 2149 // Remove one delegated layer from the tree. No resources should be |
| 2150 // returned yet. |
| 2151 delegated_->RemoveFromParent(); |
| 2152 break; |
| 2153 case 4: |
| 2154 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 2155 EXPECT_EQ(0u, resources.size()); |
| 2156 EXPECT_FALSE(TestAndResetAvailable()); |
| 2157 |
| 2158 // Put the first layer back, and remove the other layer. No resources |
| 2159 // should be returned yet. |
| 2160 root_->AddChild(delegated_); |
| 2161 delegated_thief_->RemoveFromParent(); |
| 2162 break; |
| 2163 case 5: |
| 2164 // Removing both layers from the tree should cause resources to be |
| 2165 // returned. |
| 2166 delegated_->RemoveFromParent(); |
| 2167 break; |
| 2168 case 6: |
| 2169 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 2170 { |
| 2171 unsigned expected[] = {555, 999}; |
| 2172 EXPECT_RESOURCES(expected, resources); |
| 2173 EXPECT_TRUE(TestAndResetAvailable()); |
| 2174 } |
| 2175 EndTest(); |
| 2176 break; |
| 2177 } |
| 2178 } |
| 2179 |
| 2180 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, |
| 2181 bool result) OVERRIDE { |
| 2182 ReturnUnusedResourcesFromParent(host_impl); |
| 2183 } |
| 2184 |
| 2185 virtual void AfterTest() OVERRIDE {} |
| 2186 |
| 2187 scoped_refptr<DelegatedRendererLayer> delegated_thief_; |
| 2188 }; |
| 2189 |
| 2190 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoLayersAfterCommit); |
| 2191 |
| 1879 } // namespace | 2192 } // namespace |
| 1880 } // namespace cc | 2193 } // namespace cc |
| OLD | NEW |