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

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

Issue 1121653002: Experiment for disabling accelerated video decoding. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comment added Created 5 years, 7 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
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/browser/gpu/gpu_data_manager_impl_private.h" 5 #include "content/browser/gpu/gpu_data_manager_impl_private.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 GpuDataManagerImpl::UnlockedSession session(owner_); 595 GpuDataManagerImpl::UnlockedSession session(owner_);
596 observer_list_->Notify(FROM_HERE, 596 observer_list_->Notify(FROM_HERE,
597 &GpuDataManagerObserver::OnVideoMemoryUsageStatsUpdate, 597 &GpuDataManagerObserver::OnVideoMemoryUsageStatsUpdate,
598 video_memory_usage_stats); 598 video_memory_usage_stats);
599 } 599 }
600 600
601 void GpuDataManagerImplPrivate::AppendRendererCommandLine( 601 void GpuDataManagerImplPrivate::AppendRendererCommandLine(
602 base::CommandLine* command_line) const { 602 base::CommandLine* command_line) const {
603 DCHECK(command_line); 603 DCHECK(command_line);
604 604
605 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE) && 605 if (ShouldDisableAcceleratedVideoDecode(command_line))
606 !command_line->HasSwitch(switches::kDisableAcceleratedVideoDecode))
607 command_line->AppendSwitch(switches::kDisableAcceleratedVideoDecode); 606 command_line->AppendSwitch(switches::kDisableAcceleratedVideoDecode);
608 #if defined(ENABLE_WEBRTC) 607 #if defined(ENABLE_WEBRTC)
609 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE) && 608 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE) &&
610 !command_line->HasSwitch(switches::kDisableWebRtcHWEncoding)) 609 !command_line->HasSwitch(switches::kDisableWebRtcHWEncoding))
611 command_line->AppendSwitch(switches::kDisableWebRtcHWEncoding); 610 command_line->AppendSwitch(switches::kDisableWebRtcHWEncoding);
612 #endif 611 #endif
613 612
614 #if defined(USE_AURA) 613 #if defined(USE_AURA)
615 if (!CanUseGpuBrowserCompositor()) 614 if (!CanUseGpuBrowserCompositor())
616 command_line->AppendSwitch(switches::kDisableGpuCompositing); 615 command_line->AppendSwitch(switches::kDisableGpuCompositing);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 if (!swiftshader_path.empty()) { 650 if (!swiftshader_path.empty()) {
652 command_line->AppendSwitchPath(switches::kSwiftShaderPath, 651 command_line->AppendSwitchPath(switches::kSwiftShaderPath,
653 swiftshader_path); 652 swiftshader_path);
654 } 653 }
655 654
656 if (!gpu_driver_bugs_.empty()) { 655 if (!gpu_driver_bugs_.empty()) {
657 command_line->AppendSwitchASCII(switches::kGpuDriverBugWorkarounds, 656 command_line->AppendSwitchASCII(switches::kGpuDriverBugWorkarounds,
658 IntSetToString(gpu_driver_bugs_)); 657 IntSetToString(gpu_driver_bugs_));
659 } 658 }
660 659
661 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE) && 660 if (ShouldDisableAcceleratedVideoDecode(command_line)) {
662 !command_line->HasSwitch(switches::kDisableAcceleratedVideoDecode)) {
663 command_line->AppendSwitch(switches::kDisableAcceleratedVideoDecode); 661 command_line->AppendSwitch(switches::kDisableAcceleratedVideoDecode);
664 } 662 }
665 #if defined(ENABLE_WEBRTC) 663 #if defined(ENABLE_WEBRTC)
666 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE) && 664 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE) &&
667 !command_line->HasSwitch(switches::kDisableWebRtcHWEncoding)) { 665 !command_line->HasSwitch(switches::kDisableWebRtcHWEncoding)) {
668 command_line->AppendSwitch(switches::kDisableWebRtcHWEncoding); 666 command_line->AppendSwitch(switches::kDisableWebRtcHWEncoding);
669 } 667 }
670 #endif 668 #endif
671 669
672 // Pass GPU and driver information to GPU process. We try to avoid full GPU 670 // Pass GPU and driver information to GPU process. We try to avoid full GPU
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 display_count_ > 1)) 730 display_count_ > 1))
733 prefs->gl_multisampling_enabled = false; 731 prefs->gl_multisampling_enabled = false;
734 732
735 #if defined(USE_AURA) 733 #if defined(USE_AURA)
736 if (!CanUseGpuBrowserCompositor()) { 734 if (!CanUseGpuBrowserCompositor()) {
737 prefs->accelerated_2d_canvas_enabled = false; 735 prefs->accelerated_2d_canvas_enabled = false;
738 prefs->pepper_3d_enabled = false; 736 prefs->pepper_3d_enabled = false;
739 } 737 }
740 #endif 738 #endif
741 739
742 if (!IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE) && 740 const base::CommandLine* command_line =
743 !base::CommandLine::ForCurrentProcess()->HasSwitch( 741 base::CommandLine::ForCurrentProcess();
744 switches::kDisableAcceleratedVideoDecode)) { 742 if (!ShouldDisableAcceleratedVideoDecode(command_line) &&
743 !command_line->HasSwitch(switches::kDisableAcceleratedVideoDecode)) {
745 prefs->pepper_accelerated_video_decode_enabled = true; 744 prefs->pepper_accelerated_video_decode_enabled = true;
746 } 745 }
747 } 746 }
748 747
749 void GpuDataManagerImplPrivate::DisableHardwareAcceleration() { 748 void GpuDataManagerImplPrivate::DisableHardwareAcceleration() {
750 card_blacklisted_ = true; 749 card_blacklisted_ = true;
751 750
752 for (int i = 0; i < gpu::NUMBER_OF_GPU_FEATURE_TYPES; ++i) 751 for (int i = 0; i < gpu::NUMBER_OF_GPU_FEATURE_TYPES; ++i)
753 blacklisted_features_.insert(i); 752 blacklisted_features_.insert(i);
754 753
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 return false; 871 return false;
873 if (ShouldUseWarp()) 872 if (ShouldUseWarp())
874 return true; 873 return true;
875 if (ShouldUseSwiftShader()) 874 if (ShouldUseSwiftShader())
876 return false; 875 return false;
877 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING)) 876 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING))
878 return false; 877 return false;
879 return true; 878 return true;
880 } 879 }
881 880
881
882 bool GpuDataManagerImplPrivate::ShouldDisableAcceleratedVideoDecode(
883 const base::CommandLine* command_line) const {
884 // Make sure that we initialize the experiment first to make sure that
885 // statistics are bucket correctly in all cases.
Ken Russell (switch to Gerrit) 2015/05/04 21:10:05 bucket -> bucketed
886 const std::string group_name = base::FieldTrialList::FindFullName(
887 "DisableAcceleratedVideoDecode");
888 if (command_line->HasSwitch(switches::kDisableAcceleratedVideoDecode)) {
889 // It was already disabled on the command line.
890 return false;
891 }
892 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE))
893 return true;
894 if (group_name == "Disabled")
895 return true;
896 return false;
897 }
898
882 void GpuDataManagerImplPrivate::GetDisabledExtensions( 899 void GpuDataManagerImplPrivate::GetDisabledExtensions(
883 std::string* disabled_extensions) const { 900 std::string* disabled_extensions) const {
884 DCHECK(disabled_extensions); 901 DCHECK(disabled_extensions);
885 902
886 *disabled_extensions = disabled_extensions_; 903 *disabled_extensions = disabled_extensions_;
887 } 904 }
888 905
889 void GpuDataManagerImplPrivate::BlockDomainFrom3DAPIs( 906 void GpuDataManagerImplPrivate::BlockDomainFrom3DAPIs(
890 const GURL& url, GpuDataManagerImpl::DomainGuilt guilt) { 907 const GURL& url, GpuDataManagerImpl::DomainGuilt guilt) {
891 BlockDomainFrom3DAPIsAtTime(url, guilt, base::Time::Now()); 908 BlockDomainFrom3DAPIsAtTime(url, guilt, base::Time::Now());
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
1163 gpu_info_.context_info_state = gpu::kCollectInfoFatalFailure; 1180 gpu_info_.context_info_state = gpu::kCollectInfoFatalFailure;
1164 #if defined(OS_WIN) 1181 #if defined(OS_WIN)
1165 gpu_info_.dx_diagnostics_info_state = gpu::kCollectInfoFatalFailure; 1182 gpu_info_.dx_diagnostics_info_state = gpu::kCollectInfoFatalFailure;
1166 #endif 1183 #endif
1167 complete_gpu_info_already_requested_ = true; 1184 complete_gpu_info_already_requested_ = true;
1168 // Some observers might be waiting. 1185 // Some observers might be waiting.
1169 NotifyGpuInfoUpdate(); 1186 NotifyGpuInfoUpdate();
1170 } 1187 }
1171 1188
1172 } // namespace content 1189 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698