OLD | NEW |
---|---|
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 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
405 | 405 |
406 private: | 406 private: |
407 mojo::StrongBinding<mojom::EmbeddedWorkerSetup> binding_; | 407 mojo::StrongBinding<mojom::EmbeddedWorkerSetup> binding_; |
408 }; | 408 }; |
409 | 409 |
410 void CreateEmbeddedWorkerSetup( | 410 void CreateEmbeddedWorkerSetup( |
411 mojo::InterfaceRequest<mojom::EmbeddedWorkerSetup> request) { | 411 mojo::InterfaceRequest<mojom::EmbeddedWorkerSetup> request) { |
412 new EmbeddedWorkerSetupImpl(std::move(request)); | 412 new EmbeddedWorkerSetupImpl(std::move(request)); |
413 } | 413 } |
414 | 414 |
415 void StringToUintVector(const std::string& str, std::vector<unsigned>* vector) { | 415 // Converts a serialized ImageTextureTargetsMap back to the runtime format. |
416 DCHECK(vector->empty()); | 416 // Serialization takes the form: |
417 std::vector<std::string> pieces = base::SplitString( | 417 // "usage,format,target;usage,format,target;...;usage,format,target" |
418 str, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 418 cc::RendererSettings::ImageTextureTargetsMap StringToImageTextureTargetsMap( |
419 DCHECK_EQ(pieces.size(), static_cast<size_t>(gfx::BufferFormat::LAST) + 1); | 419 const std::string& str) { |
420 for (size_t i = 0; i < pieces.size(); ++i) { | 420 cc::RendererSettings::ImageTextureTargetsMap map; |
421 unsigned number = 0; | 421 std::vector<std::string> entries = |
422 bool succeed = base::StringToUint(pieces[i], &number); | 422 base::SplitString(str, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
423 DCHECK(succeed); | 423 for (const auto& entry : entries) { |
424 vector->push_back(number); | 424 std::vector<std::string> fields = base::SplitString( |
425 entry, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | |
426 DCHECK_EQ(fields.size(), 3); | |
enne (OOO)
2016/07/15 21:39:32
Mmm, is this safe if the dcheck fails? Should it b
ericrk
2016/07/19 20:22:43
Changed these to CHECKs and added a unit test. We
| |
427 uint32_t usage = 0; | |
428 uint32_t format = 0; | |
429 uint32_t target = 0; | |
430 bool succeeded = base::StringToUint(fields[0], &usage) && | |
431 base::StringToUint(fields[1], &format) && | |
432 base::StringToUint(fields[2], &target); | |
433 DCHECK(succeeded); | |
434 DCHECK_LE(usage, static_cast<uint32_t>(gfx::BufferUsage::LAST)); | |
435 DCHECK_LE(format, static_cast<uint32_t>(gfx::BufferFormat::LAST)); | |
436 map.emplace(cc::RendererSettings::ImageTextureTargetKey( | |
437 static_cast<gfx::BufferUsage>(usage), | |
438 static_cast<gfx::BufferFormat>(format)), | |
439 target); | |
425 } | 440 } |
441 return map; | |
426 } | 442 } |
427 | 443 |
428 scoped_refptr<ContextProviderCommandBuffer> CreateOffscreenContext( | 444 scoped_refptr<ContextProviderCommandBuffer> CreateOffscreenContext( |
429 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host, | 445 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host, |
430 const gpu::SharedMemoryLimits& limits, | 446 const gpu::SharedMemoryLimits& limits, |
431 bool support_locking, | 447 bool support_locking, |
432 command_buffer_metrics::ContextType type, | 448 command_buffer_metrics::ContextType type, |
433 int32_t stream_id, | 449 int32_t stream_id, |
434 gpu::GpuStreamPriority stream_priority) { | 450 gpu::GpuStreamPriority stream_priority) { |
435 DCHECK(gpu_channel_host); | 451 DCHECK(gpu_channel_host); |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
750 Boolean key_exists = false; | 766 Boolean key_exists = false; |
751 Boolean value = CFPreferencesGetAppBooleanValue( | 767 Boolean value = CFPreferencesGetAppBooleanValue( |
752 key, kCFPreferencesCurrentApplication, &key_exists); | 768 key, kCFPreferencesCurrentApplication, &key_exists); |
753 is_elastic_overscroll_enabled_ = !key_exists || value; | 769 is_elastic_overscroll_enabled_ = !key_exists || value; |
754 #else | 770 #else |
755 is_elastic_overscroll_enabled_ = false; | 771 is_elastic_overscroll_enabled_ = false; |
756 #endif | 772 #endif |
757 | 773 |
758 std::string image_texture_target_string = | 774 std::string image_texture_target_string = |
759 command_line.GetSwitchValueASCII(switches::kContentImageTextureTarget); | 775 command_line.GetSwitchValueASCII(switches::kContentImageTextureTarget); |
760 StringToUintVector(image_texture_target_string, &use_image_texture_targets_); | 776 use_image_texture_targets_ = |
777 StringToImageTextureTargetsMap(image_texture_target_string); | |
761 | 778 |
762 if (command_line.HasSwitch(switches::kDisableLCDText)) { | 779 if (command_line.HasSwitch(switches::kDisableLCDText)) { |
763 is_lcd_text_enabled_ = false; | 780 is_lcd_text_enabled_ = false; |
764 } else if (command_line.HasSwitch(switches::kEnableLCDText)) { | 781 } else if (command_line.HasSwitch(switches::kEnableLCDText)) { |
765 is_lcd_text_enabled_ = true; | 782 is_lcd_text_enabled_ = true; |
766 } else { | 783 } else { |
767 #if defined(OS_ANDROID) | 784 #if defined(OS_ANDROID) |
768 is_lcd_text_enabled_ = false; | 785 is_lcd_text_enabled_ = false; |
769 #else | 786 #else |
770 is_lcd_text_enabled_ = true; | 787 is_lcd_text_enabled_ = true; |
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1448 const bool enable_video_accelerator = | 1465 const bool enable_video_accelerator = |
1449 !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode); | 1466 !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode); |
1450 const bool enable_gpu_memory_buffer_video_frames = | 1467 const bool enable_gpu_memory_buffer_video_frames = |
1451 #if defined(OS_MACOSX) || defined(OS_LINUX) | 1468 #if defined(OS_MACOSX) || defined(OS_LINUX) |
1452 !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames) && | 1469 !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames) && |
1453 !cmd_line->HasSwitch(switches::kDisableGpuCompositing) && | 1470 !cmd_line->HasSwitch(switches::kDisableGpuCompositing) && |
1454 !gpu_channel_host->gpu_info().software_rendering; | 1471 !gpu_channel_host->gpu_info().software_rendering; |
1455 #else | 1472 #else |
1456 cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames); | 1473 cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames); |
1457 #endif | 1474 #endif |
1458 std::vector<unsigned> image_texture_targets; | |
1459 std::string video_frame_image_texture_target_string = | |
1460 cmd_line->GetSwitchValueASCII(switches::kVideoImageTextureTarget); | |
1461 StringToUintVector(video_frame_image_texture_target_string, | |
1462 &image_texture_targets); | |
1463 | 1475 |
1464 gpu_factories_.push_back(RendererGpuVideoAcceleratorFactories::Create( | 1476 gpu_factories_.push_back(RendererGpuVideoAcceleratorFactories::Create( |
1465 std::move(gpu_channel_host), base::ThreadTaskRunnerHandle::Get(), | 1477 std::move(gpu_channel_host), base::ThreadTaskRunnerHandle::Get(), |
1466 media_task_runner, std::move(media_context_provider), | 1478 media_task_runner, std::move(media_context_provider), |
1467 enable_gpu_memory_buffer_video_frames, image_texture_targets, | 1479 enable_gpu_memory_buffer_video_frames, use_image_texture_targets_, |
1468 enable_video_accelerator)); | 1480 enable_video_accelerator)); |
1469 return gpu_factories_.back(); | 1481 return gpu_factories_.back(); |
1470 } | 1482 } |
1471 | 1483 |
1472 scoped_refptr<ContextProviderCommandBuffer> | 1484 scoped_refptr<ContextProviderCommandBuffer> |
1473 RenderThreadImpl::SharedMainThreadContextProvider() { | 1485 RenderThreadImpl::SharedMainThreadContextProvider() { |
1474 DCHECK(IsMainThread()); | 1486 DCHECK(IsMainThread()); |
1475 if (shared_main_thread_contexts_ && | 1487 if (shared_main_thread_contexts_ && |
1476 shared_main_thread_contexts_->ContextGL()->GetGraphicsResetStatusKHR() == | 1488 shared_main_thread_contexts_->ContextGL()->GetGraphicsResetStatusKHR() == |
1477 GL_NO_ERROR) | 1489 GL_NO_ERROR) |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1588 } | 1600 } |
1589 | 1601 |
1590 bool RenderThreadImpl::IsGpuMemoryBufferCompositorResourcesEnabled() { | 1602 bool RenderThreadImpl::IsGpuMemoryBufferCompositorResourcesEnabled() { |
1591 return is_gpu_memory_buffer_compositor_resources_enabled_; | 1603 return is_gpu_memory_buffer_compositor_resources_enabled_; |
1592 } | 1604 } |
1593 | 1605 |
1594 bool RenderThreadImpl::IsElasticOverscrollEnabled() { | 1606 bool RenderThreadImpl::IsElasticOverscrollEnabled() { |
1595 return is_elastic_overscroll_enabled_; | 1607 return is_elastic_overscroll_enabled_; |
1596 } | 1608 } |
1597 | 1609 |
1598 std::vector<unsigned> RenderThreadImpl::GetImageTextureTargets() { | 1610 const cc::RendererSettings::ImageTextureTargetsMap& |
1611 RenderThreadImpl::GetImageTextureTargets() { | |
1599 return use_image_texture_targets_; | 1612 return use_image_texture_targets_; |
1600 } | 1613 } |
1601 | 1614 |
1602 scoped_refptr<base::SingleThreadTaskRunner> | 1615 scoped_refptr<base::SingleThreadTaskRunner> |
1603 RenderThreadImpl::GetCompositorMainThreadTaskRunner() { | 1616 RenderThreadImpl::GetCompositorMainThreadTaskRunner() { |
1604 return main_thread_compositor_task_runner_; | 1617 return main_thread_compositor_task_runner_; |
1605 } | 1618 } |
1606 | 1619 |
1607 scoped_refptr<base::SingleThreadTaskRunner> | 1620 scoped_refptr<base::SingleThreadTaskRunner> |
1608 RenderThreadImpl::GetCompositorImplThreadTaskRunner() { | 1621 RenderThreadImpl::GetCompositorImplThreadTaskRunner() { |
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2222 v8_memory_pressure_level == v8::MemoryPressureLevel::kCritical) | 2235 v8_memory_pressure_level == v8::MemoryPressureLevel::kCritical) |
2223 v8_memory_pressure_level = v8::MemoryPressureLevel::kModerate; | 2236 v8_memory_pressure_level = v8::MemoryPressureLevel::kModerate; |
2224 | 2237 |
2225 blink::mainThreadIsolate()->MemoryPressureNotification( | 2238 blink::mainThreadIsolate()->MemoryPressureNotification( |
2226 v8_memory_pressure_level); | 2239 v8_memory_pressure_level); |
2227 blink::MemoryPressureNotificationToWorkerThreadIsolates( | 2240 blink::MemoryPressureNotificationToWorkerThreadIsolates( |
2228 v8_memory_pressure_level); | 2241 v8_memory_pressure_level); |
2229 } | 2242 } |
2230 | 2243 |
2231 } // namespace content | 2244 } // namespace content |
OLD | NEW |