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

Side by Side Diff: cc/gl_renderer_unittest.cc

Issue 11474014: Rename discardFramebufferEXT to discardBackbufferCHROMIUM to avoid collision with real discardFrame… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: back out accidental change to compositor_impl_android.cc Created 8 years 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.cc ('k') | cc/layer_tree_host.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/draw_quad.h" 7 #include "cc/draw_quad.h"
8 #include "cc/prioritized_resource_manager.h" 8 #include "cc/prioritized_resource_manager.h"
9 #include "cc/resource_provider.h" 9 #include "cc/resource_provider.h"
10 #include "cc/test/fake_impl_proxy.h" 10 #include "cc/test/fake_impl_proxy.h"
(...skipping 22 matching lines...) Expand all
33 FrameCountingMemoryAllocationSettingContext() : m_frame(0) { } 33 FrameCountingMemoryAllocationSettingContext() : m_frame(0) { }
34 34
35 // WebGraphicsContext3D methods. 35 // WebGraphicsContext3D methods.
36 36
37 // This method would normally do a glSwapBuffers under the hood. 37 // This method would normally do a glSwapBuffers under the hood.
38 virtual void prepareTexture() { m_frame++; } 38 virtual void prepareTexture() { m_frame++; }
39 virtual void setMemoryAllocationChangedCallbackCHROMIUM(WebGraphicsMemoryAll ocationChangedCallbackCHROMIUM* callback) { m_memoryAllocationChangedCallback = callback; } 39 virtual void setMemoryAllocationChangedCallbackCHROMIUM(WebGraphicsMemoryAll ocationChangedCallbackCHROMIUM* callback) { m_memoryAllocationChangedCallback = callback; }
40 virtual WebString getString(WebKit::WGC3Denum name) 40 virtual WebString getString(WebKit::WGC3Denum name)
41 { 41 {
42 if (name == GL_EXTENSIONS) 42 if (name == GL_EXTENSIONS)
43 return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_ manager GL_CHROMIUM_discard_framebuffer"); 43 return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_ manager GL_CHROMIUM_discard_backbuffer");
44 return WebString(); 44 return WebString();
45 } 45 }
46 46
47 // Methods added for test. 47 // Methods added for test.
48 int frameCount() { return m_frame; } 48 int frameCount() { return m_frame; }
49 void setMemoryAllocation(WebGraphicsMemoryAllocation allocation) 49 void setMemoryAllocation(WebGraphicsMemoryAllocation allocation)
50 { 50 {
51 m_memoryAllocationChangedCallback->onMemoryAllocationChanged(allocation) ; 51 m_memoryAllocationChangedCallback->onMemoryAllocationChanged(allocation) ;
52 } 52 }
53 53
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 }; 105 };
106 106
107 class FakeRendererGL : public GLRenderer { 107 class FakeRendererGL : public GLRenderer {
108 public: 108 public:
109 FakeRendererGL(RendererClient* client, ResourceProvider* resourceProvider) : GLRenderer(client, resourceProvider) { } 109 FakeRendererGL(RendererClient* client, ResourceProvider* resourceProvider) : GLRenderer(client, resourceProvider) { }
110 110
111 // GLRenderer methods. 111 // GLRenderer methods.
112 112
113 // Changing visibility to public. 113 // Changing visibility to public.
114 using GLRenderer::initialize; 114 using GLRenderer::initialize;
115 using GLRenderer::isFramebufferDiscarded; 115 using GLRenderer::isBackbufferDiscarded;
116 using GLRenderer::drawQuad; 116 using GLRenderer::drawQuad;
117 using GLRenderer::beginDrawingFrame; 117 using GLRenderer::beginDrawingFrame;
118 using GLRenderer::finishDrawingQuadList; 118 using GLRenderer::finishDrawingQuadList;
119 }; 119 };
120 120
121 class GLRendererTest : public testing::Test { 121 class GLRendererTest : public testing::Test {
122 protected: 122 protected:
123 GLRendererTest() 123 GLRendererTest()
124 : m_suggestHaveBackbufferYes(1, true) 124 : m_suggestHaveBackbufferYes(1, true)
125 , m_suggestHaveBackbufferNo(1, false) 125 , m_suggestHaveBackbufferNo(1, false)
(...skipping 17 matching lines...) Expand all
143 143
144 WebGraphicsMemoryAllocation m_suggestHaveBackbufferYes; 144 WebGraphicsMemoryAllocation m_suggestHaveBackbufferYes;
145 WebGraphicsMemoryAllocation m_suggestHaveBackbufferNo; 145 WebGraphicsMemoryAllocation m_suggestHaveBackbufferNo;
146 146
147 scoped_ptr<OutputSurface> m_context; 147 scoped_ptr<OutputSurface> m_context;
148 FakeRendererClient m_mockClient; 148 FakeRendererClient m_mockClient;
149 scoped_ptr<ResourceProvider> m_resourceProvider; 149 scoped_ptr<ResourceProvider> m_resourceProvider;
150 FakeRendererGL m_renderer; 150 FakeRendererGL m_renderer;
151 }; 151 };
152 152
153 // Test GLRenderer discardFramebuffer functionality: 153 // Test GLRenderer discardBackbuffer functionality:
154 // Suggest recreating framebuffer when one already exists. 154 // Suggest recreating framebuffer when one already exists.
155 // Expected: it does nothing. 155 // Expected: it does nothing.
156 TEST_F(GLRendererTest, SuggestBackbufferYesWhenItAlreadyExistsShouldDoNothing) 156 TEST_F(GLRendererTest, SuggestBackbufferYesWhenItAlreadyExistsShouldDoNothing)
157 { 157 {
158 context()->setMemoryAllocation(m_suggestHaveBackbufferYes); 158 context()->setMemoryAllocation(m_suggestHaveBackbufferYes);
159 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount()); 159 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount());
160 EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); 160 EXPECT_FALSE(m_renderer.isBackbufferDiscarded());
161 161
162 swapBuffers(); 162 swapBuffers();
163 EXPECT_EQ(1, context()->frameCount()); 163 EXPECT_EQ(1, context()->frameCount());
164 } 164 }
165 165
166 // Test GLRenderer discardFramebuffer functionality: 166 // Test GLRenderer discardBackbuffer functionality:
167 // Suggest discarding framebuffer when one exists and the renderer is not visibl e. 167 // Suggest discarding framebuffer when one exists and the renderer is not visibl e.
168 // Expected: it is discarded and damage tracker is reset. 168 // Expected: it is discarded and damage tracker is reset.
169 TEST_F(GLRendererTest, SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLa yerWhileNotVisible) 169 TEST_F(GLRendererTest, SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLa yerWhileNotVisible)
170 { 170 {
171 m_renderer.setVisible(false); 171 m_renderer.setVisible(false);
172 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 172 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
173 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 173 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
174 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 174 EXPECT_TRUE(m_renderer.isBackbufferDiscarded());
175 } 175 }
176 176
177 // Test GLRenderer discardFramebuffer functionality: 177 // Test GLRenderer discardBackbuffer functionality:
178 // Suggest discarding framebuffer when one exists and the renderer is visible. 178 // Suggest discarding framebuffer when one exists and the renderer is visible.
179 // Expected: the allocation is ignored. 179 // Expected: the allocation is ignored.
180 TEST_F(GLRendererTest, SuggestBackbufferNoDoNothingWhenVisible) 180 TEST_F(GLRendererTest, SuggestBackbufferNoDoNothingWhenVisible)
181 { 181 {
182 m_renderer.setVisible(true); 182 m_renderer.setVisible(true);
183 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 183 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
184 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount()); 184 EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount());
185 EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); 185 EXPECT_FALSE(m_renderer.isBackbufferDiscarded());
186 } 186 }
187 187
188 188
189 // Test GLRenderer discardFramebuffer functionality: 189 // Test GLRenderer discardBackbuffer functionality:
190 // Suggest discarding framebuffer when one does not exist. 190 // Suggest discarding framebuffer when one does not exist.
191 // Expected: it does nothing. 191 // Expected: it does nothing.
192 TEST_F(GLRendererTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing) 192 TEST_F(GLRendererTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing)
193 { 193 {
194 m_renderer.setVisible(false); 194 m_renderer.setVisible(false);
195 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 195 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
196 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 196 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
197 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 197 EXPECT_TRUE(m_renderer.isBackbufferDiscarded());
198 198
199 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 199 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
200 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 200 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
201 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 201 EXPECT_TRUE(m_renderer.isBackbufferDiscarded());
202 } 202 }
203 203
204 // Test GLRenderer discardFramebuffer functionality: 204 // Test GLRenderer discardBackbuffer functionality:
205 // Begin drawing a frame while a framebuffer is discarded. 205 // Begin drawing a frame while a framebuffer is discarded.
206 // Expected: will recreate framebuffer. 206 // Expected: will recreate framebuffer.
207 TEST_F(GLRendererTest, DiscardedBackbufferIsRecreatedForScopeDuration) 207 TEST_F(GLRendererTest, DiscardedBackbufferIsRecreatedForScopeDuration)
208 { 208 {
209 m_renderer.setVisible(false); 209 m_renderer.setVisible(false);
210 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 210 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
211 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 211 EXPECT_TRUE(m_renderer.isBackbufferDiscarded());
212 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 212 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
213 213
214 m_renderer.setVisible(true); 214 m_renderer.setVisible(true);
215 m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.re nderPasses()); 215 m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.re nderPasses());
216 EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); 216 EXPECT_FALSE(m_renderer.isBackbufferDiscarded());
217 217
218 swapBuffers(); 218 swapBuffers();
219 EXPECT_EQ(1, context()->frameCount()); 219 EXPECT_EQ(1, context()->frameCount());
220 } 220 }
221 221
222 TEST_F(GLRendererTest, FramebufferDiscardedAfterReadbackWhenNotVisible) 222 TEST_F(GLRendererTest, FramebufferDiscardedAfterReadbackWhenNotVisible)
223 { 223 {
224 m_renderer.setVisible(false); 224 m_renderer.setVisible(false);
225 context()->setMemoryAllocation(m_suggestHaveBackbufferNo); 225 context()->setMemoryAllocation(m_suggestHaveBackbufferNo);
226 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 226 EXPECT_TRUE(m_renderer.isBackbufferDiscarded());
227 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); 227 EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount());
228 228
229 char pixels[4]; 229 char pixels[4];
230 m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.re nderPasses()); 230 m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.re nderPasses());
231 EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); 231 EXPECT_FALSE(m_renderer.isBackbufferDiscarded());
232 232
233 m_renderer.getFramebufferPixels(pixels, gfx::Rect(0, 0, 1, 1)); 233 m_renderer.getFramebufferPixels(pixels, gfx::Rect(0, 0, 1, 1));
234 EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); 234 EXPECT_TRUE(m_renderer.isBackbufferDiscarded());
235 EXPECT_EQ(2, m_mockClient.setFullRootLayerDamageCount()); 235 EXPECT_EQ(2, m_mockClient.setFullRootLayerDamageCount());
236 } 236 }
237 237
238 class ForbidSynchronousCallContext : public FakeWebGraphicsContext3D { 238 class ForbidSynchronousCallContext : public FakeWebGraphicsContext3D {
239 public: 239 public:
240 ForbidSynchronousCallContext() { } 240 ForbidSynchronousCallContext() { }
241 241
242 virtual bool getActiveAttrib(WebGLId program, WGC3Duint index, ActiveInfo&) { ADD_FAILURE(); return false; } 242 virtual bool getActiveAttrib(WebGLId program, WGC3Duint index, ActiveInfo&) { ADD_FAILURE(); return false; }
243 virtual bool getActiveUniform(WebGLId program, WGC3Duint index, ActiveInfo&) { ADD_FAILURE(); return false; } 243 virtual bool getActiveUniform(WebGLId program, WGC3Duint index, ActiveInfo&) { ADD_FAILURE(); return false; }
244 virtual void getAttachedShaders(WebGLId program, WGC3Dsizei maxCount, WGC3Ds izei* count, WebGLId* shaders) { ADD_FAILURE(); } 244 virtual void getAttachedShaders(WebGLId program, WGC3Dsizei maxCount, WGC3Ds izei* count, WebGLId* shaders) { ADD_FAILURE(); }
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 } 450 }
451 virtual void flush() { if (m_lastCallWasSetVisibility) *m_lastCallWasSetVisi bility = false; } 451 virtual void flush() { if (m_lastCallWasSetVisibility) *m_lastCallWasSetVisi bility = false; }
452 virtual void deleteTexture(WebGLId) { if (m_lastCallWasSetVisibility) *m_las tCallWasSetVisibility = false; } 452 virtual void deleteTexture(WebGLId) { if (m_lastCallWasSetVisibility) *m_las tCallWasSetVisibility = false; }
453 virtual void deleteFramebuffer(WebGLId) { if (m_lastCallWasSetVisibility) *m _lastCallWasSetVisibility = false; } 453 virtual void deleteFramebuffer(WebGLId) { if (m_lastCallWasSetVisibility) *m _lastCallWasSetVisibility = false; }
454 virtual void deleteRenderbuffer(WebGLId) { if (m_lastCallWasSetVisibility) * m_lastCallWasSetVisibility = false; } 454 virtual void deleteRenderbuffer(WebGLId) { if (m_lastCallWasSetVisibility) * m_lastCallWasSetVisibility = false; }
455 455
456 // This method would normally do a glSwapBuffers under the hood. 456 // This method would normally do a glSwapBuffers under the hood.
457 virtual WebString getString(WebKit::WGC3Denum name) 457 virtual WebString getString(WebKit::WGC3Denum name)
458 { 458 {
459 if (name == GL_EXTENSIONS) 459 if (name == GL_EXTENSIONS)
460 return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_ manager GL_CHROMIUM_discard_framebuffer"); 460 return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_ manager GL_CHROMIUM_discard_backbuffer");
461 return WebString(); 461 return WebString();
462 } 462 }
463 463
464 // Methods added for test. 464 // Methods added for test.
465 void setLastCallWasSetVisibilityPointer(bool* lastCallWasSetVisibility) { m_ lastCallWasSetVisibility = lastCallWasSetVisibility; } 465 void setLastCallWasSetVisibilityPointer(bool* lastCallWasSetVisibility) { m_ lastCallWasSetVisibility = lastCallWasSetVisibility; }
466 466
467 private: 467 private:
468 bool* m_lastCallWasSetVisibility; 468 bool* m_lastCallWasSetVisibility;
469 }; 469 };
470 470
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 it != pass->quad_list.backToFrontEnd(); ++it) { 573 it != pass->quad_list.backToFrontEnd(); ++it) {
574 renderer.drawQuad(drawingFrame, *it); 574 renderer.drawQuad(drawingFrame, *it);
575 } 575 }
576 renderer.finishDrawingQuadList(); 576 renderer.finishDrawingQuadList();
577 EXPECT_EQ(context->activeTexture(), GL_TEXTURE0); 577 EXPECT_EQ(context->activeTexture(), GL_TEXTURE0);
578 Mock::VerifyAndClearExpectations(context); 578 Mock::VerifyAndClearExpectations(context);
579 } 579 }
580 580
581 } // namespace 581 } // namespace
582 } // namespace cc 582 } // namespace cc
OLDNEW
« no previous file with comments | « cc/gl_renderer.cc ('k') | cc/layer_tree_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698