OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 // Represents the browser side of the browser <--> renderer communication | 5 // Represents the browser side of the browser <--> renderer communication |
6 // channel. There will be one RenderProcessHost per renderer process. | 6 // channel. There will be one RenderProcessHost per renderer process. |
7 | 7 |
8 #include "content/browser/renderer_host/render_process_host_impl.h" | 8 #include "content/browser/renderer_host/render_process_host_impl.h" |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "base/strings/stringprintf.h" | 37 #include "base/strings/stringprintf.h" |
38 #include "base/supports_user_data.h" | 38 #include "base/supports_user_data.h" |
39 #include "base/sys_info.h" | 39 #include "base/sys_info.h" |
40 #include "base/threading/thread.h" | 40 #include "base/threading/thread.h" |
41 #include "base/threading/thread_restrictions.h" | 41 #include "base/threading/thread_restrictions.h" |
42 #include "base/threading/thread_task_runner_handle.h" | 42 #include "base/threading/thread_task_runner_handle.h" |
43 #include "base/trace_event/trace_event.h" | 43 #include "base/trace_event/trace_event.h" |
44 #include "base/tracked_objects.h" | 44 #include "base/tracked_objects.h" |
45 #include "build/build_config.h" | 45 #include "build/build_config.h" |
46 #include "cc/base/switches.h" | 46 #include "cc/base/switches.h" |
| 47 #include "cc/output/buffer_to_texture_target_map.h" |
47 #include "components/memory_coordinator/browser/memory_coordinator.h" | 48 #include "components/memory_coordinator/browser/memory_coordinator.h" |
48 #include "components/memory_coordinator/common/memory_coordinator_features.h" | 49 #include "components/memory_coordinator/common/memory_coordinator_features.h" |
49 #include "components/scheduler/common/scheduler_switches.h" | 50 #include "components/scheduler/common/scheduler_switches.h" |
50 #include "components/tracing/common/tracing_switches.h" | 51 #include "components/tracing/common/tracing_switches.h" |
51 #include "components/webmessaging/broadcast_channel_provider.h" | 52 #include "components/webmessaging/broadcast_channel_provider.h" |
52 #include "content/browser/appcache/appcache_dispatcher_host.h" | 53 #include "content/browser/appcache/appcache_dispatcher_host.h" |
53 #include "content/browser/appcache/chrome_appcache_service.h" | 54 #include "content/browser/appcache/chrome_appcache_service.h" |
54 #include "content/browser/background_sync/background_sync_service_impl.h" | 55 #include "content/browser/background_sync/background_sync_service_impl.h" |
55 #include "content/browser/bad_message.h" | 56 #include "content/browser/bad_message.h" |
56 #include "content/browser/blob_storage/blob_dispatcher_host.h" | 57 #include "content/browser/blob_storage/blob_dispatcher_host.h" |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 void Release(int old_route_id) { | 437 void Release(int old_route_id) { |
437 session_storage_namespaces_awaiting_close_.erase(old_route_id); | 438 session_storage_namespaces_awaiting_close_.erase(old_route_id); |
438 } | 439 } |
439 | 440 |
440 private: | 441 private: |
441 std::map<int, SessionStorageNamespaceMap> | 442 std::map<int, SessionStorageNamespaceMap> |
442 session_storage_namespaces_awaiting_close_; | 443 session_storage_namespaces_awaiting_close_; |
443 DISALLOW_COPY_AND_ASSIGN(SessionStorageHolder); | 444 DISALLOW_COPY_AND_ASSIGN(SessionStorageHolder); |
444 }; | 445 }; |
445 | 446 |
446 std::string UintVectorToString(const std::vector<unsigned>& vector) { | |
447 std::string str; | |
448 for (auto it : vector) { | |
449 if (!str.empty()) | |
450 str += ","; | |
451 str += base::UintToString(it); | |
452 } | |
453 return str; | |
454 } | |
455 | |
456 void CreateMemoryCoordinatorHandle( | 447 void CreateMemoryCoordinatorHandle( |
457 int render_process_id, | 448 int render_process_id, |
458 memory_coordinator::mojom::MemoryCoordinatorHandleRequest request) { | 449 memory_coordinator::mojom::MemoryCoordinatorHandleRequest request) { |
459 BrowserMainLoop::GetInstance()->memory_coordinator()->CreateHandle( | 450 BrowserMainLoop::GetInstance()->memory_coordinator()->CreateHandle( |
460 render_process_id, std::move(request)); | 451 render_process_id, std::move(request)); |
461 } | 452 } |
462 | 453 |
463 } // namespace | 454 } // namespace |
464 | 455 |
465 RendererMainThreadFactoryFunction g_renderer_main_thread_factory = NULL; | 456 RendererMainThreadFactoryFunction g_renderer_main_thread_factory = NULL; |
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1303 command_line->AppendSwitch(switches::kForceGpuRasterization); | 1294 command_line->AppendSwitch(switches::kForceGpuRasterization); |
1304 | 1295 |
1305 if (IsGpuMemoryBufferCompositorResourcesEnabled()) { | 1296 if (IsGpuMemoryBufferCompositorResourcesEnabled()) { |
1306 command_line->AppendSwitch( | 1297 command_line->AppendSwitch( |
1307 switches::kEnableGpuMemoryBufferCompositorResources); | 1298 switches::kEnableGpuMemoryBufferCompositorResources); |
1308 } | 1299 } |
1309 | 1300 |
1310 if (IsMainFrameBeforeActivationEnabled()) | 1301 if (IsMainFrameBeforeActivationEnabled()) |
1311 command_line->AppendSwitch(cc::switches::kEnableMainFrameBeforeActivation); | 1302 command_line->AppendSwitch(cc::switches::kEnableMainFrameBeforeActivation); |
1312 | 1303 |
1313 // Persistent buffers may come at a performance hit (not all platform specific | 1304 cc::BufferToTextureTargetMap image_targets; |
1314 // buffers support it), so only enable them if partial raster is enabled and | 1305 for (int usage_idx = 0; usage_idx <= static_cast<int>(gfx::BufferUsage::LAST); |
1315 // we are actually going to use them. | 1306 ++usage_idx) { |
1316 // TODO(dcastagna): Once GPU_READ_CPU_READ_WRITE_PERSISTENT is removed | 1307 gfx::BufferUsage usage = static_cast<gfx::BufferUsage>(usage_idx); |
1317 // kContentImageTextureTarget and kVideoImageTextureTarget can be merged into | 1308 for (int format_idx = 0; |
1318 // one flag. | 1309 format_idx <= static_cast<int>(gfx::BufferFormat::LAST); |
1319 gfx::BufferUsage buffer_usage = | 1310 ++format_idx) { |
1320 IsPartialRasterEnabled() | 1311 gfx::BufferFormat format = static_cast<gfx::BufferFormat>(format_idx); |
1321 ? gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT | 1312 uint32_t target = |
1322 : gfx::BufferUsage::GPU_READ_CPU_READ_WRITE; | 1313 BrowserGpuMemoryBufferManager::GetImageTextureTarget(format, usage); |
1323 std::vector<unsigned> image_targets( | 1314 image_targets.insert(cc::BufferToTextureTargetMap::value_type( |
1324 static_cast<size_t>(gfx::BufferFormat::LAST) + 1, GL_TEXTURE_2D); | 1315 cc::BufferToTextureTargetKey(usage, format), target)); |
1325 for (size_t format = 0; | 1316 } |
1326 format < static_cast<size_t>(gfx::BufferFormat::LAST) + 1; format++) { | |
1327 image_targets[format] = | |
1328 BrowserGpuMemoryBufferManager::GetImageTextureTarget( | |
1329 static_cast<gfx::BufferFormat>(format), buffer_usage); | |
1330 } | 1317 } |
1331 command_line->AppendSwitchASCII(switches::kContentImageTextureTarget, | 1318 command_line->AppendSwitchASCII( |
1332 UintVectorToString(image_targets)); | 1319 switches::kContentImageTextureTarget, |
1333 | 1320 cc::BufferToTextureTargetMapToString(image_targets)); |
1334 for (size_t format = 0; | |
1335 format < static_cast<size_t>(gfx::BufferFormat::LAST) + 1; format++) { | |
1336 image_targets[format] = | |
1337 BrowserGpuMemoryBufferManager::GetImageTextureTarget( | |
1338 static_cast<gfx::BufferFormat>(format), | |
1339 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE); | |
1340 } | |
1341 command_line->AppendSwitchASCII(switches::kVideoImageTextureTarget, | |
1342 UintVectorToString(image_targets)); | |
1343 | 1321 |
1344 // Appending disable-gpu-feature switches due to software rendering list. | 1322 // Appending disable-gpu-feature switches due to software rendering list. |
1345 GpuDataManagerImpl* gpu_data_manager = GpuDataManagerImpl::GetInstance(); | 1323 GpuDataManagerImpl* gpu_data_manager = GpuDataManagerImpl::GetInstance(); |
1346 DCHECK(gpu_data_manager); | 1324 DCHECK(gpu_data_manager); |
1347 gpu_data_manager->AppendRendererCommandLine(command_line); | 1325 gpu_data_manager->AppendRendererCommandLine(command_line); |
1348 } | 1326 } |
1349 | 1327 |
1350 void RenderProcessHostImpl::AppendRendererCommandLine( | 1328 void RenderProcessHostImpl::AppendRendererCommandLine( |
1351 base::CommandLine* command_line) const { | 1329 base::CommandLine* command_line) const { |
1352 // Pass the process type first, so it shows first in process listings. | 1330 // Pass the process type first, so it shows first in process listings. |
(...skipping 1443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2796 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; | 2774 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; |
2797 | 2775 |
2798 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. Alias | 2776 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. Alias |
2799 // enough information here so that we can determine what the bad message was. | 2777 // enough information here so that we can determine what the bad message was. |
2800 base::debug::Alias(&error); | 2778 base::debug::Alias(&error); |
2801 bad_message::ReceivedBadMessage(process.get(), | 2779 bad_message::ReceivedBadMessage(process.get(), |
2802 bad_message::RPH_MOJO_PROCESS_ERROR); | 2780 bad_message::RPH_MOJO_PROCESS_ERROR); |
2803 } | 2781 } |
2804 | 2782 |
2805 } // namespace content | 2783 } // namespace content |
OLD | NEW |