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

Side by Side Diff: cc/gl_renderer_unittest.cc

Issue 11189043: cc: Rename cc classes and members to match filenames (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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
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 "CCRendererGL.h" 6 #include "CCRendererGL.h"
7 7
8 #include "CCDrawQuad.h" 8 #include "CCDrawQuad.h"
9 #include "CCPrioritizedTextureManager.h" 9 #include "CCPrioritizedTextureManager.h"
10 #include "CCResourceProvider.h" 10 #include "CCResourceProvider.h"
(...skipping 25 matching lines...) Expand all
36 { 36 {
37 if (name == GraphicsContext3D::EXTENSIONS) 37 if (name == GraphicsContext3D::EXTENSIONS)
38 return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_ manager GL_CHROMIUM_discard_framebuffer"); 38 return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_ manager GL_CHROMIUM_discard_framebuffer");
39 return WebString(); 39 return WebString();
40 } 40 }
41 41
42 // Methods added for test. 42 // Methods added for test.
43 int frameCount() { return m_frame; } 43 int frameCount() { return m_frame; }
44 void setMemoryAllocation(WebGraphicsMemoryAllocation allocation) 44 void setMemoryAllocation(WebGraphicsMemoryAllocation allocation)
45 { 45 {
46 ASSERT(CCProxy::isImplThread()); 46 ASSERT(Proxy::isImplThread());
47 // In single threaded mode we expect this callback on main thread. 47 // In single threaded mode we expect this callback on main thread.
48 DebugScopedSetMainThread main; 48 DebugScopedSetMainThread main;
49 m_memoryAllocationChangedCallback->onMemoryAllocationChanged(allocation) ; 49 m_memoryAllocationChangedCallback->onMemoryAllocationChanged(allocation) ;
50 } 50 }
51 51
52 private: 52 private:
53 int m_frame; 53 int m_frame;
54 WebGraphicsMemoryAllocationChangedCallbackCHROMIUM* m_memoryAllocationChange dCallback; 54 WebGraphicsMemoryAllocationChangedCallbackCHROMIUM* m_memoryAllocationChange dCallback;
55 }; 55 };
56 56
57 class FakeCCRendererClient : public CCRendererClient { 57 class FakeRendererClient : public RendererClient {
58 public: 58 public:
59 FakeCCRendererClient() 59 FakeRendererClient()
60 : m_setFullRootLayerDamageCount(0) 60 : m_setFullRootLayerDamageCount(0)
61 , m_rootLayer(CCLayerImpl::create(1)) 61 , m_rootLayer(LayerImpl::create(1))
62 , m_memoryAllocationLimitBytes(CCPrioritizedTextureManager::defaultMemor yAllocationLimit()) 62 , m_memoryAllocationLimitBytes(PrioritizedTextureManager::defaultMemoryA llocationLimit())
63 { 63 {
64 m_rootLayer->createRenderSurface(); 64 m_rootLayer->createRenderSurface();
65 CCRenderPass::Id renderPassId = m_rootLayer->renderSurface()->renderPass Id(); 65 RenderPass::Id renderPassId = m_rootLayer->renderSurface()->renderPassId ();
66 scoped_ptr<CCRenderPass> rootRenderPass = CCRenderPass::create(renderPas sId, IntRect(), WebTransformationMatrix()); 66 scoped_ptr<RenderPass> rootRenderPass = RenderPass::create(renderPassId, IntRect(), WebTransformationMatrix());
67 m_renderPassesInDrawOrder.push_back(rootRenderPass.get()); 67 m_renderPassesInDrawOrder.push_back(rootRenderPass.get());
68 m_renderPasses.set(renderPassId, rootRenderPass.Pass()); 68 m_renderPasses.set(renderPassId, rootRenderPass.Pass());
69 } 69 }
70 70
71 // CCRendererClient methods. 71 // RendererClient methods.
72 virtual const IntSize& deviceViewportSize() const OVERRIDE { static IntSize fakeSize(1, 1); return fakeSize; } 72 virtual const IntSize& deviceViewportSize() const OVERRIDE { static IntSize fakeSize(1, 1); return fakeSize; }
73 virtual const CCLayerTreeSettings& settings() const OVERRIDE { static CCLaye rTreeSettings fakeSettings; return fakeSettings; } 73 virtual const LayerTreeSettings& settings() const OVERRIDE { static LayerTre eSettings fakeSettings; return fakeSettings; }
74 virtual void didLoseContext() OVERRIDE { } 74 virtual void didLoseContext() OVERRIDE { }
75 virtual void onSwapBuffersComplete() OVERRIDE { } 75 virtual void onSwapBuffersComplete() OVERRIDE { }
76 virtual void setFullRootLayerDamage() OVERRIDE { m_setFullRootLayerDamageCou nt++; } 76 virtual void setFullRootLayerDamage() OVERRIDE { m_setFullRootLayerDamageCou nt++; }
77 virtual void setMemoryAllocationLimitBytes(size_t bytes) OVERRIDE { m_memory AllocationLimitBytes = bytes; } 77 virtual void setMemoryAllocationLimitBytes(size_t bytes) OVERRIDE { m_memory AllocationLimitBytes = bytes; }
78 78
79 // Methods added for test. 79 // Methods added for test.
80 int setFullRootLayerDamageCount() const { return m_setFullRootLayerDamageCou nt; } 80 int setFullRootLayerDamageCount() const { return m_setFullRootLayerDamageCou nt; }
81 81
82 CCRenderPass* rootRenderPass() { return m_renderPassesInDrawOrder.back(); } 82 RenderPass* rootRenderPass() { return m_renderPassesInDrawOrder.back(); }
83 const CCRenderPassList& renderPassesInDrawOrder() const { return m_renderPas sesInDrawOrder; } 83 const RenderPassList& renderPassesInDrawOrder() const { return m_renderPasse sInDrawOrder; }
84 const CCRenderPassIdHashMap& renderPasses() const { return m_renderPasses; } 84 const RenderPassIdHashMap& renderPasses() const { return m_renderPasses; }
85 85
86 size_t memoryAllocationLimitBytes() const { return m_memoryAllocationLimitBy tes; } 86 size_t memoryAllocationLimitBytes() const { return m_memoryAllocationLimitBy tes; }
87 87
88 private: 88 private:
89 int m_setFullRootLayerDamageCount; 89 int m_setFullRootLayerDamageCount;
90 DebugScopedSetImplThread m_implThread; 90 DebugScopedSetImplThread m_implThread;
91 scoped_ptr<CCLayerImpl> m_rootLayer; 91 scoped_ptr<LayerImpl> m_rootLayer;
92 CCRenderPassList m_renderPassesInDrawOrder; 92 RenderPassList m_renderPassesInDrawOrder;
93 CCRenderPassIdHashMap m_renderPasses; 93 RenderPassIdHashMap m_renderPasses;
94 size_t m_memoryAllocationLimitBytes; 94 size_t m_memoryAllocationLimitBytes;
95 }; 95 };
96 96
97 class FakeCCRendererGL : public CCRendererGL { 97 class FakeRendererGL : public GLRenderer {
98 public: 98 public:
99 FakeCCRendererGL(CCRendererClient* client, CCResourceProvider* resourceProvi der) : CCRendererGL(client, resourceProvider) { } 99 FakeRendererGL(RendererClient* client, ResourceProvider* resourceProvider) : GLRenderer(client, resourceProvider) { }
100 100
101 // CCRendererGL methods. 101 // GLRenderer methods.
102 102
103 // Changing visibility to public. 103 // Changing visibility to public.
104 using CCRendererGL::initialize; 104 using GLRenderer::initialize;
105 using CCRendererGL::isFramebufferDiscarded; 105 using GLRenderer::isFramebufferDiscarded;
106 }; 106 };
107 107
108 class CCRendererGLTest : public testing::Test { 108 class GLRendererTest : public testing::Test {
109 protected: 109 protected:
110 CCRendererGLTest() 110 GLRendererTest()
111 : m_suggestHaveBackbufferYes(1, true) 111 : m_suggestHaveBackbufferYes(1, true)
112 , m_suggestHaveBackbufferNo(1, false) 112 , m_suggestHaveBackbufferNo(1, false)
113 , m_compositorInitializer(0) 113 , m_compositorInitializer(0)
114 , m_context(FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::We bGraphicsContext3D>(new FrameCountingMemoryAllocationSettingContext()))) 114 , m_context(FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::We bGraphicsContext3D>(new FrameCountingMemoryAllocationSettingContext())))
115 , m_resourceProvider(CCResourceProvider::create(m_context.get())) 115 , m_resourceProvider(ResourceProvider::create(m_context.get()))
116 , m_renderer(&m_mockClient, m_resourceProvider.get()) 116 , m_renderer(&m_mockClient, m_resourceProvider.get())
117 { 117 {
118 } 118 }
119 119
120 virtual void SetUp() 120 virtual void SetUp()
121 { 121 {
122 m_renderer.initialize(); 122 m_renderer.initialize();
123 } 123 }
124 124
125 void swapBuffers() 125 void swapBuffers()
126 { 126 {
127 m_renderer.swapBuffers(); 127 m_renderer.swapBuffers();
128 } 128 }
129 129
130 FrameCountingMemoryAllocationSettingContext* context() { return static_cast< FrameCountingMemoryAllocationSettingContext*>(m_context->context3D()); } 130 FrameCountingMemoryAllocationSettingContext* context() { return static_cast< FrameCountingMemoryAllocationSettingContext*>(m_context->context3D()); }
131 131
132 WebGraphicsMemoryAllocation m_suggestHaveBackbufferYes; 132 WebGraphicsMemoryAllocation m_suggestHaveBackbufferYes;
133 WebGraphicsMemoryAllocation m_suggestHaveBackbufferNo; 133 WebGraphicsMemoryAllocation m_suggestHaveBackbufferNo;
134 134
135 WebCompositorInitializer m_compositorInitializer; 135 WebCompositorInitializer m_compositorInitializer;
136 scoped_ptr<CCGraphicsContext> m_context; 136 scoped_ptr<GraphicsContext> m_context;
137 FakeCCRendererClient m_mockClient; 137 FakeRendererClient m_mockClient;
138 scoped_ptr<CCResourceProvider> m_resourceProvider; 138 scoped_ptr<ResourceProvider> m_resourceProvider;
139 FakeCCRendererGL m_renderer; 139 FakeRendererGL m_renderer;
140 CCScopedSettings m_scopedSettings; 140 ScopedSettings m_scopedSettings;
141 }; 141 };
142 142
143 // Test CCRendererGL discardFramebuffer functionality: 143 // Test GLRenderer discardFramebuffer functionality:
144 // Suggest recreating framebuffer when one already exists. 144 // Suggest recreating framebuffer when one already exists.
145 // Expected: it does nothing. 145 // Expected: it does nothing.
146 TEST_F(CCRendererGLTest, SuggestBackbufferYesWhenItAlreadyExistsShouldDoNothing) 146 TEST_F(GLRendererTest, SuggestBackbufferYesWhenItAlreadyExistsShouldDoNothing)
147 { 147 {
148 context()->setMemoryAllocation(m_suggestHaveBackbufferYes); 148 context()->setMemoryAllocation(m_suggestHaveBackbufferYes);
149 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount()); 149 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount());
150 EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); 150 EXPECT_FALSE(m_renderer.isFramebufferDiscarded());
151 151
152 swapBuffers(); 152 swapBuffers();
153 EXPECT_EQ(1, context()->frameCount()); 153 EXPECT_EQ(1, context()->frameCount());
154 } 154 }
155 155
156 // Test CCRendererGL discardFramebuffer functionality: 156 // Test GLRenderer discardFramebuffer functionality:
157 // Suggest discarding framebuffer when one exists and the renderer is not visibl e. 157 // Suggest discarding framebuffer when one exists and the renderer is not visibl e.
158 // Expected: it is discarded and damage tracker is reset. 158 // Expected: it is discarded and damage tracker is reset.
159 TEST_F(CCRendererGLTest, SuggestBackbufferNoShouldDiscardBackbufferAndDamageRoot LayerWhileNotVisible) 159 TEST_F(GLRendererTest, SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLa yerWhileNotVisible)
160 { 160 {
161 m_renderer.setVisible(false); 161 m_renderer.setVisible(false);
162 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 162 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
163 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 163 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
164 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 164 EXPECT_TRUE(m_renderer.isFramebufferDiscarded());
165 } 165 }
166 166
167 // Test CCRendererGL discardFramebuffer functionality: 167 // Test GLRenderer discardFramebuffer functionality:
168 // Suggest discarding framebuffer when one exists and the renderer is visible. 168 // Suggest discarding framebuffer when one exists and the renderer is visible.
169 // Expected: the allocation is ignored. 169 // Expected: the allocation is ignored.
170 TEST_F(CCRendererGLTest, SuggestBackbufferNoDoNothingWhenVisible) 170 TEST_F(GLRendererTest, SuggestBackbufferNoDoNothingWhenVisible)
171 { 171 {
172 m_renderer.setVisible(true); 172 m_renderer.setVisible(true);
173 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 173 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
174 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount()); 174 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount());
175 EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); 175 EXPECT_FALSE(m_renderer.isFramebufferDiscarded());
176 } 176 }
177 177
178 178
179 // Test CCRendererGL discardFramebuffer functionality: 179 // Test GLRenderer discardFramebuffer functionality:
180 // Suggest discarding framebuffer when one does not exist. 180 // Suggest discarding framebuffer when one does not exist.
181 // Expected: it does nothing. 181 // Expected: it does nothing.
182 TEST_F(CCRendererGLTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing) 182 TEST_F(GLRendererTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing)
183 { 183 {
184 m_renderer.setVisible(false); 184 m_renderer.setVisible(false);
185 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 185 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
186 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 186 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
187 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 187 EXPECT_TRUE(m_renderer.isFramebufferDiscarded());
188 188
189 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 189 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
190 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 190 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
191 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 191 EXPECT_TRUE(m_renderer.isFramebufferDiscarded());
192 } 192 }
193 193
194 // Test CCRendererGL discardFramebuffer functionality: 194 // Test GLRenderer discardFramebuffer functionality:
195 // Begin drawing a frame while a framebuffer is discarded. 195 // Begin drawing a frame while a framebuffer is discarded.
196 // Expected: will recreate framebuffer. 196 // Expected: will recreate framebuffer.
197 TEST_F(CCRendererGLTest, DiscardedBackbufferIsRecreatedForScopeDuration) 197 TEST_F(GLRendererTest, DiscardedBackbufferIsRecreatedForScopeDuration)
198 { 198 {
199 m_renderer.setVisible(false); 199 m_renderer.setVisible(false);
200 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 200 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
201 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 201 EXPECT_TRUE(m_renderer.isFramebufferDiscarded());
202 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 202 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
203 203
204 m_renderer.setVisible(true); 204 m_renderer.setVisible(true);
205 m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.re nderPasses()); 205 m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.re nderPasses());
206 EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); 206 EXPECT_FALSE(m_renderer.isFramebufferDiscarded());
207 207
208 swapBuffers(); 208 swapBuffers();
209 EXPECT_EQ(1, context()->frameCount()); 209 EXPECT_EQ(1, context()->frameCount());
210 } 210 }
211 211
212 TEST_F(CCRendererGLTest, FramebufferDiscardedAfterReadbackWhenNotVisible) 212 TEST_F(GLRendererTest, FramebufferDiscardedAfterReadbackWhenNotVisible)
213 { 213 {
214 m_renderer.setVisible(false); 214 m_renderer.setVisible(false);
215 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 215 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
216 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 216 EXPECT_TRUE(m_renderer.isFramebufferDiscarded());
217 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 217 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
218 218
219 char pixels[4]; 219 char pixels[4];
220 m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.re nderPasses()); 220 m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.re nderPasses());
221 EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); 221 EXPECT_FALSE(m_renderer.isFramebufferDiscarded());
222 222
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 virtual void getTexParameterfv(WGC3Denum target, WGC3Denum pname, WGC3Dfloat * value) { ADD_FAILURE(); } 284 virtual void getTexParameterfv(WGC3Denum target, WGC3Denum pname, WGC3Dfloat * value) { ADD_FAILURE(); }
285 virtual void getTexParameteriv(WGC3Denum target, WGC3Denum pname, WGC3Dint* value) { ADD_FAILURE(); } 285 virtual void getTexParameteriv(WGC3Denum target, WGC3Denum pname, WGC3Dint* value) { ADD_FAILURE(); }
286 virtual void getUniformfv(WebGLId program, WGC3Dint location, WGC3Dfloat* va lue) { ADD_FAILURE(); } 286 virtual void getUniformfv(WebGLId program, WGC3Dint location, WGC3Dfloat* va lue) { ADD_FAILURE(); }
287 virtual void getUniformiv(WebGLId program, WGC3Dint location, WGC3Dint* valu e) { ADD_FAILURE(); } 287 virtual void getUniformiv(WebGLId program, WGC3Dint location, WGC3Dint* valu e) { ADD_FAILURE(); }
288 virtual WGC3Dint getUniformLocation(WebGLId program, const WGC3Dchar* name) { ADD_FAILURE(); return 0; } 288 virtual WGC3Dint getUniformLocation(WebGLId program, const WGC3Dchar* name) { ADD_FAILURE(); return 0; }
289 virtual void getVertexAttribfv(WGC3Duint index, WGC3Denum pname, WGC3Dfloat* value) { ADD_FAILURE(); } 289 virtual void getVertexAttribfv(WGC3Duint index, WGC3Denum pname, WGC3Dfloat* value) { ADD_FAILURE(); }
290 virtual void getVertexAttribiv(WGC3Duint index, WGC3Denum pname, WGC3Dint* v alue) { ADD_FAILURE(); } 290 virtual void getVertexAttribiv(WGC3Duint index, WGC3Denum pname, WGC3Dint* v alue) { ADD_FAILURE(); }
291 virtual WGC3Dsizeiptr getVertexAttribOffset(WGC3Duint index, WGC3Denum pname ) { ADD_FAILURE(); return 0; } 291 virtual WGC3Dsizeiptr getVertexAttribOffset(WGC3Duint index, WGC3Denum pname ) { ADD_FAILURE(); return 0; }
292 }; 292 };
293 293
294 // This test isn't using the same fixture as CCRendererGLTest, and you can't mix TEST() and TEST_F() with the same name, hence LRC2. 294 // This test isn't using the same fixture as GLRendererTest, and you can't mix T EST() and TEST_F() with the same name, hence LRC2.
295 TEST(CCRendererGLTest2, initializationDoesNotMakeSynchronousCalls) 295 TEST(GLRendererTest2, initializationDoesNotMakeSynchronousCalls)
296 { 296 {
297 CCScopedSettings scopedSettings; 297 ScopedSettings scopedSettings;
298 FakeCCRendererClient mockClient; 298 FakeRendererClient mockClient;
299 scoped_ptr<CCGraphicsContext> context(FakeWebCompositorOutputSurface::create (scoped_ptr<WebKit::WebGraphicsContext3D>(new ForbidSynchronousCallContext))); 299 scoped_ptr<GraphicsContext> context(FakeWebCompositorOutputSurface::create(s coped_ptr<WebKit::WebGraphicsContext3D>(new ForbidSynchronousCallContext)));
300 scoped_ptr<CCResourceProvider> resourceProvider(CCResourceProvider::create(c ontext.get())); 300 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(conte xt.get()));
301 FakeCCRendererGL renderer(&mockClient, resourceProvider.get()); 301 FakeRendererGL renderer(&mockClient, resourceProvider.get());
302 302
303 EXPECT_TRUE(renderer.initialize()); 303 EXPECT_TRUE(renderer.initialize());
304 } 304 }
305 305
306 class LoseContextOnFirstGetContext : public FakeWebGraphicsContext3D { 306 class LoseContextOnFirstGetContext : public FakeWebGraphicsContext3D {
307 public: 307 public:
308 LoseContextOnFirstGetContext() 308 LoseContextOnFirstGetContext()
309 : m_contextLost(false) 309 : m_contextLost(false)
310 { 310 {
311 } 311 }
(...skipping 17 matching lines...) Expand all
329 329
330 virtual WGC3Denum getGraphicsResetStatusARB() OVERRIDE 330 virtual WGC3Denum getGraphicsResetStatusARB() OVERRIDE
331 { 331 {
332 return m_contextLost ? 1 : 0; 332 return m_contextLost ? 1 : 0;
333 } 333 }
334 334
335 private: 335 private:
336 bool m_contextLost; 336 bool m_contextLost;
337 }; 337 };
338 338
339 TEST(CCRendererGLTest2, initializationWithQuicklyLostContextDoesNotAssert) 339 TEST(GLRendererTest2, initializationWithQuicklyLostContextDoesNotAssert)
340 { 340 {
341 CCScopedSettings scopedSettings; 341 ScopedSettings scopedSettings;
342 FakeCCRendererClient mockClient; 342 FakeRendererClient mockClient;
343 scoped_ptr<CCGraphicsContext> context(FakeWebCompositorOutputSurface::create (scoped_ptr<WebKit::WebGraphicsContext3D>(new LoseContextOnFirstGetContext))); 343 scoped_ptr<GraphicsContext> context(FakeWebCompositorOutputSurface::create(s coped_ptr<WebKit::WebGraphicsContext3D>(new LoseContextOnFirstGetContext)));
344 scoped_ptr<CCResourceProvider> resourceProvider(CCResourceProvider::create(c ontext.get())); 344 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(conte xt.get()));
345 FakeCCRendererGL renderer(&mockClient, resourceProvider.get()); 345 FakeRendererGL renderer(&mockClient, resourceProvider.get());
346 346
347 renderer.initialize(); 347 renderer.initialize();
348 } 348 }
349 349
350 class ContextThatDoesNotSupportMemoryManagmentExtensions : public FakeWebGraphic sContext3D { 350 class ContextThatDoesNotSupportMemoryManagmentExtensions : public FakeWebGraphic sContext3D {
351 public: 351 public:
352 ContextThatDoesNotSupportMemoryManagmentExtensions() { } 352 ContextThatDoesNotSupportMemoryManagmentExtensions() { }
353 353
354 // WebGraphicsContext3D methods. 354 // WebGraphicsContext3D methods.
355 355
356 // This method would normally do a glSwapBuffers under the hood. 356 // This method would normally do a glSwapBuffers under the hood.
357 virtual void prepareTexture() { } 357 virtual void prepareTexture() { }
358 virtual void setMemoryAllocationChangedCallbackCHROMIUM(WebGraphicsMemoryAll ocationChangedCallbackCHROMIUM* callback) { } 358 virtual void setMemoryAllocationChangedCallbackCHROMIUM(WebGraphicsMemoryAll ocationChangedCallbackCHROMIUM* callback) { }
359 virtual WebString getString(WebKit::WGC3Denum name) { return WebString(); } 359 virtual WebString getString(WebKit::WGC3Denum name) { return WebString(); }
360 }; 360 };
361 361
362 TEST(CCRendererGLTest2, initializationWithoutGpuMemoryManagerExtensionSupportSho uldDefaultToNonZeroAllocation) 362 TEST(GLRendererTest2, initializationWithoutGpuMemoryManagerExtensionSupportShoul dDefaultToNonZeroAllocation)
363 { 363 {
364 FakeCCRendererClient mockClient; 364 FakeRendererClient mockClient;
365 scoped_ptr<CCGraphicsContext> context(FakeWebCompositorOutputSurface::create (scoped_ptr<WebKit::WebGraphicsContext3D>(new ContextThatDoesNotSupportMemoryMan agmentExtensions))); 365 scoped_ptr<GraphicsContext> context(FakeWebCompositorOutputSurface::create(s coped_ptr<WebKit::WebGraphicsContext3D>(new ContextThatDoesNotSupportMemoryManag mentExtensions)));
366 scoped_ptr<CCResourceProvider> resourceProvider(CCResourceProvider::create(c ontext.get())); 366 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(conte xt.get()));
367 FakeCCRendererGL renderer(&mockClient, resourceProvider.get()); 367 FakeRendererGL renderer(&mockClient, resourceProvider.get());
368 368
369 renderer.initialize(); 369 renderer.initialize();
370 370
371 EXPECT_GT(mockClient.memoryAllocationLimitBytes(), 0ul); 371 EXPECT_GT(mockClient.memoryAllocationLimitBytes(), 0ul);
372 } 372 }
373 373
374 class ClearCountingContext : public FakeWebGraphicsContext3D { 374 class ClearCountingContext : public FakeWebGraphicsContext3D {
375 public: 375 public:
376 ClearCountingContext() : m_clear(0) { } 376 ClearCountingContext() : m_clear(0) { }
377 377
378 virtual void clear(WGC3Dbitfield) 378 virtual void clear(WGC3Dbitfield)
379 { 379 {
380 m_clear++; 380 m_clear++;
381 } 381 }
382 382
383 int clearCount() const { return m_clear; } 383 int clearCount() const { return m_clear; }
384 384
385 private: 385 private:
386 int m_clear; 386 int m_clear;
387 }; 387 };
388 388
389 TEST(CCRendererGLTest2, opaqueBackground) 389 TEST(GLRendererTest2, opaqueBackground)
390 { 390 {
391 FakeCCRendererClient mockClient; 391 FakeRendererClient mockClient;
392 scoped_ptr<CCGraphicsContext> ccContext(FakeWebCompositorOutputSurface::crea te(scoped_ptr<WebKit::WebGraphicsContext3D>(new ClearCountingContext))); 392 scoped_ptr<GraphicsContext> outputSurface(FakeWebCompositorOutputSurface::cr eate(scoped_ptr<WebKit::WebGraphicsContext3D>(new ClearCountingContext)));
393 ClearCountingContext* context = static_cast<ClearCountingContext*>(ccContext ->context3D()); 393 ClearCountingContext* context = static_cast<ClearCountingContext*>(outputSur face->context3D());
394 scoped_ptr<CCResourceProvider> resourceProvider(CCResourceProvider::create(c cContext.get())); 394 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get()));
395 FakeCCRendererGL renderer(&mockClient, resourceProvider.get()); 395 FakeRendererGL renderer(&mockClient, resourceProvider.get());
396 396
397 mockClient.rootRenderPass()->setHasTransparentBackground(false); 397 mockClient.rootRenderPass()->setHasTransparentBackground(false);
398 398
399 EXPECT_TRUE(renderer.initialize()); 399 EXPECT_TRUE(renderer.initialize());
400 400
401 renderer.drawFrame(mockClient.renderPassesInDrawOrder(), mockClient.renderPa sses()); 401 renderer.drawFrame(mockClient.renderPassesInDrawOrder(), mockClient.renderPa sses());
402 402
403 // On DEBUG builds, render passes with opaque background clear to blue to 403 // On DEBUG builds, render passes with opaque background clear to blue to
404 // easily see regions that were not drawn on the screen. 404 // easily see regions that were not drawn on the screen.
405 #if defined(NDEBUG) 405 #if defined(NDEBUG)
406 EXPECT_EQ(0, context->clearCount()); 406 EXPECT_EQ(0, context->clearCount());
407 #else 407 #else
408 EXPECT_EQ(1, context->clearCount()); 408 EXPECT_EQ(1, context->clearCount());
409 #endif 409 #endif
410 } 410 }
411 411
412 TEST(CCRendererGLTest2, transparentBackground) 412 TEST(GLRendererTest2, transparentBackground)
413 { 413 {
414 FakeCCRendererClient mockClient; 414 FakeRendererClient mockClient;
415 scoped_ptr<CCGraphicsContext> ccContext(FakeWebCompositorOutputSurface::crea te(scoped_ptr<WebKit::WebGraphicsContext3D>(new ClearCountingContext))); 415 scoped_ptr<GraphicsContext> outputSurface(FakeWebCompositorOutputSurface::cr eate(scoped_ptr<WebKit::WebGraphicsContext3D>(new ClearCountingContext)));
416 ClearCountingContext* context = static_cast<ClearCountingContext*>(ccContext ->context3D()); 416 ClearCountingContext* context = static_cast<ClearCountingContext*>(outputSur face->context3D());
417 scoped_ptr<CCResourceProvider> resourceProvider(CCResourceProvider::create(c cContext.get())); 417 scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outpu tSurface.get()));
418 FakeCCRendererGL renderer(&mockClient, resourceProvider.get()); 418 FakeRendererGL renderer(&mockClient, resourceProvider.get());
419 419
420 mockClient.rootRenderPass()->setHasTransparentBackground(true); 420 mockClient.rootRenderPass()->setHasTransparentBackground(true);
421 421
422 EXPECT_TRUE(renderer.initialize()); 422 EXPECT_TRUE(renderer.initialize());
423 423
424 renderer.drawFrame(mockClient.renderPassesInDrawOrder(), mockClient.renderPa sses()); 424 renderer.drawFrame(mockClient.renderPassesInDrawOrder(), mockClient.renderPa sses());
425 425
426 EXPECT_EQ(1, context->clearCount()); 426 EXPECT_EQ(1, context->clearCount());
427 } 427 }
OLDNEW
« cc/active_animation.h ('K') | « cc/gl_renderer.cc ('k') | cc/graphics_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698