OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/gl_renderer.h" | 5 #include "cc/gl_renderer.h" |
6 | 6 |
7 #include "cc/compositor_frame_metadata.h" | 7 #include "cc/compositor_frame_metadata.h" |
8 #include "cc/draw_quad.h" | 8 #include "cc/draw_quad.h" |
9 #include "cc/prioritized_resource_manager.h" | 9 #include "cc/prioritized_resource_manager.h" |
10 #include "cc/resource_provider.h" | 10 #include "cc/resource_provider.h" |
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 .Times(AnyNumber()) | 629 .Times(AnyNumber()) |
630 .After(firstRenderPass); | 630 .After(firstRenderPass); |
631 | 631 |
632 renderer.decideRenderPassAllocationsForFrame(mockClient.renderPassesInDrawOr
der()); | 632 renderer.decideRenderPassAllocationsForFrame(mockClient.renderPassesInDrawOr
der()); |
633 renderer.drawFrame(mockClient.renderPassesInDrawOrder()); | 633 renderer.drawFrame(mockClient.renderPassesInDrawOrder()); |
634 | 634 |
635 // In multiple render passes all but the root pass should clear the framebuf
fer. | 635 // In multiple render passes all but the root pass should clear the framebuf
fer. |
636 Mock::VerifyAndClearExpectations(&mockContext); | 636 Mock::VerifyAndClearExpectations(&mockContext); |
637 } | 637 } |
638 | 638 |
| 639 class ScissorTestOnClearCheckingContext : public FakeWebGraphicsContext3D { |
| 640 public: |
| 641 ScissorTestOnClearCheckingContext() : m_scissorEnabled(false) { } |
| 642 |
| 643 virtual void clear(WGC3Dbitfield) |
| 644 { |
| 645 EXPECT_FALSE(m_scissorEnabled); |
| 646 } |
| 647 |
| 648 virtual void enable(WGC3Denum cap) |
| 649 { |
| 650 if (cap == GL_SCISSOR_TEST) |
| 651 m_scissorEnabled = true; |
| 652 } |
| 653 |
| 654 virtual void disable(WGC3Denum cap) |
| 655 { |
| 656 if (cap == GL_SCISSOR_TEST) |
| 657 m_scissorEnabled = false; |
| 658 } |
| 659 |
| 660 private: |
| 661 bool m_scissorEnabled; |
| 662 }; |
| 663 |
| 664 TEST(GLRendererTest2, scissorTestWhenClearing) { |
| 665 FakeRendererClient mockClient; |
| 666 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p
tr<WebKit::WebGraphicsContext3D>(new ScissorTestOnClearCheckingContext))); |
| 667 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu
tSurface.get())); |
| 668 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g
et()); |
| 669 EXPECT_TRUE(renderer.initialize()); |
| 670 EXPECT_FALSE(renderer.capabilities().usingPartialSwap); |
| 671 |
| 672 gfx::Rect viewportRect(mockClient.deviceViewportSize()); |
| 673 ScopedPtrVector<RenderPass>& renderPasses = mockClient.renderPassesInDrawOrd
er(); |
| 674 renderPasses.clear(); |
| 675 |
| 676 gfx::Rect grandChildRect(25, 25); |
| 677 RenderPass::Id grandChildPassId(3, 0); |
| 678 TestRenderPass* grandChildPass = addRenderPass(renderPasses, grandChildPassI
d, grandChildRect, gfx::Transform()); |
| 679 addClippedQuad(grandChildPass, grandChildRect, SK_ColorYELLOW); |
| 680 |
| 681 gfx::Rect childRect(50, 50); |
| 682 RenderPass::Id childPassId(2, 0); |
| 683 TestRenderPass* childPass = addRenderPass(renderPasses, childPassId, childRe
ct, gfx::Transform()); |
| 684 addQuad(childPass, childRect, SK_ColorBLUE); |
| 685 |
| 686 RenderPass::Id rootPassId(1, 0); |
| 687 TestRenderPass* rootPass = addRenderPass(renderPasses, rootPassId, viewportR
ect, gfx::Transform()); |
| 688 addQuad(rootPass, viewportRect, SK_ColorGREEN); |
| 689 |
| 690 addRenderPassQuad(rootPass, childPass); |
| 691 addRenderPassQuad(childPass, grandChildPass); |
| 692 |
| 693 renderer.decideRenderPassAllocationsForFrame(mockClient.renderPassesInDrawOr
der()); |
| 694 renderer.drawFrame(mockClient.renderPassesInDrawOrder()); |
| 695 } |
| 696 |
639 } // namespace | 697 } // namespace |
640 } // namespace cc | 698 } // namespace cc |
OLD | NEW |