OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "CCLayerTreeHostImpl.h" | 7 #include "CCLayerTreeHostImpl.h" |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "CCAppendQuadsData.h" | 10 #include "CCAppendQuadsData.h" |
11 #include "CCDamageTracker.h" | 11 #include "CCDamageTracker.h" |
12 #include "CCDebugRectHistory.h" | 12 #include "CCDebugRectHistory.h" |
13 #include "CCDelayBasedTimeSource.h" | 13 #include "CCDelayBasedTimeSource.h" |
| 14 #include "CCDelegatingRenderer.h" |
14 #include "CCFontAtlas.h" | 15 #include "CCFontAtlas.h" |
15 #include "CCFrameRateCounter.h" | 16 #include "CCFrameRateCounter.h" |
16 #include "CCHeadsUpDisplayLayerImpl.h" | 17 #include "CCHeadsUpDisplayLayerImpl.h" |
17 #include "CCLayerIterator.h" | 18 #include "CCLayerIterator.h" |
18 #include "CCLayerTreeHost.h" | 19 #include "CCLayerTreeHost.h" |
19 #include "CCLayerTreeHostCommon.h" | 20 #include "CCLayerTreeHostCommon.h" |
20 #include "CCMathUtil.h" | 21 #include "CCMathUtil.h" |
21 #include "CCOverdrawMetrics.h" | 22 #include "CCOverdrawMetrics.h" |
22 #include "CCPageScaleAnimation.h" | 23 #include "CCPageScaleAnimation.h" |
23 #include "CCPrioritizedTextureManager.h" | 24 #include "CCPrioritizedTextureManager.h" |
24 #include "CCRenderPassDrawQuad.h" | 25 #include "CCRenderPassDrawQuad.h" |
25 #include "CCRendererGL.h" | 26 #include "CCRendererGL.h" |
26 #include "CCRendererSoftware.h" | 27 #include "CCRendererSoftware.h" |
27 #include "CCRenderingStats.h" | 28 #include "CCRenderingStats.h" |
28 #include "CCScrollbarAnimationController.h" | 29 #include "CCScrollbarAnimationController.h" |
29 #include "CCScrollbarLayerImpl.h" | 30 #include "CCScrollbarLayerImpl.h" |
30 #include "CCSettings.h" | 31 #include "CCSettings.h" |
31 #include "CCSingleThreadProxy.h" | 32 #include "CCSingleThreadProxy.h" |
| 33 #include "compositor_frame.h" |
32 #include "TextureUploader.h" | 34 #include "TextureUploader.h" |
33 #include "TraceEvent.h" | 35 #include "TraceEvent.h" |
34 #include <wtf/CurrentTime.h> | 36 #include <wtf/CurrentTime.h> |
35 #include <algorithm> | 37 #include <algorithm> |
36 | 38 |
37 using WebKit::WebTransformationMatrix; | 39 using WebKit::WebTransformationMatrix; |
38 | 40 |
39 namespace { | 41 namespace { |
40 | 42 |
41 void didVisibilityChange(cc::CCLayerTreeHostImpl* id, bool visible) | 43 void didVisibilityChange(cc::CCLayerTreeHostImpl* id, bool visible) |
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 | 654 |
653 ASSERT(bytes); | 655 ASSERT(bytes); |
654 m_client->setNeedsCommitOnImplThread(); | 656 m_client->setNeedsCommitOnImplThread(); |
655 } | 657 } |
656 | 658 |
657 void CCLayerTreeHostImpl::onVSyncParametersChanged(double monotonicTimebase, dou
ble intervalInSeconds) | 659 void CCLayerTreeHostImpl::onVSyncParametersChanged(double monotonicTimebase, dou
ble intervalInSeconds) |
658 { | 660 { |
659 m_client->onVSyncParametersChanged(monotonicTimebase, intervalInSeconds); | 661 m_client->onVSyncParametersChanged(monotonicTimebase, intervalInSeconds); |
660 } | 662 } |
661 | 663 |
| 664 void CCLayerTreeHostImpl::onSendFrameToParentCompositorAck(const WebKit::WebComp
ositorFrameAck& webAck) |
| 665 { |
| 666 const CompositorFrameAck& ack = static_cast<const CompositorFrameAck&>(webAc
k); |
| 667 if (m_renderer) |
| 668 m_renderer->onSendFrameToParentCompositorAck(ack); |
| 669 } |
| 670 |
662 void CCLayerTreeHostImpl::drawLayers(const FrameData& frame) | 671 void CCLayerTreeHostImpl::drawLayers(const FrameData& frame) |
663 { | 672 { |
664 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::drawLayers"); | 673 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::drawLayers"); |
665 ASSERT(canDraw()); | 674 ASSERT(canDraw()); |
666 ASSERT(!frame.renderPasses.empty()); | 675 ASSERT(!frame.renderPasses.empty()); |
667 | 676 |
668 // FIXME: use the frame begin time from the overall compositor scheduler. | 677 // FIXME: use the frame begin time from the overall compositor scheduler. |
669 // This value is currently inaccessible because it is up in Chromium's | 678 // This value is currently inaccessible because it is up in Chromium's |
670 // RenderWidget. | 679 // RenderWidget. |
671 m_fpsCounter->markBeginningOfFrame(currentTime()); | 680 m_fpsCounter->markBeginningOfFrame(currentTime()); |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
840 m_resourceProvider.clear(); | 849 m_resourceProvider.clear(); |
841 m_context.reset(); | 850 m_context.reset(); |
842 | 851 |
843 if (!context->bindToClient(this)) | 852 if (!context->bindToClient(this)) |
844 return false; | 853 return false; |
845 | 854 |
846 OwnPtr<CCResourceProvider> resourceProvider = CCResourceProvider::create(con
text.get()); | 855 OwnPtr<CCResourceProvider> resourceProvider = CCResourceProvider::create(con
text.get()); |
847 if (!resourceProvider) | 856 if (!resourceProvider) |
848 return false; | 857 return false; |
849 | 858 |
850 if (context->context3D()) | 859 if (context->capabilities().hasParentCompositor) |
| 860 m_renderer = CCDelegatingRenderer::create(this, resourceProvider.get()); |
| 861 else if (context->context3D()) |
851 m_renderer = CCRendererGL::create(this, resourceProvider.get()); | 862 m_renderer = CCRendererGL::create(this, resourceProvider.get()); |
852 else if (context->softwareDevice()) | 863 else if (context->softwareDevice()) |
853 m_renderer = CCRendererSoftware::create(this, resourceProvider.get(), co
ntext->softwareDevice()); | 864 m_renderer = CCRendererSoftware::create(this, resourceProvider.get(), co
ntext->softwareDevice()); |
854 if (!m_renderer) | 865 if (!m_renderer) |
855 return false; | 866 return false; |
856 | 867 |
857 m_resourceProvider = resourceProvider.release(); | 868 m_resourceProvider = resourceProvider.release(); |
858 m_context = context.Pass(); | 869 m_context = context.Pass(); |
859 | 870 |
860 if (!m_visible) | 871 if (!m_visible) |
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1453 | 1464 |
1454 CCScrollbarAnimationController* scrollbarController = layer->scrollbarAnimat
ionController(); | 1465 CCScrollbarAnimationController* scrollbarController = layer->scrollbarAnimat
ionController(); |
1455 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1466 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
1456 m_client->setNeedsRedrawOnImplThread(); | 1467 m_client->setNeedsRedrawOnImplThread(); |
1457 | 1468 |
1458 for (size_t i = 0; i < layer->children().size(); ++i) | 1469 for (size_t i = 0; i < layer->children().size(); ++i) |
1459 animateScrollbarsRecursive(layer->children()[i], monotonicTime); | 1470 animateScrollbarsRecursive(layer->children()[i], monotonicTime); |
1460 } | 1471 } |
1461 | 1472 |
1462 } // namespace cc | 1473 } // namespace cc |
OLD | NEW |