Title: [100199] trunk/Source
Revision
100199
Author
e...@google.com
Date
2011-11-14 15:10:16 -0800 (Mon, 14 Nov 2011)

Log Message

[chromium] Pipe compositor commit/swap up to WebWidgetClient
https://bugs.webkit.org/show_bug.cgi?id=72041

Reviewed by Darin Fisher.

Source/WebCore:

* platform/graphics/chromium/cc/CCLayerTreeHost.h:
(WebCore::CCLayerTreeHost::didCommitAndDrawFrame):
(WebCore::CCLayerTreeHost::didCompleteSwapBuffers):
* platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
(WebCore::CCSingleThreadProxy::doComposite):
* platform/graphics/chromium/cc/CCThreadProxy.cpp:
(WebCore::CCThreadProxy::onSwapBuffersCompleteOnImplThread):
(WebCore::CCThreadProxy::scheduledActionDrawAndSwap):
(WebCore::CCThreadProxy::didCommitAndDrawFrame):
(WebCore::CCThreadProxy::didCompleteSwapBuffers):
* platform/graphics/chromium/cc/CCThreadProxy.h:

Source/WebKit/chromium:

* public/WebWidgetClient.h:
(WebKit::WebWidgetClient::didCommitAndDrawCompositorFrame):
(WebKit::WebWidgetClient::didCompleteSwapBuffers):
* src/WebLayerTreeViewImpl.cpp:
(WebKit::WebLayerTreeViewImpl::didCommitAndDrawFrame):
(WebKit::WebLayerTreeViewImpl::didCompleteSwapBuffers):
* src/WebLayerTreeViewImpl.h:
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::didCommitAndDrawFrame):
(WebKit::WebViewImpl::didCompleteSwapBuffers):
* src/WebViewImpl.h:
* tests/CCLayerTreeHostTest.cpp:
(WTF::MockLayerTreeHostClient::didCommitAndDrawFrame):
(WTF::MockLayerTreeHostClient::didCompleteSwapBuffers):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (100198 => 100199)


--- trunk/Source/WebCore/ChangeLog	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebCore/ChangeLog	2011-11-14 23:10:16 UTC (rev 100199)
@@ -1,3 +1,22 @@
+2011-11-14  Adrienne Walker  <e...@google.com>
+
+        [chromium] Pipe compositor commit/swap up to WebWidgetClient
+        https://bugs.webkit.org/show_bug.cgi?id=72041
+
+        Reviewed by Darin Fisher.
+
+        * platform/graphics/chromium/cc/CCLayerTreeHost.h:
+        (WebCore::CCLayerTreeHost::didCommitAndDrawFrame):
+        (WebCore::CCLayerTreeHost::didCompleteSwapBuffers):
+        * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
+        (WebCore::CCSingleThreadProxy::doComposite):
+        * platform/graphics/chromium/cc/CCThreadProxy.cpp:
+        (WebCore::CCThreadProxy::onSwapBuffersCompleteOnImplThread):
+        (WebCore::CCThreadProxy::scheduledActionDrawAndSwap):
+        (WebCore::CCThreadProxy::didCommitAndDrawFrame):
+        (WebCore::CCThreadProxy::didCompleteSwapBuffers):
+        * platform/graphics/chromium/cc/CCThreadProxy.h:
+
 2011-11-14  Tony Chang  <t...@chromium.org>
 
         Remove the CSS3_FLEXBOX compile time flag and enable on all ports

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h (100198 => 100199)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h	2011-11-14 23:10:16 UTC (rev 100199)
@@ -57,7 +57,8 @@
     virtual void applyScrollAndScale(const IntSize& scrollDelta, float pageScale) = 0;
     virtual PassRefPtr<GraphicsContext3D> createLayerTreeHostContext3D() = 0;
     virtual void didRecreateGraphicsContext(bool success) = 0;
-    virtual void didCommitAndDrawFrame(int frameNumber) = 0;
+    virtual void didCommitAndDrawFrame() = 0;
+    virtual void didCompleteSwapBuffers() = 0;
 
     // Used only in the single-threaded path.
     virtual void scheduleComposite() = 0;
@@ -115,7 +116,8 @@
     virtual PassOwnPtr<CCLayerTreeHostImpl> createLayerTreeHostImpl(CCLayerTreeHostImplClient*);
     void didBecomeInvisibleOnImplThread(CCLayerTreeHostImpl*);
     void didRecreateGraphicsContext(bool success);
-    void didCommitAndDrawFrame(int frameNumber) { m_client->didCommitAndDrawFrame(frameNumber); }
+    void didCommitAndDrawFrame() { m_client->didCommitAndDrawFrame(); }
+    void didCompleteSwapBuffers() { m_client->didCompleteSwapBuffers(); }
     void deleteContentsTexturesOnImplThread(TextureAllocator*);
 
     // CCLayerTreeHost interface to WebView.

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp (100198 => 100199)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp	2011-11-14 23:10:16 UTC (rev 100199)
@@ -303,7 +303,7 @@
 
     if (m_nextFrameIsNewlyCommittedFrame) {
         m_nextFrameIsNewlyCommittedFrame = false;
-        m_layerTreeHost->didCommitAndDrawFrame(m_layerTreeHostImpl->sourceFrameNumber());
+        m_layerTreeHost->didCommitAndDrawFrame();
     }
 
     return true;

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp (100198 => 100199)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp	2011-11-14 23:10:16 UTC (rev 100199)
@@ -229,6 +229,7 @@
     ASSERT(isImplThread());
     TRACE_EVENT("CCThreadProxy::onSwapBuffersCompleteOnImplThread", this, 0);
     m_schedulerOnImplThread->didSwapBuffersComplete();
+    m_mainThreadProxy->postTask(createMainThreadTask(this, &CCThreadProxy::didCompleteSwapBuffers));
 }
 
 void CCThreadProxy::setNeedsCommitOnImplThread()
@@ -487,18 +488,26 @@
     // Tell the main thread that the the newly-commited frame was drawn.
     if (m_nextFrameIsNewlyCommittedFrameOnImplThread) {
         m_nextFrameIsNewlyCommittedFrameOnImplThread = false;
-        m_mainThreadProxy->postTask(createMainThreadTask(this, &CCThreadProxy::didCommitAndDrawFrame, m_layerTreeHostImpl->sourceFrameNumber()));
+        m_mainThreadProxy->postTask(createMainThreadTask(this, &CCThreadProxy::didCommitAndDrawFrame));
     }
 }
 
-void CCThreadProxy::didCommitAndDrawFrame(int frameNumber)
+void CCThreadProxy::didCommitAndDrawFrame()
 {
     ASSERT(isMainThread());
     if (!m_layerTreeHost)
         return;
-    m_layerTreeHost->didCommitAndDrawFrame(frameNumber);
+    m_layerTreeHost->didCommitAndDrawFrame();
 }
 
+void CCThreadProxy::didCompleteSwapBuffers()
+{
+    ASSERT(isMainThread());
+    if (!m_layerTreeHost)
+        return;
+    m_layerTreeHost->didCompleteSwapBuffers();
+}
+
 void CCThreadProxy::initializeImplOnImplThread(CCCompletionEvent* completion)
 {
     TRACE_EVENT("CCThreadProxy::initializeImplOnImplThread", this, 0);

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h (100198 => 100199)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h	2011-11-14 23:10:16 UTC (rev 100199)
@@ -82,7 +82,8 @@
 
     // Called on CCMainThread
     void beginFrameAndCommit(int sequenceNumber, double frameBeginTime, PassOwnPtr<CCScrollAndScaleSet>);
-    void didCommitAndDrawFrame(int frameNumber);
+    void didCommitAndDrawFrame();
+    void didCompleteSwapBuffers();
 
     // Called on CCThread
     struct ReadbackRequest {

Modified: trunk/Source/WebKit/chromium/ChangeLog (100198 => 100199)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-11-14 23:10:16 UTC (rev 100199)
@@ -1,3 +1,25 @@
+2011-11-14  Adrienne Walker  <e...@google.com>
+
+        [chromium] Pipe compositor commit/swap up to WebWidgetClient
+        https://bugs.webkit.org/show_bug.cgi?id=72041
+
+        Reviewed by Darin Fisher.
+
+        * public/WebWidgetClient.h:
+        (WebKit::WebWidgetClient::didCommitAndDrawCompositorFrame):
+        (WebKit::WebWidgetClient::didCompleteSwapBuffers):
+        * src/WebLayerTreeViewImpl.cpp:
+        (WebKit::WebLayerTreeViewImpl::didCommitAndDrawFrame):
+        (WebKit::WebLayerTreeViewImpl::didCompleteSwapBuffers):
+        * src/WebLayerTreeViewImpl.h:
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::didCommitAndDrawFrame):
+        (WebKit::WebViewImpl::didCompleteSwapBuffers):
+        * src/WebViewImpl.h:
+        * tests/CCLayerTreeHostTest.cpp:
+        (WTF::MockLayerTreeHostClient::didCommitAndDrawFrame):
+        (WTF::MockLayerTreeHostClient::didCompleteSwapBuffers):
+
 2011-11-14  Tony Chang  <t...@chromium.org>
 
         Remove the CSS3_FLEXBOX compile time flag and enable on all ports

Modified: trunk/Source/WebKit/chromium/public/WebWidgetClient.h (100198 => 100199)


--- trunk/Source/WebKit/chromium/public/WebWidgetClient.h	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebKit/chromium/public/WebWidgetClient.h	2011-11-14 23:10:16 UTC (rev 100199)
@@ -60,6 +60,14 @@
     virtual void didActivateCompositor(int compositorIdentifier) { }
     virtual void didDeactivateCompositor() { }
 
+    // Called for compositing mode when the draw commands for a WebKit-side
+    // frame have been issued.
+    virtual void didCommitAndDrawCompositorFrame() { }
+
+    // Called for compositing mode when swapbuffers has been posted in the GPU
+    // process.
+    virtual void didCompleteSwapBuffers() { }
+
     // Called when a call to WebWidget::composite is required
     virtual void scheduleComposite() { }
 

Modified: trunk/Source/WebKit/chromium/src/WebLayerTreeViewImpl.cpp (100198 => 100199)


--- trunk/Source/WebKit/chromium/src/WebLayerTreeViewImpl.cpp	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebKit/chromium/src/WebLayerTreeViewImpl.cpp	2011-11-14 23:10:16 UTC (rev 100199)
@@ -96,11 +96,16 @@
     return GraphicsContext3DPrivate::createGraphicsContextFromWebContext(webContext.release(), attributes, 0, style, usage);
 }
 
-void WebLayerTreeViewImpl::didCommitAndDrawFrame(int frameNumber)
+void WebLayerTreeViewImpl::didCommitAndDrawFrame()
 {
     // FIXME: route this up to the WebLayerTreeView client
 }
 
+void WebLayerTreeViewImpl::didCompleteSwapBuffers()
+{
+    // FIXME: route this up to the WebLayerTreeView client
+}
+
 void WebLayerTreeViewImpl::didRecreateGraphicsContext(bool success)
 {
     if (m_client)

Modified: trunk/Source/WebKit/chromium/src/WebLayerTreeViewImpl.h (100198 => 100199)


--- trunk/Source/WebKit/chromium/src/WebLayerTreeViewImpl.h	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebKit/chromium/src/WebLayerTreeViewImpl.h	2011-11-14 23:10:16 UTC (rev 100199)
@@ -44,8 +44,9 @@
     virtual void animateAndLayout(double frameBeginTime);
     virtual void applyScrollAndScale(const WebCore::IntSize& scrollDelta, float pageScale);
     virtual PassRefPtr<WebCore::GraphicsContext3D> createLayerTreeHostContext3D();
-    virtual void didCommitAndDrawFrame(int frameNumber);
     virtual void didRecreateGraphicsContext(bool success);
+    virtual void didCommitAndDrawFrame();
+    virtual void didCompleteSwapBuffers();
 
     // Only used in the single threaded path.
     virtual void scheduleComposite();

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (100198 => 100199)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2011-11-14 23:10:16 UTC (rev 100199)
@@ -2803,11 +2803,18 @@
     }
 }
 
-void WebViewImpl::didCommitAndDrawFrame(int frameNumber)
+void WebViewImpl::didCommitAndDrawFrame()
 {
-    // FIXME: route this up to RenderWidget's didFlushPaint.
+    if (m_client)
+        m_client->didCommitAndDrawCompositorFrame();
 }
 
+void WebViewImpl::didCompleteSwapBuffers()
+{
+    if (m_client)
+        m_client->didCompleteSwapBuffers();
+}
+
 void WebViewImpl::didRecreateGraphicsContext(bool success)
 {
 

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.h (100198 => 100199)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.h	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.h	2011-11-14 23:10:16 UTC (rev 100199)
@@ -224,7 +224,8 @@
     virtual void animateAndLayout(double frameBeginTime);
     virtual void applyScrollAndScale(const WebCore::IntSize&, float);
     virtual PassRefPtr<WebCore::GraphicsContext3D> createLayerTreeHostContext3D();
-    virtual void didCommitAndDrawFrame(int frameNumber);
+    virtual void didCommitAndDrawFrame();
+    virtual void didCompleteSwapBuffers();
     virtual void didRecreateGraphicsContext(bool success);
     virtual void scheduleComposite();
 

Modified: trunk/Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp (100198 => 100199)


--- trunk/Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp	2011-11-14 22:51:50 UTC (rev 100198)
+++ trunk/Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp	2011-11-14 23:10:16 UTC (rev 100199)
@@ -165,10 +165,14 @@
         return context;
     }
 
-    virtual void didCommitAndDrawFrame(int frameNumber)
+    virtual void didCommitAndDrawFrame()
     {
     }
 
+    virtual void didCompleteSwapBuffers()
+    {
+    }
+
     virtual void didRecreateGraphicsContext(bool)
     {
     }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to