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 "cc/layer_tree_host_impl.h" | 5 #include "cc/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
11 #include "base/json/json_writer.h" | 11 #include "base/json/json_writer.h" |
12 #include "cc/append_quads_data.h" | 12 #include "cc/append_quads_data.h" |
| 13 #include "cc/compositor_frame_metadata.h" |
13 #include "cc/damage_tracker.h" | 14 #include "cc/damage_tracker.h" |
14 #include "cc/debug_rect_history.h" | 15 #include "cc/debug_rect_history.h" |
15 #include "cc/delay_based_time_source.h" | 16 #include "cc/delay_based_time_source.h" |
16 #include "cc/delegating_renderer.h" | 17 #include "cc/delegating_renderer.h" |
17 #include "cc/frame_rate_counter.h" | 18 #include "cc/frame_rate_counter.h" |
18 #include "cc/gl_renderer.h" | 19 #include "cc/gl_renderer.h" |
19 #include "cc/heads_up_display_layer_impl.h" | 20 #include "cc/heads_up_display_layer_impl.h" |
20 #include "cc/layer_iterator.h" | 21 #include "cc/layer_iterator.h" |
21 #include "cc/layer_tree_host.h" | 22 #include "cc/layer_tree_host.h" |
22 #include "cc/layer_tree_host_common.h" | 23 #include "cc/layer_tree_host_common.h" |
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
861 | 862 |
862 // TODO(piman): We may need to do some validation on this ack before process
ing it. | 863 // TODO(piman): We may need to do some validation on this ack before process
ing it. |
863 m_renderer->receiveCompositorFrameAck(ack); | 864 m_renderer->receiveCompositorFrameAck(ack); |
864 } | 865 } |
865 | 866 |
866 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*) | 867 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*) |
867 { | 868 { |
868 m_client->onCanDrawStateChanged(canDraw()); | 869 m_client->onCanDrawStateChanged(canDraw()); |
869 } | 870 } |
870 | 871 |
| 872 CompositorFrameMetadata LayerTreeHostImpl::makeCompositorFrameMetadata() const |
| 873 { |
| 874 if (!rootScrollLayer()) |
| 875 return CompositorFrameMetadata(); |
| 876 |
| 877 CompositorFrameMetadata metadata; |
| 878 metadata.root_scroll_offset = rootScrollLayer()->scrollOffset() + rootScroll
Layer()->scrollDelta(); |
| 879 metadata.page_scale_factor = m_pinchZoomViewport.totalPageScaleFactor(); |
| 880 metadata.viewport_size = m_pinchZoomViewport.bounds().size(); |
| 881 metadata.root_layer_size = rootScrollLayer()->bounds(); |
| 882 metadata.min_page_scale_factor = m_pinchZoomViewport.minPageScaleFactor(); |
| 883 metadata.max_page_scale_factor = m_pinchZoomViewport.maxPageScaleFactor(); |
| 884 if (!m_settings.pageScalePinchZoomEnabled) { |
| 885 metadata.root_scroll_offset.Scale(1 / m_pinchZoomViewport.pageScaleFacto
r()); |
| 886 metadata.root_layer_size.Scale(1 / m_pinchZoomViewport.pageScaleFactor()
); |
| 887 } |
| 888 |
| 889 return metadata; |
| 890 } |
| 891 |
871 void LayerTreeHostImpl::drawLayers(FrameData& frame) | 892 void LayerTreeHostImpl::drawLayers(FrameData& frame) |
872 { | 893 { |
873 TRACE_EVENT0("cc", "LayerTreeHostImpl::drawLayers"); | 894 TRACE_EVENT0("cc", "LayerTreeHostImpl::drawLayers"); |
874 DCHECK(canDraw()); | 895 DCHECK(canDraw()); |
875 DCHECK(!frame.renderPasses.empty()); | 896 DCHECK(!frame.renderPasses.empty()); |
876 | 897 |
877 // FIXME: use the frame begin time from the overall compositor scheduler. | 898 // FIXME: use the frame begin time from the overall compositor scheduler. |
878 // This value is currently inaccessible because it is up in Chromium's | 899 // This value is currently inaccessible because it is up in Chromium's |
879 // RenderWidget. | 900 // RenderWidget. |
880 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now()); | 901 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now()); |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1044 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out
putSurface.get()); | 1065 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out
putSurface.get()); |
1045 if (!resourceProvider) | 1066 if (!resourceProvider) |
1046 return false; | 1067 return false; |
1047 | 1068 |
1048 if (m_settings.implSidePainting) | 1069 if (m_settings.implSidePainting) |
1049 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin
gs.numRasterThreads)); | 1070 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin
gs.numRasterThreads)); |
1050 | 1071 |
1051 if (outputSurface->Capabilities().has_parent_compositor) | 1072 if (outputSurface->Capabilities().has_parent_compositor) |
1052 m_renderer = DelegatingRenderer::Create(this, resourceProvider.get()); | 1073 m_renderer = DelegatingRenderer::Create(this, resourceProvider.get()); |
1053 else if (outputSurface->Context3D()) | 1074 else if (outputSurface->Context3D()) |
1054 m_renderer = GLRenderer::create(this, resourceProvider.get()); | 1075 m_renderer = GLRenderer::create(this, outputSurface.get(), resourceProvi
der.get()); |
1055 else if (outputSurface->SoftwareDevice()) | 1076 else if (outputSurface->SoftwareDevice()) |
1056 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp
utSurface->SoftwareDevice()); | 1077 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp
utSurface->SoftwareDevice()); |
1057 if (!m_renderer) | 1078 if (!m_renderer) |
1058 return false; | 1079 return false; |
1059 | 1080 |
1060 m_resourceProvider = resourceProvider.Pass(); | 1081 m_resourceProvider = resourceProvider.Pass(); |
1061 m_outputSurface = outputSurface.Pass(); | 1082 m_outputSurface = outputSurface.Pass(); |
1062 | 1083 |
1063 if (!m_visible) | 1084 if (!m_visible) |
1064 m_renderer->setVisible(m_visible); | 1085 m_renderer->setVisible(m_visible); |
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1723 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); | 1744 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); |
1724 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1745 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
1725 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1746 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
1726 m_client->setNeedsRedrawOnImplThread(); | 1747 m_client->setNeedsRedrawOnImplThread(); |
1727 | 1748 |
1728 for (size_t i = 0; i < layer->children().size(); ++i) | 1749 for (size_t i = 0; i < layer->children().size(); ++i) |
1729 animateScrollbarsRecursive(layer->children()[i], time); | 1750 animateScrollbarsRecursive(layer->children()[i], time); |
1730 } | 1751 } |
1731 | 1752 |
1732 } // namespace cc | 1753 } // namespace cc |
OLD | NEW |