diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-08 01:29:40 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-08 01:29:40 +0000 |
commit | 63487d2c29b397ad7a4ef1ef5f0d2ee8509222c6 (patch) | |
tree | 5930c11a85472f328d93f0b7c317e090435a9d08 /cc | |
parent | bbe7250added91877c9570465a407aab4a2a7e7e (diff) | |
download | chromium_src-63487d2c29b397ad7a4ef1ef5f0d2ee8509222c6.zip chromium_src-63487d2c29b397ad7a4ef1ef5f0d2ee8509222c6.tar.gz chromium_src-63487d2c29b397ad7a4ef1ef5f0d2ee8509222c6.tar.bz2 |
Rename discardFramebufferEXT to discardBackbufferCHROMIUM to avoid collision with real discardFramebufferEXT
Calling the (real) discardFramebufferEXT in the compositor is a performance win, at least on tilers. However
currently it can't be called because we alias the name for a different API that controls backbuffer
allocation, which I don't want to change. This renames the code to make backbuffer control a completely
separate API so I can pipe GL_EXT_discard_framebuffer in fully as a follow-up.
Depends on https://bugs.webkit.org/show_bug.cgi?id=104316
BUG=
Review URL: https://chromiumcodereview.appspot.com/11474014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171908 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/gl_renderer.cc | 45 | ||||
-rw-r--r-- | cc/gl_renderer.h | 10 | ||||
-rw-r--r-- | cc/gl_renderer_unittest.cc | 36 | ||||
-rw-r--r-- | cc/layer_tree_host.cc | 2 | ||||
-rw-r--r-- | cc/layer_tree_host.h | 2 |
5 files changed, 47 insertions, 48 deletions
diff --git a/cc/gl_renderer.cc b/cc/gl_renderer.cc index e625362..e9a76c1 100644 --- a/cc/gl_renderer.cc +++ b/cc/gl_renderer.cc @@ -74,8 +74,8 @@ GLRenderer::GLRenderer(RendererClient* client, ResourceProvider* resourceProvide , m_sharedGeometryQuad(gfx::RectF(-0.5f, -0.5f, 1.0f, 1.0f)) , m_context(resourceProvider->graphicsContext3D()) , m_isViewportChanged(false) - , m_isFramebufferDiscarded(false) - , m_discardFramebufferWhenNotVisible(false) + , m_isBackbufferDiscarded(false) + , m_discardBackbufferWhenNotVisible(false) , m_isUsingBindUniform(false) , m_visible(true) , m_isScissorEnabled(false) @@ -119,7 +119,7 @@ bool GLRenderer::initialize() if (m_capabilities.usingGpuMemoryManager) m_context->setMemoryAllocationChangedCallbackCHROMIUM(this); - m_capabilities.usingDiscardFramebuffer = extensions.count("GL_CHROMIUM_discard_framebuffer"); + m_capabilities.usingDiscardBackbuffer = extensions.count("GL_CHROMIUM_discard_backbuffer"); m_capabilities.usingEglImage = extensions.count("GL_OES_EGL_image_external"); @@ -188,7 +188,7 @@ void GLRenderer::sendManagedMemoryStats(size_t bytesVisible, size_t bytesVisible stats.bytesVisible = bytesVisible; stats.bytesVisibleAndNearby = bytesVisibleAndNearby; stats.bytesAllocated = bytesAllocated; - stats.backbufferRequested = !m_isFramebufferDiscarded; + stats.backbufferRequested = !m_isBackbufferDiscarded; m_context->sendManagedMemoryStatsCHROMIUM(&stats); } @@ -218,8 +218,8 @@ void GLRenderer::clearFramebuffer(DrawingFrame& frame) void GLRenderer::beginDrawingFrame(DrawingFrame& frame) { - // FIXME: Remove this once framebuffer is automatically recreated on first use - ensureFramebuffer(); + // FIXME: Remove this once backbuffer is automatically recreated on first use + ensureBackbuffer(); if (viewportSize().IsEmpty()) return; @@ -1242,7 +1242,7 @@ void GLRenderer::finish() bool GLRenderer::swapBuffers() { DCHECK(m_visible); - DCHECK(!m_isFramebufferDiscarded); + DCHECK(!m_isBackbufferDiscarded); TRACE_EVENT0("cc", "GLRenderer::swapBuffers"); // We're done! Time to swapbuffers! @@ -1286,11 +1286,11 @@ void GLRenderer::onMemoryAllocationChanged(WebGraphicsMemoryAllocation allocatio m_client->setManagedMemoryPolicy(policy); } - bool oldDiscardFramebufferWhenNotVisible = m_discardFramebufferWhenNotVisible; - m_discardFramebufferWhenNotVisible = !allocation.suggestHaveBackbuffer; + bool oldDiscardBackbufferWhenNotVisible = m_discardBackbufferWhenNotVisible; + m_discardBackbufferWhenNotVisible = !allocation.suggestHaveBackbuffer; enforceMemoryPolicy(); if (allocation.enforceButDoNotKeepAsPolicy) - m_discardFramebufferWhenNotVisible = oldDiscardFramebufferWhenNotVisible; + m_discardBackbufferWhenNotVisible = oldDiscardBackbufferWhenNotVisible; } int GLRenderer::priorityCutoffValue(WebKit::WebGraphicsMemoryAllocation::PriorityCutoff priorityCutoff) @@ -1314,38 +1314,37 @@ void GLRenderer::enforceMemoryPolicy() if (!m_visible) { TRACE_EVENT0("cc", "GLRenderer::enforceMemoryPolicy dropping resources"); releaseRenderPassTextures(); - if (m_discardFramebufferWhenNotVisible) - discardFramebuffer(); + if (m_discardBackbufferWhenNotVisible) + discardBackbuffer(); GLC(m_context, m_context->flush()); } } -void GLRenderer::discardFramebuffer() +void GLRenderer::discardBackbuffer() { - if (m_isFramebufferDiscarded) + if (m_isBackbufferDiscarded) return; - if (!m_capabilities.usingDiscardFramebuffer) + if (!m_capabilities.usingDiscardBackbuffer) return; - // FIXME: Update attachments argument to appropriate values once they are no longer ignored. - m_context->discardFramebufferEXT(GL_TEXTURE_2D, 0, 0); - m_isFramebufferDiscarded = true; + m_context->discardBackbufferCHROMIUM(); + m_isBackbufferDiscarded = true; // Damage tracker needs a full reset every time framebuffer is discarded. m_client->setFullRootLayerDamage(); } -void GLRenderer::ensureFramebuffer() +void GLRenderer::ensureBackbuffer() { - if (!m_isFramebufferDiscarded) + if (!m_isBackbufferDiscarded) return; - if (!m_capabilities.usingDiscardFramebuffer) + if (!m_capabilities.usingDiscardBackbuffer) return; - m_context->ensureFramebufferCHROMIUM(); - m_isFramebufferDiscarded = false; + m_context->ensureBackbufferCHROMIUM(); + m_isBackbufferDiscarded = false; } void GLRenderer::onContextLost() diff --git a/cc/gl_renderer.h b/cc/gl_renderer.h index 653b4ac..4cfdfc0 100644 --- a/cc/gl_renderer.h +++ b/cc/gl_renderer.h @@ -68,7 +68,7 @@ protected: static void debugGLCall(WebKit::WebGraphicsContext3D*, const char* command, const char* file, int line); - bool isFramebufferDiscarded() const { return m_isFramebufferDiscarded; } + bool isBackbufferDiscarded() const { return m_isBackbufferDiscarded; } bool initialize(); const gfx::QuadF& sharedGeometryQuad() const { return m_sharedGeometryQuad; } @@ -130,8 +130,8 @@ private: // WebKit::WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM implementation. virtual void onMemoryAllocationChanged(WebKit::WebGraphicsMemoryAllocation) OVERRIDE; - void discardFramebuffer(); - void ensureFramebuffer(); + void discardBackbuffer(); + void ensureBackbuffer(); void enforceMemoryPolicy(); // WebGraphicsContext3D::WebGraphicsContextLostCallback implementation. @@ -222,8 +222,8 @@ private: gfx::Rect m_swapBufferRect; gfx::Rect m_scissorRect; bool m_isViewportChanged; - bool m_isFramebufferDiscarded; - bool m_discardFramebufferWhenNotVisible; + bool m_isBackbufferDiscarded; + bool m_discardBackbufferWhenNotVisible; bool m_isUsingBindUniform; bool m_visible; bool m_isScissorEnabled; diff --git a/cc/gl_renderer_unittest.cc b/cc/gl_renderer_unittest.cc index e4dcc54..48922e3 100644 --- a/cc/gl_renderer_unittest.cc +++ b/cc/gl_renderer_unittest.cc @@ -40,7 +40,7 @@ public: virtual WebString getString(WebKit::WGC3Denum name) { if (name == GL_EXTENSIONS) - return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_manager GL_CHROMIUM_discard_framebuffer"); + return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_manager GL_CHROMIUM_discard_backbuffer"); return WebString(); } @@ -112,7 +112,7 @@ public: // Changing visibility to public. using GLRenderer::initialize; - using GLRenderer::isFramebufferDiscarded; + using GLRenderer::isBackbufferDiscarded; using GLRenderer::drawQuad; using GLRenderer::beginDrawingFrame; using GLRenderer::finishDrawingQuadList; @@ -150,20 +150,20 @@ protected: FakeRendererGL m_renderer; }; -// Test GLRenderer discardFramebuffer functionality: +// Test GLRenderer discardBackbuffer functionality: // Suggest recreating framebuffer when one already exists. // Expected: it does nothing. TEST_F(GLRendererTest, SuggestBackbufferYesWhenItAlreadyExistsShouldDoNothing) { context()->setMemoryAllocation(m_suggestHaveBackbufferYes); EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount()); - EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); + EXPECT_FALSE(m_renderer.isBackbufferDiscarded()); swapBuffers(); EXPECT_EQ(1, context()->frameCount()); } -// Test GLRenderer discardFramebuffer functionality: +// Test GLRenderer discardBackbuffer functionality: // Suggest discarding framebuffer when one exists and the renderer is not visible. // Expected: it is discarded and damage tracker is reset. TEST_F(GLRendererTest, SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLayerWhileNotVisible) @@ -171,10 +171,10 @@ TEST_F(GLRendererTest, SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLa m_renderer.setVisible(false); context()->setMemoryAllocation(m_suggestHaveBackbufferNo); EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); - EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); + EXPECT_TRUE(m_renderer.isBackbufferDiscarded()); } -// Test GLRenderer discardFramebuffer functionality: +// Test GLRenderer discardBackbuffer functionality: // Suggest discarding framebuffer when one exists and the renderer is visible. // Expected: the allocation is ignored. TEST_F(GLRendererTest, SuggestBackbufferNoDoNothingWhenVisible) @@ -182,11 +182,11 @@ TEST_F(GLRendererTest, SuggestBackbufferNoDoNothingWhenVisible) m_renderer.setVisible(true); context()->setMemoryAllocation(m_suggestHaveBackbufferNo); EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount()); - EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); + EXPECT_FALSE(m_renderer.isBackbufferDiscarded()); } -// Test GLRenderer discardFramebuffer functionality: +// Test GLRenderer discardBackbuffer functionality: // Suggest discarding framebuffer when one does not exist. // Expected: it does nothing. TEST_F(GLRendererTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing) @@ -194,26 +194,26 @@ TEST_F(GLRendererTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing) m_renderer.setVisible(false); context()->setMemoryAllocation(m_suggestHaveBackbufferNo); EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); - EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); + EXPECT_TRUE(m_renderer.isBackbufferDiscarded()); context()->setMemoryAllocation(m_suggestHaveBackbufferNo); EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); - EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); + EXPECT_TRUE(m_renderer.isBackbufferDiscarded()); } -// Test GLRenderer discardFramebuffer functionality: +// Test GLRenderer discardBackbuffer functionality: // Begin drawing a frame while a framebuffer is discarded. // Expected: will recreate framebuffer. TEST_F(GLRendererTest, DiscardedBackbufferIsRecreatedForScopeDuration) { m_renderer.setVisible(false); context()->setMemoryAllocation(m_suggestHaveBackbufferNo); - EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); + EXPECT_TRUE(m_renderer.isBackbufferDiscarded()); EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); m_renderer.setVisible(true); m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.renderPasses()); - EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); + EXPECT_FALSE(m_renderer.isBackbufferDiscarded()); swapBuffers(); EXPECT_EQ(1, context()->frameCount()); @@ -223,15 +223,15 @@ TEST_F(GLRendererTest, FramebufferDiscardedAfterReadbackWhenNotVisible) { m_renderer.setVisible(false); context()->setMemoryAllocation(m_suggestHaveBackbufferNo); - EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); + EXPECT_TRUE(m_renderer.isBackbufferDiscarded()); EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); char pixels[4]; m_renderer.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.renderPasses()); - EXPECT_FALSE(m_renderer.isFramebufferDiscarded()); + EXPECT_FALSE(m_renderer.isBackbufferDiscarded()); m_renderer.getFramebufferPixels(pixels, gfx::Rect(0, 0, 1, 1)); - EXPECT_TRUE(m_renderer.isFramebufferDiscarded()); + EXPECT_TRUE(m_renderer.isBackbufferDiscarded()); EXPECT_EQ(2, m_mockClient.setFullRootLayerDamageCount()); } @@ -457,7 +457,7 @@ public: virtual WebString getString(WebKit::WGC3Denum name) { if (name == GL_EXTENSIONS) - return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_manager GL_CHROMIUM_discard_framebuffer"); + return WebString("GL_CHROMIUM_set_visibility GL_CHROMIUM_gpu_memory_manager GL_CHROMIUM_discard_backbuffer"); return WebString(); } diff --git a/cc/layer_tree_host.cc b/cc/layer_tree_host.cc index 00a7b68..948e0b9 100644 --- a/cc/layer_tree_host.cc +++ b/cc/layer_tree_host.cc @@ -152,7 +152,7 @@ RendererCapabilities::RendererCapabilities() , usingSetVisibility(false) , usingSwapCompleteCallback(false) , usingGpuMemoryManager(false) - , usingDiscardFramebuffer(false) + , usingDiscardBackbuffer(false) , usingEglImage(false) , allowPartialTextureUpdates(false) , maxTextureSize(0) diff --git a/cc/layer_tree_host.h b/cc/layer_tree_host.h index 21af798..3f6b9ba 100644 --- a/cc/layer_tree_host.h +++ b/cc/layer_tree_host.h @@ -117,7 +117,7 @@ struct CC_EXPORT RendererCapabilities { bool usingSetVisibility; bool usingSwapCompleteCallback; bool usingGpuMemoryManager; - bool usingDiscardFramebuffer; + bool usingDiscardBackbuffer; bool usingEglImage; bool allowPartialTextureUpdates; int maxTextureSize; |