Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Side by Side Diff: cc/layer_tree_host_impl.cc

Issue 11316128: Send compositor frame IPC with metadata. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix compile errors on mac/win Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layer_tree_host_impl.h ('k') | cc/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 851 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 875
875 // TODO(piman): We may need to do some validation on this ack before process ing it. 876 // TODO(piman): We may need to do some validation on this ack before process ing it.
876 m_renderer->receiveCompositorFrameAck(ack); 877 m_renderer->receiveCompositorFrameAck(ack);
877 } 878 }
878 879
879 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*) 880 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*)
880 { 881 {
881 m_client->onCanDrawStateChanged(canDraw()); 882 m_client->onCanDrawStateChanged(canDraw());
882 } 883 }
883 884
885 CompositorFrameMetadata LayerTreeHostImpl::makeCompositorFrameMetadata() const
886 {
887 if (!rootScrollLayer())
888 return CompositorFrameMetadata();
889
890 CompositorFrameMetadata metadata;
891 metadata.root_scroll_offset = rootScrollLayer()->scrollOffset() + rootScroll Layer()->scrollDelta();
892 metadata.page_scale_factor = m_pinchZoomViewport.totalPageScaleFactor();
893 metadata.viewport_size = m_pinchZoomViewport.bounds().size();
894 metadata.root_layer_size = rootScrollLayer()->bounds();
895 metadata.min_page_scale_factor = m_pinchZoomViewport.minPageScaleFactor();
896 metadata.max_page_scale_factor = m_pinchZoomViewport.maxPageScaleFactor();
897 if (!m_settings.pageScalePinchZoomEnabled) {
898 metadata.root_scroll_offset.Scale(1 / m_pinchZoomViewport.pageScaleFacto r());
899 metadata.root_layer_size.Scale(1 / m_pinchZoomViewport.pageScaleFactor() );
900 }
901
902 return metadata;
903 }
904
884 void LayerTreeHostImpl::drawLayers(FrameData& frame) 905 void LayerTreeHostImpl::drawLayers(FrameData& frame)
885 { 906 {
886 TRACE_EVENT0("cc", "LayerTreeHostImpl::drawLayers"); 907 TRACE_EVENT0("cc", "LayerTreeHostImpl::drawLayers");
887 DCHECK(canDraw()); 908 DCHECK(canDraw());
888 DCHECK(!frame.renderPasses.empty()); 909 DCHECK(!frame.renderPasses.empty());
889 910
890 // FIXME: use the frame begin time from the overall compositor scheduler. 911 // FIXME: use the frame begin time from the overall compositor scheduler.
891 // This value is currently inaccessible because it is up in Chromium's 912 // This value is currently inaccessible because it is up in Chromium's
892 // RenderWidget. 913 // RenderWidget.
893 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now()); 914 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now());
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
1057 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out putSurface.get()); 1078 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out putSurface.get());
1058 if (!resourceProvider) 1079 if (!resourceProvider)
1059 return false; 1080 return false;
1060 1081
1061 if (m_settings.implSidePainting) 1082 if (m_settings.implSidePainting)
1062 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin gs.numRasterThreads)); 1083 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin gs.numRasterThreads));
1063 1084
1064 if (outputSurface->Capabilities().has_parent_compositor) 1085 if (outputSurface->Capabilities().has_parent_compositor)
1065 m_renderer = DelegatingRenderer::Create(this, resourceProvider.get()); 1086 m_renderer = DelegatingRenderer::Create(this, resourceProvider.get());
1066 else if (outputSurface->Context3D()) 1087 else if (outputSurface->Context3D())
1067 m_renderer = GLRenderer::create(this, resourceProvider.get()); 1088 m_renderer = GLRenderer::create(this, outputSurface.get(), resourceProvi der.get());
1068 else if (outputSurface->SoftwareDevice()) 1089 else if (outputSurface->SoftwareDevice())
1069 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp utSurface->SoftwareDevice()); 1090 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp utSurface->SoftwareDevice());
1070 if (!m_renderer) 1091 if (!m_renderer)
1071 return false; 1092 return false;
1072 1093
1073 m_resourceProvider = resourceProvider.Pass(); 1094 m_resourceProvider = resourceProvider.Pass();
1074 m_outputSurface = outputSurface.Pass(); 1095 m_outputSurface = outputSurface.Pass();
1075 1096
1076 if (!m_visible) 1097 if (!m_visible)
1077 m_renderer->setVisible(m_visible); 1098 m_renderer->setVisible(m_visible);
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
1736 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController(); 1757 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController();
1737 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); 1758 double monotonicTime = (time - base::TimeTicks()).InSecondsF();
1738 if (scrollbarController && scrollbarController->animate(monotonicTime)) 1759 if (scrollbarController && scrollbarController->animate(monotonicTime))
1739 m_client->setNeedsRedrawOnImplThread(); 1760 m_client->setNeedsRedrawOnImplThread();
1740 1761
1741 for (size_t i = 0; i < layer->children().size(); ++i) 1762 for (size_t i = 0; i < layer->children().size(); ++i)
1742 animateScrollbarsRecursive(layer->children()[i], time); 1763 animateScrollbarsRecursive(layer->children()[i], time);
1743 } 1764 }
1744 1765
1745 } // namespace cc 1766 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer_tree_host_impl.h ('k') | cc/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698