| 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 |