| Index: cc/output/overlay_unittest.cc
|
| diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc
|
| index bfdfa9cd45b2f8b5a89bd339981ea083f518e87c..0b9a678361fd15cc13c5d7154fe69a3a6a84d019 100644
|
| --- a/cc/output/overlay_unittest.cc
|
| +++ b/cc/output/overlay_unittest.cc
|
| @@ -66,9 +66,13 @@ class SingleOverlayValidator : public OverlayCandidateValidator {
|
| new OverlayStrategyCommon(this, new OverlayStrategyUnderlay)));
|
| }
|
| void CheckOverlaySupport(OverlayCandidateList* surfaces) override {
|
| - ASSERT_EQ(2U, surfaces->size());
|
| + // We may have 1 or 2 surfaces depending on whether this ran through the
|
| + // full renderer and picked up the output surface, or not.
|
| + ASSERT_LE(1U, surfaces->size());
|
| + ASSERT_GE(2U, surfaces->size());
|
|
|
| OverlayCandidate& candidate = surfaces->back();
|
| + EXPECT_TRUE(!candidate.use_output_surface_for_resource);
|
| if (candidate.display_rect.width() == 64) {
|
| EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect);
|
| } else {
|
| @@ -136,6 +140,7 @@ class OverlayOutputSurface : public OutputSurface {
|
| : OutputSurface(context_provider) {
|
| surface_size_ = kDisplaySize;
|
| device_scale_factor_ = 1;
|
| + is_displayed_as_overlay_plane_ = true;
|
| }
|
|
|
| void SetScaleFactor(float scale_factor) {
|
| @@ -153,8 +158,17 @@ class OverlayOutputSurface : public OutputSurface {
|
| return overlay_candidate_validator_.get();
|
| }
|
|
|
| + bool IsDisplayedAsOverlayPlane() const override {
|
| + return is_displayed_as_overlay_plane_;
|
| + }
|
| + unsigned GetOverlayTextureId() const override { return 10000; }
|
| + void set_is_displayed_as_overlay_plane(bool value) {
|
| + is_displayed_as_overlay_plane_ = value;
|
| + }
|
| +
|
| private:
|
| scoped_ptr<OverlayCandidateValidator> overlay_candidate_validator_;
|
| + bool is_displayed_as_overlay_plane_;
|
| };
|
|
|
| void OverlayOutputSurface::SwapBuffers(CompositorFrame* frame) {
|
| @@ -392,7 +406,7 @@ TEST_F(SandwichTest, SuccessfulSingleOverlay) {
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
|
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| + ASSERT_EQ(1U, candidate_list.size());
|
|
|
| RenderPass* main_pass = pass_list.back();
|
| // Check that the quad is gone.
|
| @@ -434,10 +448,10 @@ TEST_F(SandwichTest, CroppedSingleOverlay) {
|
|
|
| // Ensure that the display and uv rects have cropping applied to them.
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| - EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
|
| - EXPECT_EQ(gfx::RectF(0.f, 32.f, 64.f, 64.f), candidate_list[1].display_rect);
|
| - EXPECT_EQ(gfx::RectF(0.f, 0.25f, 0.5f, 0.5f), candidate_list[1].uv_rect);
|
| + ASSERT_EQ(1U, candidate_list.size());
|
| + EXPECT_EQ(candidate_id, candidate_list[0].resource_id);
|
| + EXPECT_EQ(gfx::RectF(0.f, 32.f, 64.f, 64.f), candidate_list[0].display_rect);
|
| + EXPECT_EQ(gfx::RectF(0.f, 0.25f, 0.5f, 0.5f), candidate_list[0].uv_rect);
|
| }
|
|
|
| TEST_F(SandwichTest, SuccessfulTwoOverlays) {
|
| @@ -462,10 +476,10 @@ TEST_F(SandwichTest, SuccessfulTwoOverlays) {
|
|
|
| // Both candidates should become overlays.
|
| EXPECT_EQ(1u, pass_list.size());
|
| - EXPECT_EQ(3u, candidate_list.size());
|
| - EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[1].display_rect);
|
| + EXPECT_EQ(2u, candidate_list.size());
|
| + EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect);
|
| EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect),
|
| - candidate_list[2].display_rect);
|
| + candidate_list[1].display_rect);
|
|
|
| // The overlay quads should be gone.
|
| const QuadList& quad_list = pass_list.back()->quad_list;
|
| @@ -495,8 +509,8 @@ TEST_F(SandwichTest, OverlappingOverlays) {
|
|
|
| // Only one of the candidates should become an overlay.
|
| EXPECT_EQ(1u, pass_list.size());
|
| - EXPECT_EQ(2u, candidate_list.size());
|
| - EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[1].display_rect);
|
| + EXPECT_EQ(1u, candidate_list.size());
|
| + EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect);
|
|
|
| // One of the overlay quads should be gone.
|
| const QuadList& quad_list = pass_list.back()->quad_list;
|
| @@ -528,7 +542,7 @@ TEST_F(SandwichTest, SuccessfulSandwichOverlay) {
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
|
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(3U, candidate_list.size());
|
| + ASSERT_EQ(2U, candidate_list.size());
|
|
|
| RenderPass* main_pass = pass_list.back();
|
| // Check that the quad is gone.
|
| @@ -539,13 +553,12 @@ TEST_F(SandwichTest, SuccessfulSandwichOverlay) {
|
| EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material);
|
| }
|
|
|
| - EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource);
|
| - EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
|
| - EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[1].display_rect);
|
| - EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
|
| - EXPECT_EQ(gfx::RectF(32.f, 32.f, 16.f, 16.f), candidate_list[2].display_rect);
|
| + EXPECT_EQ(candidate_id, candidate_list[0].resource_id);
|
| + EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[0].display_rect);
|
| + EXPECT_TRUE(candidate_list[1].use_output_surface_for_resource);
|
| + EXPECT_EQ(gfx::RectF(32.f, 32.f, 16.f, 16.f), candidate_list[1].display_rect);
|
| EXPECT_EQ(gfx::RectF(32.f / 256.f, 32.f / 256.f, 16.f / 256.f, 16.f / 256.f),
|
| - candidate_list[2].uv_rect);
|
| + candidate_list[1].uv_rect);
|
| }
|
|
|
| TEST_F(SandwichTest, MultiQuadOverlay) {
|
| @@ -583,7 +596,7 @@ TEST_F(SandwichTest, MultiQuadOverlay) {
|
| EXPECT_EQ(4U, main_pass->quad_list.size());
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(4U, candidate_list.size());
|
| + ASSERT_EQ(3U, candidate_list.size());
|
|
|
| // Check that the candidate quad is gone and that we now have two transparent
|
| // quads for the same region that was covered on the overlay.
|
| @@ -603,14 +616,13 @@ TEST_F(SandwichTest, MultiQuadOverlay) {
|
| DCHECK(covered_region == transparent_quad_region);
|
|
|
| // Check that overlays cover the same region that the quads covered.
|
| - EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource);
|
| - EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
|
| - EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[1].display_rect);
|
| + EXPECT_EQ(candidate_id, candidate_list[0].resource_id);
|
| + EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[0].display_rect);
|
| + EXPECT_TRUE(candidate_list[1].use_output_surface_for_resource);
|
| EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
|
| - EXPECT_TRUE(candidate_list[3].use_output_surface_for_resource);
|
| Region overlay_region;
|
| + overlay_region.Union(gfx::ToEnclosingRect(candidate_list[1].display_rect));
|
| overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect));
|
| - overlay_region.Union(gfx::ToEnclosingRect(candidate_list[3].display_rect));
|
| DCHECK(covered_region == overlay_region);
|
| }
|
|
|
| @@ -636,7 +648,7 @@ TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) {
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
|
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| + ASSERT_EQ(1U, candidate_list.size());
|
|
|
| RenderPass* main_pass = pass_list.back();
|
| // Check that the quad is gone.
|
| @@ -720,7 +732,7 @@ TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) {
|
| // Check for potential candidates.
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
|
|
| // This should be the same.
|
| ASSERT_EQ(2U, pass_list.size());
|
| @@ -833,7 +845,7 @@ TEST_F(SingleOverlayOnTopTest, AllowClipped) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) {
|
| @@ -851,7 +863,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| + ASSERT_EQ(1U, candidate_list.size());
|
| EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL,
|
| candidate_list.back().transform);
|
| }
|
| @@ -871,7 +883,7 @@ TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| + ASSERT_EQ(1U, candidate_list.size());
|
| EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL,
|
| candidate_list.back().transform);
|
| }
|
| @@ -890,7 +902,7 @@ TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) {
|
| @@ -907,7 +919,7 @@ TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| + ASSERT_EQ(1U, candidate_list.size());
|
| EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform);
|
| }
|
|
|
| @@ -925,7 +937,7 @@ TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| + ASSERT_EQ(1U, candidate_list.size());
|
| EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform);
|
| }
|
|
|
| @@ -943,7 +955,7 @@ TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| + ASSERT_EQ(1U, candidate_list.size());
|
| EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform);
|
| }
|
|
|
| @@ -966,7 +978,7 @@ TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| EXPECT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
|
| @@ -989,7 +1001,7 @@ TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| EXPECT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
|
| @@ -1010,7 +1022,7 @@ TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| EXPECT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
|
| @@ -1082,7 +1094,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) {
|
| @@ -1096,7 +1108,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) {
|
| @@ -1110,7 +1122,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) {
|
| @@ -1124,7 +1136,7 @@ TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(2U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| }
|
|
|
| TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) {
|
| @@ -1141,9 +1153,8 @@ TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| EXPECT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| - EXPECT_EQ(0, candidate_list[0].plane_z_order);
|
| - EXPECT_EQ(-1, candidate_list[1].plane_z_order);
|
| + ASSERT_EQ(1U, candidate_list.size());
|
| + EXPECT_EQ(-1, candidate_list[0].plane_z_order);
|
| EXPECT_EQ(2U, pass_list[0]->quad_list.size());
|
| // The overlay quad should have changed to a SOLID_COLOR quad.
|
| EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR);
|
| @@ -1164,9 +1175,8 @@ TEST_F(UnderlayTest, AllowOnTop) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| EXPECT_EQ(1U, pass_list.size());
|
| - ASSERT_EQ(2U, candidate_list.size());
|
| - EXPECT_EQ(0, candidate_list[0].plane_z_order);
|
| - EXPECT_EQ(-1, candidate_list[1].plane_z_order);
|
| + ASSERT_EQ(1U, candidate_list.size());
|
| + EXPECT_EQ(-1, candidate_list[0].plane_z_order);
|
| // The overlay quad should have changed to a SOLID_COLOR quad.
|
| EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR);
|
| }
|
| @@ -1288,11 +1298,13 @@ TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) {
|
| // so only draw 2 quads.
|
| EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2);
|
| EXPECT_CALL(scheduler_,
|
| - Schedule(1,
|
| - gfx::OVERLAY_TRANSFORM_NONE,
|
| - _,
|
| - kOverlayRect,
|
| - BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1);
|
| + 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)))
|
| + .Times(1);
|
| renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
|
|
|
| SwapBuffers();
|
| @@ -1325,8 +1337,13 @@ TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) {
|
| // Expect to be replaced with transparent hole quad and placed in underlay.
|
| EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
|
| EXPECT_CALL(scheduler_,
|
| + 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))).Times(1);
|
| + BoundingRect(kUVTopLeft, kUVBottomRight)))
|
| + .Times(1);
|
| renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
|
|
|
| SwapBuffers();
|
| @@ -1355,13 +1372,12 @@ TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) {
|
| RenderPassList pass_list;
|
| pass_list.push_back(pass.Pass());
|
|
|
| - // Should see no overlays.
|
| + // Should not see the primary surface's overlay.
|
| + output_surface_->set_is_displayed_as_overlay_plane(false);
|
| EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
|
| EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
|
| renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
|
| -
|
| SwapBuffers();
|
| -
|
| Mock::VerifyAndClearExpectations(renderer_.get());
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
| }
|
| @@ -1381,6 +1397,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) {
|
| DirectRenderer::DrawingFrame frame1;
|
| frame1.render_passes_in_draw_order = &pass_list;
|
| frame1.overlay_list.resize(2);
|
| + frame1.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay1 = frame1.overlay_list.back();
|
| overlay1.resource_id = resource1;
|
| overlay1.plane_z_order = 1;
|
| @@ -1388,19 +1405,21 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) {
|
| DirectRenderer::DrawingFrame frame2;
|
| frame2.render_passes_in_draw_order = &pass_list;
|
| frame2.overlay_list.resize(2);
|
| + frame2.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay2 = frame2.overlay_list.back();
|
| overlay2.resource_id = resource2;
|
| overlay2.plane_z_order = 1;
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| + printf("About to finish, %d %d\n", resource1, resource2);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
|
| SwapBuffers();
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame2);
|
| renderer_->FinishDrawingFrame(&frame2);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1409,7 +1428,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) {
|
| EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1433,14 +1452,14 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) {
|
|
|
| // Use the same buffer twice.
|
| renderer_->set_expect_overlays(true);
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| SwapBuffers();
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1475,6 +1494,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| DirectRenderer::DrawingFrame frame1;
|
| frame1.render_passes_in_draw_order = &pass_list;
|
| frame1.overlay_list.resize(2);
|
| + frame1.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay1 = frame1.overlay_list.back();
|
| overlay1.resource_id = resource1;
|
| overlay1.plane_z_order = 1;
|
| @@ -1482,6 +1502,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| DirectRenderer::DrawingFrame frame2;
|
| frame2.render_passes_in_draw_order = &pass_list;
|
| frame2.overlay_list.resize(2);
|
| + frame2.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay2 = frame2.overlay_list.back();
|
| overlay2.resource_id = resource2;
|
| overlay2.plane_z_order = 1;
|
| @@ -1489,11 +1510,12 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| DirectRenderer::DrawingFrame frame3;
|
| frame3.render_passes_in_draw_order = &pass_list;
|
| frame3.overlay_list.resize(2);
|
| + frame3.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay3 = frame3.overlay_list.back();
|
| overlay3.resource_id = resource3;
|
| overlay3.plane_z_order = 1;
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1501,7 +1523,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| SwapBuffers();
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame2);
|
| renderer_->FinishDrawingFrame(&frame2);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1511,7 +1533,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame3);
|
| renderer_->FinishDrawingFrame(&frame3);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1541,14 +1563,14 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
|
|
| // Use the same buffer twice.
|
| renderer_->set_expect_overlays(true);
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| SwapBuffers();
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
|
|