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 RenderPass::Id grandChildPassId(3, 0); | |
677 TestRenderPass* grandChildPass = addRenderPass(renderPasses, grandChildPassI d, gfx::Rect(50, 50), gfx::Transform()); | |
678 addClippedQuad(grandChildPass, viewportRect, SK_ColorYELLOW); | |
danakj
2013/01/29 22:47:42
can use gfx::Rect(25, 25) or something for this qu
| |
679 | |
680 RenderPass::Id childPassId(2, 0); | |
681 TestRenderPass* childPass = addRenderPass(renderPasses, childPassId, gfx::Re ct(100, 100), gfx::Transform()); | |
682 addQuad(childPass, viewportRect, SK_ColorBLUE); | |
683 | |
684 RenderPass::Id rootPassId(1, 0); | |
685 TestRenderPass* rootPass = addRenderPass(renderPasses, rootPassId, viewportR ect, gfx::Transform()); | |
686 addQuad(rootPass, viewportRect, SK_ColorGREEN); | |
687 | |
688 addRenderPassQuad(rootPass, childPass); | |
689 addRenderPassQuad(childPass, grandChildPass); | |
690 | |
691 renderer.decideRenderPassAllocationsForFrame(mockClient.renderPassesInDrawOr der()); | |
692 renderer.drawFrame(mockClient.renderPassesInDrawOrder()); | |
693 } | |
694 | |
639 } // namespace | 695 } // namespace |
640 } // namespace cc | 696 } // namespace cc |
OLD | NEW |