2011-05-17 Nat Duca <nduca@chromium.org>
authornduca@chromium.org <nduca@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 24 Jun 2011 19:29:16 +0000 (19:29 +0000)
committernduca@chromium.org <nduca@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 24 Jun 2011 19:29:16 +0000 (19:29 +0000)
commitb21ae1e16394249437d20c8898d3bffce3e17196
treebecbb782caee406e5f39fd936f2fa4afa315e954
parenta948683d3aa4a6f7f0fa5cd6a65bab45d75c7c6b
2011-05-17  Nat Duca  <nduca@chromium.org>

        Reviewed by James Robinson.

        [chromium] Implement CCLayerTreeHost and CCLayerTreeHostImpl portions of threaded compositor
        https://bugs.webkit.org/show_bug.cgi?id=58408

        Create CCLayerTreeHost and CCLayerTreeHostImpl, which are the main
        thread and compositor thread halves of a composited view. Communication
        between the two is based on the design used in FileStreamProxy.

        * WebCore.gypi:
        * platform/chromium/TraceEvent.h:
        * platform/graphics/chromium/LayerRendererChromium.cpp:
        (WebCore::LayerRendererChromium::create):
        (WebCore::LayerRendererChromium::LayerRendererChromium):
        (WebCore::LayerRendererChromium::setViewport):
        (WebCore::LayerRendererChromium::updateLayers):
        (WebCore::LayerRendererChromium::drawLayers):
        (WebCore::LayerRendererChromiumImpl::create):
        (WebCore::LayerRendererChromiumImpl::drawLayersAndPresent):
        (WebCore::LayerRendererChromiumImpl::LayerRendererChromiumImpl):
        (WebCore::LayerRendererChromiumImpl::drawLayersOnMainThread):
        (WebCore::LayerRendererChromiumImplProxy::create):
        (WebCore::LayerRendererChromiumImplProxy::createLayerTreeHostImpl):
        (WebCore::LayerRendererChromiumImplProxy::LayerRendererChromiumImplProxy):
        (WebCore::LayerRendererChromium::createLayerTreeHostImplProxy):
        * platform/graphics/chromium/LayerRendererChromium.h:
        * platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp:
        (WebCore::CCHeadsUpDisplay::setShowFPSCounter):
        (WebCore::CCHeadsUpDisplay::setShowPlatformLayerTree):
        * platform/graphics/chromium/cc/CCHeadsUpDisplay.h:
        (WebCore::CCHeadsUpDisplay::currentFrameNumber):
        * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: Copied from Source/WebCore/platform/graphics/chromium/cc/CCThread.cpp.
        (WebCore::CCLayerTreeHost::CCLayerTreeHost):
        (WebCore::CCLayerTreeHost::init):
        (WebCore::CCLayerTreeHost::~CCLayerTreeHost):
        (WebCore::CCLayerTreeHost::beginCommit):
        (WebCore::CCLayerTreeHost::commitComplete):
        (WebCore::CCLayerTreeHost::animateAndLayout):
        (WebCore::CCLayerTreeHost::createLayerTreeHostCommitter):
        (WebCore::CCLayerTreeHost::setNeedsCommitAndRedraw):
        (WebCore::CCLayerTreeHost::setNeedsRedraw):
        (WebCore::CCLayerTreeHost::updateLayers):
        * platform/graphics/chromium/cc/CCLayerTreeHost.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCThread.cpp.
        (WebCore::CCLayerTreeHost::frameNumber):
        * platform/graphics/chromium/cc/CCLayerTreeHostCommitter.cpp: Copied from Source/WebCore/platform/graphics/chromium/cc/CCThread.cpp.
        (WebCore::CCLayerTreeHostCommitter::create):
        (WebCore::CCLayerTreeHostCommitter::commit):
        * platform/graphics/chromium/cc/CCLayerTreeHostCommitter.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCThread.cpp.
        (WebCore::CCLayerTreeHostCommitter::CCLayerTreeHostCommitter):
        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: Added.
        (WebCore::CCLayerTreeHostImpl::CCLayerTreeHostImpl):
        (WebCore::CCLayerTreeHostImpl::~CCLayerTreeHostImpl):
        (WebCore::CCLayerTreeHostImpl::beginCommit):
        (WebCore::CCLayerTreeHostImpl::commitComplete):
        (WebCore::CCLayerTreeHostImpl::drawLayers):
        (WebCore::CCLayerTreeHostImpl::setNeedsCommitAndRedraw):
        (WebCore::CCLayerTreeHostImpl::setNeedsRedraw):
        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCThread.cpp.
        (WebCore::CCLayerTreeHostImplClient::~CCLayerTreeHostImplClient):
        (WebCore::CCLayerTreeHostImpl::frameNumber):
        (WebCore::CCLayerTreeHostImpl::sourceFrameNumber):
        (WebCore::CCLayerTreeHostImpl::setSourceFrameNumber):
        * platform/graphics/chromium/cc/CCLayerTreeHostImplProxy.cpp: Added.
        (WebCore::CCLayerTreeHostImplProxy::CCLayerTreeHostImplProxy):
        (WebCore::CCLayerTreeHostImplProxy::start):
        (WebCore::CCLayerTreeHostImplProxy::~CCLayerTreeHostImplProxy):
        (WebCore::CCLayerTreeHostImplProxy::isStarted):
        (WebCore::CCLayerTreeHostImplProxy::setNeedsCommitAndRedraw):
        (WebCore::CCLayerTreeHostImplProxy::setNeedsRedraw):
        (WebCore::CCLayerTreeHostImplProxy::stop):
        (WebCore::CCLayerTreeHostImplProxy::postDrawLayersTaskOnCCThread):
        (WebCore::CCLayerTreeHostImplProxy::requestFrameAndCommitOnCCThread):
        (WebCore::CCLayerTreeHostImplProxy::isMainThread):
        (WebCore::CCLayerTreeHostImplProxy::isCCThread):
        (WebCore::CCLayerTreeHostImplProxy::requestFrameAndCommit):
        (WebCore::CCLayerTreeHostImplProxy::commitOnCCThread):
        (WebCore::CCLayerTreeHostImplProxy::drawLayersOnCCThread):
        (WebCore::CCLayerTreeHostImplProxy::setNeedsCommitAndRedrawOnCCThread):
        (WebCore::CCLayerTreeHostImplProxy::setNeedsRedrawOnCCThread):
        (WebCore::CCLayerTreeHostImplProxy::initImplOnCCThread):
        (WebCore::CCLayerTreeHostImplProxy::layerTreeHostClosedOnCCThread):
        * platform/graphics/chromium/cc/CCLayerTreeHostImplProxy.h: Added.
        (WebCore::CCLayerTreeHostImplProxy::host):
        * platform/graphics/chromium/cc/CCMainThreadTask.h:
        * platform/graphics/chromium/cc/CCThread.cpp:
        (WebCore::CCThread::runLoop):
        * platform/graphics/chromium/cc/CCThreadTask.h:
2011-05-17  Nat Duca  <nduca@chromium.org>

        Reviewed by James Robinson.

        [chromium] Implement CCLayerTreeHost and CCLayerTreeHostImpl portions of threaded compositor
        https://bugs.webkit.org/show_bug.cgi?id=58408

        Redirect invalidates and scheduling into compositor when in
        threaded compositing mode. Add stress tests for CCLayerTreeHost.

        * WebKit.gypi:
        * public/WebWidget.h:
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::animate):
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::animate):
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::animateAndLayout):
        (WebKit::WebViewImpl::updateLayers):
        (WebKit::WebViewImpl::composite):
        (WebKit::WebViewImpl::setRootLayerNeedsDisplay):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::doComposite):
        (WebKit::WebViewImpl::createLayerTreeHostContext3D):
        (WebKit::WebViewImpl::reallocateRenderer):
        (WebKit::WebViewImpl::updateLayerRendererSettings):
        (WebKit::WebViewImpl::updateLayerRendererViewport):
        * src/WebViewImpl.h:
        * tests/CCLayerTreeHostTest.cpp: Added.
        (WTF::CCLayerTreeHostTest::CCLayerTreeHostTest):
        (WTF::CCLayerTreeHostTest::animateAndLayout):
        (WTF::CCLayerTreeHostTest::beginCommitOnCCThread):
        (WTF::CCLayerTreeHostTest::beginCommitOnMainThread):
        (WTF::CCLayerTreeHostTest::commitOnCCThread):
        (WTF::CCLayerTreeHostTest::commitCompleteOnCCThread):
        (WTF::CCLayerTreeHostTest::commitCompleteOnMainThread):
        (WTF::CCLayerTreeHostTest::drawLayersAndPresentOnCCThread):
        (WTF::CCLayerTreeHostTest::updateLayers):
        (WTF::CCLayerTreeHostTest::onBeginTest):
        (WTF::CCLayerTreeHostTest::doEndTest):
        (WTF::CCLayerTreeHostTest::onEndTest):
        (WTF::CCLayerTreeHostTest::runTest):
        (WTF::CCLayerTreeHostTest::testTimeout):
        (WTF::MockLayerTreeHostClient::MockLayerTreeHostClient):
        (WTF::MockLayerTreeHostClient::createLayerTreeHostContext3D):
        (WTF::MockLayerTreeHostClient::animateAndLayout):
        (WTF::MockLayerTreeHostClient::updateLayers):
        (WTF::MockLayerTreeHostCommitter::create):
        (WTF::MockLayerTreeHostCommitter::commit):
        (WTF::MockLayerTreeHostCommitter::MockLayerTreeHostCommitter):
        (WTF::MockLayerTreeHostImpl::create):
        (WTF::MockLayerTreeHostImpl::beginCommit):
        (WTF::MockLayerTreeHostImpl::commitComplete):
        (WTF::MockLayerTreeHostImpl::drawLayersAndPresent):
        (WTF::MockLayerTreeHostImpl::MockLayerTreeHostImpl):
        (WTF::MockLayerTreeHostImplProxy::create):
        (WTF::MockLayerTreeHostImplProxy::createLayerTreeHostImpl):
        (WTF::MockLayerTreeHostImplProxy::MockLayerTreeHostImplProxy):
        (WTF::MockLayerTreeHost::MockLayerTreeHost):
        (WTF::MockLayerTreeHost::createLayerTreeHostImplProxy):
        (WTF::MockLayerTreeHost::updateLayers):
        (WTF::MockLayerTreeHost::createLayerTreeHostCommitter):
        (WTF::MockLayerTreeHost::beginCommit):
        (WTF::MockLayerTreeHost::commitComplete):
        (WTF::CCLayerTreeHostTest::doBeginTest):
        (WTF::CCLayerTreeHostTest::endTest):
        (WTF::CCLayerTreeHostTestShortlived1::CCLayerTreeHostTestShortlived1):
        (WTF::CCLayerTreeHostTestShortlived1::beginTest):
        (WTF::CCLayerTreeHostTestShortlived1::afterTest):
        (WTF::TEST_F):
        (WTF::CCLayerTreeHostTestShortlived2::CCLayerTreeHostTestShortlived2):
        (WTF::CCLayerTreeHostTestShortlived2::beginTest):
        (WTF::CCLayerTreeHostTestShortlived2::afterTest):
        (WTF::CCLayerTreeHostTestShortlived3::CCLayerTreeHostTestShortlived3):
        (WTF::CCLayerTreeHostTestShortlived3::beginTest):
        (WTF::CCLayerTreeHostTestShortlived3::afterTest):
        (WTF::CCLayerTreeHostTestCommitingWithContinuousRedraw::CCLayerTreeHostTestCommitingWithContinuousRedraw):
        (WTF::CCLayerTreeHostTestCommitingWithContinuousRedraw::beginTest):
        (WTF::CCLayerTreeHostTestCommitingWithContinuousRedraw::commitCompleteOnCCThread):
        (WTF::CCLayerTreeHostTestCommitingWithContinuousRedraw::drawLayersAndPresentOnCCThread):
        (WTF::CCLayerTreeHostTestCommitingWithContinuousRedraw::afterTest):
        (WTF::CCLayerTreeHostTestSetNeedsCommit1::CCLayerTreeHostTestSetNeedsCommit1):
        (WTF::CCLayerTreeHostTestSetNeedsCommit1::beginTest):
        (WTF::CCLayerTreeHostTestSetNeedsCommit1::drawLayersAndPresentOnCCThread):
        (WTF::CCLayerTreeHostTestSetNeedsCommit1::commitOnCCThread):
        (WTF::CCLayerTreeHostTestSetNeedsCommit1::afterTest):
        (WTF::CCLayerTreeHostTestSetNeedsCommit2::CCLayerTreeHostTestSetNeedsCommit2):
        (WTF::CCLayerTreeHostTestSetNeedsCommit2::beginTest):
        (WTF::CCLayerTreeHostTestSetNeedsCommit2::drawLayersAndPresentOnCCThread):
        (WTF::CCLayerTreeHostTestSetNeedsCommit2::commitOnCCThread):
        (WTF::CCLayerTreeHostTestSetNeedsCommit2::afterTest):
        (WTF::CCLayerTreeHostTestSetNeedsRedraw::CCLayerTreeHostTestSetNeedsRedraw):
        (WTF::CCLayerTreeHostTestSetNeedsRedraw::beginTest):
        (WTF::CCLayerTreeHostTestSetNeedsRedraw::drawLayersAndPresentOnCCThread):
        (WTF::CCLayerTreeHostTestSetNeedsRedraw::commitOnCCThread):
        (WTF::CCLayerTreeHostTestSetNeedsRedraw::afterTest):
        * tests/CCThreadTest.cpp:
        (WebCore::TEST):
2011-05-17  Nat Duca  <nduca@chromium.org>

        Reviewed by James Robinson.

        [chromium] Implement CCLayerTreeHost and CCLayerTreeHostImpl portions of threaded compositor
        https://bugs.webkit.org/show_bug.cgi?id=58408

        * DumpRenderTree/chromium/WebViewHost.cpp:
        (WebViewHost::paintInvalidatedRegion):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@89694 268f45cc-cd09-0410-ab3c-d52691b4dbfc
28 files changed:
Source/WebCore/ChangeLog
Source/WebCore/WebCore.gypi
Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h
Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp
Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.h
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommitter.cpp [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommitter.h [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImplProxy.cpp [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImplProxy.h [new file with mode: 0644]
Source/WebCore/platform/graphics/chromium/cc/CCMainThreadTask.h
Source/WebCore/platform/graphics/chromium/cc/CCThread.cpp
Source/WebCore/platform/graphics/chromium/cc/CCThreadTask.h
Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/WebKit.gypi
Source/WebKit/chromium/public/WebWidget.h
Source/WebKit/chromium/src/WebPopupMenuImpl.cpp
Source/WebKit/chromium/src/WebPopupMenuImpl.h
Source/WebKit/chromium/src/WebViewImpl.cpp
Source/WebKit/chromium/src/WebViewImpl.h
Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp [new file with mode: 0644]
Source/WebKit/chromium/tests/CCThreadTest.cpp
Tools/ChangeLog
Tools/DumpRenderTree/chromium/WebViewHost.cpp