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

Side by Side Diff: content/renderer/gpu/render_widget_compositor.cc

Issue 429393003: Send idle notifications to V8 after commit (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Call idle notification from RenderWidgetCompositor. Created 6 years, 4 months 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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "content/renderer/gpu/render_widget_compositor.h" 5 #include "content/renderer/gpu/render_widget_compositor.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 20 matching lines...) Expand all
31 #include "content/common/content_switches_internal.h" 31 #include "content/common/content_switches_internal.h"
32 #include "content/common/gpu/client/context_provider_command_buffer.h" 32 #include "content/common/gpu/client/context_provider_command_buffer.h"
33 #include "content/public/common/content_switches.h" 33 #include "content/public/common/content_switches.h"
34 #include "content/renderer/compositor_bindings/web_layer_impl.h" 34 #include "content/renderer/compositor_bindings/web_layer_impl.h"
35 #include "content/renderer/input/input_handler_manager.h" 35 #include "content/renderer/input/input_handler_manager.h"
36 #include "content/renderer/render_thread_impl.h" 36 #include "content/renderer/render_thread_impl.h"
37 #include "gpu/command_buffer/client/gles2_interface.h" 37 #include "gpu/command_buffer/client/gles2_interface.h"
38 #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallbac k.h" 38 #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallbac k.h"
39 #include "third_party/WebKit/public/platform/WebSelectionBound.h" 39 #include "third_party/WebKit/public/platform/WebSelectionBound.h"
40 #include "third_party/WebKit/public/platform/WebSize.h" 40 #include "third_party/WebKit/public/platform/WebSize.h"
41 #include "third_party/WebKit/public/web/WebKit.h"
41 #include "third_party/WebKit/public/web/WebWidget.h" 42 #include "third_party/WebKit/public/web/WebWidget.h"
42 #include "ui/gfx/frame_time.h" 43 #include "ui/gfx/frame_time.h"
43 #include "ui/gl/gl_switches.h" 44 #include "ui/gl/gl_switches.h"
44 #include "ui/native_theme/native_theme_switches.h" 45 #include "ui/native_theme/native_theme_switches.h"
45 46
46 #if defined(OS_ANDROID) 47 #if defined(OS_ANDROID)
47 #include "content/renderer/android/synchronous_compositor_factory.h" 48 #include "content/renderer/android/synchronous_compositor_factory.h"
48 #include "ui/gfx/android/device_display_info.h" 49 #include "ui/gfx/android/device_display_info.h"
49 #endif 50 #endif
50 51
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 cc::LayerTreeSettings settings; 167 cc::LayerTreeSettings settings;
167 168
168 // For web contents, layer transforms should scale up the contents of layers 169 // For web contents, layer transforms should scale up the contents of layers
169 // to keep content always crisp when possible. 170 // to keep content always crisp when possible.
170 settings.layer_transforms_should_scale_layer_contents = true; 171 settings.layer_transforms_should_scale_layer_contents = true;
171 172
172 settings.throttle_frame_production = 173 settings.throttle_frame_production =
173 !cmd->HasSwitch(switches::kDisableGpuVsync); 174 !cmd->HasSwitch(switches::kDisableGpuVsync);
174 settings.begin_frame_scheduling_enabled = 175 settings.begin_frame_scheduling_enabled =
175 cmd->HasSwitch(switches::kEnableBeginFrameScheduling); 176 cmd->HasSwitch(switches::kEnableBeginFrameScheduling);
177 settings.send_v8_idle_notification_after_commit =
jamesr 2014/08/18 23:23:49 you're setting this here in content/renderer/...
178 cmd->HasSwitch(cc::switches::kSendV8IdleNotificationAfterCommit);
176 settings.main_frame_before_activation_enabled = 179 settings.main_frame_before_activation_enabled =
177 cmd->HasSwitch(cc::switches::kEnableMainFrameBeforeActivation) && 180 cmd->HasSwitch(cc::switches::kEnableMainFrameBeforeActivation) &&
178 !cmd->HasSwitch(cc::switches::kDisableMainFrameBeforeActivation); 181 !cmd->HasSwitch(cc::switches::kDisableMainFrameBeforeActivation);
179 settings.main_frame_before_draw_enabled = 182 settings.main_frame_before_draw_enabled =
180 !cmd->HasSwitch(cc::switches::kDisableMainFrameBeforeDraw); 183 !cmd->HasSwitch(cc::switches::kDisableMainFrameBeforeDraw);
181 settings.report_overscroll_only_for_scrollable_axes = true; 184 settings.report_overscroll_only_for_scrollable_axes = true;
182 settings.accelerated_animation_enabled = 185 settings.accelerated_animation_enabled =
183 !cmd->HasSwitch(cc::switches::kDisableThreadedAnimation); 186 !cmd->HasSwitch(cc::switches::kDisableThreadedAnimation);
184 187
185 settings.default_tile_size = CalculateDefaultTileSize(); 188 settings.default_tile_size = CalculateDefaultTileSize();
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 void RenderWidgetCompositor::WillBeginMainFrame(int frame_id) { 753 void RenderWidgetCompositor::WillBeginMainFrame(int frame_id) {
751 widget_->InstrumentWillBeginFrame(frame_id); 754 widget_->InstrumentWillBeginFrame(frame_id);
752 widget_->willBeginCompositorFrame(); 755 widget_->willBeginCompositorFrame();
753 } 756 }
754 757
755 void RenderWidgetCompositor::DidBeginMainFrame() { 758 void RenderWidgetCompositor::DidBeginMainFrame() {
756 widget_->InstrumentDidBeginFrame(); 759 widget_->InstrumentDidBeginFrame();
757 } 760 }
758 761
759 void RenderWidgetCompositor::BeginMainFrame(const cc::BeginFrameArgs& args) { 762 void RenderWidgetCompositor::BeginMainFrame(const cc::BeginFrameArgs& args) {
763 begin_main_frame_args_ = args;
760 double frame_time = (args.frame_time - base::TimeTicks()).InSecondsF(); 764 double frame_time = (args.frame_time - base::TimeTicks()).InSecondsF();
761 WebBeginFrameArgs web_begin_frame_args = WebBeginFrameArgs(frame_time); 765 WebBeginFrameArgs web_begin_frame_args = WebBeginFrameArgs(frame_time);
762 widget_->webwidget()->beginFrame(web_begin_frame_args); 766 widget_->webwidget()->beginFrame(web_begin_frame_args);
763 } 767 }
764 768
765 void RenderWidgetCompositor::Layout() { 769 void RenderWidgetCompositor::Layout() {
766 widget_->webwidget()->layout(); 770 widget_->webwidget()->layout();
767 } 771 }
768 772
769 void RenderWidgetCompositor::ApplyScrollAndScale( 773 void RenderWidgetCompositor::ApplyScrollAndScale(
770 const gfx::Vector2d& scroll_delta, 774 const gfx::Vector2d& scroll_delta,
771 float page_scale) { 775 float page_scale) {
772 widget_->webwidget()->applyScrollAndScale(scroll_delta, page_scale); 776 widget_->webwidget()->applyScrollAndScale(scroll_delta, page_scale);
773 } 777 }
774 778
775 scoped_ptr<cc::OutputSurface> RenderWidgetCompositor::CreateOutputSurface( 779 scoped_ptr<cc::OutputSurface> RenderWidgetCompositor::CreateOutputSurface(
776 bool fallback) { 780 bool fallback) {
777 return widget_->CreateOutputSurface(fallback); 781 return widget_->CreateOutputSurface(fallback);
778 } 782 }
779 783
780 void RenderWidgetCompositor::DidInitializeOutputSurface() { 784 void RenderWidgetCompositor::DidInitializeOutputSurface() {
781 } 785 }
782 786
783 void RenderWidgetCompositor::WillCommit() { 787 void RenderWidgetCompositor::WillCommit() {
784 widget_->InstrumentWillComposite(); 788 widget_->InstrumentWillComposite();
785 } 789 }
786 790
787 void RenderWidgetCompositor::DidCommit() { 791 void RenderWidgetCompositor::DidCommit() {
792 int idle_time_for_gc =
793 std::max(0L, (begin_main_frame_args_.frame_time +
794 begin_main_frame_args_.interval -
795 base::TimeTicks::HighResNow()).InMilliseconds());
796 if (layer_tree_host_->settings().send_v8_idle_notification_after_commit &&
jamesr 2014/08/18 23:23:49 ... and then querying it again here, in the same o
ernstm 2014/08/18 23:46:34 Done.
797 idle_time_for_gc)
798 blink::mainThreadIsolate()->IdleNotification(idle_time_for_gc);
799
788 widget_->DidCommitCompositorFrame(); 800 widget_->DidCommitCompositorFrame();
789 widget_->didBecomeReadyForAdditionalInput(); 801 widget_->didBecomeReadyForAdditionalInput();
790 } 802 }
791 803
792 void RenderWidgetCompositor::DidCommitAndDrawFrame() { 804 void RenderWidgetCompositor::DidCommitAndDrawFrame() {
793 widget_->didCommitAndDrawCompositorFrame(); 805 widget_->didCommitAndDrawCompositorFrame();
794 } 806 }
795 807
796 void RenderWidgetCompositor::DidCompleteSwapBuffers() { 808 void RenderWidgetCompositor::DidCompleteSwapBuffers() {
797 widget_->didCompleteSwapBuffers(); 809 widget_->didCompleteSwapBuffers();
(...skipping 18 matching lines...) Expand all
816 widget_->OnSwapBuffersAborted(); 828 widget_->OnSwapBuffersAborted();
817 } 829 }
818 830
819 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { 831 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() {
820 cc::ContextProvider* provider = 832 cc::ContextProvider* provider =
821 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); 833 RenderThreadImpl::current()->SharedMainThreadContextProvider().get();
822 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM(); 834 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM();
823 } 835 }
824 836
825 } // namespace content 837 } // namespace content
OLDNEW
« cc/base/switches.cc ('K') | « content/renderer/gpu/render_widget_compositor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698