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

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 2096843002: mus+ash: Enable Chrome HW rendering in mus+ash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a compile error Created 4 years, 5 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/render_thread_impl.h" 5 #include "content/renderer/render_thread_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 attributes.bind_generates_resource = false; 447 attributes.bind_generates_resource = false;
448 attributes.lose_context_when_out_of_memory = true; 448 attributes.lose_context_when_out_of_memory = true;
449 const bool automatic_flushes = false; 449 const bool automatic_flushes = false;
450 return make_scoped_refptr(new ContextProviderCommandBuffer( 450 return make_scoped_refptr(new ContextProviderCommandBuffer(
451 std::move(gpu_channel_host), stream_id, stream_priority, 451 std::move(gpu_channel_host), stream_id, stream_priority,
452 gpu::kNullSurfaceHandle, 452 gpu::kNullSurfaceHandle,
453 GURL("chrome://gpu/RenderThreadImpl::CreateOffscreenContext"), 453 GURL("chrome://gpu/RenderThreadImpl::CreateOffscreenContext"),
454 automatic_flushes, support_locking, limits, attributes, nullptr, type)); 454 automatic_flushes, support_locking, limits, attributes, nullptr, type));
455 } 455 }
456 456
457 bool IsRunningInMash() {
458 const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess();
459 return cmdline->HasSwitch(switches::kIsRunningInMash);
460 }
461
457 } // namespace 462 } // namespace
458 463
459 // For measuring memory usage after each task. Behind a command line flag. 464 // For measuring memory usage after each task. Behind a command line flag.
460 class MemoryObserver : public base::MessageLoop::TaskObserver { 465 class MemoryObserver : public base::MessageLoop::TaskObserver {
461 public: 466 public:
462 MemoryObserver() {} 467 MemoryObserver() {}
463 ~MemoryObserver() override {} 468 ~MemoryObserver() override {}
464 469
465 void WillProcessTask(const base::PendingTask& pending_task) override {} 470 void WillProcessTask(const base::PendingTask& pending_task) override {}
466 471
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 #if defined(USE_EXTERNAL_POPUP_MENU) 639 #if defined(USE_EXTERNAL_POPUP_MENU)
635 // On Mac and Android Java UI, the select popups are rendered by the browser. 640 // On Mac and Android Java UI, the select popups are rendered by the browser.
636 blink::WebView::setUseExternalPopupMenus(true); 641 blink::WebView::setUseExternalPopupMenus(true);
637 #endif 642 #endif
638 643
639 lazy_tls.Pointer()->Set(this); 644 lazy_tls.Pointer()->Set(this);
640 645
641 // Register this object as the main thread. 646 // Register this object as the main thread.
642 ChildProcess::current()->set_main_thread(this); 647 ChildProcess::current()->set_main_thread(this);
643 648
649 #if defined(MOJO_SHELL_CLIENT)
650 if (IsRunningInMash()) {
651 auto* shell_connection = ChildThread::Get()->GetMojoShellConnection();
652 ui::GpuService::Initialize(shell_connection->GetConnector());
653 }
654 #endif
655
644 InitializeWebKit(resource_task_queue); 656 InitializeWebKit(resource_task_queue);
645 657
646 // In single process the single process is all there is. 658 // In single process the single process is all there is.
647 webkit_shared_timer_suspended_ = false; 659 webkit_shared_timer_suspended_ = false;
648 widget_count_ = 0; 660 widget_count_ = 0;
649 hidden_widget_count_ = 0; 661 hidden_widget_count_ = 0;
650 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; 662 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs;
651 idle_notifications_to_skip_ = 0; 663 idle_notifications_to_skip_ = 0;
652 664
653 appcache_dispatcher_.reset( 665 appcache_dispatcher_.reset(
654 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl())); 666 new AppCacheDispatcher(Get(), new AppCacheFrontendImpl()));
655 dom_storage_dispatcher_.reset(new DomStorageDispatcher()); 667 dom_storage_dispatcher_.reset(new DomStorageDispatcher());
656 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher( 668 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher(
657 thread_safe_sender())); 669 thread_safe_sender()));
658 main_thread_cache_storage_dispatcher_.reset( 670 main_thread_cache_storage_dispatcher_.reset(
659 new CacheStorageDispatcher(thread_safe_sender())); 671 new CacheStorageDispatcher(thread_safe_sender()));
660 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher()); 672 embedded_worker_dispatcher_.reset(new EmbeddedWorkerDispatcher());
661 673
662 // Note: This may reorder messages from the ResourceDispatcher with respect to 674 // Note: This may reorder messages from the ResourceDispatcher with respect to
663 // other subsystems. 675 // other subsystems.
664 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler( 676 resource_dispatch_throttler_.reset(new ResourceDispatchThrottler(
665 static_cast<RenderThread*>(this), renderer_scheduler_.get(), 677 static_cast<RenderThread*>(this), renderer_scheduler_.get(),
666 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS), 678 base::TimeDelta::FromSecondsD(kThrottledResourceRequestFlushPeriodS),
667 kMaxResourceRequestsPerFlushWhenThrottled)); 679 kMaxResourceRequestsPerFlushWhenThrottled));
668 resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get()); 680 resource_dispatcher()->set_message_sender(resource_dispatch_throttler_.get());
669 681
670 media_stream_center_ = NULL; 682 media_stream_center_ = nullptr;
671 683
672 blob_message_filter_ = new BlobMessageFilter(GetFileThreadMessageLoopProxy()); 684 blob_message_filter_ = new BlobMessageFilter(GetFileThreadMessageLoopProxy());
673 AddFilter(blob_message_filter_.get()); 685 AddFilter(blob_message_filter_.get());
674 db_message_filter_ = new DBMessageFilter(); 686 db_message_filter_ = new DBMessageFilter();
675 AddFilter(db_message_filter_.get()); 687 AddFilter(db_message_filter_.get());
676 688
677 vc_manager_.reset(new VideoCaptureImplManager()); 689 vc_manager_.reset(new VideoCaptureImplManager());
678 AddFilter(vc_manager_->video_capture_message_filter()); 690 AddFilter(vc_manager_->video_capture_message_filter());
679 691
680 browser_plugin_manager_.reset(new BrowserPluginManager()); 692 browser_plugin_manager_.reset(new BrowserPluginManager());
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 if (blink_platform_impl_) { 883 if (blink_platform_impl_) {
872 // Crash the process if they fail to close after a generous amount of time. 884 // Crash the process if they fail to close after a generous amount of time.
873 bool all_closed = blink_platform_impl_->web_database_observer_impl() 885 bool all_closed = blink_platform_impl_->web_database_observer_impl()
874 ->WaitForAllDatabasesToClose(base::TimeDelta::FromSeconds(60)); 886 ->WaitForAllDatabasesToClose(base::TimeDelta::FromSeconds(60));
875 CHECK(all_closed); 887 CHECK(all_closed);
876 } 888 }
877 889
878 // Shutdown in reverse of the initialization order. 890 // Shutdown in reverse of the initialization order.
879 if (devtools_agent_message_filter_.get()) { 891 if (devtools_agent_message_filter_.get()) {
880 RemoveFilter(devtools_agent_message_filter_.get()); 892 RemoveFilter(devtools_agent_message_filter_.get());
881 devtools_agent_message_filter_ = NULL; 893 devtools_agent_message_filter_ = nullptr;
882 } 894 }
883 895
884 RemoveFilter(audio_input_message_filter_.get()); 896 RemoveFilter(audio_input_message_filter_.get());
885 audio_input_message_filter_ = NULL; 897 audio_input_message_filter_ = nullptr;
886 898
887 #if defined(ENABLE_WEBRTC) 899 #if defined(ENABLE_WEBRTC)
888 RTCPeerConnectionHandler::DestructAllHandlers(); 900 RTCPeerConnectionHandler::DestructAllHandlers();
889 // |peer_connection_factory_| cannot be deleted until after the main message 901 // |peer_connection_factory_| cannot be deleted until after the main message
890 // loop has been destroyed. This is because there may be pending tasks that 902 // loop has been destroyed. This is because there may be pending tasks that
891 // hold on to objects produced by the PC factory that depend on threads owned 903 // hold on to objects produced by the PC factory that depend on threads owned
892 // by the PC factory. Once those tasks have been freed, the factory can be 904 // by the PC factory. Once those tasks have been freed, the factory can be
893 // deleted. 905 // deleted.
894 #endif 906 #endif
895 RemoveFilter(vc_manager_->video_capture_message_filter()); 907 RemoveFilter(vc_manager_->video_capture_message_filter());
896 vc_manager_.reset(); 908 vc_manager_.reset();
897 909
898 RemoveFilter(db_message_filter_.get()); 910 RemoveFilter(db_message_filter_.get());
899 db_message_filter_ = NULL; 911 db_message_filter_ = nullptr;
900 912
901 // Shutdown the file thread if it's running. 913 // Shutdown the file thread if it's running.
902 if (file_thread_) 914 if (file_thread_)
903 file_thread_->Stop(); 915 file_thread_->Stop();
904 916
905 if (compositor_message_filter_.get()) { 917 if (compositor_message_filter_.get()) {
906 RemoveFilter(compositor_message_filter_.get()); 918 RemoveFilter(compositor_message_filter_.get());
907 compositor_message_filter_ = NULL; 919 compositor_message_filter_ = nullptr;
908 } 920 }
909 921
910 #if defined(OS_ANDROID) 922 #if defined(OS_ANDROID)
911 if (sync_compositor_message_filter_) { 923 if (sync_compositor_message_filter_) {
912 RemoveFilter(sync_compositor_message_filter_.get()); 924 RemoveFilter(sync_compositor_message_filter_.get());
913 sync_compositor_message_filter_ = nullptr; 925 sync_compositor_message_filter_ = nullptr;
914 } 926 }
915 stream_texture_factory_ = nullptr; 927 stream_texture_factory_ = nullptr;
916 #endif 928 #endif
917 929
918 media_thread_.reset(); 930 media_thread_.reset();
919 931
920 blink_platform_impl_->SetCompositorThread(nullptr); 932 blink_platform_impl_->SetCompositorThread(nullptr);
921 933
922 compositor_thread_.reset(); 934 compositor_thread_.reset();
923 935
924 // AudioMessageFilter may be accessed on |media_thread_|, so shutdown after. 936 // AudioMessageFilter may be accessed on |media_thread_|, so shutdown after.
925 RemoveFilter(audio_message_filter_.get()); 937 RemoveFilter(audio_message_filter_.get());
926 audio_message_filter_ = NULL; 938 audio_message_filter_ = nullptr;
927 939
928 categorized_worker_pool_->Shutdown(); 940 categorized_worker_pool_->Shutdown();
929 941
930 main_input_callback_.Cancel(); 942 main_input_callback_.Cancel();
931 input_handler_manager_.reset(); 943 input_handler_manager_.reset();
932 if (input_event_filter_.get()) { 944 if (input_event_filter_.get()) {
933 RemoveFilter(input_event_filter_.get()); 945 RemoveFilter(input_event_filter_.get());
934 input_event_filter_ = NULL; 946 input_event_filter_ = nullptr;
935 } 947 }
936 948
937 // RemoveEmbeddedWorkerRoute may be called while deleting 949 // RemoveEmbeddedWorkerRoute may be called while deleting
938 // EmbeddedWorkerDispatcher. So it must be deleted before deleting 950 // EmbeddedWorkerDispatcher. So it must be deleted before deleting
939 // RenderThreadImpl. 951 // RenderThreadImpl.
940 embedded_worker_dispatcher_.reset(); 952 embedded_worker_dispatcher_.reset();
941 953
942 // Ramp down IDB before we ramp down WebKit (and V8), since IDB classes might 954 // Ramp down IDB before we ramp down WebKit (and V8), since IDB classes might
943 // hold pointers to V8 objects (e.g., via pending requests). 955 // hold pointers to V8 objects (e.g., via pending requests).
944 main_thread_indexed_db_dispatcher_.reset(); 956 main_thread_indexed_db_dispatcher_.reset();
945 957
946 main_thread_compositor_task_runner_ = NULL; 958 main_thread_compositor_task_runner_ = nullptr;
947 959
948 gpu_factories_.clear(); 960 gpu_factories_.clear();
949 961
950 // Context providers must be released prior to destroying the GPU channel. 962 // Context providers must be released prior to destroying the GPU channel.
951 shared_worker_context_provider_ = nullptr; 963 shared_worker_context_provider_ = nullptr;
952 shared_main_thread_contexts_ = nullptr; 964 shared_main_thread_contexts_ = nullptr;
953 965
954 if (gpu_channel_.get()) 966 if (gpu_channel_.get())
955 gpu_channel_->DestroyChannel(); 967 gpu_channel_->DestroyChannel();
956 968
(...skipping 18 matching lines...) Expand all
975 // Delay shutting down DiscardableSharedMemoryManager until blink::shutdown 987 // Delay shutting down DiscardableSharedMemoryManager until blink::shutdown
976 // is complete, because blink::shutdown destructs Blink Resources and they 988 // is complete, because blink::shutdown destructs Blink Resources and they
977 // may try to unlock their underlying discardable memory. 989 // may try to unlock their underlying discardable memory.
978 ChildThreadImpl::ShutdownDiscardableSharedMemoryManager(); 990 ChildThreadImpl::ShutdownDiscardableSharedMemoryManager();
979 991
980 // The message loop must be cleared after shutting down 992 // The message loop must be cleared after shutting down
981 // the DiscardableSharedMemoryManager, which needs to send messages 993 // the DiscardableSharedMemoryManager, which needs to send messages
982 // to the browser process. 994 // to the browser process.
983 main_message_loop_.reset(); 995 main_message_loop_.reset();
984 996
985 lazy_tls.Pointer()->Set(NULL); 997 lazy_tls.Pointer()->Set(nullptr);
986 } 998 }
987 999
988 bool RenderThreadImpl::Send(IPC::Message* msg) { 1000 bool RenderThreadImpl::Send(IPC::Message* msg) {
989 // There are cases where we want to pump asynchronous messages while waiting 1001 // There are cases where we want to pump asynchronous messages while waiting
990 // synchronously for the replies to the message to be sent here. However, this 1002 // synchronously for the replies to the message to be sent here. However, this
991 // may create an opportunity for re-entrancy into WebKit and other subsystems, 1003 // may create an opportunity for re-entrancy into WebKit and other subsystems,
992 // so we need to take care to disable callbacks, timers, and pending network 1004 // so we need to take care to disable callbacks, timers, and pending network
993 // loads that could trigger such callbacks. 1005 // loads that could trigger such callbacks.
994 bool pumping_events = false; 1006 bool pumping_events = false;
995 if (msg->is_sync()) { 1007 if (msg->is_sync()) {
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
1498 #if defined(OS_ANDROID) 1510 #if defined(OS_ANDROID)
1499 1511
1500 scoped_refptr<StreamTextureFactory> RenderThreadImpl::GetStreamTexureFactory() { 1512 scoped_refptr<StreamTextureFactory> RenderThreadImpl::GetStreamTexureFactory() {
1501 DCHECK(IsMainThread()); 1513 DCHECK(IsMainThread());
1502 if (!stream_texture_factory_.get() || 1514 if (!stream_texture_factory_.get() ||
1503 stream_texture_factory_->ContextGL()->GetGraphicsResetStatusKHR() != 1515 stream_texture_factory_->ContextGL()->GetGraphicsResetStatusKHR() !=
1504 GL_NO_ERROR) { 1516 GL_NO_ERROR) {
1505 scoped_refptr<ContextProviderCommandBuffer> shared_context_provider = 1517 scoped_refptr<ContextProviderCommandBuffer> shared_context_provider =
1506 SharedMainThreadContextProvider(); 1518 SharedMainThreadContextProvider();
1507 if (!shared_context_provider) { 1519 if (!shared_context_provider) {
1508 stream_texture_factory_ = NULL; 1520 stream_texture_factory_ = nullptr;
1509 return NULL; 1521 return nullptr;
1510 } 1522 }
1511 DCHECK(shared_context_provider->GetCommandBufferProxy()); 1523 DCHECK(shared_context_provider->GetCommandBufferProxy());
1512 DCHECK(shared_context_provider->GetCommandBufferProxy()->channel()); 1524 DCHECK(shared_context_provider->GetCommandBufferProxy()->channel());
1513 stream_texture_factory_ = 1525 stream_texture_factory_ =
1514 StreamTextureFactory::Create(std::move(shared_context_provider)); 1526 StreamTextureFactory::Create(std::move(shared_context_provider));
1515 } 1527 }
1516 return stream_texture_factory_; 1528 return stream_texture_factory_;
1517 } 1529 }
1518 1530
1519 bool RenderThreadImpl::EnableStreamTextureCopy() { 1531 bool RenderThreadImpl::EnableStreamTextureCopy() {
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 // more informative stack, since we will otherwise just crash later when we 1678 // more informative stack, since we will otherwise just crash later when we
1667 // try to restart it. 1679 // try to restart it.
1668 CHECK(!base::CommandLine::ForCurrentProcess()->HasSwitch( 1680 CHECK(!base::CommandLine::ForCurrentProcess()->HasSwitch(
1669 switches::kSingleProcess)); 1681 switches::kSingleProcess));
1670 ChildThreadImpl::OnChannelError(); 1682 ChildThreadImpl::OnChannelError();
1671 } 1683 }
1672 1684
1673 bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) { 1685 bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) {
1674 base::ObserverListBase<RenderThreadObserver>::Iterator it(&observers_); 1686 base::ObserverListBase<RenderThreadObserver>::Iterator it(&observers_);
1675 RenderThreadObserver* observer; 1687 RenderThreadObserver* observer;
1676 while ((observer = it.GetNext()) != NULL) { 1688 while ((observer = it.GetNext()) != nullptr) {
1677 if (observer->OnControlMessageReceived(msg)) 1689 if (observer->OnControlMessageReceived(msg))
1678 return true; 1690 return true;
1679 } 1691 }
1680 1692
1681 // Some messages are handled by delegates. 1693 // Some messages are handled by delegates.
1682 if (appcache_dispatcher_->OnMessageReceived(msg) || 1694 if (appcache_dispatcher_->OnMessageReceived(msg) ||
1683 dom_storage_dispatcher_->OnMessageReceived(msg) || 1695 dom_storage_dispatcher_->OnMessageReceived(msg) ||
1684 embedded_worker_dispatcher_->OnMessageReceived(msg)) { 1696 embedded_worker_dispatcher_->OnMessageReceived(msg)) {
1685 return true; 1697 return true;
1686 } 1698 }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1772 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); 1784 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync");
1773 1785
1774 if (gpu_channel_) { 1786 if (gpu_channel_) {
1775 // Do nothing if we already have a GPU channel or are already 1787 // Do nothing if we already have a GPU channel or are already
1776 // establishing one. 1788 // establishing one.
1777 if (!gpu_channel_->IsLost()) 1789 if (!gpu_channel_->IsLost())
1778 return gpu_channel_; 1790 return gpu_channel_;
1779 1791
1780 // Recreate the channel if it has been lost. 1792 // Recreate the channel if it has been lost.
1781 gpu_channel_->DestroyChannel(); 1793 gpu_channel_->DestroyChannel();
1782 gpu_channel_ = NULL; 1794 gpu_channel_ = nullptr;
1783 } 1795 }
1784 1796
1785 // Ask the browser for the channel name. 1797 if (!IsRunningInMash()) {
1786 int client_id = 0; 1798 int client_id = 0;
1787 IPC::ChannelHandle channel_handle; 1799 IPC::ChannelHandle channel_handle;
1788 gpu::GPUInfo gpu_info; 1800 gpu::GPUInfo gpu_info;
1789 if (!Send(new ChildProcessHostMsg_EstablishGpuChannel( 1801 // Ask the browser for the channel name.
1790 cause_for_gpu_launch, &client_id, &channel_handle, &gpu_info)) || 1802 if (!Send(new ChildProcessHostMsg_EstablishGpuChannel(
1803 cause_for_gpu_launch, &client_id, &channel_handle, &gpu_info)) ||
1791 #if defined(OS_POSIX) 1804 #if defined(OS_POSIX)
1792 channel_handle.socket.fd == -1 || 1805 channel_handle.socket.fd == -1 ||
1793 #endif 1806 #endif
1794 channel_handle.name.empty()) { 1807 channel_handle.name.empty()) {
1795 // Otherwise cancel the connection. 1808 // Otherwise cancel the connection.
1796 return NULL; 1809 return nullptr;
1810 }
1811 GetContentClient()->SetGpuInfo(gpu_info);
1812
1813 // Cache some variables that are needed on the compositor thread for our
1814 // implementation of GpuChannelHostFactory.
1815 io_thread_task_runner_ = ChildProcess::current()->io_task_runner();
1816
1817 gpu_channel_ =
1818 gpu::GpuChannelHost::Create(this, client_id, gpu_info, channel_handle,
1819 ChildProcess::current()->GetShutDownEvent(),
1820 gpu_memory_buffer_manager());
1821 #if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA)
1822 } else {
piman 2016/07/07 21:02:20 nit: same here re: #ifdefs vs {}
Peng 2016/07/07 21:33:37 Done.
1823 gpu_channel_ = ui::GpuService::GetInstance()->EstablishGpuChannelSync();
1824 #endif
1797 } 1825 }
1798
1799 GetContentClient()->SetGpuInfo(gpu_info);
1800
1801 // Cache some variables that are needed on the compositor thread for our
1802 // implementation of GpuChannelHostFactory.
1803 io_thread_task_runner_ = ChildProcess::current()->io_task_runner();
1804
1805 gpu_channel_ = gpu::GpuChannelHost::Create(
1806 this, client_id, gpu_info, channel_handle,
1807 ChildProcess::current()->GetShutDownEvent(), gpu_memory_buffer_manager());
1808 return gpu_channel_; 1826 return gpu_channel_;
1809 } 1827 }
1810 1828
1811 std::unique_ptr<cc::OutputSurface> 1829 std::unique_ptr<cc::OutputSurface>
1812 RenderThreadImpl::CreateCompositorOutputSurface( 1830 RenderThreadImpl::CreateCompositorOutputSurface(
1813 bool use_software, 1831 bool use_software,
1814 int routing_id, 1832 int routing_id,
1815 scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue, 1833 scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue,
1816 const GURL& url) { 1834 const GURL& url) {
1817 const base::CommandLine& command_line = 1835 const base::CommandLine& command_line =
1818 *base::CommandLine::ForCurrentProcess(); 1836 *base::CommandLine::ForCurrentProcess();
1819 if (command_line.HasSwitch(switches::kDisableGpuCompositing)) 1837 if (command_line.HasSwitch(switches::kDisableGpuCompositing))
1820 use_software = true; 1838 use_software = true;
1821 1839
1822 #if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA) 1840 #if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA)
1823 auto shell_connection = MojoShellConnection::GetForProcess(); 1841 auto* shell_connection = MojoShellConnection::GetForProcess();
1824 if (shell_connection && !use_software && 1842 if (shell_connection && !use_software &&
1825 command_line.HasSwitch(switches::kUseMusInRenderer)) { 1843 command_line.HasSwitch(switches::kUseMusInRenderer)) {
1826 ui::GpuService::Initialize(shell_connection->GetConnector());
1827 RenderWidgetMusConnection* connection = 1844 RenderWidgetMusConnection* connection =
1828 RenderWidgetMusConnection::GetOrCreate(routing_id); 1845 RenderWidgetMusConnection::GetOrCreate(routing_id);
1829 return connection->CreateOutputSurface(); 1846 return connection->CreateOutputSurface();
1830 } 1847 }
1831 #endif 1848 #endif
1832 1849
1833 uint32_t output_surface_id = g_next_output_surface_id++; 1850 uint32_t output_surface_id = g_next_output_surface_id++;
1834 1851
1835 if (command_line.HasSwitch(switches::kEnableVulkan)) { 1852 if (command_line.HasSwitch(switches::kEnableVulkan)) {
1836 scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider = 1853 scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider =
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
2223 v8_memory_pressure_level == v8::MemoryPressureLevel::kCritical) 2240 v8_memory_pressure_level == v8::MemoryPressureLevel::kCritical)
2224 v8_memory_pressure_level = v8::MemoryPressureLevel::kModerate; 2241 v8_memory_pressure_level = v8::MemoryPressureLevel::kModerate;
2225 2242
2226 blink::mainThreadIsolate()->MemoryPressureNotification( 2243 blink::mainThreadIsolate()->MemoryPressureNotification(
2227 v8_memory_pressure_level); 2244 v8_memory_pressure_level);
2228 blink::MemoryPressureNotificationToWorkerThreadIsolates( 2245 blink::MemoryPressureNotificationToWorkerThreadIsolates(
2229 v8_memory_pressure_level); 2246 v8_memory_pressure_level);
2230 } 2247 }
2231 2248
2232 } // namespace content 2249 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698