Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Side by Side Diff: cc/surfaces/surface_aggregator_unittest.cc

Issue 2582823002: WIP: Surface Synchronization System
Patch Set: Only create ClientSurfaceEmbedder if window is visible. Trash it otherwise. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/surfaces/surface_aggregator.h" 5 #include "cc/surfaces/surface_aggregator.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 CompositorFrame(), 975 CompositorFrame(),
976 SurfaceFactory::DrawCallback()); 976 SurfaceFactory::DrawCallback());
977 977
978 std::unique_ptr<RenderPass> child_one_pass = RenderPass::Create(); 978 std::unique_ptr<RenderPass> child_one_pass = RenderPass::Create();
979 child_one_pass->SetNew(pass_id, output_rect, damage_rect, 979 child_one_pass->SetNew(pass_id, output_rect, damage_rect,
980 transform_to_root_target); 980 transform_to_root_target);
981 AddSolidColorQuadWithBlendMode( 981 AddSolidColorQuadWithBlendMode(
982 SurfaceSize(), child_one_pass.get(), blend_modes[1]); 982 SurfaceSize(), child_one_pass.get(), blend_modes[1]);
983 SurfaceDrawQuad* grandchild_surface_quad = 983 SurfaceDrawQuad* grandchild_surface_quad =
984 child_one_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 984 child_one_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
985 grandchild_surface_quad->SetNew(child_one_pass->shared_quad_state_list.back(), 985 grandchild_surface_quad->SetNew(
986 gfx::Rect(SurfaceSize()), 986 child_one_pass->shared_quad_state_list.back(), gfx::Rect(SurfaceSize()),
987 gfx::Rect(SurfaceSize()), 987 gfx::Rect(SurfaceSize()), grandchild_surface_id,
988 grandchild_surface_id); 988 SurfaceDrawQuadType::PRIMARY, nullptr);
989 AddSolidColorQuadWithBlendMode( 989 AddSolidColorQuadWithBlendMode(
990 SurfaceSize(), child_one_pass.get(), blend_modes[3]); 990 SurfaceSize(), child_one_pass.get(), blend_modes[3]);
991 QueuePassAsFrame(std::move(child_one_pass), child_one_local_frame_id, 991 QueuePassAsFrame(std::move(child_one_pass), child_one_local_frame_id,
992 &child_one_factory); 992 &child_one_factory);
993 993
994 LocalFrameId child_two_local_frame_id = allocator_.GenerateId(); 994 LocalFrameId child_two_local_frame_id = allocator_.GenerateId();
995 SurfaceId child_two_surface_id(child_two_factory.frame_sink_id(), 995 SurfaceId child_two_surface_id(child_two_factory.frame_sink_id(),
996 child_two_local_frame_id); 996 child_two_local_frame_id);
997 child_two_factory.SubmitCompositorFrame(child_two_local_frame_id, 997 child_two_factory.SubmitCompositorFrame(child_two_local_frame_id,
998 CompositorFrame(), 998 CompositorFrame(),
(...skipping 10 matching lines...) Expand all
1009 std::unique_ptr<RenderPass> root_pass = RenderPass::Create(); 1009 std::unique_ptr<RenderPass> root_pass = RenderPass::Create();
1010 root_pass->SetNew(pass_id, output_rect, damage_rect, 1010 root_pass->SetNew(pass_id, output_rect, damage_rect,
1011 transform_to_root_target); 1011 transform_to_root_target);
1012 1012
1013 AddSolidColorQuadWithBlendMode( 1013 AddSolidColorQuadWithBlendMode(
1014 SurfaceSize(), root_pass.get(), blend_modes[0]); 1014 SurfaceSize(), root_pass.get(), blend_modes[0]);
1015 SurfaceDrawQuad* child_one_surface_quad = 1015 SurfaceDrawQuad* child_one_surface_quad =
1016 root_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 1016 root_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
1017 child_one_surface_quad->SetNew(root_pass->shared_quad_state_list.back(), 1017 child_one_surface_quad->SetNew(root_pass->shared_quad_state_list.back(),
1018 gfx::Rect(SurfaceSize()), 1018 gfx::Rect(SurfaceSize()),
1019 gfx::Rect(SurfaceSize()), 1019 gfx::Rect(SurfaceSize()), child_one_surface_id,
1020 child_one_surface_id); 1020 SurfaceDrawQuadType::PRIMARY, nullptr);
1021 AddSolidColorQuadWithBlendMode( 1021 AddSolidColorQuadWithBlendMode(
1022 SurfaceSize(), root_pass.get(), blend_modes[4]); 1022 SurfaceSize(), root_pass.get(), blend_modes[4]);
1023 SurfaceDrawQuad* child_two_surface_quad = 1023 SurfaceDrawQuad* child_two_surface_quad =
1024 root_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 1024 root_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
1025 child_two_surface_quad->SetNew(root_pass->shared_quad_state_list.back(), 1025 child_two_surface_quad->SetNew(root_pass->shared_quad_state_list.back(),
1026 gfx::Rect(SurfaceSize()), 1026 gfx::Rect(SurfaceSize()),
1027 gfx::Rect(SurfaceSize()), 1027 gfx::Rect(SurfaceSize()), child_two_surface_id,
1028 child_two_surface_id); 1028 SurfaceDrawQuadType::PRIMARY, nullptr);
1029 AddSolidColorQuadWithBlendMode( 1029 AddSolidColorQuadWithBlendMode(
1030 SurfaceSize(), root_pass.get(), blend_modes[6]); 1030 SurfaceSize(), root_pass.get(), blend_modes[6]);
1031 1031
1032 QueuePassAsFrame(std::move(root_pass), root_local_frame_id_, &factory_); 1032 QueuePassAsFrame(std::move(root_pass), root_local_frame_id_, &factory_);
1033 1033
1034 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id_); 1034 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id_);
1035 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); 1035 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id);
1036 1036
1037 const RenderPassList& aggregated_pass_list = 1037 const RenderPassList& aggregated_pass_list =
1038 aggregated_frame.render_pass_list; 1038 aggregated_frame.render_pass_list;
(...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after
1819 SurfaceId surface_id) { 1819 SurfaceId surface_id) {
1820 CompositorFrame frame; 1820 CompositorFrame frame;
1821 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 1821 std::unique_ptr<RenderPass> pass = RenderPass::Create();
1822 pass->id = 1; 1822 pass->id = 1;
1823 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 1823 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
1824 sqs->opacity = 1.f; 1824 sqs->opacity = 1.f;
1825 if (child_id.is_valid()) { 1825 if (child_id.is_valid()) {
1826 SurfaceDrawQuad* surface_quad = 1826 SurfaceDrawQuad* surface_quad =
1827 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 1827 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
1828 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), 1828 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1),
1829 child_id); 1829 child_id, SurfaceDrawQuadType::PRIMARY, nullptr);
1830 } 1830 }
1831 1831
1832 for (size_t i = 0u; i < num_resource_ids; ++i) { 1832 for (size_t i = 0u; i < num_resource_ids; ++i) {
1833 TransferableResource resource; 1833 TransferableResource resource;
1834 resource.id = resource_ids[i]; 1834 resource.id = resource_ids[i];
1835 // ResourceProvider is software, so only software resources are valid. 1835 // ResourceProvider is software, so only software resources are valid.
1836 resource.is_software = valid; 1836 resource.is_software = valid;
1837 frame.resource_list.push_back(resource); 1837 frame.resource_list.push_back(resource);
1838 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 1838 TextureDrawQuad* quad = pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
1839 const gfx::Rect rect; 1839 const gfx::Rect rect;
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
2038 2038
2039 { 2039 {
2040 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 2040 std::unique_ptr<RenderPass> pass = RenderPass::Create();
2041 pass->id = 1; 2041 pass->id = 1;
2042 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 2042 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
2043 sqs->opacity = 1.f; 2043 sqs->opacity = 1.f;
2044 SurfaceDrawQuad* surface_quad = 2044 SurfaceDrawQuad* surface_quad =
2045 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 2045 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
2046 2046
2047 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), 2047 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1),
2048 surface1_id); 2048 surface1_id, SurfaceDrawQuadType::PRIMARY, nullptr);
2049 pass->copy_requests.push_back(CopyOutputRequest::CreateEmptyRequest()); 2049 pass->copy_requests.push_back(CopyOutputRequest::CreateEmptyRequest());
2050 2050
2051 CompositorFrame frame; 2051 CompositorFrame frame;
2052 frame.render_pass_list.push_back(std::move(pass)); 2052 frame.render_pass_list.push_back(std::move(pass));
2053 2053
2054 factory2.SubmitCompositorFrame(local_frame2_id, std::move(frame), 2054 factory2.SubmitCompositorFrame(local_frame2_id, std::move(frame),
2055 SurfaceFactory::DrawCallback()); 2055 SurfaceFactory::DrawCallback());
2056 } 2056 }
2057 2057
2058 frame = aggregator_->Aggregate(surface2_id); 2058 frame = aggregator_->Aggregate(surface2_id);
(...skipping 19 matching lines...) Expand all
2078 // Output is insecure, so texture should be drawn. 2078 // Output is insecure, so texture should be drawn.
2079 EXPECT_EQ(DrawQuad::SOLID_COLOR, render_pass->quad_list.back()->material); 2079 EXPECT_EQ(DrawQuad::SOLID_COLOR, render_pass->quad_list.back()->material);
2080 2080
2081 factory1.EvictSurface(); 2081 factory1.EvictSurface();
2082 factory2.EvictSurface(); 2082 factory2.EvictSurface();
2083 } 2083 }
2084 2084
2085 } // namespace 2085 } // namespace
2086 } // namespace cc 2086 } // namespace cc
2087 2087
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698