| 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, 999); | 413 EXPECT_NE(parent_resource_id1, 999u); |
| 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, 555); | 415 EXPECT_NE(parent_resource_id2, 555u); |
| 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(555, resources[0].id); | 471 EXPECT_EQ(555u, 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(999, resources[0].id); | 482 EXPECT_EQ(999u, resources[0].id); |
| 483 EXPECT_EQ(444, resources[1].id); | 483 EXPECT_EQ(444u, resources[1].id); |
| 484 } else { | 484 } else { |
| 485 EXPECT_EQ(444, resources[0].id); | 485 EXPECT_EQ(444u, resources[0].id); |
| 486 EXPECT_EQ(999, resources[1].id); | 486 EXPECT_EQ(999u, 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(999, resources[0].id); | 551 EXPECT_EQ(999u, 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(555, resources[0].id); | 606 EXPECT_EQ(555u, resources[0].id); |
| 607 EXPECT_EQ(444, resources[1].id); | 607 EXPECT_EQ(444u, resources[1].id); |
| 608 } else { | 608 } else { |
| 609 EXPECT_EQ(444, resources[0].id); | 609 EXPECT_EQ(444u, resources[0].id); |
| 610 EXPECT_EQ(555, resources[1].id); | 610 EXPECT_EQ(555u, 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(444, resources[0].id); | 809 EXPECT_EQ(444u, 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(555, resources[0].id); | 820 EXPECT_EQ(555u, 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(999, resources[0].id); | 931 EXPECT_EQ(999u, 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(999, resources[0].id); | 994 EXPECT_EQ(999u, 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(999, resources[0].id); | 1071 EXPECT_EQ(999u, 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(444, resources[0].id); | 1186 EXPECT_EQ(444u, 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 |