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

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

Issue 2848223003: Enforce constant size and device scale factor for surfaces (Closed)
Patch Set: Address comments Created 3 years, 7 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
« no previous file with comments | « cc/surfaces/surface.cc ('k') | cc/surfaces/surface_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 1100 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
1101 std::unique_ptr<CompositorFrameSinkSupport> child_two_support = 1101 std::unique_ptr<CompositorFrameSinkSupport> child_two_support =
1102 CompositorFrameSinkSupport::Create( 1102 CompositorFrameSinkSupport::Create(
1103 nullptr, &manager_, kArbitraryFrameSinkId3, kChildIsRoot, 1103 nullptr, &manager_, kArbitraryFrameSinkId3, kChildIsRoot,
1104 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 1104 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
1105 int pass_id = 1; 1105 int pass_id = 1;
1106 LocalSurfaceId grandchild_local_surface_id = allocator_.GenerateId(); 1106 LocalSurfaceId grandchild_local_surface_id = allocator_.GenerateId();
1107 SurfaceId grandchild_surface_id(grandchild_support->frame_sink_id(), 1107 SurfaceId grandchild_surface_id(grandchild_support->frame_sink_id(),
1108 grandchild_local_surface_id); 1108 grandchild_local_surface_id);
1109 1109
1110 grandchild_support->SubmitCompositorFrame(grandchild_local_surface_id,
1111 test::MakeCompositorFrame());
1112 std::unique_ptr<RenderPass> grandchild_pass = RenderPass::Create(); 1110 std::unique_ptr<RenderPass> grandchild_pass = RenderPass::Create();
1113 gfx::Rect output_rect(SurfaceSize()); 1111 gfx::Rect output_rect(SurfaceSize());
1114 gfx::Rect damage_rect(SurfaceSize()); 1112 gfx::Rect damage_rect(SurfaceSize());
1115 gfx::Transform transform_to_root_target; 1113 gfx::Transform transform_to_root_target;
1116 grandchild_pass->SetNew(pass_id, output_rect, damage_rect, 1114 grandchild_pass->SetNew(pass_id, output_rect, damage_rect,
1117 transform_to_root_target); 1115 transform_to_root_target);
1118 AddSolidColorQuadWithBlendMode( 1116 AddSolidColorQuadWithBlendMode(
1119 SurfaceSize(), grandchild_pass.get(), blend_modes[2]); 1117 SurfaceSize(), grandchild_pass.get(), blend_modes[2]);
1120 QueuePassAsFrame(std::move(grandchild_pass), grandchild_local_surface_id, 1118 QueuePassAsFrame(std::move(grandchild_pass), grandchild_local_surface_id,
1121 grandchild_support.get()); 1119 grandchild_support.get());
1122 1120
1123 LocalSurfaceId child_one_local_surface_id = allocator_.GenerateId(); 1121 LocalSurfaceId child_one_local_surface_id = allocator_.GenerateId();
1124 SurfaceId child_one_surface_id(child_one_support->frame_sink_id(), 1122 SurfaceId child_one_surface_id(child_one_support->frame_sink_id(),
1125 child_one_local_surface_id); 1123 child_one_local_surface_id);
1126 child_one_support->SubmitCompositorFrame(child_one_local_surface_id,
1127 test::MakeCompositorFrame());
1128 1124
1129 std::unique_ptr<RenderPass> child_one_pass = RenderPass::Create(); 1125 std::unique_ptr<RenderPass> child_one_pass = RenderPass::Create();
1130 child_one_pass->SetNew(pass_id, output_rect, damage_rect, 1126 child_one_pass->SetNew(pass_id, output_rect, damage_rect,
1131 transform_to_root_target); 1127 transform_to_root_target);
1132 AddSolidColorQuadWithBlendMode( 1128 AddSolidColorQuadWithBlendMode(
1133 SurfaceSize(), child_one_pass.get(), blend_modes[1]); 1129 SurfaceSize(), child_one_pass.get(), blend_modes[1]);
1134 SurfaceDrawQuad* grandchild_surface_quad = 1130 SurfaceDrawQuad* grandchild_surface_quad =
1135 child_one_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 1131 child_one_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
1136 grandchild_surface_quad->SetNew( 1132 grandchild_surface_quad->SetNew(
1137 child_one_pass->shared_quad_state_list.back(), gfx::Rect(SurfaceSize()), 1133 child_one_pass->shared_quad_state_list.back(), gfx::Rect(SurfaceSize()),
1138 gfx::Rect(SurfaceSize()), grandchild_surface_id, 1134 gfx::Rect(SurfaceSize()), grandchild_surface_id,
1139 SurfaceDrawQuadType::PRIMARY, nullptr); 1135 SurfaceDrawQuadType::PRIMARY, nullptr);
1140 AddSolidColorQuadWithBlendMode( 1136 AddSolidColorQuadWithBlendMode(
1141 SurfaceSize(), child_one_pass.get(), blend_modes[3]); 1137 SurfaceSize(), child_one_pass.get(), blend_modes[3]);
1142 QueuePassAsFrame(std::move(child_one_pass), child_one_local_surface_id, 1138 QueuePassAsFrame(std::move(child_one_pass), child_one_local_surface_id,
1143 child_one_support.get()); 1139 child_one_support.get());
1144 1140
1145 LocalSurfaceId child_two_local_surface_id = allocator_.GenerateId(); 1141 LocalSurfaceId child_two_local_surface_id = allocator_.GenerateId();
1146 SurfaceId child_two_surface_id(child_two_support->frame_sink_id(), 1142 SurfaceId child_two_surface_id(child_two_support->frame_sink_id(),
1147 child_two_local_surface_id); 1143 child_two_local_surface_id);
1148 child_two_support->SubmitCompositorFrame(child_two_local_surface_id,
1149 test::MakeCompositorFrame());
1150 1144
1151 std::unique_ptr<RenderPass> child_two_pass = RenderPass::Create(); 1145 std::unique_ptr<RenderPass> child_two_pass = RenderPass::Create();
1152 child_two_pass->SetNew(pass_id, output_rect, damage_rect, 1146 child_two_pass->SetNew(pass_id, output_rect, damage_rect,
1153 transform_to_root_target); 1147 transform_to_root_target);
1154 AddSolidColorQuadWithBlendMode( 1148 AddSolidColorQuadWithBlendMode(
1155 SurfaceSize(), child_two_pass.get(), blend_modes[5]); 1149 SurfaceSize(), child_two_pass.get(), blend_modes[5]);
1156 QueuePassAsFrame(std::move(child_two_pass), child_two_local_surface_id, 1150 QueuePassAsFrame(std::move(child_two_pass), child_two_local_surface_id,
1157 child_two_support.get()); 1151 child_two_support.get());
1158 1152
1159 std::unique_ptr<RenderPass> root_pass = RenderPass::Create(); 1153 std::unique_ptr<RenderPass> root_pass = RenderPass::Create();
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after
1952 }; 1946 };
1953 1947
1954 void SubmitCompositorFrameWithResources(ResourceId* resource_ids, 1948 void SubmitCompositorFrameWithResources(ResourceId* resource_ids,
1955 size_t num_resource_ids, 1949 size_t num_resource_ids,
1956 bool valid, 1950 bool valid,
1957 SurfaceId child_id, 1951 SurfaceId child_id,
1958 CompositorFrameSinkSupport* support, 1952 CompositorFrameSinkSupport* support,
1959 SurfaceId surface_id) { 1953 SurfaceId surface_id) {
1960 CompositorFrame frame = test::MakeEmptyCompositorFrame(); 1954 CompositorFrame frame = test::MakeEmptyCompositorFrame();
1961 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 1955 std::unique_ptr<RenderPass> pass = RenderPass::Create();
1962 pass->id = 1; 1956 pass->SetNew(1, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform());
1963 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 1957 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
1964 sqs->opacity = 1.f; 1958 sqs->opacity = 1.f;
1965 if (child_id.is_valid()) { 1959 if (child_id.is_valid()) {
1966 SurfaceDrawQuad* surface_quad = 1960 SurfaceDrawQuad* surface_quad =
1967 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 1961 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
1968 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), 1962 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1),
1969 child_id, SurfaceDrawQuadType::PRIMARY, nullptr); 1963 child_id, SurfaceDrawQuadType::PRIMARY, nullptr);
1970 } 1964 }
1971 1965
1972 for (size_t i = 0u; i < num_resource_ids; ++i) { 1966 for (size_t i = 0u; i < num_resource_ids; ++i) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2034 2028
2035 TEST_F(SurfaceAggregatorWithResourcesTest, TakeInvalidResources) { 2029 TEST_F(SurfaceAggregatorWithResourcesTest, TakeInvalidResources) {
2036 FakeCompositorFrameSinkSupportClient client; 2030 FakeCompositorFrameSinkSupportClient client;
2037 std::unique_ptr<CompositorFrameSinkSupport> support = 2031 std::unique_ptr<CompositorFrameSinkSupport> support =
2038 CompositorFrameSinkSupport::Create( 2032 CompositorFrameSinkSupport::Create(
2039 &client, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot, 2033 &client, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot,
2040 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 2034 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
2041 LocalSurfaceId local_surface_id(7u, base::UnguessableToken::Create()); 2035 LocalSurfaceId local_surface_id(7u, base::UnguessableToken::Create());
2042 SurfaceId surface_id(support->frame_sink_id(), local_surface_id); 2036 SurfaceId surface_id(support->frame_sink_id(), local_surface_id);
2043 2037
2044 CompositorFrame frame = test::MakeEmptyCompositorFrame(); 2038 CompositorFrame frame = test::MakeCompositorFrame();
2045 std::unique_ptr<RenderPass> pass = RenderPass::Create();
2046 pass->id = 1;
2047 TransferableResource resource; 2039 TransferableResource resource;
2048 resource.id = 11; 2040 resource.id = 11;
2049 // ResourceProvider is software but resource is not, so it should be 2041 // ResourceProvider is software but resource is not, so it should be
2050 // ignored. 2042 // ignored.
2051 resource.is_software = false; 2043 resource.is_software = false;
2052 frame.resource_list.push_back(resource); 2044 frame.resource_list.push_back(resource);
2053 frame.render_pass_list.push_back(std::move(pass));
2054 support->SubmitCompositorFrame(local_surface_id, std::move(frame)); 2045 support->SubmitCompositorFrame(local_surface_id, std::move(frame));
2055 2046
2056 CompositorFrame returned_frame = aggregator_->Aggregate(surface_id); 2047 CompositorFrame returned_frame = aggregator_->Aggregate(surface_id);
2057 2048
2058 // Nothing should be available to be returned yet. 2049 // Nothing should be available to be returned yet.
2059 EXPECT_TRUE(client.returned_resources().empty()); 2050 EXPECT_TRUE(client.returned_resources().empty());
2060 2051
2061 SubmitCompositorFrameWithResources(NULL, 0, true, SurfaceId(), support.get(), 2052 SubmitCompositorFrameWithResources(NULL, 0, true, SurfaceId(), support.get(),
2062 surface_id); 2053 surface_id);
2063 ASSERT_EQ(1u, client.returned_resources().size()); 2054 ASSERT_EQ(1u, client.returned_resources().size());
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
2195 support1.get(), surface1_id); 2186 support1.get(), surface1_id);
2196 2187
2197 CompositorFrame frame = aggregator_->Aggregate(surface1_id); 2188 CompositorFrame frame = aggregator_->Aggregate(surface1_id);
2198 2189
2199 RenderPass* render_pass = frame.render_pass_list.back().get(); 2190 RenderPass* render_pass = frame.render_pass_list.back().get();
2200 2191
2201 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, render_pass->quad_list.back()->material); 2192 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, render_pass->quad_list.back()->material);
2202 2193
2203 { 2194 {
2204 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 2195 std::unique_ptr<RenderPass> pass = RenderPass::Create();
2205 pass->id = 1; 2196 pass->SetNew(1, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform());
2206 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 2197 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
2207 sqs->opacity = 1.f; 2198 sqs->opacity = 1.f;
2208 SurfaceDrawQuad* surface_quad = 2199 SurfaceDrawQuad* surface_quad =
2209 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 2200 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
2210 2201
2211 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), 2202 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1),
2212 surface1_id, SurfaceDrawQuadType::PRIMARY, nullptr); 2203 surface1_id, SurfaceDrawQuadType::PRIMARY, nullptr);
2213 pass->copy_requests.push_back(CopyOutputRequest::CreateEmptyRequest()); 2204 pass->copy_requests.push_back(CopyOutputRequest::CreateEmptyRequest());
2214 2205
2215 CompositorFrame frame = test::MakeEmptyCompositorFrame(); 2206 CompositorFrame frame = test::MakeEmptyCompositorFrame();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
2279 aggregated_frame = aggregator_.Aggregate(surface_id); 2270 aggregated_frame = aggregator_.Aggregate(surface_id);
2280 EXPECT_EQ(3u, aggregated_frame.render_pass_list.size()); 2271 EXPECT_EQ(3u, aggregated_frame.render_pass_list.size());
2281 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[0]->color_space); 2272 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[0]->color_space);
2282 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[1]->color_space); 2273 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[1]->color_space);
2283 EXPECT_EQ(color_space3, aggregated_frame.render_pass_list[2]->color_space); 2274 EXPECT_EQ(color_space3, aggregated_frame.render_pass_list[2]->color_space);
2284 } 2275 }
2285 2276
2286 } // namespace 2277 } // namespace
2287 } // namespace cc 2278 } // namespace cc
2288 2279
OLDNEW
« no previous file with comments | « cc/surfaces/surface.cc ('k') | cc/surfaces/surface_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698