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 "cc/layers/delegated_renderer_layer.h" | 7 #include "cc/layers/delegated_renderer_layer.h" |
8 #include "cc/layers/delegated_renderer_layer_impl.h" | 8 #include "cc/layers/delegated_renderer_layer_impl.h" |
9 #include "cc/output/delegated_frame_data.h" | 9 #include "cc/output/delegated_frame_data.h" |
10 #include "cc/quads/shared_quad_state.h" | 10 #include "cc/quads/shared_quad_state.h" |
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 const ResourceProvider::ResourceIdMap& map = | 403 const ResourceProvider::ResourceIdMap& map = |
404 host_impl->resource_provider()->GetChildToParentMap( | 404 host_impl->resource_provider()->GetChildToParentMap( |
405 delegated_impl->ChildId()); | 405 delegated_impl->ChildId()); |
406 | 406 |
407 // The frame's resource should be in the parent's resource provider. | 407 // The frame's resource should be in the parent's resource provider. |
408 EXPECT_EQ(2u, map.size()); | 408 EXPECT_EQ(2u, map.size()); |
409 EXPECT_EQ(1u, map.count(999)); | 409 EXPECT_EQ(1u, map.count(999)); |
410 EXPECT_EQ(1u, map.count(555)); | 410 EXPECT_EQ(1u, map.count(555)); |
411 | 411 |
412 ResourceProvider::ResourceId parent_resource_id1 = map.find(999)->second; | 412 ResourceProvider::ResourceId parent_resource_id1 = map.find(999)->second; |
413 EXPECT_NE(parent_resource_id1, 999u); | 413 EXPECT_NE(parent_resource_id1, 999); |
414 ResourceProvider::ResourceId parent_resource_id2 = map.find(555)->second; | 414 ResourceProvider::ResourceId parent_resource_id2 = map.find(555)->second; |
415 EXPECT_NE(parent_resource_id2, 555u); | 415 EXPECT_NE(parent_resource_id2, 555); |
416 | 416 |
417 // The resources in the quads should be remapped to the parent's namespace. | 417 // The resources in the quads should be remapped to the parent's namespace. |
418 const TextureDrawQuad* quad1 = TextureDrawQuad::MaterialCast( | 418 const TextureDrawQuad* quad1 = TextureDrawQuad::MaterialCast( |
419 delegated_impl->RenderPassesInDrawOrder()[0]->quad_list[0]); | 419 delegated_impl->RenderPassesInDrawOrder()[0]->quad_list[0]); |
420 EXPECT_EQ(parent_resource_id1, quad1->resource_id); | 420 EXPECT_EQ(parent_resource_id1, quad1->resource_id); |
421 const TextureDrawQuad* quad2 = TextureDrawQuad::MaterialCast( | 421 const TextureDrawQuad* quad2 = TextureDrawQuad::MaterialCast( |
422 delegated_impl->RenderPassesInDrawOrder()[0]->quad_list[1]); | 422 delegated_impl->RenderPassesInDrawOrder()[0]->quad_list[1]); |
423 EXPECT_EQ(parent_resource_id2, quad2->resource_id); | 423 EXPECT_EQ(parent_resource_id2, quad2->resource_id); |
424 | 424 |
425 EndTest(); | 425 EndTest(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 461 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
462 AddTextureQuad(frame.get(), 999); | 462 AddTextureQuad(frame.get(), 999); |
463 AddTextureQuad(frame.get(), 444); | 463 AddTextureQuad(frame.get(), 444); |
464 AddTransferableResource(frame.get(), 444); | 464 AddTransferableResource(frame.get(), 444); |
465 delegated_->SetFrameData(frame.Pass()); | 465 delegated_->SetFrameData(frame.Pass()); |
466 break; | 466 break; |
467 case 3: | 467 case 3: |
468 // 555 is no longer in use. | 468 // 555 is no longer in use. |
469 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 469 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
470 EXPECT_EQ(1u, resources.size()); | 470 EXPECT_EQ(1u, resources.size()); |
471 EXPECT_EQ(555u, resources[0].id); | 471 EXPECT_EQ(555, resources[0].id); |
472 | 472 |
473 // Stop using any resources. | 473 // Stop using any resources. |
474 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 474 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
475 delegated_->SetFrameData(frame.Pass()); | 475 delegated_->SetFrameData(frame.Pass()); |
476 break; | 476 break; |
477 case 4: | 477 case 4: |
478 // 444 and 999 are no longer in use. | 478 // 444 and 999 are no longer in use. |
479 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 479 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
480 EXPECT_EQ(2u, resources.size()); | 480 EXPECT_EQ(2u, resources.size()); |
481 if (resources[0].id == 999) { | 481 if (resources[0].id == 999) { |
482 EXPECT_EQ(999u, resources[0].id); | 482 EXPECT_EQ(999, resources[0].id); |
483 EXPECT_EQ(444u, resources[1].id); | 483 EXPECT_EQ(444, resources[1].id); |
484 } else { | 484 } else { |
485 EXPECT_EQ(444u, resources[0].id); | 485 EXPECT_EQ(444, resources[0].id); |
486 EXPECT_EQ(999u, resources[1].id); | 486 EXPECT_EQ(999, resources[1].id); |
487 } | 487 } |
488 EndTest(); | 488 EndTest(); |
489 break; | 489 break; |
490 } | 490 } |
491 | 491 |
492 // Resource are never immediately released. | 492 // Resource are never immediately released. |
493 TransferableResourceArray empty_resources; | 493 TransferableResourceArray empty_resources; |
494 delegated_->TakeUnusedResourcesForChildCompositor(&empty_resources); | 494 delegated_->TakeUnusedResourcesForChildCompositor(&empty_resources); |
495 EXPECT_TRUE(empty_resources.empty()); | 495 EXPECT_TRUE(empty_resources.empty()); |
496 } | 496 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
541 // Now using 555 and 444 again, but not 999. | 541 // Now using 555 and 444 again, but not 999. |
542 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 542 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
543 AddTextureQuad(frame.get(), 555); | 543 AddTextureQuad(frame.get(), 555); |
544 AddTextureQuad(frame.get(), 444); | 544 AddTextureQuad(frame.get(), 444); |
545 delegated_->SetFrameData(frame.Pass()); | 545 delegated_->SetFrameData(frame.Pass()); |
546 break; | 546 break; |
547 case 3: | 547 case 3: |
548 // The 999 resource is the only unused one. | 548 // The 999 resource is the only unused one. |
549 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 549 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
550 EXPECT_EQ(1u, resources.size()); | 550 EXPECT_EQ(1u, resources.size()); |
551 EXPECT_EQ(999u, resources[0].id); | 551 EXPECT_EQ(999, resources[0].id); |
552 EndTest(); | 552 EndTest(); |
553 break; | 553 break; |
554 } | 554 } |
555 } | 555 } |
556 | 556 |
557 virtual void AfterTest() OVERRIDE {} | 557 virtual void AfterTest() OVERRIDE {} |
558 }; | 558 }; |
559 | 559 |
560 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestReusedResources); | 560 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestReusedResources); |
561 | 561 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 // Resource are not immediately released. | 596 // Resource are not immediately released. |
597 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 597 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
598 EXPECT_EQ(0u, resources.size()); | 598 EXPECT_EQ(0u, resources.size()); |
599 | 599 |
600 // The parent compositor (this one) does a commit. | 600 // The parent compositor (this one) does a commit. |
601 break; | 601 break; |
602 case 3: | 602 case 3: |
603 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 603 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
604 EXPECT_EQ(2u, resources.size()); | 604 EXPECT_EQ(2u, resources.size()); |
605 if (resources[0].id == 555) { | 605 if (resources[0].id == 555) { |
606 EXPECT_EQ(555u, resources[0].id); | 606 EXPECT_EQ(555, resources[0].id); |
607 EXPECT_EQ(444u, resources[1].id); | 607 EXPECT_EQ(444, resources[1].id); |
608 } else { | 608 } else { |
609 EXPECT_EQ(444u, resources[0].id); | 609 EXPECT_EQ(444, resources[0].id); |
610 EXPECT_EQ(555u, resources[1].id); | 610 EXPECT_EQ(555, resources[1].id); |
611 } | 611 } |
612 | 612 |
613 // The child compositor sends a frame before receiving an for the | 613 // The child compositor sends a frame before receiving an for the |
614 // second frame. It uses 999, 444, and 555 again. | 614 // second frame. It uses 999, 444, and 555 again. |
615 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 615 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
616 AddTextureQuad(frame.get(), 999); | 616 AddTextureQuad(frame.get(), 999); |
617 AddTextureQuad(frame.get(), 555); | 617 AddTextureQuad(frame.get(), 555); |
618 AddTextureQuad(frame.get(), 444); | 618 AddTextureQuad(frame.get(), 444); |
619 delegated_->SetFrameData(frame.Pass()); | 619 delegated_->SetFrameData(frame.Pass()); |
620 break; | 620 break; |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 AddTransferableResource(frame.get(), 444); | 799 AddTransferableResource(frame.get(), 444); |
800 AddTextureQuad(frame.get(), 775); | 800 AddTextureQuad(frame.get(), 775); |
801 delegated_->SetFrameData(frame.Pass()); | 801 delegated_->SetFrameData(frame.Pass()); |
802 | 802 |
803 // The parent compositor (this one) does a commit. | 803 // The parent compositor (this one) does a commit. |
804 break; | 804 break; |
805 case 3: | 805 case 3: |
806 // The bad frame's resource is given back to the child compositor. | 806 // The bad frame's resource is given back to the child compositor. |
807 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 807 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
808 EXPECT_EQ(1u, resources.size()); | 808 EXPECT_EQ(1u, resources.size()); |
809 EXPECT_EQ(444u, resources[0].id); | 809 EXPECT_EQ(444, resources[0].id); |
810 | 810 |
811 // Now send a good frame with 999 again. | 811 // Now send a good frame with 999 again. |
812 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 812 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
813 AddTextureQuad(frame.get(), 999); | 813 AddTextureQuad(frame.get(), 999); |
814 delegated_->SetFrameData(frame.Pass()); | 814 delegated_->SetFrameData(frame.Pass()); |
815 break; | 815 break; |
816 case 4: | 816 case 4: |
817 // The unused 555 from the last good frame is now released. | 817 // The unused 555 from the last good frame is now released. |
818 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 818 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
819 EXPECT_EQ(1u, resources.size()); | 819 EXPECT_EQ(1u, resources.size()); |
820 EXPECT_EQ(555u, resources[0].id); | 820 EXPECT_EQ(555, resources[0].id); |
821 | 821 |
822 EndTest(); | 822 EndTest(); |
823 break; | 823 break; |
824 } | 824 } |
825 } | 825 } |
826 | 826 |
827 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 827 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
828 if (host_impl->active_tree()->source_frame_number() < 1) | 828 if (host_impl->active_tree()->source_frame_number() < 1) |
829 return; | 829 return; |
830 | 830 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 921 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
922 AddTransferableResource(frame.get(), 999); | 922 AddTransferableResource(frame.get(), 999); |
923 AddTextureQuad(frame.get(), 555); | 923 AddTextureQuad(frame.get(), 555); |
924 AddTransferableResource(frame.get(), 555); | 924 AddTransferableResource(frame.get(), 555); |
925 delegated_->SetFrameData(frame.Pass()); | 925 delegated_->SetFrameData(frame.Pass()); |
926 break; | 926 break; |
927 case 2: | 927 case 2: |
928 // The unused resource should be returned. | 928 // The unused resource should be returned. |
929 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 929 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
930 EXPECT_EQ(1u, resources.size()); | 930 EXPECT_EQ(1u, resources.size()); |
931 EXPECT_EQ(999u, resources[0].id); | 931 EXPECT_EQ(999, resources[0].id); |
932 | 932 |
933 EndTest(); | 933 EndTest(); |
934 break; | 934 break; |
935 } | 935 } |
936 } | 936 } |
937 | 937 |
938 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 938 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
939 if (host_impl->active_tree()->source_frame_number() != 1) | 939 if (host_impl->active_tree()->source_frame_number() != 1) |
940 return; | 940 return; |
941 | 941 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
984 | 984 |
985 // But then we immediately stop using 999. | 985 // But then we immediately stop using 999. |
986 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 986 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
987 AddTextureQuad(frame.get(), 555); | 987 AddTextureQuad(frame.get(), 555); |
988 delegated_->SetFrameData(frame.Pass()); | 988 delegated_->SetFrameData(frame.Pass()); |
989 break; | 989 break; |
990 case 2: | 990 case 2: |
991 // The unused resource should be returned. | 991 // The unused resource should be returned. |
992 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 992 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
993 EXPECT_EQ(1u, resources.size()); | 993 EXPECT_EQ(1u, resources.size()); |
994 EXPECT_EQ(999u, resources[0].id); | 994 EXPECT_EQ(999, resources[0].id); |
995 | 995 |
996 EndTest(); | 996 EndTest(); |
997 break; | 997 break; |
998 } | 998 } |
999 } | 999 } |
1000 | 1000 |
1001 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 1001 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
1002 if (host_impl->active_tree()->source_frame_number() != 1) | 1002 if (host_impl->active_tree()->source_frame_number() != 1) |
1003 return; | 1003 return; |
1004 | 1004 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1061 // Since 999 is in the grandparent it is not returned. | 1061 // Since 999 is in the grandparent it is not returned. |
1062 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1062 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
1063 EXPECT_EQ(0u, resources.size()); | 1063 EXPECT_EQ(0u, resources.size()); |
1064 | 1064 |
1065 layer_tree_host()->SetNeedsCommit(); | 1065 layer_tree_host()->SetNeedsCommit(); |
1066 break; | 1066 break; |
1067 case 4: | 1067 case 4: |
1068 // 999 was returned from the grandparent and could be released. | 1068 // 999 was returned from the grandparent and could be released. |
1069 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1069 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
1070 EXPECT_EQ(1u, resources.size()); | 1070 EXPECT_EQ(1u, resources.size()); |
1071 EXPECT_EQ(999u, resources[0].id); | 1071 EXPECT_EQ(999, resources[0].id); |
1072 | 1072 |
1073 EndTest(); | 1073 EndTest(); |
1074 break; | 1074 break; |
1075 } | 1075 } |
1076 } | 1076 } |
1077 | 1077 |
1078 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 1078 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
1079 if (host_impl->active_tree()->source_frame_number() < 1) | 1079 if (host_impl->active_tree()->source_frame_number() < 1) |
1080 return; | 1080 return; |
1081 | 1081 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1176 // Don't take resources here, but set a new frame that uses 999 again. | 1176 // Don't take resources here, but set a new frame that uses 999 again. |
1177 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1177 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1178 AddTextureQuad(frame.get(), 999); | 1178 AddTextureQuad(frame.get(), 999); |
1179 AddTextureQuad(frame.get(), 555); | 1179 AddTextureQuad(frame.get(), 555); |
1180 delegated_->SetFrameData(frame.Pass()); | 1180 delegated_->SetFrameData(frame.Pass()); |
1181 break; | 1181 break; |
1182 case 4: | 1182 case 4: |
1183 // 999 and 555 are in use, but 444 should be returned now. | 1183 // 999 and 555 are in use, but 444 should be returned now. |
1184 delegated_->TakeUnusedResourcesForChildCompositor(&resources); | 1184 delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
1185 EXPECT_EQ(1u, resources.size()); | 1185 EXPECT_EQ(1u, resources.size()); |
1186 EXPECT_EQ(444u, resources[0].id); | 1186 EXPECT_EQ(444, resources[0].id); |
1187 | 1187 |
1188 EndTest(); | 1188 EndTest(); |
1189 break; | 1189 break; |
1190 } | 1190 } |
1191 } | 1191 } |
1192 | 1192 |
1193 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 1193 virtual void TreeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
1194 if (host_impl->active_tree()->source_frame_number() < 1) | 1194 if (host_impl->active_tree()->source_frame_number() < 1) |
1195 return; | 1195 return; |
1196 | 1196 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1232 } | 1232 } |
1233 } | 1233 } |
1234 | 1234 |
1235 virtual void AfterTest() OVERRIDE {} | 1235 virtual void AfterTest() OVERRIDE {} |
1236 }; | 1236 }; |
1237 | 1237 |
1238 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCommitWithoutTake); | 1238 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCommitWithoutTake); |
1239 | 1239 |
1240 } // namespace | 1240 } // namespace |
1241 } // namespace cc | 1241 } // namespace cc |
OLD | NEW |