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

Side by Side Diff: cc/gl_renderer_unittest.cc

Issue 11275222: Avoid setting activeTexture redundantly (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 1 month 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
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 "config.h" 5 #include "config.h"
6 #include "cc/gl_renderer.h" 6 #include "cc/gl_renderer.h"
7 7
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"
11 #include "cc/settings.h" 11 #include "cc/settings.h"
12 #include "cc/test/fake_web_compositor_output_surface.h" 12 #include "cc/test/fake_web_compositor_output_surface.h"
13 #include "cc/test/fake_web_graphics_context_3d.h" 13 #include "cc/test/fake_web_graphics_context_3d.h"
14 #include "cc/test/test_common.h" 14 #include "cc/test/test_common.h"
15 #include "cc/test/render_pass_test_common.h"
15 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 #include "third_party/khronos/GLES2/gl2.h" 18 #include "third_party/khronos/GLES2/gl2.h"
18 #include <public/WebTransformationMatrix.h> 19 #include <public/WebTransformationMatrix.h>
19 20
20 using namespace cc; 21 using namespace cc;
21 using namespace WebKit; 22 using namespace WebKit;
22 using namespace WebKitTests; 23 using namespace WebKitTests;
23 24
24 namespace { 25 namespace {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 98
98 class FakeRendererGL : public GLRenderer { 99 class FakeRendererGL : public GLRenderer {
99 public: 100 public:
100 FakeRendererGL(RendererClient* client, ResourceProvider* resourceProvider) : GLRenderer(client, resourceProvider) { } 101 FakeRendererGL(RendererClient* client, ResourceProvider* resourceProvider) : GLRenderer(client, resourceProvider) { }
101 102
102 // GLRenderer methods. 103 // GLRenderer methods.
103 104
104 // Changing visibility to public. 105 // Changing visibility to public.
105 using GLRenderer::initialize; 106 using GLRenderer::initialize;
106 using GLRenderer::isFramebufferDiscarded; 107 using GLRenderer::isFramebufferDiscarded;
108 using GLRenderer::drawQuad;
109 using GLRenderer::beginDrawingFrame;
107 }; 110 };
108 111
109 class GLRendererTest : public testing::Test { 112 class GLRendererTest : public testing::Test {
110 protected: 113 protected:
111 GLRendererTest() 114 GLRendererTest()
112 : m_suggestHaveBackbufferYes(1, true) 115 : m_suggestHaveBackbufferYes(1, true)
113 , m_suggestHaveBackbufferNo(1, false) 116 , m_suggestHaveBackbufferNo(1, false)
114 , m_context(FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::We bGraphicsContext3D>(new FrameCountingMemoryAllocationSettingContext()))) 117 , m_context(FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::We bGraphicsContext3D>(new FrameCountingMemoryAllocationSettingContext())))
115 , m_resourceProvider(ResourceProvider::create(m_context.get())) 118 , m_resourceProvider(ResourceProvider::create(m_context.get()))
116 , m_renderer(&m_mockClient, m_resourceProvider.get()) 119 , m_renderer(&m_mockClient, m_resourceProvider.get())
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 // is called. Plumb this tracking between both the RenderClient and the Cont ext by giving 478 // is called. Plumb this tracking between both the RenderClient and the Cont ext by giving
476 // them both a pointer to a variable on the stack. 479 // them both a pointer to a variable on the stack.
477 context->setLastCallWasSetVisibilityPointer(&lastCallWasSetVisiblity); 480 context->setLastCallWasSetVisibilityPointer(&lastCallWasSetVisiblity);
478 mockClient.setLastCallWasSetVisibilityPointer(&lastCallWasSetVisiblity); 481 mockClient.setLastCallWasSetVisibilityPointer(&lastCallWasSetVisiblity);
479 renderer.setVisible(true); 482 renderer.setVisible(true);
480 renderer.drawFrame(mockClient.renderPassesInDrawOrder(), mockClient.renderPa sses()); 483 renderer.drawFrame(mockClient.renderPassesInDrawOrder(), mockClient.renderPa sses());
481 renderer.setVisible(false); 484 renderer.setVisible(false);
482 EXPECT_TRUE(lastCallWasSetVisiblity); 485 EXPECT_TRUE(lastCallWasSetVisiblity);
483 } 486 }
484 487
488
489 class ActiveTextureTrackingContext : public FakeWebGraphicsContext3D {
490 public:
491 ActiveTextureTrackingContext()
492 : m_activeTexture(GL_TEXTURE1)
enne (OOO) 2012/11/09 06:14:55 Maybe this should be GL_INVALID (or whatever the b
493 {
494 }
495
496 virtual WebString getString(WGC3Denum name)
497 {
498 if (name == GL_EXTENSIONS)
499 return "GL_OES_EGL_image_external";
500 return "";
501 }
502
503 virtual void activeTexture(WGC3Denum texture)
504 {
505 EXPECT_NE(texture, m_activeTexture);
506 m_activeTexture = texture;
507 }
508
509 WGC3Denum activeTexture() const { return m_activeTexture; }
510
511 private:
512 WGC3Denum m_activeTexture;
513 };
514
515 TEST(GLRendererTest2, activeTextureState)
516 {
517 FakeRendererClient fakeClient;
518 scoped_ptr<GraphicsContext> outputSurface(FakeWebCompositorOutputSurface::cr eate(scoped_ptr<WebKit::WebGraphicsContext3D>(new ActiveTextureTrackingContext)) );
519 ActiveTextureTrackingContext* context = static_cast<ActiveTextureTrackingCon text*>(outputSurface->context3D());
520 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get()));
521 FakeRendererGL renderer(&fakeClient, resourceProvider.get());
522
523 EXPECT_TRUE(renderer.initialize());
524
525 cc::RenderPass::Id id(1, 1);
526 scoped_ptr<TestRenderPass> pass = TestRenderPass::create(id, gfx::Rect(0, 0, 100, 100), WebTransformationMatrix());
527 pass->appendOneOfEveryQuadType(resourceProvider.get());
528
529 cc::DirectRenderer::DrawingFrame drawingFrame;
530 renderer.beginDrawingFrame(drawingFrame);
531 EXPECT_EQ(context->activeTexture(), GL_TEXTURE0);
532
533 for (cc::QuadList::backToFrontIterator it = pass->quadList().backToFrontBegi n();
534 it != pass->quadList().backToFrontEnd(); ++it) {
535 renderer.drawQuad(drawingFrame, *it);
536 }
537 EXPECT_EQ(context->activeTexture(), GL_TEXTURE0);
538 }
539
485 } // anonymous namespace 540 } // anonymous namespace
OLDNEW
« cc/cc_tests.gyp ('K') | « cc/gl_renderer.cc ('k') | cc/test/render_pass_test_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698