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

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 unit tests 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
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 838 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698