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

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

Issue 2317753002: cc: Abstract the LayerTreeHost. (Closed)
Patch Set: Rebase Created 4 years, 3 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
« no previous file with comments | « content/renderer/gpu/render_widget_compositor.h ('k') | ui/compositor/compositor.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 (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 <stddef.h> 7 #include <stddef.h>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 // Ignore what the system said and give all clients the same maximum 582 // Ignore what the system said and give all clients the same maximum
583 // allocation on desktop platforms. 583 // allocation on desktop platforms.
584 actual.bytes_limit_when_visible = 512 * 1024 * 1024; 584 actual.bytes_limit_when_visible = 512 * 1024 * 1024;
585 actual.priority_cutoff_when_visible = 585 actual.priority_cutoff_when_visible =
586 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE; 586 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE;
587 #endif 587 #endif
588 return actual; 588 return actual;
589 } 589 }
590 590
591 void RenderWidgetCompositor::SetNeverVisible() { 591 void RenderWidgetCompositor::SetNeverVisible() {
592 DCHECK(!layer_tree_host_->visible()); 592 DCHECK(!layer_tree_host_->IsVisible());
593 never_visible_ = true; 593 never_visible_ = true;
594 } 594 }
595 595
596 const base::WeakPtr<cc::InputHandler>& 596 const base::WeakPtr<cc::InputHandler>&
597 RenderWidgetCompositor::GetInputHandler() { 597 RenderWidgetCompositor::GetInputHandler() {
598 return layer_tree_host_->GetInputHandler(); 598 return layer_tree_host_->GetInputHandler();
599 } 599 }
600 600
601 bool RenderWidgetCompositor::BeginMainFrameRequested() const { 601 bool RenderWidgetCompositor::BeginMainFrameRequested() const {
602 return layer_tree_host_->BeginMainFrameRequested(); 602 return layer_tree_host_->BeginMainFrameRequested();
603 } 603 }
604 604
605 void RenderWidgetCompositor::SetNeedsDisplayOnAllLayers() { 605 void RenderWidgetCompositor::SetNeedsDisplayOnAllLayers() {
606 layer_tree_host_->GetLayerTree()->SetNeedsDisplayOnAllLayers(); 606 layer_tree_host_->GetLayerTree()->SetNeedsDisplayOnAllLayers();
607 } 607 }
608 608
609 void RenderWidgetCompositor::SetRasterizeOnlyVisibleContent() { 609 void RenderWidgetCompositor::SetRasterizeOnlyVisibleContent() {
610 cc::LayerTreeDebugState current = layer_tree_host_->debug_state(); 610 cc::LayerTreeDebugState current = layer_tree_host_->GetDebugState();
611 current.rasterize_only_visible_content = true; 611 current.rasterize_only_visible_content = true;
612 layer_tree_host_->SetDebugState(current); 612 layer_tree_host_->SetDebugState(current);
613 } 613 }
614 614
615 void RenderWidgetCompositor::SetNeedsRedrawRect(gfx::Rect damage_rect) { 615 void RenderWidgetCompositor::SetNeedsRedrawRect(gfx::Rect damage_rect) {
616 layer_tree_host_->SetNeedsRedrawRect(damage_rect); 616 layer_tree_host_->SetNeedsRedrawRect(damage_rect);
617 } 617 }
618 618
619 void RenderWidgetCompositor::SetNeedsForcedRedraw() { 619 void RenderWidgetCompositor::SetNeedsForcedRedraw() {
620 layer_tree_host_->SetNextCommitForcesRedraw(); 620 layer_tree_host_->SetNextCommitForcesRedraw();
621 setNeedsAnimate(); 621 setNeedsAnimate();
622 } 622 }
623 623
624 std::unique_ptr<cc::SwapPromiseMonitor> 624 std::unique_ptr<cc::SwapPromiseMonitor>
625 RenderWidgetCompositor::CreateLatencyInfoSwapPromiseMonitor( 625 RenderWidgetCompositor::CreateLatencyInfoSwapPromiseMonitor(
626 ui::LatencyInfo* latency) { 626 ui::LatencyInfo* latency) {
627 return std::unique_ptr<cc::SwapPromiseMonitor>( 627 return std::unique_ptr<cc::SwapPromiseMonitor>(
628 new cc::LatencyInfoSwapPromiseMonitor(latency, layer_tree_host_.get(), 628 new cc::LatencyInfoSwapPromiseMonitor(latency, layer_tree_host_.get(),
629 NULL)); 629 NULL));
630 } 630 }
631 631
632 void RenderWidgetCompositor::QueueSwapPromise( 632 void RenderWidgetCompositor::QueueSwapPromise(
633 std::unique_ptr<cc::SwapPromise> swap_promise) { 633 std::unique_ptr<cc::SwapPromise> swap_promise) {
634 layer_tree_host_->QueueSwapPromise(std::move(swap_promise)); 634 layer_tree_host_->QueueSwapPromise(std::move(swap_promise));
635 } 635 }
636 636
637 int RenderWidgetCompositor::GetSourceFrameNumber() const { 637 int RenderWidgetCompositor::GetSourceFrameNumber() const {
638 return layer_tree_host_->source_frame_number(); 638 return layer_tree_host_->SourceFrameNumber();
639 } 639 }
640 640
641 void RenderWidgetCompositor::SetNeedsUpdateLayers() { 641 void RenderWidgetCompositor::SetNeedsUpdateLayers() {
642 layer_tree_host_->SetNeedsUpdateLayers(); 642 layer_tree_host_->SetNeedsUpdateLayers();
643 } 643 }
644 644
645 void RenderWidgetCompositor::SetNeedsCommit() { 645 void RenderWidgetCompositor::SetNeedsCommit() {
646 layer_tree_host_->SetNeedsCommit(); 646 layer_tree_host_->SetNeedsCommit();
647 } 647 }
648 648
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 if (result->HasBitmap()) { 875 if (result->HasBitmap()) {
876 std::unique_ptr<SkBitmap> result_bitmap = result->TakeBitmap(); 876 std::unique_ptr<SkBitmap> result_bitmap = result->TakeBitmap();
877 callback->didCompositeAndReadback(*result_bitmap); 877 callback->didCompositeAndReadback(*result_bitmap);
878 } else { 878 } else {
879 callback->didCompositeAndReadback(SkBitmap()); 879 callback->didCompositeAndReadback(SkBitmap());
880 } 880 }
881 } 881 }
882 882
883 bool RenderWidgetCompositor::CompositeIsSynchronous() const { 883 bool RenderWidgetCompositor::CompositeIsSynchronous() const {
884 if (!threaded_) { 884 if (!threaded_) {
885 DCHECK(!layer_tree_host_->settings().single_thread_proxy_scheduler); 885 DCHECK(!layer_tree_host_->GetSettings().single_thread_proxy_scheduler);
886 return true; 886 return true;
887 } 887 }
888 return false; 888 return false;
889 } 889 }
890 890
891 void RenderWidgetCompositor::layoutAndPaintAsync( 891 void RenderWidgetCompositor::layoutAndPaintAsync(
892 blink::WebLayoutAndPaintAsyncCallback* callback) { 892 blink::WebLayoutAndPaintAsyncCallback* callback) {
893 DCHECK(!layout_and_paint_async_callback_); 893 DCHECK(!layout_and_paint_async_callback_);
894 layout_and_paint_async_callback_ = callback; 894 layout_and_paint_async_callback_ = callback;
895 895
(...skipping 16 matching lines...) Expand all
912 if (!layout_and_paint_async_callback_) 912 if (!layout_and_paint_async_callback_)
913 return; 913 return;
914 layout_and_paint_async_callback_->didLayoutAndPaint(); 914 layout_and_paint_async_callback_->didLayoutAndPaint();
915 layout_and_paint_async_callback_ = nullptr; 915 layout_and_paint_async_callback_ = nullptr;
916 } 916 }
917 917
918 void RenderWidgetCompositor::compositeAndReadbackAsync( 918 void RenderWidgetCompositor::compositeAndReadbackAsync(
919 blink::WebCompositeAndReadbackAsyncCallback* callback) { 919 blink::WebCompositeAndReadbackAsyncCallback* callback) {
920 DCHECK(!layout_and_paint_async_callback_); 920 DCHECK(!layout_and_paint_async_callback_);
921 scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner = 921 scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner =
922 layer_tree_host_->task_runner_provider()->MainThreadTaskRunner(); 922 layer_tree_host_->GetTaskRunnerProvider()->MainThreadTaskRunner();
923 std::unique_ptr<cc::CopyOutputRequest> request = 923 std::unique_ptr<cc::CopyOutputRequest> request =
924 cc::CopyOutputRequest::CreateBitmapRequest(base::Bind( 924 cc::CopyOutputRequest::CreateBitmapRequest(base::Bind(
925 [](blink::WebCompositeAndReadbackAsyncCallback* callback, 925 [](blink::WebCompositeAndReadbackAsyncCallback* callback,
926 scoped_refptr<base::SingleThreadTaskRunner> task_runner, 926 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
927 std::unique_ptr<cc::CopyOutputResult> result) { 927 std::unique_ptr<cc::CopyOutputResult> result) {
928 task_runner->PostTask(FROM_HERE, 928 task_runner->PostTask(FROM_HERE,
929 base::Bind(&CompositeAndReadbackAsyncCallback, 929 base::Bind(&CompositeAndReadbackAsyncCallback,
930 callback, base::Passed(&result))); 930 callback, base::Passed(&result)));
931 }, 931 },
932 callback, base::Passed(&main_thread_task_runner))); 932 callback, base::Passed(&main_thread_task_runner)));
(...skipping 15 matching lines...) Expand all
948 void RenderWidgetCompositor::SynchronouslyComposite() { 948 void RenderWidgetCompositor::SynchronouslyComposite() {
949 DCHECK(CompositeIsSynchronous()); 949 DCHECK(CompositeIsSynchronous());
950 layer_tree_host_->Composite(base::TimeTicks::Now()); 950 layer_tree_host_->Composite(base::TimeTicks::Now());
951 } 951 }
952 952
953 void RenderWidgetCompositor::setDeferCommits(bool defer_commits) { 953 void RenderWidgetCompositor::setDeferCommits(bool defer_commits) {
954 layer_tree_host_->SetDeferCommits(defer_commits); 954 layer_tree_host_->SetDeferCommits(defer_commits);
955 } 955 }
956 956
957 int RenderWidgetCompositor::layerTreeId() const { 957 int RenderWidgetCompositor::layerTreeId() const {
958 return layer_tree_host_->id(); 958 return layer_tree_host_->GetId();
959 } 959 }
960 960
961 void RenderWidgetCompositor::setShowFPSCounter(bool show) { 961 void RenderWidgetCompositor::setShowFPSCounter(bool show) {
962 cc::LayerTreeDebugState debug_state = layer_tree_host_->debug_state(); 962 cc::LayerTreeDebugState debug_state = layer_tree_host_->GetDebugState();
963 debug_state.show_fps_counter = show; 963 debug_state.show_fps_counter = show;
964 layer_tree_host_->SetDebugState(debug_state); 964 layer_tree_host_->SetDebugState(debug_state);
965 } 965 }
966 966
967 void RenderWidgetCompositor::setShowPaintRects(bool show) { 967 void RenderWidgetCompositor::setShowPaintRects(bool show) {
968 cc::LayerTreeDebugState debug_state = layer_tree_host_->debug_state(); 968 cc::LayerTreeDebugState debug_state = layer_tree_host_->GetDebugState();
969 debug_state.show_paint_rects = show; 969 debug_state.show_paint_rects = show;
970 layer_tree_host_->SetDebugState(debug_state); 970 layer_tree_host_->SetDebugState(debug_state);
971 } 971 }
972 972
973 void RenderWidgetCompositor::setShowDebugBorders(bool show) { 973 void RenderWidgetCompositor::setShowDebugBorders(bool show) {
974 cc::LayerTreeDebugState debug_state = layer_tree_host_->debug_state(); 974 cc::LayerTreeDebugState debug_state = layer_tree_host_->GetDebugState();
975 debug_state.show_debug_borders = show; 975 debug_state.show_debug_borders = show;
976 layer_tree_host_->SetDebugState(debug_state); 976 layer_tree_host_->SetDebugState(debug_state);
977 } 977 }
978 978
979 void RenderWidgetCompositor::setShowScrollBottleneckRects(bool show) { 979 void RenderWidgetCompositor::setShowScrollBottleneckRects(bool show) {
980 cc::LayerTreeDebugState debug_state = layer_tree_host_->debug_state(); 980 cc::LayerTreeDebugState debug_state = layer_tree_host_->GetDebugState();
981 debug_state.show_touch_event_handler_rects = show; 981 debug_state.show_touch_event_handler_rects = show;
982 debug_state.show_wheel_event_handler_rects = show; 982 debug_state.show_wheel_event_handler_rects = show;
983 debug_state.show_non_fast_scrollable_rects = show; 983 debug_state.show_non_fast_scrollable_rects = show;
984 layer_tree_host_->SetDebugState(debug_state); 984 layer_tree_host_->SetDebugState(debug_state);
985 } 985 }
986 986
987 void RenderWidgetCompositor::updateTopControlsState( 987 void RenderWidgetCompositor::updateTopControlsState(
988 WebTopControlsState constraints, 988 WebTopControlsState constraints,
989 WebTopControlsState current, 989 WebTopControlsState current,
990 bool animate) { 990 bool animate) {
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 void RenderWidgetCompositor::SendCompositorProto( 1117 void RenderWidgetCompositor::SendCompositorProto(
1118 const cc::proto::CompositorMessage& proto) { 1118 const cc::proto::CompositorMessage& proto) {
1119 int signed_size = proto.ByteSize(); 1119 int signed_size = proto.ByteSize();
1120 size_t unsigned_size = base::checked_cast<size_t>(signed_size); 1120 size_t unsigned_size = base::checked_cast<size_t>(signed_size);
1121 std::vector<uint8_t> serialized(unsigned_size); 1121 std::vector<uint8_t> serialized(unsigned_size);
1122 proto.SerializeToArray(serialized.data(), signed_size); 1122 proto.SerializeToArray(serialized.data(), signed_size);
1123 delegate_->ForwardCompositorProto(serialized); 1123 delegate_->ForwardCompositorProto(serialized);
1124 } 1124 }
1125 1125
1126 void RenderWidgetCompositor::SetSurfaceClientId(uint32_t surface_client_id) { 1126 void RenderWidgetCompositor::SetSurfaceClientId(uint32_t surface_client_id) {
1127 layer_tree_host_->set_surface_client_id(surface_client_id); 1127 layer_tree_host_->SetSurfaceClientId(surface_client_id);
1128 } 1128 }
1129 1129
1130 void RenderWidgetCompositor::OnHandleCompositorProto( 1130 void RenderWidgetCompositor::OnHandleCompositorProto(
1131 const std::vector<uint8_t>& proto) { 1131 const std::vector<uint8_t>& proto) {
1132 DCHECK(remote_proto_channel_receiver_); 1132 DCHECK(remote_proto_channel_receiver_);
1133 1133
1134 std::unique_ptr<cc::proto::CompositorMessage> deserialized( 1134 std::unique_ptr<cc::proto::CompositorMessage> deserialized(
1135 new cc::proto::CompositorMessage); 1135 new cc::proto::CompositorMessage);
1136 int signed_size = base::checked_cast<int>(proto.size()); 1136 int signed_size = base::checked_cast<int>(proto.size());
1137 if (!deserialized->ParseFromArray(proto.data(), signed_size)) { 1137 if (!deserialized->ParseFromArray(proto.data(), signed_size)) {
1138 LOG(ERROR) << "Unable to parse compositor proto."; 1138 LOG(ERROR) << "Unable to parse compositor proto.";
1139 return; 1139 return;
1140 } 1140 }
1141 1141
1142 remote_proto_channel_receiver_->OnProtoReceived(std::move(deserialized)); 1142 remote_proto_channel_receiver_->OnProtoReceived(std::move(deserialized));
1143 } 1143 }
1144 1144
1145 void RenderWidgetCompositor::SetPaintedDeviceScaleFactor( 1145 void RenderWidgetCompositor::SetPaintedDeviceScaleFactor(
1146 float device_scale) { 1146 float device_scale) {
1147 layer_tree_host_->GetLayerTree()->SetPaintedDeviceScaleFactor(device_scale); 1147 layer_tree_host_->GetLayerTree()->SetPaintedDeviceScaleFactor(device_scale);
1148 } 1148 }
1149 1149
1150 } // namespace content 1150 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/gpu/render_widget_compositor.h ('k') | ui/compositor/compositor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698