OLD | NEW |
---|---|
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 23 matching lines...) Expand all Loading... | |
34 #include "cc/output/copy_output_request.h" | 34 #include "cc/output/copy_output_request.h" |
35 #include "cc/output/copy_output_result.h" | 35 #include "cc/output/copy_output_result.h" |
36 #include "cc/output/latency_info_swap_promise.h" | 36 #include "cc/output/latency_info_swap_promise.h" |
37 #include "cc/output/swap_promise.h" | 37 #include "cc/output/swap_promise.h" |
38 #include "cc/proto/compositor_message.pb.h" | 38 #include "cc/proto/compositor_message.pb.h" |
39 #include "cc/resources/single_release_callback.h" | 39 #include "cc/resources/single_release_callback.h" |
40 #include "cc/scheduler/begin_frame_source.h" | 40 #include "cc/scheduler/begin_frame_source.h" |
41 #include "cc/trees/latency_info_swap_promise_monitor.h" | 41 #include "cc/trees/latency_info_swap_promise_monitor.h" |
42 #include "cc/trees/layer_tree_host.h" | 42 #include "cc/trees/layer_tree_host.h" |
43 #include "cc/trees/remote_proto_channel.h" | 43 #include "cc/trees/remote_proto_channel.h" |
44 #include "cc/trees/surface_sequence_generator.h" | |
45 #include "cc/trees/swap_promise_manager.h" | |
44 #include "content/common/content_switches_internal.h" | 46 #include "content/common/content_switches_internal.h" |
45 #include "content/common/gpu/client/context_provider_command_buffer.h" | 47 #include "content/common/gpu/client/context_provider_command_buffer.h" |
46 #include "content/common/layer_tree_settings_factory.h" | 48 #include "content/common/layer_tree_settings_factory.h" |
47 #include "content/public/common/content_client.h" | 49 #include "content/public/common/content_client.h" |
48 #include "content/public/common/content_switches.h" | 50 #include "content/public/common/content_switches.h" |
49 #include "content/renderer/gpu/render_widget_compositor_delegate.h" | 51 #include "content/renderer/gpu/render_widget_compositor_delegate.h" |
50 #include "content/renderer/input/input_handler_manager.h" | 52 #include "content/renderer/input/input_handler_manager.h" |
51 #include "gpu/command_buffer/client/gles2_interface.h" | 53 #include "gpu/command_buffer/client/gles2_interface.h" |
52 #include "gpu/command_buffer/service/gpu_switches.h" | 54 #include "gpu/command_buffer/service/gpu_switches.h" |
53 #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallbac k.h" | 55 #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallbac k.h" |
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
619 } | 621 } |
620 | 622 |
621 void RenderWidgetCompositor::SetNeedsForcedRedraw() { | 623 void RenderWidgetCompositor::SetNeedsForcedRedraw() { |
622 layer_tree_host_->SetNextCommitForcesRedraw(); | 624 layer_tree_host_->SetNextCommitForcesRedraw(); |
623 setNeedsAnimate(); | 625 setNeedsAnimate(); |
624 } | 626 } |
625 | 627 |
626 std::unique_ptr<cc::SwapPromiseMonitor> | 628 std::unique_ptr<cc::SwapPromiseMonitor> |
627 RenderWidgetCompositor::CreateLatencyInfoSwapPromiseMonitor( | 629 RenderWidgetCompositor::CreateLatencyInfoSwapPromiseMonitor( |
628 ui::LatencyInfo* latency) { | 630 ui::LatencyInfo* latency) { |
629 return std::unique_ptr<cc::SwapPromiseMonitor>( | 631 return std::unique_ptr<cc::SwapPromiseMonitor>( |
vmpstr
2016/09/12 20:44:31
does base::MakeUnique<cc::LatencyInfoSwapPromiseMo
Khushal
2016/09/12 22:53:03
Done.
| |
630 new cc::LatencyInfoSwapPromiseMonitor(latency, layer_tree_host_.get(), | 632 new cc::LatencyInfoSwapPromiseMonitor( |
631 NULL)); | 633 latency, layer_tree_host_->GetSwapPromiseManager(), NULL)); |
632 } | 634 } |
633 | 635 |
634 void RenderWidgetCompositor::QueueSwapPromise( | 636 void RenderWidgetCompositor::QueueSwapPromise( |
635 std::unique_ptr<cc::SwapPromise> swap_promise) { | 637 std::unique_ptr<cc::SwapPromise> swap_promise) { |
636 layer_tree_host_->QueueSwapPromise(std::move(swap_promise)); | 638 layer_tree_host_->GetSwapPromiseManager()->QueueSwapPromise( |
piman
2016/09/12 20:35:44
I have a mild preference to keeping a QueueSwapPro
Khushal
2016/09/12 22:53:03
Done. Retained those 2 APIs.
| |
639 std::move(swap_promise)); | |
637 } | 640 } |
638 | 641 |
639 int RenderWidgetCompositor::GetSourceFrameNumber() const { | 642 int RenderWidgetCompositor::GetSourceFrameNumber() const { |
640 return layer_tree_host_->SourceFrameNumber(); | 643 return layer_tree_host_->SourceFrameNumber(); |
641 } | 644 } |
642 | 645 |
643 void RenderWidgetCompositor::SetNeedsUpdateLayers() { | 646 void RenderWidgetCompositor::SetNeedsUpdateLayers() { |
644 layer_tree_host_->SetNeedsUpdateLayers(); | 647 layer_tree_host_->SetNeedsUpdateLayers(); |
645 } | 648 } |
646 | 649 |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
925 std::unique_ptr<cc::CopyOutputRequest> request = | 928 std::unique_ptr<cc::CopyOutputRequest> request = |
926 cc::CopyOutputRequest::CreateBitmapRequest(base::Bind( | 929 cc::CopyOutputRequest::CreateBitmapRequest(base::Bind( |
927 [](blink::WebCompositeAndReadbackAsyncCallback* callback, | 930 [](blink::WebCompositeAndReadbackAsyncCallback* callback, |
928 scoped_refptr<base::SingleThreadTaskRunner> task_runner, | 931 scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
929 std::unique_ptr<cc::CopyOutputResult> result) { | 932 std::unique_ptr<cc::CopyOutputResult> result) { |
930 task_runner->PostTask(FROM_HERE, | 933 task_runner->PostTask(FROM_HERE, |
931 base::Bind(&CompositeAndReadbackAsyncCallback, | 934 base::Bind(&CompositeAndReadbackAsyncCallback, |
932 callback, base::Passed(&result))); | 935 callback, base::Passed(&result))); |
933 }, | 936 }, |
934 callback, base::Passed(&main_thread_task_runner))); | 937 callback, base::Passed(&main_thread_task_runner))); |
935 layer_tree_host_->QueueSwapPromise( | 938 layer_tree_host_->GetSwapPromiseManager()->QueueSwapPromise( |
936 delegate_->RequestCopyOfOutputForLayoutTest(std::move(request))); | 939 delegate_->RequestCopyOfOutputForLayoutTest(std::move(request))); |
937 | 940 |
938 // Force a commit to happen. The temporary copy output request will | 941 // Force a commit to happen. The temporary copy output request will |
939 // be installed after layout which will happen as a part of the commit, for | 942 // be installed after layout which will happen as a part of the commit, for |
940 // widgets that delay the creation of their output surface. | 943 // widgets that delay the creation of their output surface. |
941 if (CompositeIsSynchronous()) { | 944 if (CompositeIsSynchronous()) { |
942 base::ThreadTaskRunnerHandle::Get()->PostTask( | 945 base::ThreadTaskRunnerHandle::Get()->PostTask( |
943 FROM_HERE, base::Bind(&RenderWidgetCompositor::SynchronouslyComposite, | 946 FROM_HERE, base::Bind(&RenderWidgetCompositor::SynchronouslyComposite, |
944 weak_factory_.GetWeakPtr())); | 947 weak_factory_.GetWeakPtr())); |
945 } else { | 948 } else { |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1119 void RenderWidgetCompositor::SendCompositorProto( | 1122 void RenderWidgetCompositor::SendCompositorProto( |
1120 const cc::proto::CompositorMessage& proto) { | 1123 const cc::proto::CompositorMessage& proto) { |
1121 int signed_size = proto.ByteSize(); | 1124 int signed_size = proto.ByteSize(); |
1122 size_t unsigned_size = base::checked_cast<size_t>(signed_size); | 1125 size_t unsigned_size = base::checked_cast<size_t>(signed_size); |
1123 std::vector<uint8_t> serialized(unsigned_size); | 1126 std::vector<uint8_t> serialized(unsigned_size); |
1124 proto.SerializeToArray(serialized.data(), signed_size); | 1127 proto.SerializeToArray(serialized.data(), signed_size); |
1125 delegate_->ForwardCompositorProto(serialized); | 1128 delegate_->ForwardCompositorProto(serialized); |
1126 } | 1129 } |
1127 | 1130 |
1128 void RenderWidgetCompositor::SetSurfaceClientId(uint32_t surface_client_id) { | 1131 void RenderWidgetCompositor::SetSurfaceClientId(uint32_t surface_client_id) { |
1129 layer_tree_host_->SetSurfaceClientId(surface_client_id); | 1132 layer_tree_host_->GetSurfaceSequenceGenerator()->set_surface_client_id( |
1133 surface_client_id); | |
1130 } | 1134 } |
1131 | 1135 |
1132 void RenderWidgetCompositor::OnHandleCompositorProto( | 1136 void RenderWidgetCompositor::OnHandleCompositorProto( |
1133 const std::vector<uint8_t>& proto) { | 1137 const std::vector<uint8_t>& proto) { |
1134 DCHECK(remote_proto_channel_receiver_); | 1138 DCHECK(remote_proto_channel_receiver_); |
1135 | 1139 |
1136 std::unique_ptr<cc::proto::CompositorMessage> deserialized( | 1140 std::unique_ptr<cc::proto::CompositorMessage> deserialized( |
1137 new cc::proto::CompositorMessage); | 1141 new cc::proto::CompositorMessage); |
1138 int signed_size = base::checked_cast<int>(proto.size()); | 1142 int signed_size = base::checked_cast<int>(proto.size()); |
1139 if (!deserialized->ParseFromArray(proto.data(), signed_size)) { | 1143 if (!deserialized->ParseFromArray(proto.data(), signed_size)) { |
1140 LOG(ERROR) << "Unable to parse compositor proto."; | 1144 LOG(ERROR) << "Unable to parse compositor proto."; |
1141 return; | 1145 return; |
1142 } | 1146 } |
1143 | 1147 |
1144 remote_proto_channel_receiver_->OnProtoReceived(std::move(deserialized)); | 1148 remote_proto_channel_receiver_->OnProtoReceived(std::move(deserialized)); |
1145 } | 1149 } |
1146 | 1150 |
1147 void RenderWidgetCompositor::SetPaintedDeviceScaleFactor( | 1151 void RenderWidgetCompositor::SetPaintedDeviceScaleFactor( |
1148 float device_scale) { | 1152 float device_scale) { |
1149 layer_tree_host_->GetLayerTree()->SetPaintedDeviceScaleFactor(device_scale); | 1153 layer_tree_host_->GetLayerTree()->SetPaintedDeviceScaleFactor(device_scale); |
1150 } | 1154 } |
1151 | 1155 |
1152 } // namespace content | 1156 } // namespace content |
OLD | NEW |