Title: [125833] trunk/Source/WebCore
Revision
125833
Author
[email protected]
Date
2012-08-16 17:47:25 -0700 (Thu, 16 Aug 2012)

Log Message

Unreviewed, rolling out r125804.
http://trac.webkit.org/changeset/125804
https://bugs.webkit.org/show_bug.cgi?id=94234

Made threaded tests in performance_browser_tests start timing
out on Chromium GPU bots

* platform/graphics/chromium/Canvas2DLayerBridge.cpp:
(AcceleratedDeviceContext):
(WebCore::AcceleratedDeviceContext::AcceleratedDeviceContext):
(WebCore::AcceleratedDeviceContext::prepareForDraw):
(WebCore):
(WebCore::Canvas2DLayerBridge::~Canvas2DLayerBridge):
(WebCore::Canvas2DLayerBridge::skCanvas):
* platform/graphics/chromium/Canvas2DLayerBridge.h:
(Canvas2DLayerBridge):
* platform/graphics/skia/ImageBufferSkia.cpp:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (125832 => 125833)


--- trunk/Source/WebCore/ChangeLog	2012-08-17 00:29:35 UTC (rev 125832)
+++ trunk/Source/WebCore/ChangeLog	2012-08-17 00:47:25 UTC (rev 125833)
@@ -1,3 +1,23 @@
+2012-08-16  Kenneth Russell  <[email protected]>
+
+        Unreviewed, rolling out r125804.
+        http://trac.webkit.org/changeset/125804
+        https://bugs.webkit.org/show_bug.cgi?id=94234
+
+        Made threaded tests in performance_browser_tests start timing
+        out on Chromium GPU bots
+
+        * platform/graphics/chromium/Canvas2DLayerBridge.cpp:
+        (AcceleratedDeviceContext):
+        (WebCore::AcceleratedDeviceContext::AcceleratedDeviceContext):
+        (WebCore::AcceleratedDeviceContext::prepareForDraw):
+        (WebCore):
+        (WebCore::Canvas2DLayerBridge::~Canvas2DLayerBridge):
+        (WebCore::Canvas2DLayerBridge::skCanvas):
+        * platform/graphics/chromium/Canvas2DLayerBridge.h:
+        (Canvas2DLayerBridge):
+        * platform/graphics/skia/ImageBufferSkia.cpp:
+
 2012-08-16  Adam Barth  <[email protected]>
 
         Rename DOMWindow::clear to something more descriptive

Modified: trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.cpp (125832 => 125833)


--- trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.cpp	2012-08-17 00:29:35 UTC (rev 125832)
+++ trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.cpp	2012-08-17 00:47:25 UTC (rev 125833)
@@ -31,6 +31,8 @@
 #include "GraphicsContext3D.h"
 #include "GraphicsContext3DPrivate.h"
 #include "LayerRendererChromium.h" // For GLC() macro.
+#include "SkCanvas.h"
+#include "SkDeferredCanvas.h"
 #include "TraceEvent.h"
 #include <public/WebCompositor.h>
 #include <public/WebGraphicsContext3D.h>
@@ -41,6 +43,31 @@
 
 namespace WebCore {
 
+class AcceleratedDeviceContext : public SkDeferredCanvas::DeviceContext {
+public:
+    AcceleratedDeviceContext(WebGraphicsContext3D* context, WebExternalTextureLayer layer, bool useDoubleBuffering)
+        : m_layer(layer)
+        , m_context()
+        , m_useDoubleBuffering(useDoubleBuffering)
+    {
+        ASSERT(context);
+        ASSERT(!layer.isNull());
+        m_context = context;
+    }
+
+    virtual void prepareForDraw()
+    {
+        if (!m_useDoubleBuffering)
+            m_layer.willModifyTexture();
+        m_context->makeContextCurrent();
+    }
+
+private:
+    WebExternalTextureLayer m_layer;
+    WebGraphicsContext3D* m_context;
+    bool m_useDoubleBuffering;
+};
+
 Canvas2DLayerBridge::Canvas2DLayerBridge(PassRefPtr<GraphicsContext3D> context, const IntSize& size, DeferralMode deferralMode, unsigned textureId)
     : m_deferralMode(deferralMode)
     // FIXME: We currently turn off double buffering when canvas rendering is
@@ -74,10 +101,9 @@
     m_layer.setRateLimitContext(!WebKit::WebCompositor::threadingEnabled() || m_useDoubleBuffering);
 }
 
+
 Canvas2DLayerBridge::~Canvas2DLayerBridge()
 {
-    if (SkDeferredCanvas* deferred = deferredCanvas())
-        deferred->setNotificationClient(0);
     m_layer.setTextureId(0);
     if (m_useDoubleBuffering) {
         m_context->makeContextCurrent();
@@ -87,28 +113,11 @@
     m_layer.clearClient();
 }
 
-SkDeferredCanvas* Canvas2DLayerBridge::deferredCanvas()
-{
-    if (m_deferralMode == Deferred)
-        return static_cast<SkDeferredCanvas*>(m_canvas);
-    return 0;
-}
-
-void Canvas2DLayerBridge::prepareForDraw()
-{
-    ASSERT(deferredCanvas());
-    if (!m_useDoubleBuffering)
-        m_layer.willModifyTexture();
-    m_context->makeContextCurrent();
-}
-
 SkCanvas* Canvas2DLayerBridge::skCanvas(SkDevice* device)
 {
-    ASSERT(!m_canvas);
     if (m_deferralMode == Deferred) {
-        SkDeferredCanvas* deferred = new SkDeferredCanvas(device);
-        deferred->setNotificationClient(this);
-        m_canvas = deferred;
+        SkAutoTUnref<AcceleratedDeviceContext> deviceContext(new AcceleratedDeviceContext(context(), m_layer, m_useDoubleBuffering));
+        m_canvas = new SkDeferredCanvas(device, deviceContext.get());
     } else
         m_canvas = new SkCanvas(device);
 

Modified: trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.h (125832 => 125833)


--- trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.h	2012-08-17 00:29:35 UTC (rev 125832)
+++ trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.h	2012-08-17 00:47:25 UTC (rev 125833)
@@ -29,12 +29,14 @@
 #include "GraphicsContext3D.h"
 #include "ImageBuffer.h" // For DeferralMode enum.
 #include "IntSize.h"
-#include "SkDeferredCanvas.h"
 #include <public/WebExternalTextureLayer.h>
 #include <public/WebExternalTextureLayerClient.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/RefPtr.h>
 
+class SkCanvas;
+class SkDevice;
+
 namespace WebKit {
 class WebGraphicsContext3D;
 }
@@ -43,7 +45,7 @@
 
 class LayerChromium;
 
-class Canvas2DLayerBridge : public WebKit::WebExternalTextureLayerClient, public SkDeferredCanvas::NotificationClient {
+class Canvas2DLayerBridge : public WebKit::WebExternalTextureLayerClient {
     WTF_MAKE_NONCOPYABLE(Canvas2DLayerBridge);
 public:
     static PassOwnPtr<Canvas2DLayerBridge> create(PassRefPtr<GraphicsContext3D> context, const IntSize& size, DeferralMode deferralMode, unsigned textureId)
@@ -57,9 +59,6 @@
     virtual unsigned prepareTexture(WebKit::WebTextureUpdater&) OVERRIDE;
     virtual WebKit::WebGraphicsContext3D* context() OVERRIDE;
 
-    // SkDeferredCanvas::NotificationClient implementation
-    virtual void prepareForDraw();
-
     SkCanvas* skCanvas(SkDevice*);
     WebKit::WebLayer* layer();
     void contextAcquired();
@@ -68,7 +67,6 @@
 
 private:
     Canvas2DLayerBridge(PassRefPtr<GraphicsContext3D>, const IntSize&, DeferralMode, unsigned textureId);
-    SkDeferredCanvas* deferredCanvas();
 
     DeferralMode m_deferralMode;
     bool m_useDoubleBuffering;

Modified: trunk/Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp (125832 => 125833)


--- trunk/Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp	2012-08-17 00:29:35 UTC (rev 125832)
+++ trunk/Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp	2012-08-17 00:47:25 UTC (rev 125833)
@@ -46,6 +46,7 @@
 #include "PlatformContextSkia.h"
 #include "SharedGraphicsContext3D.h"
 #include "SkColorPriv.h"
+#include "SkDeferredCanvas.h"
 #include "SkGpuDevice.h"
 #include "SkiaUtils.h"
 #include "WEBPImageEncoder.h"
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to