OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 output_surface_ = | 358 output_surface_ = |
359 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); | 359 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); |
360 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 360 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
361 | 361 |
362 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 362 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
363 resource_provider_ = FakeResourceProvider::Create( | 363 resource_provider_ = FakeResourceProvider::Create( |
364 output_surface_.get(), shared_bitmap_manager_.get()); | 364 output_surface_.get(), shared_bitmap_manager_.get()); |
365 renderer_ = base::WrapUnique( | 365 renderer_ = base::WrapUnique( |
366 new FakeRendererGL(&renderer_client_, &settings_, output_surface_.get(), | 366 new FakeRendererGL(&renderer_client_, &settings_, output_surface_.get(), |
367 resource_provider_.get())); | 367 resource_provider_.get())); |
| 368 renderer_->SetVisible(true); |
368 } | 369 } |
369 | 370 |
370 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 371 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
371 | 372 |
372 RendererSettings settings_; | 373 RendererSettings settings_; |
373 FakeOutputSurfaceClient output_surface_client_; | 374 FakeOutputSurfaceClient output_surface_client_; |
374 std::unique_ptr<FakeOutputSurface> output_surface_; | 375 std::unique_ptr<FakeOutputSurface> output_surface_; |
375 FakeRendererClient renderer_client_; | 376 FakeRendererClient renderer_client_; |
376 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; | 377 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; |
377 std::unique_ptr<ResourceProvider> resource_provider_; | 378 std::unique_ptr<ResourceProvider> resource_provider_; |
(...skipping 11 matching lines...) Expand all Loading... |
389 output_surface_ = FakeOutputSurface::Create3d(); | 390 output_surface_ = FakeOutputSurface::Create3d(); |
390 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 391 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
391 | 392 |
392 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 393 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
393 resource_provider_ = FakeResourceProvider::Create( | 394 resource_provider_ = FakeResourceProvider::Create( |
394 output_surface_.get(), shared_bitmap_manager_.get()); | 395 output_surface_.get(), shared_bitmap_manager_.get()); |
395 renderer_.reset(new FakeRendererGL(&renderer_client_, | 396 renderer_.reset(new FakeRendererGL(&renderer_client_, |
396 &settings_, | 397 &settings_, |
397 output_surface_.get(), | 398 output_surface_.get(), |
398 resource_provider_.get())); | 399 resource_provider_.get())); |
| 400 renderer_->SetVisible(true); |
399 } | 401 } |
400 | 402 |
401 void TestRenderPassProgram(TexCoordPrecision precision, | 403 void TestRenderPassProgram(TexCoordPrecision precision, |
402 BlendMode blend_mode) { | 404 BlendMode blend_mode) { |
403 EXPECT_PROGRAM_VALID( | 405 EXPECT_PROGRAM_VALID( |
404 &renderer_->render_pass_program_[precision][blend_mode]); | 406 &renderer_->render_pass_program_[precision][blend_mode]); |
405 EXPECT_EQ(renderer_->render_pass_program_[precision][blend_mode].program(), | 407 EXPECT_EQ(renderer_->render_pass_program_[precision][blend_mode].program(), |
406 renderer_->program_shadow_); | 408 renderer_->program_shadow_); |
407 } | 409 } |
408 | 410 |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
754 std::unique_ptr<ResourceProvider> resource_provider = | 756 std::unique_ptr<ResourceProvider> resource_provider = |
755 FakeResourceProvider::Create(output_surface.get(), | 757 FakeResourceProvider::Create(output_surface.get(), |
756 shared_bitmap_manager.get()); | 758 shared_bitmap_manager.get()); |
757 | 759 |
758 RendererSettings settings; | 760 RendererSettings settings; |
759 FakeRendererClient renderer_client; | 761 FakeRendererClient renderer_client; |
760 FakeRendererGL renderer(&renderer_client, | 762 FakeRendererGL renderer(&renderer_client, |
761 &settings, | 763 &settings, |
762 output_surface.get(), | 764 output_surface.get(), |
763 resource_provider.get()); | 765 resource_provider.get()); |
| 766 renderer.SetVisible(true); |
764 | 767 |
765 gfx::Rect viewport_rect(1, 1); | 768 gfx::Rect viewport_rect(1, 1); |
766 RenderPass* root_pass = | 769 RenderPass* root_pass = |
767 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 770 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
768 viewport_rect, gfx::Transform()); | 771 viewport_rect, gfx::Transform()); |
769 root_pass->has_transparent_background = false; | 772 root_pass->has_transparent_background = false; |
770 | 773 |
771 // On DEBUG builds, render passes with opaque background clear to blue to | 774 // On DEBUG builds, render passes with opaque background clear to blue to |
772 // easily see regions that were not drawn on the screen. | 775 // easily see regions that were not drawn on the screen. |
773 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) | 776 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) |
(...skipping 22 matching lines...) Expand all Loading... |
796 std::unique_ptr<ResourceProvider> resource_provider = | 799 std::unique_ptr<ResourceProvider> resource_provider = |
797 FakeResourceProvider::Create(output_surface.get(), | 800 FakeResourceProvider::Create(output_surface.get(), |
798 shared_bitmap_manager.get()); | 801 shared_bitmap_manager.get()); |
799 | 802 |
800 RendererSettings settings; | 803 RendererSettings settings; |
801 FakeRendererClient renderer_client; | 804 FakeRendererClient renderer_client; |
802 FakeRendererGL renderer(&renderer_client, | 805 FakeRendererGL renderer(&renderer_client, |
803 &settings, | 806 &settings, |
804 output_surface.get(), | 807 output_surface.get(), |
805 resource_provider.get()); | 808 resource_provider.get()); |
| 809 renderer.SetVisible(true); |
806 | 810 |
807 gfx::Rect viewport_rect(1, 1); | 811 gfx::Rect viewport_rect(1, 1); |
808 RenderPass* root_pass = | 812 RenderPass* root_pass = |
809 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 813 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
810 viewport_rect, gfx::Transform()); | 814 viewport_rect, gfx::Transform()); |
811 root_pass->has_transparent_background = true; | 815 root_pass->has_transparent_background = true; |
812 | 816 |
813 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1); | 817 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1); |
814 EXPECT_CALL(*context, clear(_)).Times(1); | 818 EXPECT_CALL(*context, clear(_)).Times(1); |
815 DrawFrame(&renderer, viewport_rect); | 819 DrawFrame(&renderer, viewport_rect); |
(...skipping 15 matching lines...) Expand all Loading... |
831 std::unique_ptr<ResourceProvider> resource_provider = | 835 std::unique_ptr<ResourceProvider> resource_provider = |
832 FakeResourceProvider::Create(output_surface.get(), | 836 FakeResourceProvider::Create(output_surface.get(), |
833 shared_bitmap_manager.get()); | 837 shared_bitmap_manager.get()); |
834 | 838 |
835 RendererSettings settings; | 839 RendererSettings settings; |
836 FakeRendererClient renderer_client; | 840 FakeRendererClient renderer_client; |
837 FakeRendererGL renderer(&renderer_client, | 841 FakeRendererGL renderer(&renderer_client, |
838 &settings, | 842 &settings, |
839 output_surface.get(), | 843 output_surface.get(), |
840 resource_provider.get()); | 844 resource_provider.get()); |
| 845 renderer.SetVisible(true); |
841 | 846 |
842 gfx::Rect viewport_rect(1, 1); | 847 gfx::Rect viewport_rect(1, 1); |
843 AddRenderPass(&render_passes_in_draw_order_, | 848 AddRenderPass(&render_passes_in_draw_order_, |
844 RenderPassId(1, 0), | 849 RenderPassId(1, 0), |
845 viewport_rect, | 850 viewport_rect, |
846 gfx::Transform()); | 851 gfx::Transform()); |
847 | 852 |
848 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) | 853 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) |
849 .With(Args<2, 1>(ElementsAre(GL_COLOR_ATTACHMENT0))) | 854 .With(Args<2, 1>(ElementsAre(GL_COLOR_ATTACHMENT0))) |
850 .Times(1); | 855 .Times(1); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
890 std::unique_ptr<ResourceProvider> resource_provider = | 895 std::unique_ptr<ResourceProvider> resource_provider = |
891 FakeResourceProvider::Create(output_surface.get(), | 896 FakeResourceProvider::Create(output_surface.get(), |
892 shared_bitmap_manager.get()); | 897 shared_bitmap_manager.get()); |
893 | 898 |
894 RendererSettings settings; | 899 RendererSettings settings; |
895 FakeRendererClient renderer_client; | 900 FakeRendererClient renderer_client; |
896 FakeRendererGL renderer(&renderer_client, | 901 FakeRendererGL renderer(&renderer_client, |
897 &settings, | 902 &settings, |
898 output_surface.get(), | 903 output_surface.get(), |
899 resource_provider.get()); | 904 resource_provider.get()); |
| 905 renderer.SetVisible(true); |
900 | 906 |
901 // During initialization we are allowed to set any texture parameters. | 907 // During initialization we are allowed to set any texture parameters. |
902 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); | 908 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); |
903 | 909 |
904 RenderPass* root_pass = | 910 RenderPass* root_pass = |
905 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 1), | 911 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 1), |
906 gfx::Rect(100, 100), gfx::Transform()); | 912 gfx::Rect(100, 100), gfx::Transform()); |
907 gpu::SyncToken mailbox_sync_token; | 913 gpu::SyncToken mailbox_sync_token; |
908 AddOneOfEveryQuadType(root_pass, resource_provider.get(), RenderPassId(0, 0), | 914 AddOneOfEveryQuadType(root_pass, resource_provider.get(), RenderPassId(0, 0), |
909 &mailbox_sync_token); | 915 &mailbox_sync_token); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
974 shared_bitmap_manager.get()); | 980 shared_bitmap_manager.get()); |
975 | 981 |
976 RendererSettings settings; | 982 RendererSettings settings; |
977 settings.should_clear_root_render_pass = false; | 983 settings.should_clear_root_render_pass = false; |
978 | 984 |
979 FakeRendererClient renderer_client; | 985 FakeRendererClient renderer_client; |
980 FakeRendererGL renderer(&renderer_client, | 986 FakeRendererGL renderer(&renderer_client, |
981 &settings, | 987 &settings, |
982 output_surface.get(), | 988 output_surface.get(), |
983 resource_provider.get()); | 989 resource_provider.get()); |
| 990 renderer.SetVisible(true); |
984 | 991 |
985 gfx::Rect viewport_rect(10, 10); | 992 gfx::Rect viewport_rect(10, 10); |
986 | 993 |
987 RenderPassId child_pass_id(2, 0); | 994 RenderPassId child_pass_id(2, 0); |
988 RenderPass* child_pass = | 995 RenderPass* child_pass = |
989 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, viewport_rect, | 996 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, viewport_rect, |
990 gfx::Transform()); | 997 gfx::Transform()); |
991 AddQuad(child_pass, viewport_rect, SK_ColorBLUE); | 998 AddQuad(child_pass, viewport_rect, SK_ColorBLUE); |
992 | 999 |
993 RenderPassId root_pass_id(1, 0); | 1000 RenderPassId root_pass_id(1, 0); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1060 FakeResourceProvider::Create(output_surface.get(), | 1067 FakeResourceProvider::Create(output_surface.get(), |
1061 shared_bitmap_manager.get()); | 1068 shared_bitmap_manager.get()); |
1062 | 1069 |
1063 RendererSettings settings; | 1070 RendererSettings settings; |
1064 FakeRendererClient renderer_client; | 1071 FakeRendererClient renderer_client; |
1065 FakeRendererGL renderer(&renderer_client, | 1072 FakeRendererGL renderer(&renderer_client, |
1066 &settings, | 1073 &settings, |
1067 output_surface.get(), | 1074 output_surface.get(), |
1068 resource_provider.get()); | 1075 resource_provider.get()); |
1069 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1076 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
| 1077 renderer.SetVisible(true); |
1070 | 1078 |
1071 gfx::Rect viewport_rect(1, 1); | 1079 gfx::Rect viewport_rect(1, 1); |
1072 | 1080 |
1073 gfx::Rect grand_child_rect(25, 25); | 1081 gfx::Rect grand_child_rect(25, 25); |
1074 RenderPassId grand_child_pass_id(3, 0); | 1082 RenderPassId grand_child_pass_id(3, 0); |
1075 RenderPass* grand_child_pass = | 1083 RenderPass* grand_child_pass = |
1076 AddRenderPass(&render_passes_in_draw_order_, grand_child_pass_id, | 1084 AddRenderPass(&render_passes_in_draw_order_, grand_child_pass_id, |
1077 grand_child_rect, gfx::Transform()); | 1085 grand_child_rect, gfx::Transform()); |
1078 AddClippedQuad(grand_child_pass, grand_child_rect, SK_ColorYELLOW); | 1086 AddClippedQuad(grand_child_pass, grand_child_rect, SK_ColorYELLOW); |
1079 | 1087 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1151 shared_bitmap_manager.get()); | 1159 shared_bitmap_manager.get()); |
1152 | 1160 |
1153 RendererSettings settings; | 1161 RendererSettings settings; |
1154 settings.partial_swap_enabled = true; | 1162 settings.partial_swap_enabled = true; |
1155 FakeRendererClient renderer_client; | 1163 FakeRendererClient renderer_client; |
1156 FakeRendererGL renderer(&renderer_client, | 1164 FakeRendererGL renderer(&renderer_client, |
1157 &settings, | 1165 &settings, |
1158 output_surface.get(), | 1166 output_surface.get(), |
1159 resource_provider.get()); | 1167 resource_provider.get()); |
1160 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); | 1168 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); |
| 1169 renderer.SetVisible(true); |
1161 | 1170 |
1162 gfx::Rect viewport_rect(100, 100); | 1171 gfx::Rect viewport_rect(100, 100); |
1163 gfx::Rect clip_rect(100, 100); | 1172 gfx::Rect clip_rect(100, 100); |
1164 | 1173 |
1165 { | 1174 { |
1166 // Partial frame, should not discard. | 1175 // Partial frame, should not discard. |
1167 RenderPassId root_pass_id(1, 0); | 1176 RenderPassId root_pass_id(1, 0); |
1168 RenderPass* root_pass = | 1177 RenderPass* root_pass = |
1169 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1178 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1170 viewport_rect, gfx::Transform()); | 1179 viewport_rect, gfx::Transform()); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1285 FakeResourceProvider::Create(output_surface.get(), | 1294 FakeResourceProvider::Create(output_surface.get(), |
1286 shared_bitmap_manager.get()); | 1295 shared_bitmap_manager.get()); |
1287 | 1296 |
1288 RendererSettings settings; | 1297 RendererSettings settings; |
1289 FakeRendererClient renderer_client; | 1298 FakeRendererClient renderer_client; |
1290 FakeRendererGL renderer(&renderer_client, | 1299 FakeRendererGL renderer(&renderer_client, |
1291 &settings, | 1300 &settings, |
1292 output_surface.get(), | 1301 output_surface.get(), |
1293 resource_provider.get()); | 1302 resource_provider.get()); |
1294 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1303 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
| 1304 renderer.SetVisible(true); |
1295 | 1305 |
1296 gfx::Rect device_viewport_rect(10, 10, 100, 100); | 1306 gfx::Rect device_viewport_rect(10, 10, 100, 100); |
1297 gfx::Rect viewport_rect(device_viewport_rect.size()); | 1307 gfx::Rect viewport_rect(device_viewport_rect.size()); |
1298 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); | 1308 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); |
1299 | 1309 |
1300 RenderPassId root_pass_id(1, 0); | 1310 RenderPassId root_pass_id(1, 0); |
1301 RenderPass* root_pass = | 1311 RenderPass* root_pass = |
1302 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, viewport_rect, | 1312 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, viewport_rect, |
1303 gfx::Transform()); | 1313 gfx::Transform()); |
1304 AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN); | 1314 AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN); |
(...skipping 17 matching lines...) Expand all Loading... |
1322 new TestSharedBitmapManager()); | 1332 new TestSharedBitmapManager()); |
1323 std::unique_ptr<ResourceProvider> resource_provider = | 1333 std::unique_ptr<ResourceProvider> resource_provider = |
1324 FakeResourceProvider::Create(output_surface.get(), | 1334 FakeResourceProvider::Create(output_surface.get(), |
1325 shared_bitmap_manager.get()); | 1335 shared_bitmap_manager.get()); |
1326 | 1336 |
1327 RendererSettings settings; | 1337 RendererSettings settings; |
1328 FakeRendererClient renderer_client; | 1338 FakeRendererClient renderer_client; |
1329 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), | 1339 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), |
1330 resource_provider.get()); | 1340 resource_provider.get()); |
1331 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1341 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
| 1342 renderer.SetVisible(true); |
1332 | 1343 |
1333 gfx::Rect device_viewport_rect(0, 0, 100, 100); | 1344 gfx::Rect device_viewport_rect(0, 0, 100, 100); |
1334 gfx::Rect viewport_rect(device_viewport_rect.size()); | 1345 gfx::Rect viewport_rect(device_viewport_rect.size()); |
1335 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); | 1346 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); |
1336 | 1347 |
1337 RenderPassId root_pass_id(1, 0); | 1348 RenderPassId root_pass_id(1, 0); |
1338 RenderPass* root_pass = | 1349 RenderPass* root_pass = |
1339 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, viewport_rect, | 1350 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, viewport_rect, |
1340 gfx::Transform()); | 1351 gfx::Transform()); |
1341 AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN); | 1352 AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN); |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1705 CHECK(output_surface_.BindToClient(&output_surface_client_)); | 1716 CHECK(output_surface_.BindToClient(&output_surface_client_)); |
1706 | 1717 |
1707 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 1718 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
1708 resource_provider_ = FakeResourceProvider::Create( | 1719 resource_provider_ = FakeResourceProvider::Create( |
1709 &output_surface_, shared_bitmap_manager_.get()); | 1720 &output_surface_, shared_bitmap_manager_.get()); |
1710 | 1721 |
1711 renderer_.reset(new FakeRendererGL(&renderer_client_, | 1722 renderer_.reset(new FakeRendererGL(&renderer_client_, |
1712 &settings_, | 1723 &settings_, |
1713 &output_surface_, | 1724 &output_surface_, |
1714 resource_provider_.get())); | 1725 resource_provider_.get())); |
| 1726 renderer_->SetVisible(true); |
1715 } | 1727 } |
1716 | 1728 |
1717 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 1729 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
1718 | 1730 |
1719 void DrawFrame(float device_scale_factor, | 1731 void DrawFrame(float device_scale_factor, |
1720 const gfx::Rect& device_viewport_rect, | 1732 const gfx::Rect& device_viewport_rect, |
1721 bool transparent) { | 1733 bool transparent) { |
1722 RenderPassId render_pass_id(1, 0); | 1734 RenderPassId render_pass_id(1, 0); |
1723 RenderPass* render_pass = | 1735 RenderPass* render_pass = |
1724 AddRenderPass(&render_passes_in_draw_order_, render_pass_id, | 1736 AddRenderPass(&render_passes_in_draw_order_, render_pass_id, |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1854 std::unique_ptr<ResourceProvider> resource_provider = | 1866 std::unique_ptr<ResourceProvider> resource_provider = |
1855 FakeResourceProvider::Create(output_surface.get(), | 1867 FakeResourceProvider::Create(output_surface.get(), |
1856 shared_bitmap_manager.get()); | 1868 shared_bitmap_manager.get()); |
1857 std::unique_ptr<TextureMailboxDeleter> mailbox_deleter( | 1869 std::unique_ptr<TextureMailboxDeleter> mailbox_deleter( |
1858 new TextureMailboxDeleter(base::ThreadTaskRunnerHandle::Get())); | 1870 new TextureMailboxDeleter(base::ThreadTaskRunnerHandle::Get())); |
1859 | 1871 |
1860 RendererSettings settings; | 1872 RendererSettings settings; |
1861 FakeRendererClient renderer_client; | 1873 FakeRendererClient renderer_client; |
1862 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), | 1874 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), |
1863 resource_provider.get(), mailbox_deleter.get()); | 1875 resource_provider.get(), mailbox_deleter.get()); |
| 1876 renderer.SetVisible(true); |
1864 | 1877 |
1865 TestOverlayProcessor* processor = | 1878 TestOverlayProcessor* processor = |
1866 new TestOverlayProcessor(output_surface.get()); | 1879 new TestOverlayProcessor(output_surface.get()); |
1867 processor->Initialize(); | 1880 processor->Initialize(); |
1868 renderer.SetOverlayProcessor(processor); | 1881 renderer.SetOverlayProcessor(processor); |
1869 std::unique_ptr<TestOverlayProcessor::Validator> validator( | 1882 std::unique_ptr<TestOverlayProcessor::Validator> validator( |
1870 new TestOverlayProcessor::Validator); | 1883 new TestOverlayProcessor::Validator); |
1871 output_surface->SetOverlayCandidateValidator(validator.get()); | 1884 output_surface->SetOverlayCandidateValidator(validator.get()); |
1872 | 1885 |
1873 gfx::Rect viewport_rect(1, 1); | 1886 gfx::Rect viewport_rect(1, 1); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2012 std::unique_ptr<ResourceProvider> resource_provider = | 2025 std::unique_ptr<ResourceProvider> resource_provider = |
2013 FakeResourceProvider::Create(output_surface.get(), | 2026 FakeResourceProvider::Create(output_surface.get(), |
2014 shared_bitmap_manager.get()); | 2027 shared_bitmap_manager.get()); |
2015 std::unique_ptr<TextureMailboxDeleter> mailbox_deleter( | 2028 std::unique_ptr<TextureMailboxDeleter> mailbox_deleter( |
2016 new TextureMailboxDeleter(base::ThreadTaskRunnerHandle::Get())); | 2029 new TextureMailboxDeleter(base::ThreadTaskRunnerHandle::Get())); |
2017 | 2030 |
2018 RendererSettings settings; | 2031 RendererSettings settings; |
2019 FakeRendererClient renderer_client; | 2032 FakeRendererClient renderer_client; |
2020 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), | 2033 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), |
2021 resource_provider.get(), mailbox_deleter.get()); | 2034 resource_provider.get(), mailbox_deleter.get()); |
| 2035 renderer.SetVisible(true); |
2022 | 2036 |
2023 SingleOverlayOnTopProcessor* processor = | 2037 SingleOverlayOnTopProcessor* processor = |
2024 new SingleOverlayOnTopProcessor(output_surface.get()); | 2038 new SingleOverlayOnTopProcessor(output_surface.get()); |
2025 processor->Initialize(); | 2039 processor->Initialize(); |
2026 renderer.SetOverlayProcessor(processor); | 2040 renderer.SetOverlayProcessor(processor); |
2027 | 2041 |
2028 gfx::Rect viewport_rect(1, 1); | 2042 gfx::Rect viewport_rect(1, 1); |
2029 RenderPass* root_pass = | 2043 RenderPass* root_pass = |
2030 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 2044 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
2031 viewport_rect, gfx::Transform()); | 2045 viewport_rect, gfx::Transform()); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2091 | 2105 |
2092 std::unique_ptr<ResourceProvider> resource_provider = | 2106 std::unique_ptr<ResourceProvider> resource_provider = |
2093 FakeResourceProvider::Create(output_surface.get(), nullptr); | 2107 FakeResourceProvider::Create(output_surface.get(), nullptr); |
2094 | 2108 |
2095 RendererSettings settings; | 2109 RendererSettings settings; |
2096 settings.partial_swap_enabled = partial_swap; | 2110 settings.partial_swap_enabled = partial_swap; |
2097 FakeRendererClient renderer_client; | 2111 FakeRendererClient renderer_client; |
2098 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), | 2112 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), |
2099 resource_provider.get()); | 2113 resource_provider.get()); |
2100 EXPECT_EQ(partial_swap, renderer.Capabilities().using_partial_swap); | 2114 EXPECT_EQ(partial_swap, renderer.Capabilities().using_partial_swap); |
| 2115 renderer.SetVisible(true); |
2101 | 2116 |
2102 gfx::Rect viewport_rect(100, 100); | 2117 gfx::Rect viewport_rect(100, 100); |
2103 gfx::Rect clip_rect(100, 100); | 2118 gfx::Rect clip_rect(100, 100); |
2104 | 2119 |
2105 { | 2120 { |
2106 RenderPassId root_pass_id(1, 0); | 2121 RenderPassId root_pass_id(1, 0); |
2107 RenderPass* root_pass = | 2122 RenderPass* root_pass = |
2108 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 2123 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
2109 viewport_rect, gfx::Transform()); | 2124 viewport_rect, gfx::Transform()); |
2110 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); | 2125 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2168 class MockContextSupport : public TestContextSupport { | 2183 class MockContextSupport : public TestContextSupport { |
2169 public: | 2184 public: |
2170 MockContextSupport() {} | 2185 MockContextSupport() {} |
2171 MOCK_METHOD1(SetAggressivelyFreeResources, | 2186 MOCK_METHOD1(SetAggressivelyFreeResources, |
2172 void(bool aggressively_free_resources)); | 2187 void(bool aggressively_free_resources)); |
2173 MOCK_METHOD2(SetClientVisible, void(int client_id, bool is_visible)); | 2188 MOCK_METHOD2(SetClientVisible, void(int client_id, bool is_visible)); |
2174 MOCK_CONST_METHOD0(AnyClientsVisible, bool()); | 2189 MOCK_CONST_METHOD0(AnyClientsVisible, bool()); |
2175 }; | 2190 }; |
2176 | 2191 |
2177 void SetUp() override { | 2192 void SetUp() override { |
2178 auto context_support = base::WrapUnique(new MockContextSupport()); | 2193 auto context_support = base::MakeUnique<MockContextSupport>(); |
2179 context_support_ptr_ = context_support.get(); | 2194 context_support_ptr_ = context_support.get(); |
2180 context_provider_ = new MockContextProvider(std::move(context_support)); | 2195 context_provider_ = new MockContextProvider(std::move(context_support)); |
2181 output_surface_ = FakeOutputSurface::Create3d(context_provider_); | 2196 output_surface_ = FakeOutputSurface::Create3d(context_provider_); |
2182 output_surface_->BindToClient(&output_surface_client_); | 2197 output_surface_->BindToClient(&output_surface_client_); |
2183 resource_provider_ = | 2198 resource_provider_ = |
2184 FakeResourceProvider::Create(output_surface_.get(), nullptr); | 2199 FakeResourceProvider::Create(output_surface_.get(), nullptr); |
2185 renderer_ = base::WrapUnique(new GLRenderer( | 2200 renderer_ = base::MakeUnique<GLRenderer>( |
2186 &renderer_client_, &tree_settings_, output_surface_.get(), | 2201 &renderer_client_, &settings_, output_surface_.get(), |
2187 resource_provider_.get(), NULL, 0)); | 2202 resource_provider_.get(), nullptr, 0); |
2188 } | 2203 } |
2189 | 2204 |
2190 FakeRendererClient renderer_client_; | 2205 FakeRendererClient renderer_client_; |
2191 RendererSettings tree_settings_; | 2206 RendererSettings settings_; |
2192 FakeOutputSurfaceClient output_surface_client_; | 2207 FakeOutputSurfaceClient output_surface_client_; |
2193 MockContextSupport* context_support_ptr_; | 2208 MockContextSupport* context_support_ptr_; |
2194 scoped_refptr<MockContextProvider> context_provider_; | 2209 scoped_refptr<MockContextProvider> context_provider_; |
2195 std::unique_ptr<OutputSurface> output_surface_; | 2210 std::unique_ptr<OutputSurface> output_surface_; |
2196 std::unique_ptr<ResourceProvider> resource_provider_; | 2211 std::unique_ptr<ResourceProvider> resource_provider_; |
2197 std::unique_ptr<Renderer> renderer_; | 2212 std::unique_ptr<Renderer> renderer_; |
2198 }; | 2213 }; |
2199 | 2214 |
2200 TEST_F(GLRendererWithMockContextTest, | 2215 TEST_F(GLRendererWithMockContextTest, |
2201 ContextPurgedWhenRendererBecomesInvisible) { | 2216 ContextPurgedWhenRendererBecomesInvisible) { |
2202 EXPECT_TRUE(renderer_->visible()); | |
2203 | |
2204 // Ensure our expectations run in order. | 2217 // Ensure our expectations run in order. |
2205 ::testing::InSequence s; | 2218 ::testing::InSequence s; |
2206 | 2219 |
2207 EXPECT_CALL(*(context_support_ptr_), SetClientVisible(0, false)); | 2220 EXPECT_CALL(*context_support_ptr_, SetClientVisible(0, true)); |
2208 EXPECT_CALL(*(context_support_ptr_), AnyClientsVisible()) | 2221 EXPECT_CALL(*context_support_ptr_, AnyClientsVisible()) |
| 2222 .WillOnce(Return(true)); |
| 2223 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(false)); |
| 2224 renderer_->SetVisible(true); |
| 2225 Mock::VerifyAndClearExpectations(context_support_ptr_); |
| 2226 |
| 2227 EXPECT_TRUE(renderer_->visible()); |
| 2228 |
| 2229 EXPECT_CALL(*context_support_ptr_, SetClientVisible(0, false)); |
| 2230 EXPECT_CALL(*context_support_ptr_, AnyClientsVisible()) |
2209 .WillOnce(Return(false)); | 2231 .WillOnce(Return(false)); |
2210 EXPECT_CALL(*(context_provider_.get()), DeleteCachedResources()); | 2232 EXPECT_CALL(*context_provider_, DeleteCachedResources()); |
2211 EXPECT_CALL(*(context_support_ptr_), SetAggressivelyFreeResources(true)); | 2233 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); |
2212 renderer_->SetVisible(false); | 2234 renderer_->SetVisible(false); |
2213 | |
2214 // Ensure all expectations have been satisfied after the call to SetVisible. | |
2215 Mock::VerifyAndClearExpectations(context_support_ptr_); | 2235 Mock::VerifyAndClearExpectations(context_support_ptr_); |
2216 | 2236 |
2217 EXPECT_FALSE(renderer_->visible()); | 2237 EXPECT_FALSE(renderer_->visible()); |
2218 } | 2238 } |
2219 | 2239 |
2220 } // namespace | 2240 } // namespace |
2221 } // namespace cc | 2241 } // namespace cc |
OLD | NEW |