summaryrefslogtreecommitdiffstats
path: root/cc/surfaces/surface_aggregator_unittest.cc
diff options
context:
space:
mode:
authorjbauman <jbauman@chromium.org>2015-03-12 19:51:15 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-13 02:51:43 +0000
commitbd0e7ec118ef1b5799e58bd1035317e93b123e8e (patch)
treeacbcaf8076bb80164e938853b950b0fe7b969992 /cc/surfaces/surface_aggregator_unittest.cc
parent6ad6ef3a1f7cd6b84cdefcfcce8880979186b4f3 (diff)
downloadchromium_src-bd0e7ec118ef1b5799e58bd1035317e93b123e8e.zip
chromium_src-bd0e7ec118ef1b5799e58bd1035317e93b123e8e.tar.gz
chromium_src-bd0e7ec118ef1b5799e58bd1035317e93b123e8e.tar.bz2
Accumulate damage from SurfaceDrawQuads in non-root RenderPasses.
If a Surface in a non-root RenderPass has damage, then its damage must be transformed and accumulated into the root RenderPass. BUG=465670,463860,464344 Review URL: https://codereview.chromium.org/993243002 Cr-Commit-Position: refs/heads/master@{#320441}
Diffstat (limited to 'cc/surfaces/surface_aggregator_unittest.cc')
-rw-r--r--cc/surfaces/surface_aggregator_unittest.cc22
1 files changed, 14 insertions, 8 deletions
diff --git a/cc/surfaces/surface_aggregator_unittest.cc b/cc/surfaces/surface_aggregator_unittest.cc
index cf54568..72aa3f1 100644
--- a/cc/surfaces/surface_aggregator_unittest.cc
+++ b/cc/surfaces/surface_aggregator_unittest.cc
@@ -1083,8 +1083,13 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) {
factory_.SubmitFrame(child_surface_id, child_frame.Pass(),
SurfaceFactory::DrawCallback());
- test::Quad root_quads[] = {test::Quad::SurfaceQuad(child_surface_id, 1.f)};
- test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))};
+ RenderPassId pass_id(5, 10);
+ test::Quad first_quads[] = {test::Quad::SurfaceQuad(child_surface_id, 1.f)};
+ test::Quad root_quads[] = {test::Quad::RenderPassQuad(pass_id)};
+
+ test::Pass root_passes[] = {
+ test::Pass(first_quads, arraysize(first_quads), pass_id),
+ test::Pass(root_quads, arraysize(root_quads))};
RenderPassList root_pass_list;
AddPasses(&root_pass_list,
@@ -1096,6 +1101,7 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) {
->shared_quad_state_list.front()
->content_to_target_transform.Translate(0, 10);
root_pass_list.at(0)->damage_rect = gfx::Rect(5, 5, 10, 10);
+ root_pass_list.at(1)->damage_rect = gfx::Rect(5, 5, 100, 100);
scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData);
root_pass_list.swap(root_frame_data->render_pass_list);
@@ -1116,11 +1122,11 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) {
const RenderPassList& aggregated_pass_list = frame_data->render_pass_list;
- ASSERT_EQ(1u, aggregated_pass_list.size());
+ ASSERT_EQ(2u, aggregated_pass_list.size());
// Damage rect for first aggregation should contain entire root surface.
EXPECT_TRUE(
- aggregated_pass_list[0]->damage_rect.Contains(gfx::Rect(SurfaceSize())));
+ aggregated_pass_list[1]->damage_rect.Contains(gfx::Rect(SurfaceSize())));
{
AddPasses(&child_pass_list,
@@ -1154,12 +1160,12 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) {
const RenderPassList& aggregated_pass_list = frame_data->render_pass_list;
- ASSERT_EQ(1u, aggregated_pass_list.size());
+ ASSERT_EQ(2u, aggregated_pass_list.size());
// Outer surface didn't change, so transformed inner damage rect should be
// used.
EXPECT_EQ(gfx::Rect(10, 20, 10, 10).ToString(),
- aggregated_pass_list[0]->damage_rect.ToString());
+ aggregated_pass_list[1]->damage_rect.ToString());
}
{
@@ -1216,11 +1222,11 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) {
const RenderPassList& aggregated_pass_list = frame_data->render_pass_list;
- ASSERT_EQ(1u, aggregated_pass_list.size());
+ ASSERT_EQ(2u, aggregated_pass_list.size());
// The root surface was enqueued without being aggregated once, so it should
// be treated as completely damaged.
- EXPECT_TRUE(aggregated_pass_list[0]->damage_rect.Contains(
+ EXPECT_TRUE(aggregated_pass_list[1]->damage_rect.Contains(
gfx::Rect(SurfaceSize())));
}