Chromium Code Reviews| 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 |