Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(116)

Side by Side Diff: cc/gl_renderer_unittest.cc

Issue 12036091: Fixes a bug when the framebuffer is cleared with invalid scissor rect (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/direct_renderer.cc ('k') | cc/test/render_pass_test_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
OLDNEW
« no previous file with comments | « cc/direct_renderer.cc ('k') | cc/test/render_pass_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698