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

Side by Side Diff: cc/gl_renderer_unittest.cc

Issue 12041062: Have a common implementation of cc::OutputSurface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased 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/gl_renderer_pixeltest.cc ('k') | cc/io_surface_layer_impl.cc » ('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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 virtual void SetUp() 135 virtual void SetUp()
136 { 136 {
137 m_renderer.initialize(); 137 m_renderer.initialize();
138 } 138 }
139 139
140 void swapBuffers() 140 void swapBuffers()
141 { 141 {
142 m_renderer.swapBuffers(); 142 m_renderer.swapBuffers();
143 } 143 }
144 144
145 FrameCountingMemoryAllocationSettingContext* context() { return static_cast< FrameCountingMemoryAllocationSettingContext*>(m_outputSurface->Context3D()); } 145 FrameCountingMemoryAllocationSettingContext* context() { return static_cast< FrameCountingMemoryAllocationSettingContext*>(m_outputSurface->context3d()); }
146 146
147 WebGraphicsMemoryAllocation m_suggestHaveBackbufferYes; 147 WebGraphicsMemoryAllocation m_suggestHaveBackbufferYes;
148 WebGraphicsMemoryAllocation m_suggestHaveBackbufferNo; 148 WebGraphicsMemoryAllocation m_suggestHaveBackbufferNo;
149 149
150 scoped_ptr<OutputSurface> m_outputSurface; 150 scoped_ptr<OutputSurface> m_outputSurface;
151 FakeRendererClient m_mockClient; 151 FakeRendererClient m_mockClient;
152 scoped_ptr<ResourceProvider> m_resourceProvider; 152 scoped_ptr<ResourceProvider> m_resourceProvider;
153 FakeRendererGL m_renderer; 153 FakeRendererGL m_renderer;
154 }; 154 };
155 155
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 int clearCount() const { return m_clear; } 394 int clearCount() const { return m_clear; }
395 395
396 private: 396 private:
397 int m_clear; 397 int m_clear;
398 }; 398 };
399 399
400 TEST(GLRendererTest2, opaqueBackground) 400 TEST(GLRendererTest2, opaqueBackground)
401 { 401 {
402 FakeRendererClient mockClient; 402 FakeRendererClient mockClient;
403 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new ClearCountingContext))); 403 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new ClearCountingContext)));
404 ClearCountingContext* context = static_cast<ClearCountingContext*>(outputSur face->Context3D()); 404 ClearCountingContext* context = static_cast<ClearCountingContext*>(outputSur face->context3d());
405 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get())); 405 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get()));
406 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g et()); 406 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g et());
407 407
408 mockClient.rootRenderPass()->has_transparent_background = false; 408 mockClient.rootRenderPass()->has_transparent_background = false;
409 409
410 EXPECT_TRUE(renderer.initialize()); 410 EXPECT_TRUE(renderer.initialize());
411 411
412 renderer.drawFrame(mockClient.renderPassesInDrawOrder()); 412 renderer.drawFrame(mockClient.renderPassesInDrawOrder());
413 413
414 // On DEBUG builds, render passes with opaque background clear to blue to 414 // On DEBUG builds, render passes with opaque background clear to blue to
415 // easily see regions that were not drawn on the screen. 415 // easily see regions that were not drawn on the screen.
416 #ifdef NDEBUG 416 #ifdef NDEBUG
417 EXPECT_EQ(0, context->clearCount()); 417 EXPECT_EQ(0, context->clearCount());
418 #else 418 #else
419 EXPECT_EQ(1, context->clearCount()); 419 EXPECT_EQ(1, context->clearCount());
420 #endif 420 #endif
421 } 421 }
422 422
423 TEST(GLRendererTest2, transparentBackground) 423 TEST(GLRendererTest2, transparentBackground)
424 { 424 {
425 FakeRendererClient mockClient; 425 FakeRendererClient mockClient;
426 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new ClearCountingContext))); 426 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new ClearCountingContext)));
427 ClearCountingContext* context = static_cast<ClearCountingContext*>(outputSur face->Context3D()); 427 ClearCountingContext* context = static_cast<ClearCountingContext*>(outputSur face->context3d());
428 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get())); 428 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get()));
429 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g et()); 429 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g et());
430 430
431 mockClient.rootRenderPass()->has_transparent_background = true; 431 mockClient.rootRenderPass()->has_transparent_background = true;
432 432
433 EXPECT_TRUE(renderer.initialize()); 433 EXPECT_TRUE(renderer.initialize());
434 434
435 renderer.drawFrame(mockClient.renderPassesInDrawOrder()); 435 renderer.drawFrame(mockClient.renderPassesInDrawOrder());
436 436
437 EXPECT_EQ(1, context->clearCount()); 437 EXPECT_EQ(1, context->clearCount());
(...skipping 30 matching lines...) Expand all
468 void setLastCallWasSetVisibilityPointer(bool* lastCallWasSetVisibility) { m_ lastCallWasSetVisibility = lastCallWasSetVisibility; } 468 void setLastCallWasSetVisibilityPointer(bool* lastCallWasSetVisibility) { m_ lastCallWasSetVisibility = lastCallWasSetVisibility; }
469 469
470 private: 470 private:
471 bool* m_lastCallWasSetVisibility; 471 bool* m_lastCallWasSetVisibility;
472 }; 472 };
473 473
474 TEST(GLRendererTest2, visibilityChangeIsLastCall) 474 TEST(GLRendererTest2, visibilityChangeIsLastCall)
475 { 475 {
476 FakeRendererClient mockClient; 476 FakeRendererClient mockClient;
477 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new VisibilityChangeIsLastCallTrackingContext)) ); 477 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new VisibilityChangeIsLastCallTrackingContext)) );
478 VisibilityChangeIsLastCallTrackingContext* context = static_cast<VisibilityC hangeIsLastCallTrackingContext*>(outputSurface->Context3D()); 478 VisibilityChangeIsLastCallTrackingContext* context = static_cast<VisibilityC hangeIsLastCallTrackingContext*>(outputSurface->context3d());
479 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get())); 479 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get()));
480 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g et()); 480 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g et());
481 481
482 EXPECT_TRUE(renderer.initialize()); 482 EXPECT_TRUE(renderer.initialize());
483 483
484 bool lastCallWasSetVisiblity = false; 484 bool lastCallWasSetVisiblity = false;
485 // Ensure that the call to setVisibilityCHROMIUM is the last call issue to t he GPU 485 // Ensure that the call to setVisibilityCHROMIUM is the last call issue to t he GPU
486 // process, after glFlush is called, and after the RendererClient's enforceM anagedMemoryPolicy 486 // process, after glFlush is called, and after the RendererClient's enforceM anagedMemoryPolicy
487 // is called. Plumb this tracking between both the RenderClient and the Cont ext by giving 487 // is called. Plumb this tracking between both the RenderClient and the Cont ext by giving
488 // them both a pointer to a variable on the stack. 488 // them both a pointer to a variable on the stack.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 WGC3Denum activeTexture() const { return m_activeTexture; } 520 WGC3Denum activeTexture() const { return m_activeTexture; }
521 521
522 private: 522 private:
523 WGC3Denum m_activeTexture; 523 WGC3Denum m_activeTexture;
524 }; 524 };
525 525
526 TEST(GLRendererTest2, activeTextureState) 526 TEST(GLRendererTest2, activeTextureState)
527 { 527 {
528 FakeRendererClient fakeClient; 528 FakeRendererClient fakeClient;
529 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new TextureStateTrackingContext))); 529 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new TextureStateTrackingContext)));
530 TextureStateTrackingContext* context = static_cast<TextureStateTrackingConte xt*>(outputSurface->Context3D()); 530 TextureStateTrackingContext* context = static_cast<TextureStateTrackingConte xt*>(outputSurface->context3d());
531 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get())); 531 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get()));
532 FakeRendererGL renderer(&fakeClient, outputSurface.get(), resourceProvider.g et()); 532 FakeRendererGL renderer(&fakeClient, outputSurface.get(), resourceProvider.g et());
533 533
534 // During initialization we are allowed to set any texture parameters. 534 // During initialization we are allowed to set any texture parameters.
535 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); 535 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber());
536 EXPECT_TRUE(renderer.initialize()); 536 EXPECT_TRUE(renderer.initialize());
537 537
538 cc::RenderPass::Id id(1, 1); 538 cc::RenderPass::Id id(1, 1);
539 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); 539 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create();
540 pass->SetNew(id, gfx::Rect(0, 0, 100, 100), gfx::Rect(0, 0, 100, 100), gfx:: Transform()); 540 pass->SetNew(id, gfx::Rect(0, 0, 100, 100), gfx::Rect(0, 0, 100, 100), gfx:: Transform());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 class NoClearRootRenderPassMockContext : public TestWebGraphicsContext3D { 587 class NoClearRootRenderPassMockContext : public TestWebGraphicsContext3D {
588 public: 588 public:
589 MOCK_METHOD1(clear, void(WGC3Dbitfield mask)); 589 MOCK_METHOD1(clear, void(WGC3Dbitfield mask));
590 MOCK_METHOD4(drawElements, void(WGC3Denum mode, WGC3Dsizei count, WGC3Denum type, WGC3Dintptr offset)); 590 MOCK_METHOD4(drawElements, void(WGC3Denum mode, WGC3Dsizei count, WGC3Denum type, WGC3Dintptr offset));
591 }; 591 };
592 592
593 TEST(GLRendererTest2, shouldClearRootRenderPass) 593 TEST(GLRendererTest2, shouldClearRootRenderPass)
594 { 594 {
595 NoClearRootRenderPassFakeClient mockClient; 595 NoClearRootRenderPassFakeClient mockClient;
596 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new NoClearRootRenderPassMockContext))); 596 scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_p tr<WebKit::WebGraphicsContext3D>(new NoClearRootRenderPassMockContext)));
597 NoClearRootRenderPassMockContext* mockContext = static_cast<NoClearRootRende rPassMockContext*>(outputSurface->Context3D()); 597 NoClearRootRenderPassMockContext* mockContext = static_cast<NoClearRootRende rPassMockContext*>(outputSurface->context3d());
598 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get())); 598 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get()));
599 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g et()); 599 FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.g et());
600 EXPECT_TRUE(renderer.initialize()); 600 EXPECT_TRUE(renderer.initialize());
601 601
602 gfx::Rect viewportRect(mockClient.deviceViewportSize()); 602 gfx::Rect viewportRect(mockClient.deviceViewportSize());
603 ScopedPtrVector<RenderPass>& renderPasses = mockClient.renderPassesInDrawOrd er(); 603 ScopedPtrVector<RenderPass>& renderPasses = mockClient.renderPassesInDrawOrd er();
604 renderPasses.clear(); 604 renderPasses.clear();
605 605
606 RenderPass::Id rootPassId(1, 0); 606 RenderPass::Id rootPassId(1, 0);
607 TestRenderPass* rootPass = addRenderPass(renderPasses, rootPassId, viewportR ect, gfx::Transform()); 607 TestRenderPass* rootPass = addRenderPass(renderPasses, rootPassId, viewportR ect, gfx::Transform());
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 689
690 addRenderPassQuad(rootPass, childPass); 690 addRenderPassQuad(rootPass, childPass);
691 addRenderPassQuad(childPass, grandChildPass); 691 addRenderPassQuad(childPass, grandChildPass);
692 692
693 renderer.decideRenderPassAllocationsForFrame(mockClient.renderPassesInDrawOr der()); 693 renderer.decideRenderPassAllocationsForFrame(mockClient.renderPassesInDrawOr der());
694 renderer.drawFrame(mockClient.renderPassesInDrawOrder()); 694 renderer.drawFrame(mockClient.renderPassesInDrawOrder());
695 } 695 }
696 696
697 } // namespace 697 } // namespace
698 } // namespace cc 698 } // namespace cc
OLDNEW
« no previous file with comments | « cc/gl_renderer_pixeltest.cc ('k') | cc/io_surface_layer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698