Title: [120759] trunk/Source/WebCore
- Revision
- 120759
- Author
- [email protected]
- Date
- 2012-06-19 15:18:48 -0700 (Tue, 19 Jun 2012)
Log Message
[chromium] Add an allocation step for CCRenderer before drawing a frame
https://bugs.webkit.org/show_bug.cgi?id=88924
Reviewed by Adrienne Walker.
This step will be used to decide which RenderPass textures can be kept
alive and do not need to be drawn again.
* platform/graphics/chromium/LayerRendererChromium.cpp:
(WebCore):
(WebCore::LayerRendererChromium::decideRenderPassAllocationsForFrame):
(WebCore::LayerRendererChromium::beginDrawingFrame):
* platform/graphics/chromium/LayerRendererChromium.h:
(LayerRendererChromium):
* platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
(WebCore::CCLayerTreeHostImpl::drawLayers):
* platform/graphics/chromium/cc/CCRenderer.h:
(CCRenderer):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (120758 => 120759)
--- trunk/Source/WebCore/ChangeLog 2012-06-19 22:01:11 UTC (rev 120758)
+++ trunk/Source/WebCore/ChangeLog 2012-06-19 22:18:48 UTC (rev 120759)
@@ -1,3 +1,24 @@
+2012-06-19 Dana Jansens <[email protected]>
+
+ [chromium] Add an allocation step for CCRenderer before drawing a frame
+ https://bugs.webkit.org/show_bug.cgi?id=88924
+
+ Reviewed by Adrienne Walker.
+
+ This step will be used to decide which RenderPass textures can be kept
+ alive and do not need to be drawn again.
+
+ * platform/graphics/chromium/LayerRendererChromium.cpp:
+ (WebCore):
+ (WebCore::LayerRendererChromium::decideRenderPassAllocationsForFrame):
+ (WebCore::LayerRendererChromium::beginDrawingFrame):
+ * platform/graphics/chromium/LayerRendererChromium.h:
+ (LayerRendererChromium):
+ * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
+ (WebCore::CCLayerTreeHostImpl::drawLayers):
+ * platform/graphics/chromium/cc/CCRenderer.h:
+ (CCRenderer):
+
2012-06-19 Alexandru Chiculita <[email protected]>
[CSS Shaders] Create a shared object between FECustomFilter objects to store the shared resources
Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (120758 => 120759)
--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp 2012-06-19 22:01:11 UTC (rev 120758)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp 2012-06-19 22:18:48 UTC (rev 120759)
@@ -429,6 +429,17 @@
GLC(m_context, m_context->enable(GraphicsContext3D::SCISSOR_TEST));
}
+
+void LayerRendererChromium::decideRenderPassAllocationsForFrame(const CCRenderPassList& renderPassesInDrawOrder)
+{
+ // FIXME: Get this memory limit from GPU Memory Manager
+ size_t contentsMemoryUseBytes = m_contentsTextureAllocator->currentMemoryUseBytes();
+ size_t maxLimitBytes = TextureManager::highLimitBytes(viewportSize());
+ size_t memoryLimitBytes = maxLimitBytes - contentsMemoryUseBytes > 0u ? maxLimitBytes - contentsMemoryUseBytes : 0u;
+
+ m_implTextureManager->setMaxMemoryLimitBytes(memoryLimitBytes);
+}
+
void LayerRendererChromium::beginDrawingFrame(const CCRenderPass* rootRenderPass)
{
// FIXME: Remove this once framebuffer is automatically recreated on first use
@@ -437,11 +448,6 @@
m_defaultRenderPass = rootRenderPass;
ASSERT(m_defaultRenderPass);
- size_t contentsMemoryUseBytes = m_contentsTextureAllocator->currentMemoryUseBytes();
- size_t maxLimit = TextureManager::highLimitBytes(viewportSize());
- size_t newLimit = (maxLimit > contentsMemoryUseBytes) ? maxLimit - contentsMemoryUseBytes : 0;
- m_implTextureManager->setMaxMemoryLimitBytes(newLimit);
-
if (viewportSize().isEmpty())
return;
Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h (120758 => 120759)
--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h 2012-06-19 22:01:11 UTC (rev 120758)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h 2012-06-19 22:18:48 UTC (rev 120759)
@@ -76,6 +76,7 @@
const FloatQuad& sharedGeometryQuad() const { return m_sharedGeometryQuad; }
+ virtual void decideRenderPassAllocationsForFrame(const CCRenderPassList&) OVERRIDE;
virtual void beginDrawingFrame(const CCRenderPass* defaultRenderPass) OVERRIDE;
virtual void drawRenderPass(const CCRenderPass*, const FloatRect& framebufferDamageRect) OVERRIDE;
virtual void finishDrawingFrame() OVERRIDE;
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp (120758 => 120759)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp 2012-06-19 22:01:11 UTC (rev 120758)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp 2012-06-19 22:18:48 UTC (rev 120759)
@@ -336,6 +336,7 @@
if (drawFrame)
occlusionTracker.overdrawMetrics().recordMetrics(this);
+ m_layerRenderer->decideRenderPassAllocationsForFrame(frame.renderPasses);
removePassesWithCachedTextures(frame.renderPasses, frame.skippedPasses);
return drawFrame;
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h (120758 => 120759)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h 2012-06-19 22:01:11 UTC (rev 120758)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h 2012-06-19 22:18:48 UTC (rev 120759)
@@ -29,12 +29,12 @@
#include "FloatQuad.h"
#include "IntRect.h"
#include "cc/CCLayerTreeHost.h"
+#include "cc/CCRenderPass.h"
#include <wtf/Noncopyable.h>
#include <wtf/PassRefPtr.h>
namespace WebCore {
-class CCRenderPass;
class TextureAllocator;
class TextureCopier;
class TextureManager;
@@ -68,6 +68,7 @@
const WebKit::WebTransformationMatrix& projectionMatrix() const { return m_projectionMatrix; }
const WebKit::WebTransformationMatrix& windowMatrix() const { return m_windowMatrix; }
+ virtual void decideRenderPassAllocationsForFrame(const CCRenderPassList&) = 0;
virtual void beginDrawingFrame(const CCRenderPass* defaultRenderPass) = 0;
virtual void drawRenderPass(const CCRenderPass*, const FloatRect& rootScissorRectInCurrentPass) = 0;
virtual void finishDrawingFrame() = 0;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes