| Index: cc/output/gl_renderer_unittest.cc
|
| diff --git a/cc/output/gl_renderer_unittest.cc b/cc/output/gl_renderer_unittest.cc
|
| index a72f2dc4d49aa7774df4f75dc0a19e2220e6023b..243c76ab1a26a7bce4c0cd184b88e1344cbcd326 100644
|
| --- a/cc/output/gl_renderer_unittest.cc
|
| +++ b/cc/output/gl_renderer_unittest.cc
|
| @@ -64,6 +64,16 @@ class GLRendererTest : public testing::Test {
|
| RenderPass* root_render_pass() {
|
| return render_passes_in_draw_order_.back().get();
|
| }
|
| + void DrawFrame(Renderer* renderer, const gfx::Rect& viewport_rect) {
|
| + renderer->DrawFrame(&render_passes_in_draw_order_, 1.f, gfx::ColorProfile(),
|
| + viewport_rect, viewport_rect, false);
|
| + }
|
| + void DrawFrame(Renderer* renderer,
|
| + const gfx::Rect& viewport_rect,
|
| + const gfx::Rect& clip_rect) {
|
| + renderer->DrawFrame(&render_passes_in_draw_order_, 1.f, gfx::ColorProfile(),
|
| + viewport_rect, clip_rect, false);
|
| + }
|
|
|
| RenderPassList render_passes_in_draw_order_;
|
| };
|
| @@ -540,11 +550,7 @@ TEST_F(GLRendererWithDefaultHarnessTest,
|
| gfx::Transform());
|
|
|
| renderer_->SetVisible(true);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| EXPECT_FALSE(renderer_->IsBackbufferDiscarded());
|
|
|
| SwapBuffers();
|
| @@ -562,11 +568,7 @@ TEST_F(GLRendererWithDefaultHarnessTest, ExternalStencil) {
|
| viewport_rect, gfx::Transform());
|
| root_pass->has_transparent_background = false;
|
|
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| EXPECT_TRUE(renderer_->stencil_enabled());
|
| }
|
|
|
| @@ -773,11 +775,7 @@ TEST_F(GLRendererTest, OpaqueBackground) {
|
| #else
|
| EXPECT_CALL(*context, clear(_)).Times(1);
|
| #endif
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect);
|
| Mock::VerifyAndClearExpectations(context);
|
| }
|
|
|
| @@ -811,11 +809,7 @@ TEST_F(GLRendererTest, TransparentBackground) {
|
|
|
| EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1);
|
| EXPECT_CALL(*context, clear(_)).Times(1);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect);
|
|
|
| Mock::VerifyAndClearExpectations(context);
|
| }
|
| @@ -852,11 +846,7 @@ TEST_F(GLRendererTest, OffscreenOutputSurface) {
|
| .With(Args<2, 1>(ElementsAre(GL_COLOR_ATTACHMENT0)))
|
| .Times(1);
|
| EXPECT_CALL(*context, clear(_)).Times(AnyNumber());
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect);
|
| Mock::VerifyAndClearExpectations(context);
|
| }
|
|
|
| @@ -953,11 +943,7 @@ TEST_F(GLRendererTest, ActiveTextureState) {
|
| }
|
|
|
| gfx::Rect viewport_rect(100, 100);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect);
|
| Mock::VerifyAndClearExpectations(context);
|
| }
|
|
|
| @@ -1030,11 +1016,7 @@ TEST_F(GLRendererTest, ShouldClearRootRenderPass) {
|
| first_render_pass);
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect);
|
|
|
| // In multiple render passes all but the root pass should clear the
|
| // framebuffer.
|
| @@ -1110,11 +1092,7 @@ TEST_F(GLRendererTest, ScissorTestWhenClearing) {
|
| AddRenderPassQuad(child_pass, grand_child_pass);
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect);
|
| }
|
|
|
| class DiscardCheckingContext : public TestWebGraphicsContext3D {
|
| @@ -1148,6 +1126,7 @@ class NonReshapableOutputSurface : public FakeOutputSurface {
|
| }
|
| void Reshape(const gfx::Size& size,
|
| float scale_factor,
|
| + const gfx::ColorProfile& color_profile,
|
| bool has_alpha) override {}
|
| void set_fixed_size(const gfx::Size& size) { surface_size_ = size; }
|
| };
|
| @@ -1191,11 +1170,7 @@ TEST_F(GLRendererTest, NoDiscardOnPartialUpdates) {
|
| root_pass->damage_rect = gfx::Rect(2, 2, 3, 3);
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - clip_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect, clip_rect);
|
| EXPECT_EQ(0, context->discarded());
|
| context->reset();
|
| }
|
| @@ -1209,11 +1184,7 @@ TEST_F(GLRendererTest, NoDiscardOnPartialUpdates) {
|
| root_pass->damage_rect = root_pass->output_rect;
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - clip_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect, clip_rect);
|
| EXPECT_EQ(1, context->discarded());
|
| context->reset();
|
| }
|
| @@ -1229,11 +1200,7 @@ TEST_F(GLRendererTest, NoDiscardOnPartialUpdates) {
|
| root_pass->has_transparent_background = false;
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - clip_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect, clip_rect);
|
| EXPECT_EQ(0, context->discarded());
|
| context->reset();
|
| output_surface->set_has_external_stencil_test(false);
|
| @@ -1249,11 +1216,7 @@ TEST_F(GLRendererTest, NoDiscardOnPartialUpdates) {
|
| root_pass->damage_rect = root_pass->output_rect;
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - clip_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect, clip_rect);
|
| EXPECT_EQ(0, context->discarded());
|
| context->reset();
|
| }
|
| @@ -1268,11 +1231,7 @@ TEST_F(GLRendererTest, NoDiscardOnPartialUpdates) {
|
| root_pass->damage_rect = root_pass->output_rect;
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - clip_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect, clip_rect);
|
| EXPECT_EQ(0, context->discarded());
|
| context->reset();
|
| }
|
| @@ -1288,11 +1247,7 @@ TEST_F(GLRendererTest, NoDiscardOnPartialUpdates) {
|
| root_pass->damage_rect = root_pass->output_rect;
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - clip_rect,
|
| - false);
|
| + DrawFrame(&renderer, viewport_rect, clip_rect);
|
| EXPECT_EQ(0, context->discarded());
|
| context->reset();
|
| }
|
| @@ -1348,11 +1303,7 @@ TEST_F(GLRendererTest, ScissorAndViewportWithinNonreshapableSurface) {
|
| AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN);
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - device_viewport_rect,
|
| - device_viewport_rect,
|
| - false);
|
| + DrawFrame(&renderer, device_viewport_rect);
|
| }
|
|
|
| TEST_F(GLRendererTest, DrawFramePreservesFramebuffer) {
|
| @@ -1395,8 +1346,7 @@ TEST_F(GLRendererTest, DrawFramePreservesFramebuffer) {
|
| output_surface->set_framebuffer(fbo, GL_RGB);
|
|
|
| renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, device_viewport_rect,
|
| - device_viewport_rect, false);
|
| + DrawFrame(&renderer, device_viewport_rect);
|
|
|
| int bound_fbo;
|
| gl->GetIntegerv(GL_FRAMEBUFFER_BINDING, &bound_fbo);
|
| @@ -1467,11 +1417,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, blend_mode);
|
|
|
| // RenderPassColorMatrixProgram
|
| @@ -1492,11 +1438,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| TestRenderPassColorMatrixProgram(TEX_COORD_PRECISION_MEDIUM, blend_mode);
|
|
|
| // RenderPassMaskProgram
|
| @@ -1521,11 +1463,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| TestRenderPassMaskProgram(TEX_COORD_PRECISION_MEDIUM, SAMPLER_TYPE_2D,
|
| blend_mode);
|
|
|
| @@ -1547,11 +1485,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| TestRenderPassMaskColorMatrixProgram(TEX_COORD_PRECISION_MEDIUM,
|
| SAMPLER_TYPE_2D, blend_mode);
|
|
|
| @@ -1577,11 +1511,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| TestRenderPassProgramAA(TEX_COORD_PRECISION_MEDIUM, blend_mode);
|
|
|
| // RenderPassColorMatrixProgramAA
|
| @@ -1602,11 +1532,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| TestRenderPassColorMatrixProgramAA(TEX_COORD_PRECISION_MEDIUM, blend_mode);
|
|
|
| // RenderPassMaskProgramAA
|
| @@ -1631,11 +1557,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| TestRenderPassMaskProgramAA(TEX_COORD_PRECISION_MEDIUM, SAMPLER_TYPE_2D,
|
| blend_mode);
|
|
|
| @@ -1657,11 +1579,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
| TestRenderPassMaskColorMatrixProgramAA(TEX_COORD_PRECISION_MEDIUM,
|
| SAMPLER_TYPE_2D, blend_mode);
|
| }
|
| @@ -1708,11 +1626,7 @@ TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) {
|
| SkXfermode::kSrcOver_Mode);
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
|
|
| // If use_aa incorrectly ignores clipping, it will use the
|
| // RenderPassProgramAA shader instead of the RenderPassProgram.
|
| @@ -1738,11 +1652,7 @@ TEST_F(GLRendererShaderTest, DrawSolidColorShader) {
|
| pixel_aligned_transform_causing_aa);
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - 1.f,
|
| - viewport_rect,
|
| - viewport_rect,
|
| - false);
|
| + DrawFrame(renderer_.get(), viewport_rect);
|
|
|
| TestSolidColorProgramAA();
|
| }
|
| @@ -1776,8 +1686,11 @@ class MockOutputSurface : public OutputSurface {
|
|
|
| MOCK_METHOD0(EnsureBackbuffer, void());
|
| MOCK_METHOD0(DiscardBackbuffer, void());
|
| - MOCK_METHOD3(Reshape,
|
| - void(const gfx::Size& size, float scale_factor, bool has_alpha));
|
| + MOCK_METHOD4(Reshape,
|
| + void(const gfx::Size& size,
|
| + float scale_factor,
|
| + const gfx::ColorProfile& color_profile,
|
| + bool has_alpha));
|
| MOCK_METHOD0(BindFramebuffer, void());
|
| MOCK_METHOD0(GetFramebufferCopyTextureFormat, GLenum());
|
| MOCK_METHOD1(SwapBuffers_, void(CompositorFrame& frame));
|
| @@ -1815,7 +1728,7 @@ class MockOutputSurfaceTest : public GLRendererTest {
|
| EXPECT_CALL(output_surface_, EnsureBackbuffer()).WillRepeatedly(Return());
|
|
|
| EXPECT_CALL(output_surface_, Reshape(device_viewport_rect.size(),
|
| - device_scale_factor, transparent))
|
| + device_scale_factor, _, transparent))
|
| .Times(1);
|
|
|
| EXPECT_CALL(output_surface_, BindFramebuffer()).Times(1);
|
| @@ -1824,11 +1737,9 @@ class MockOutputSurfaceTest : public GLRendererTest {
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| render_passes_in_draw_order_);
|
| - renderer_->DrawFrame(&render_passes_in_draw_order_,
|
| - device_scale_factor,
|
| - device_viewport_rect,
|
| - device_viewport_rect,
|
| - false);
|
| + renderer_->DrawFrame(&render_passes_in_draw_order_, device_scale_factor,
|
| + gfx::ColorProfile(), device_viewport_rect,
|
| + device_viewport_rect, false);
|
| }
|
|
|
| OutputSurfaceMockContext* Context() {
|
| @@ -1995,8 +1906,7 @@ TEST_F(GLRendererTest, DontOverlayWithCopyRequests) {
|
| // list because the render pass is cleaned up by DrawFrame.
|
| EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0);
|
| EXPECT_CALL(*validator, AllowCALayerOverlays()).Times(0);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect,
|
| - viewport_rect, false);
|
| + DrawFrame(&renderer, viewport_rect);
|
| Mock::VerifyAndClearExpectations(processor->strategy_);
|
| Mock::VerifyAndClearExpectations(validator.get());
|
|
|
| @@ -2015,8 +1925,7 @@ TEST_F(GLRendererTest, DontOverlayWithCopyRequests) {
|
| .Times(1)
|
| .WillOnce(::testing::Return(false));
|
| EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(1);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect,
|
| - viewport_rect, false);
|
| + DrawFrame(&renderer, viewport_rect);
|
|
|
| // If the CALayerOverlay path is taken, then the ordinary overlay path should
|
| // not be called.
|
| @@ -2034,8 +1943,7 @@ TEST_F(GLRendererTest, DontOverlayWithCopyRequests) {
|
| .Times(1)
|
| .WillOnce(::testing::Return(true));
|
| EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0);
|
| - renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect,
|
| - viewport_rect, false);
|
| + DrawFrame(&renderer, viewport_rect);
|
| }
|
|
|
| class SingleOverlayOnTopProcessor : public OverlayProcessor {
|
| @@ -2157,8 +2065,7 @@ TEST_F(GLRendererTest, OverlaySyncTokensAreProcessed) {
|
| Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, viewport_rect,
|
| BoundingRect(uv_top_left, uv_bottom_right))).Times(1);
|
|
|
| - renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect,
|
| - viewport_rect, false);
|
| + DrawFrame(&renderer, viewport_rect);
|
| }
|
|
|
| } // namespace
|
|
|