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

Unified Diff: cc/output/overlay_unittest.cc

Issue 1330563004: Avoid Copying damage rect when using Overlays (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove blending checks Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/output/overlay_strategy_underlay.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/overlay_unittest.cc
diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc
index 722002e5580e203359fbbd4a954afac2844179c7..9b69b9a5e56ddef7dc5f16683588c78ae5e0ef0a 100644
--- a/cc/output/overlay_unittest.cc
+++ b/cc/output/overlay_unittest.cc
@@ -366,6 +366,7 @@ class OverlayTest : public testing::Test {
scoped_ptr<SharedBitmapManager> shared_bitmap_manager_;
scoped_ptr<ResourceProvider> resource_provider_;
scoped_ptr<OverlayProcessor> overlay_processor_;
+ gfx::Rect damage_rect_;
};
typedef OverlayTest<SingleOnTopOverlayValidator> SingleOverlayOnTopTest;
@@ -419,7 +420,7 @@ TEST_F(SandwichTest, SuccessfulSingleOverlay) {
// Check for potential candidates.
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
@@ -461,7 +462,7 @@ TEST_F(SandwichTest, CroppedSingleOverlay) {
// Check for potential candidates.
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
// Ensure that the display and uv rects have cropping applied to them.
ASSERT_EQ(1U, pass_list.size());
@@ -490,7 +491,7 @@ TEST_F(SandwichTest, SuccessfulTwoOverlays) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
// Both candidates should become overlays.
EXPECT_EQ(1u, pass_list.size());
@@ -524,7 +525,7 @@ TEST_F(SandwichTest, OverlappingOverlays) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
// Only one of the candidates should become an overlay.
EXPECT_EQ(1u, pass_list.size());
@@ -559,8 +560,7 @@ TEST_F(SandwichTest, SuccessfulSandwichOverlay) {
// Check for potential candidates.
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
-
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(2U, candidate_list.size());
@@ -615,7 +615,7 @@ TEST_F(SandwichTest, MultiQuadOverlay) {
OverlayCandidateList candidate_list;
EXPECT_EQ(4U, main_pass->quad_list.size());
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(3U, candidate_list.size());
@@ -647,6 +647,39 @@ TEST_F(SandwichTest, MultiQuadOverlay) {
DCHECK(covered_region == overlay_region);
}
+TEST_F(SandwichTest, DamageRect) {
+ scoped_ptr<RenderPass> pass = CreateRenderPass();
+ CreateFullscreenCandidateQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(),
+ pass.get());
+
+ damage_rect_ = kOverlayRect;
+
+ // Add something behind it.
+ CreateFullscreenOpaqueQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get());
+ CreateFullscreenOpaqueQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get());
+
+ RenderPassList pass_list;
+ pass_list.push_back(pass.Pass());
+
+ // Check for potential candidates.
+ OverlayCandidateList candidate_list;
+
+ // Primary plane.
+ OverlayCandidate output_surface_plane;
+ output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
+ output_surface_plane.quad_rect_in_target_space = kOverlayRect;
+ output_surface_plane.use_output_surface_for_resource = true;
+ output_surface_plane.overlay_handled = true;
+ candidate_list.push_back(output_surface_plane);
+
+ overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
+ &candidate_list, &damage_rect_);
+ DCHECK(!damage_rect_.IsEmpty());
+}
+
TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) {
scoped_ptr<RenderPass> pass = CreateRenderPass();
TextureDrawQuad* original_quad =
@@ -667,7 +700,7 @@ TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) {
// Check for potential candidates.
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
@@ -686,6 +719,38 @@ TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) {
EXPECT_EQ(original_resource_id, candidate_list.back().resource_id);
}
+TEST_F(SingleOverlayOnTopTest, DamageRect) {
+ scoped_ptr<RenderPass> pass = CreateRenderPass();
+ CreateFullscreenCandidateQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(),
+ pass.get());
+ damage_rect_ = kOverlayRect;
+
+ // Add something behind it.
+ CreateFullscreenOpaqueQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get());
+ CreateFullscreenOpaqueQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get());
+
+ RenderPassList pass_list;
+ pass_list.push_back(pass.Pass());
+
+ // Check for potential candidates.
+ OverlayCandidateList candidate_list;
+
+ // Primary plane.
+ OverlayCandidate output_surface_plane;
+ output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
+ output_surface_plane.quad_rect_in_target_space = kOverlayRect;
+ output_surface_plane.use_output_surface_for_resource = true;
+ output_surface_plane.overlay_handled = true;
+ candidate_list.push_back(output_surface_plane);
+
+ overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
+ &candidate_list, &damage_rect_);
+ DCHECK(damage_rect_.IsEmpty());
+}
+
TEST_F(SingleOverlayOnTopTest, NoCandidates) {
scoped_ptr<RenderPass> pass = CreateRenderPass();
CreateFullscreenOpaqueQuad(resource_provider_.get(),
@@ -701,7 +766,7 @@ TEST_F(SingleOverlayOnTopTest, NoCandidates) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(0U, candidate_list.size());
// There should be nothing new here.
CompareRenderPassLists(pass_list, original_pass_list);
@@ -726,7 +791,7 @@ TEST_F(SingleOverlayOnTopTest, OccludedCandidates) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(0U, candidate_list.size());
// There should be nothing new here.
CompareRenderPassLists(pass_list, original_pass_list);
@@ -756,7 +821,7 @@ TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) {
// Check for potential candidates.
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, candidate_list.size());
// This should be the same.
@@ -775,7 +840,7 @@ TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -792,7 +857,7 @@ TEST_F(SingleOverlayOnTopTest, RejectBlending) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -809,7 +874,7 @@ TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -825,7 +890,7 @@ TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -841,7 +906,7 @@ TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -858,7 +923,7 @@ TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -875,7 +940,7 @@ TEST_F(SingleOverlayOnTopTest, AllowClipped) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -894,7 +959,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL,
@@ -915,7 +980,7 @@ TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL,
@@ -935,7 +1000,7 @@ TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -953,7 +1018,7 @@ TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform);
@@ -972,7 +1037,7 @@ TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform);
@@ -991,7 +1056,7 @@ TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform);
@@ -1015,7 +1080,7 @@ TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -1039,7 +1104,7 @@ TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -1061,7 +1126,7 @@ TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -1085,7 +1150,7 @@ TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -1107,7 +1172,7 @@ TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -1122,7 +1187,7 @@ TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(0U, candidate_list.size());
}
@@ -1137,7 +1202,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -1152,7 +1217,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -1167,7 +1232,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -1182,7 +1247,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
ASSERT_EQ(1U, pass_list.size());
EXPECT_EQ(1U, candidate_list.size());
}
@@ -1200,7 +1265,7 @@ TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
EXPECT_EQ(-1, candidate_list[0].plane_z_order);
@@ -1223,7 +1288,7 @@ TEST_F(UnderlayTest, AllowOnTop) {
OverlayCandidateList candidate_list;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidate_list);
+ &candidate_list, &damage_rect_);
EXPECT_EQ(1U, pass_list.size());
ASSERT_EQ(1U, candidate_list.size());
EXPECT_EQ(-1, candidate_list[0].plane_z_order);
@@ -1231,6 +1296,39 @@ TEST_F(UnderlayTest, AllowOnTop) {
EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR);
}
+TEST_F(UnderlayTest, DamageRect) {
+ scoped_ptr<RenderPass> pass = CreateRenderPass();
+ CreateFullscreenCandidateQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(),
+ pass.get());
+
+ damage_rect_ = kOverlayRect;
+
+ // Add something behind it.
+ CreateFullscreenOpaqueQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get());
+ CreateFullscreenOpaqueQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get());
+
+ RenderPassList pass_list;
+ pass_list.push_back(pass.Pass());
+
+ // Check for potential candidates.
+ OverlayCandidateList candidate_list;
+
+ // Primary plane.
+ OverlayCandidate output_surface_plane;
+ output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
+ output_surface_plane.quad_rect_in_target_space = kOverlayRect;
+ output_surface_plane.use_output_surface_for_resource = true;
+ output_surface_plane.overlay_handled = true;
+ candidate_list.push_back(output_surface_plane);
+
+ overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
+ &candidate_list, &damage_rect_);
+ DCHECK(!damage_rect_.IsEmpty());
+}
+
TEST_F(AllOrNothingOverlayTest, SuccessfulOverlappingOverlays) {
scoped_ptr<RenderPass> pass = CreateRenderPass();
@@ -1246,7 +1344,7 @@ TEST_F(AllOrNothingOverlayTest, SuccessfulOverlappingOverlays) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidates;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidates);
+ &candidates, &damage_rect_);
// Both quads should become overlays.
EXPECT_EQ(2u, candidates.size());
@@ -1277,13 +1375,46 @@ TEST_F(AllOrNothingOverlayTest, RejectQuadWithTransform) {
pass_list.push_back(pass.Pass());
OverlayCandidateList candidates;
overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
- &candidates);
+ &candidates, &damage_rect_);
// No quads should become overlays.
EXPECT_EQ(0u, candidates.size());
EXPECT_EQ(2u, pass_list.back()->quad_list.size());
}
+TEST_F(AllOrNothingOverlayTest, DamageRect) {
+ scoped_ptr<RenderPass> pass = CreateRenderPass();
+ CreateFullscreenCandidateQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(),
+ pass.get());
+
+ damage_rect_ = kOverlayRect;
+
+ // Add something behind it.
+ CreateFullscreenOpaqueQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get());
+ CreateFullscreenOpaqueQuad(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get());
+
+ RenderPassList pass_list;
+ pass_list.push_back(pass.Pass());
+
+ // Check for potential candidates.
+ OverlayCandidateList candidate_list;
+
+ // Primary plane.
+ OverlayCandidate output_surface_plane;
+ output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
+ output_surface_plane.quad_rect_in_target_space = kOverlayRect;
+ output_surface_plane.use_output_surface_for_resource = true;
+ output_surface_plane.overlay_handled = true;
+ candidate_list.push_back(output_surface_plane);
+
+ overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list,
+ &candidate_list, &damage_rect_);
+ DCHECK(!damage_rect_.IsEmpty());
+}
+
class OverlayInfoRendererGL : public GLRenderer {
public:
OverlayInfoRendererGL(RendererClient* client,
@@ -1314,7 +1445,7 @@ class OverlayInfoRendererGL : public GLRenderer {
}
ASSERT_EQ(2U, frame->overlay_list.size());
- EXPECT_NE(0U, frame->overlay_list.back().resource_id);
+ EXPECT_GE(frame->overlay_list.back().resource_id, 0U);
}
void set_expect_overlays(bool expect_overlays) {
@@ -1385,10 +1516,9 @@ TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) {
scoped_ptr<RenderPass> pass = CreateRenderPass();
- CreateFullscreenCandidateQuad(resource_provider_.get(),
- pass->shared_quad_state_list.back(),
- pass.get());
-
+ CreateCandidateQuadAt(resource_provider_.get(),
+ pass->shared_quad_state_list.back(), pass.get(),
+ kOverlayBottomRightRect);
CreateFullscreenOpaqueQuad(resource_provider_.get(),
pass->shared_quad_state_list.back(), pass.get());
CreateFullscreenOpaqueQuad(resource_provider_.get(),
@@ -1404,9 +1534,9 @@ TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) {
Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
.Times(1);
- EXPECT_CALL(scheduler_,
- Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect,
- BoundingRect(kUVTopLeft, kUVBottomRight)))
+ EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _,
+ kOverlayBottomRightRect,
+ BoundingRect(kUVTopLeft, kUVBottomRight)))
.Times(1);
renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
« no previous file with comments | « cc/output/overlay_strategy_underlay.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698