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