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

Side by Side Diff: content/browser/gpu/gpu_process_host.cc

Issue 1532813002: Replace IOSurfaceManager by directly passing IOSurface Mach ports over Chrome IPC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Windows compile Created 5 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 (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/browser/gpu/gpu_process_host.h" 5 #include "content/browser/gpu/gpu_process_host.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/base_switches.h" 10 #include "base/base_switches.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 #endif 62 #endif
63 63
64 #if defined(USE_OZONE) 64 #if defined(USE_OZONE)
65 #include "ui/ozone/public/ozone_switches.h" 65 #include "ui/ozone/public/ozone_switches.h"
66 #endif 66 #endif
67 67
68 #if defined(USE_X11) && !defined(OS_CHROMEOS) 68 #if defined(USE_X11) && !defined(OS_CHROMEOS)
69 #include "ui/gfx/x/x11_switches.h" 69 #include "ui/gfx/x/x11_switches.h"
70 #endif 70 #endif
71 71
72 #if defined(OS_MACOSX) && !defined(OS_IOS)
73 #include "content/browser/browser_io_surface_manager_mac.h"
74 #include "content/common/child_process_messages.h"
75 #endif
76
77 #if defined(OS_MACOSX) 72 #if defined(OS_MACOSX)
78 #include "content/browser/renderer_host/render_widget_resize_helper_mac.h" 73 #include "content/browser/renderer_host/render_widget_resize_helper_mac.h"
79 #endif 74 #endif
80 75
81 namespace content { 76 namespace content {
82 77
83 bool GpuProcessHost::gpu_enabled_ = true; 78 bool GpuProcessHost::gpu_enabled_ = true;
84 bool GpuProcessHost::hardware_gpu_enabled_ = true; 79 bool GpuProcessHost::hardware_gpu_enabled_ = true;
85 int GpuProcessHost::gpu_crash_count_ = 0; 80 int GpuProcessHost::gpu_crash_count_ = 0;
86 int GpuProcessHost::gpu_recent_crash_count_ = 0; 81 int GpuProcessHost::gpu_recent_crash_count_ = 0;
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 DCHECK(CalledOnValidThread()); 436 DCHECK(CalledOnValidThread());
442 437
443 SendOutstandingReplies(); 438 SendOutstandingReplies();
444 439
445 // In case we never started, clean up. 440 // In case we never started, clean up.
446 while (!queued_messages_.empty()) { 441 while (!queued_messages_.empty()) {
447 delete queued_messages_.front(); 442 delete queued_messages_.front();
448 queued_messages_.pop(); 443 queued_messages_.pop();
449 } 444 }
450 445
451 #if defined(OS_MACOSX) && !defined(OS_IOS)
452 if (!io_surface_manager_token_.IsZero()) {
453 BrowserIOSurfaceManager::GetInstance()->InvalidateGpuProcessToken();
454 io_surface_manager_token_.SetZero();
455 }
456 #endif
457
458 // This is only called on the IO thread so no race against the constructor 446 // This is only called on the IO thread so no race against the constructor
459 // for another GpuProcessHost. 447 // for another GpuProcessHost.
460 if (g_gpu_process_hosts[kind_] == this) 448 if (g_gpu_process_hosts[kind_] == this)
461 g_gpu_process_hosts[kind_] = NULL; 449 g_gpu_process_hosts[kind_] = NULL;
462 450
463 // If there are any remaining offscreen contexts at the point the 451 // If there are any remaining offscreen contexts at the point the
464 // GPU process exits, assume something went wrong, and block their 452 // GPU process exits, assume something went wrong, and block their
465 // URLs from accessing client 3D APIs without prompting. 453 // URLs from accessing client 3D APIs without prompting.
466 BlockLiveOffscreenContexts(); 454 BlockLiveOffscreenContexts();
467 455
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 in_process_gpu_thread_->StartWithOptions(options); 546 in_process_gpu_thread_->StartWithOptions(options);
559 547
560 OnProcessLaunched(); // Fake a callback that the process is ready. 548 OnProcessLaunched(); // Fake a callback that the process is ready.
561 } else if (!LaunchGpuProcess(channel_id)) { 549 } else if (!LaunchGpuProcess(channel_id)) {
562 return false; 550 return false;
563 } 551 }
564 552
565 if (!Send(new GpuMsg_Initialize())) 553 if (!Send(new GpuMsg_Initialize()))
566 return false; 554 return false;
567 555
568 #if defined(OS_MACOSX) && !defined(OS_IOS)
569 io_surface_manager_token_ =
570 BrowserIOSurfaceManager::GetInstance()->GenerateGpuProcessToken();
571 // Note: A valid IOSurface manager token needs to be sent to the Gpu process
572 // before any GpuMemoryBuffer allocation requests can be sent.
573 Send(new ChildProcessMsg_SetIOSurfaceManagerToken(io_surface_manager_token_));
574 #endif
575
576 return true; 556 return true;
577 } 557 }
578 558
579 bool GpuProcessHost::SetupMojo() { 559 bool GpuProcessHost::SetupMojo() {
580 DCHECK(!mojo_application_host_); 560 DCHECK(!mojo_application_host_);
581 mojo_application_host_.reset(new MojoApplicationHost); 561 mojo_application_host_.reset(new MojoApplicationHost);
582 return mojo_application_host_->Init(); 562 return mojo_application_host_->Init();
583 } 563 }
584 564
585 void GpuProcessHost::RouteOnUIThread(const IPC::Message& message) { 565 void GpuProcessHost::RouteOnUIThread(const IPC::Message& message) {
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 GpuProcessHost::GpuProcessKind GpuProcessHost::kind() { 907 GpuProcessHost::GpuProcessKind GpuProcessHost::kind() {
928 return kind_; 908 return kind_;
929 } 909 }
930 910
931 void GpuProcessHost::ForceShutdown() { 911 void GpuProcessHost::ForceShutdown() {
932 // This is only called on the IO thread so no race against the constructor 912 // This is only called on the IO thread so no race against the constructor
933 // for another GpuProcessHost. 913 // for another GpuProcessHost.
934 if (g_gpu_process_hosts[kind_] == this) 914 if (g_gpu_process_hosts[kind_] == this)
935 g_gpu_process_hosts[kind_] = NULL; 915 g_gpu_process_hosts[kind_] = NULL;
936 916
937 #if defined(OS_MACOSX) && !defined(OS_IOS)
938 if (!io_surface_manager_token_.IsZero()) {
939 BrowserIOSurfaceManager::GetInstance()->InvalidateGpuProcessToken();
940 io_surface_manager_token_.SetZero();
941 }
942 #endif
943
944 process_->ForceShutdown(); 917 process_->ForceShutdown();
945 } 918 }
946 919
947 void GpuProcessHost::StopGpuProcess() { 920 void GpuProcessHost::StopGpuProcess() {
948 Send(new GpuMsg_Finalize()); 921 Send(new GpuMsg_Finalize());
949 } 922 }
950 923
951 bool GpuProcessHost::LaunchGpuProcess(const std::string& channel_id) { 924 bool GpuProcessHost::LaunchGpuProcess(const std::string& channel_id) {
952 if (!(gpu_enabled_ && 925 if (!(gpu_enabled_ &&
953 GpuDataManagerImpl::GetInstance()->ShouldUseSwiftShader()) && 926 GpuDataManagerImpl::GetInstance()->ShouldUseSwiftShader()) &&
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader"); 1142 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader");
1170 ClientIdToShaderCacheMap::iterator iter = 1143 ClientIdToShaderCacheMap::iterator iter =
1171 client_id_to_shader_cache_.find(client_id); 1144 client_id_to_shader_cache_.find(client_id);
1172 // If the cache doesn't exist then this is an off the record profile. 1145 // If the cache doesn't exist then this is an off the record profile.
1173 if (iter == client_id_to_shader_cache_.end()) 1146 if (iter == client_id_to_shader_cache_.end())
1174 return; 1147 return;
1175 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader); 1148 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader);
1176 } 1149 }
1177 1150
1178 } // namespace content 1151 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698