OLD | NEW |
---|---|
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 <algorithm> | 7 #include <algorithm> |
8 #include <iterator> | 8 #include <iterator> |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
160 blacklist->GetDecisionEntries(&flag_disabled_entries, disabled); | 160 blacklist->GetDecisionEntries(&flag_disabled_entries, disabled); |
161 for (uint32_t disabled_entry : flag_disabled_entries) { | 161 for (uint32_t disabled_entry : flag_disabled_entries) { |
162 UMA_HISTOGRAM_ENUMERATION("GPU.BlacklistTestResultsPerDisabledEntry", | 162 UMA_HISTOGRAM_ENUMERATION("GPU.BlacklistTestResultsPerDisabledEntry", |
163 disabled_entry, max_entry_id + 1); | 163 disabled_entry, max_entry_id + 1); |
164 } | 164 } |
165 | 165 |
166 const gpu::GpuFeatureType kGpuFeatures[] = { | 166 const gpu::GpuFeatureType kGpuFeatures[] = { |
167 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS, | 167 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS, |
168 gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING, | 168 gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING, |
169 gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION, | 169 gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION, |
170 gpu::GPU_FEATURE_TYPE_WEBGL, | 170 gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL, |
171 gpu::GPU_FEATURE_TYPE_WEBGL2}; | 171 gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL2}; |
172 const std::string kGpuBlacklistFeatureHistogramNames[] = { | 172 const std::string kGpuBlacklistFeatureHistogramNames[] = { |
173 "GPU.BlacklistFeatureTestResults.Accelerated2dCanvas", | 173 "GPU.BlacklistFeatureTestResults.Accelerated2dCanvas", |
174 "GPU.BlacklistFeatureTestResults.GpuCompositing", | 174 "GPU.BlacklistFeatureTestResults.GpuCompositing", |
175 "GPU.BlacklistFeatureTestResults.GpuRasterization", | 175 "GPU.BlacklistFeatureTestResults.GpuRasterization", |
176 "GPU.BlacklistFeatureTestResults.Webgl", | 176 "GPU.BlacklistFeatureTestResults.Webgl", |
177 "GPU.BlacklistFeatureTestResults.Webgl2"}; | 177 "GPU.BlacklistFeatureTestResults.Webgl2"}; |
178 const bool kGpuFeatureUserFlags[] = { | 178 const bool kGpuFeatureUserFlags[] = { |
179 command_line.HasSwitch(switches::kDisableAccelerated2dCanvas), | 179 command_line.HasSwitch(switches::kDisableAccelerated2dCanvas), |
180 command_line.HasSwitch(switches::kDisableGpu), | 180 command_line.HasSwitch(switches::kDisableGpu), |
181 command_line.HasSwitch(switches::kDisableGpuRasterization), | 181 command_line.HasSwitch(switches::kDisableGpuRasterization), |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
295 } | 295 } |
296 | 296 |
297 bool GpuDataManagerImplPrivate::IsFeatureBlacklisted(int feature) const { | 297 bool GpuDataManagerImplPrivate::IsFeatureBlacklisted(int feature) const { |
298 #if defined(OS_CHROMEOS) | 298 #if defined(OS_CHROMEOS) |
299 if (feature == gpu::GPU_FEATURE_TYPE_PANEL_FITTING && | 299 if (feature == gpu::GPU_FEATURE_TYPE_PANEL_FITTING && |
300 base::CommandLine::ForCurrentProcess()->HasSwitch( | 300 base::CommandLine::ForCurrentProcess()->HasSwitch( |
301 switches::kDisablePanelFitting)) { | 301 switches::kDisablePanelFitting)) { |
302 return true; | 302 return true; |
303 } | 303 } |
304 #endif // OS_CHROMEOS | 304 #endif // OS_CHROMEOS |
305 if (use_swiftshader_) { | |
306 // Skia's software rendering is probably more efficient than going through | |
307 // software emulation of the GPU, so use that. | |
308 if (feature == gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS) | |
309 return true; | |
310 return false; | |
311 } | |
312 | 305 |
313 return (blacklisted_features_.count(feature) == 1); | 306 // SwiftShader blacklists all features |
307 return use_swiftshader_ || (blacklisted_features_.count(feature) == 1); | |
314 } | 308 } |
315 | 309 |
316 bool GpuDataManagerImplPrivate::IsFeatureEnabled(int feature) const { | 310 bool GpuDataManagerImplPrivate::IsFeatureEnabled(int feature) const { |
317 DCHECK_EQ(feature, gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION); | 311 DCHECK_EQ(feature, gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION); |
318 return gpu_feature_info_ | 312 return gpu_feature_info_ |
319 .status_values[gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION] == | 313 .status_values[gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION] == |
320 gpu::kGpuFeatureStatusEnabled; | 314 gpu::kGpuFeatureStatusEnabled; |
321 } | 315 } |
322 | 316 |
317 bool GpuDataManagerImplPrivate::IsWebGLEnabled() const { | |
318 return use_swiftshader_ || | |
319 !blacklisted_features_.count(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL); | |
320 } | |
321 | |
323 bool GpuDataManagerImplPrivate::IsDriverBugWorkaroundActive(int feature) const { | 322 bool GpuDataManagerImplPrivate::IsDriverBugWorkaroundActive(int feature) const { |
324 return (gpu_driver_bugs_.count(feature) == 1); | 323 return (gpu_driver_bugs_.count(feature) == 1); |
325 } | 324 } |
326 | 325 |
327 size_t GpuDataManagerImplPrivate::GetBlacklistedFeatureCount() const { | 326 size_t GpuDataManagerImplPrivate::GetBlacklistedFeatureCount() const { |
328 if (use_swiftshader_) | 327 // SwiftShader blacklists all features |
329 return 1; | 328 return use_swiftshader_ ? gpu::NUMBER_OF_GPU_FEATURE_TYPES |
330 return blacklisted_features_.size(); | 329 : blacklisted_features_.size(); |
331 } | 330 } |
332 | 331 |
333 gpu::GPUInfo GpuDataManagerImplPrivate::GetGPUInfo() const { | 332 gpu::GPUInfo GpuDataManagerImplPrivate::GetGPUInfo() const { |
334 return gpu_info_; | 333 return gpu_info_; |
335 } | 334 } |
336 | 335 |
337 void GpuDataManagerImplPrivate::GetGpuProcessHandles( | 336 void GpuDataManagerImplPrivate::GetGpuProcessHandles( |
338 const GpuDataManager::GetGpuProcessHandlesCallback& callback) const { | 337 const GpuDataManager::GetGpuProcessHandlesCallback& callback) const { |
339 GpuProcessHost::GetProcessHandles(callback); | 338 GpuProcessHost::GetProcessHandles(callback); |
340 } | 339 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
373 // because their context creation can always be rejected on the GPU process | 372 // because their context creation can always be rejected on the GPU process |
374 // side. | 373 // side. |
375 std::set<int> feature_diffs; | 374 std::set<int> feature_diffs; |
376 std::set_difference(blacklisted_features_.begin(), | 375 std::set_difference(blacklisted_features_.begin(), |
377 blacklisted_features_.end(), | 376 blacklisted_features_.end(), |
378 preliminary_blacklisted_features_.begin(), | 377 preliminary_blacklisted_features_.begin(), |
379 preliminary_blacklisted_features_.end(), | 378 preliminary_blacklisted_features_.end(), |
380 std::inserter(feature_diffs, feature_diffs.begin())); | 379 std::inserter(feature_diffs, feature_diffs.begin())); |
381 if (feature_diffs.size()) { | 380 if (feature_diffs.size()) { |
382 // TODO(zmo): Other features might also be OK to ignore here. | 381 // TODO(zmo): Other features might also be OK to ignore here. |
383 feature_diffs.erase(gpu::GPU_FEATURE_TYPE_WEBGL); | 382 feature_diffs.erase(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL); |
384 feature_diffs.erase(gpu::GPU_FEATURE_TYPE_WEBGL2); | 383 feature_diffs.erase(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL2); |
385 } | 384 } |
386 if (feature_diffs.size()) { | 385 if (feature_diffs.size()) { |
387 if (reason) { | 386 if (reason) { |
388 *reason = "Features are disabled on full but not preliminary GPU info."; | 387 *reason = "Features are disabled on full but not preliminary GPU info."; |
389 } | 388 } |
390 return false; | 389 return false; |
391 } | 390 } |
392 } | 391 } |
393 | 392 |
394 if (blacklisted_features_.size() == gpu::NUMBER_OF_GPU_FEATURE_TYPES) { | 393 if (blacklisted_features_.size() == gpu::NUMBER_OF_GPU_FEATURE_TYPES) { |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
743 gpu_driver_bugs_.end()) { | 742 gpu_driver_bugs_.end()) { |
744 command_line->AppendSwitch(switches::kDisableES3GLContext); | 743 command_line->AppendSwitch(switches::kDisableES3GLContext); |
745 } | 744 } |
746 if (gpu_driver_bugs_.find(gpu::DISABLE_DIRECT_COMPOSITION) != | 745 if (gpu_driver_bugs_.find(gpu::DISABLE_DIRECT_COMPOSITION) != |
747 gpu_driver_bugs_.end()) { | 746 gpu_driver_bugs_.end()) { |
748 command_line->AppendSwitch(switches::kDisableDirectComposition); | 747 command_line->AppendSwitch(switches::kDisableDirectComposition); |
749 } | 748 } |
750 if (use_swiftshader_) { | 749 if (use_swiftshader_) { |
751 command_line->AppendSwitchASCII( | 750 command_line->AppendSwitchASCII( |
752 switches::kUseGL, gl::kGLImplementationSwiftShaderForWebGLName); | 751 switches::kUseGL, gl::kGLImplementationSwiftShaderForWebGLName); |
753 } else if ((IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL) || | 752 } else if ((IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL) || |
754 IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING) || | 753 IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING) || |
755 IsFeatureBlacklisted( | 754 IsFeatureBlacklisted( |
756 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)) && | 755 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)) && |
757 (use_gl == "any")) { | 756 (use_gl == "any")) { |
758 command_line->AppendSwitchASCII( | 757 command_line->AppendSwitchASCII( |
759 switches::kUseGL, | 758 switches::kUseGL, |
760 gl::GetGLImplementationName(gl::GetSoftwareGLImplementation())); | 759 gl::GetGLImplementationName(gl::GetSoftwareGLImplementation())); |
761 } else if (!use_gl.empty()) { | 760 } else if (!use_gl.empty()) { |
762 command_line->AppendSwitchASCII(switches::kUseGL, use_gl); | 761 command_line->AppendSwitchASCII(switches::kUseGL, use_gl); |
763 } | 762 } |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
821 command_line->AppendSwitch(switches::kDisableWebRtcHWEncoding); | 820 command_line->AppendSwitch(switches::kDisableWebRtcHWEncoding); |
822 if (gpu_preferences) | 821 if (gpu_preferences) |
823 gpu_preferences->disable_web_rtc_hw_encoding = true; | 822 gpu_preferences->disable_web_rtc_hw_encoding = true; |
824 #if defined (OS_ANDROID) | 823 #if defined (OS_ANDROID) |
825 } | 824 } |
826 #endif | 825 #endif |
827 } | 826 } |
828 #endif | 827 #endif |
829 | 828 |
830 if (gpu_preferences) { // enable_es3_apis | 829 if (gpu_preferences) { // enable_es3_apis |
831 bool blacklisted = IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2); | 830 bool blacklisted = |
831 IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL2); | |
832 bool enabled = base::CommandLine::ForCurrentProcess()->HasSwitch( | 832 bool enabled = base::CommandLine::ForCurrentProcess()->HasSwitch( |
833 switches::kEnableES3APIs); | 833 switches::kEnableES3APIs); |
834 bool disabled = base::CommandLine::ForCurrentProcess()->HasSwitch( | 834 bool disabled = base::CommandLine::ForCurrentProcess()->HasSwitch( |
835 switches::kDisableES3APIs); | 835 switches::kDisableES3APIs); |
836 gpu_preferences->enable_es3_apis = (enabled || !blacklisted) && !disabled; | 836 gpu_preferences->enable_es3_apis = (enabled || !blacklisted) && !disabled; |
piman
2017/03/10 20:31:40
Mmh, I think we still want to be precise about web
sugoi1
2017/03/10 20:42:38
Ok, I can revert the WebGL2 change. For now, Swift
| |
837 } | 837 } |
838 | 838 |
839 // Pass GPU and driver information to GPU process. We try to avoid full GPU | 839 // Pass GPU and driver information to GPU process. We try to avoid full GPU |
840 // info collection at GPU process startup, but we need gpu vendor_id, | 840 // info collection at GPU process startup, but we need gpu vendor_id, |
841 // device_id, driver_vendor, driver_version for deciding whether we need to | 841 // device_id, driver_vendor, driver_version for deciding whether we need to |
842 // collect full info (on Linux) and for crash reporting purpose. | 842 // collect full info (on Linux) and for crash reporting purpose. |
843 command_line->AppendSwitchASCII(switches::kGpuVendorID, | 843 command_line->AppendSwitchASCII(switches::kGpuVendorID, |
844 base::StringPrintf("0x%04x", gpu_info_.gpu.vendor_id)); | 844 base::StringPrintf("0x%04x", gpu_info_.gpu.vendor_id)); |
845 command_line->AppendSwitchASCII(switches::kGpuDeviceID, | 845 command_line->AppendSwitchASCII(switches::kGpuDeviceID, |
846 base::StringPrintf("0x%04x", gpu_info_.gpu.device_id)); | 846 base::StringPrintf("0x%04x", gpu_info_.gpu.device_id)); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
883 command_line->AppendSwitchASCII( | 883 command_line->AppendSwitchASCII( |
884 switches::kGpuActiveDeviceID, | 884 switches::kGpuActiveDeviceID, |
885 base::StringPrintf("0x%04x", maybe_active_gpu_device.device_id)); | 885 base::StringPrintf("0x%04x", maybe_active_gpu_device.device_id)); |
886 } | 886 } |
887 } | 887 } |
888 | 888 |
889 void GpuDataManagerImplPrivate::UpdateRendererWebPrefs( | 889 void GpuDataManagerImplPrivate::UpdateRendererWebPrefs( |
890 WebPreferences* prefs) const { | 890 WebPreferences* prefs) const { |
891 DCHECK(prefs); | 891 DCHECK(prefs); |
892 | 892 |
893 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)) { | 893 if (!IsWebGLEnabled()) { |
894 prefs->experimental_webgl_enabled = false; | 894 prefs->experimental_webgl_enabled = false; |
895 prefs->pepper_3d_enabled = false; | 895 prefs->pepper_3d_enabled = false; |
896 } | 896 } |
897 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_FLASH3D)) | 897 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_FLASH3D)) |
898 prefs->flash_3d_enabled = false; | 898 prefs->flash_3d_enabled = false; |
899 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_FLASH_STAGE3D)) { | 899 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_FLASH_STAGE3D)) { |
900 prefs->flash_stage3d_enabled = false; | 900 prefs->flash_stage3d_enabled = false; |
901 prefs->flash_stage3d_baseline_enabled = false; | 901 prefs->flash_stage3d_baseline_enabled = false; |
902 } | 902 } |
903 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_FLASH_STAGE3D_BASELINE)) | 903 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_FLASH_STAGE3D_BASELINE)) |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1221 } | 1221 } |
1222 | 1222 |
1223 void GpuDataManagerImplPrivate::UpdateBlacklistedFeatures( | 1223 void GpuDataManagerImplPrivate::UpdateBlacklistedFeatures( |
1224 const std::set<int>& features) { | 1224 const std::set<int>& features) { |
1225 blacklisted_features_ = features; | 1225 blacklisted_features_ = features; |
1226 | 1226 |
1227 // Force disable using the GPU for these features, even if they would | 1227 // Force disable using the GPU for these features, even if they would |
1228 // otherwise be allowed. | 1228 // otherwise be allowed. |
1229 if (card_blacklisted_) { | 1229 if (card_blacklisted_) { |
1230 blacklisted_features_.insert(gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING); | 1230 blacklisted_features_.insert(gpu::GPU_FEATURE_TYPE_GPU_COMPOSITING); |
1231 blacklisted_features_.insert(gpu::GPU_FEATURE_TYPE_WEBGL); | 1231 blacklisted_features_.insert(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL); |
1232 blacklisted_features_.insert(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL2); | |
1232 } | 1233 } |
1233 | 1234 |
1234 EnableSwiftShaderIfNecessary(); | 1235 EnableSwiftShaderIfNecessary(); |
1235 } | 1236 } |
1236 | 1237 |
1237 void GpuDataManagerImplPrivate::UpdatePreliminaryBlacklistedFeatures() { | 1238 void GpuDataManagerImplPrivate::UpdatePreliminaryBlacklistedFeatures() { |
1238 preliminary_blacklisted_features_ = blacklisted_features_; | 1239 preliminary_blacklisted_features_ = blacklisted_features_; |
1239 preliminary_blacklisted_features_initialized_ = true; | 1240 preliminary_blacklisted_features_initialized_ = true; |
1240 } | 1241 } |
1241 | 1242 |
1242 void GpuDataManagerImplPrivate::UpdateGpuSwitchingManager( | 1243 void GpuDataManagerImplPrivate::UpdateGpuSwitchingManager( |
1243 const gpu::GPUInfo& gpu_info) { | 1244 const gpu::GPUInfo& gpu_info) { |
1244 // The vendor IDs might be 0 on non-PCI devices (like Android), but | 1245 // The vendor IDs might be 0 on non-PCI devices (like Android), but |
1245 // the length of the vector is all we care about in most cases. | 1246 // the length of the vector is all we care about in most cases. |
1246 std::vector<uint32_t> vendor_ids; | 1247 std::vector<uint32_t> vendor_ids; |
1247 vendor_ids.push_back(gpu_info.gpu.vendor_id); | 1248 vendor_ids.push_back(gpu_info.gpu.vendor_id); |
1248 for (const auto& device : gpu_info.secondary_gpus) { | 1249 for (const auto& device : gpu_info.secondary_gpus) { |
1249 vendor_ids.push_back(device.vendor_id); | 1250 vendor_ids.push_back(device.vendor_id); |
1250 } | 1251 } |
1251 ui::GpuSwitchingManager::GetInstance()->SetGpuVendorIds(vendor_ids); | 1252 ui::GpuSwitchingManager::GetInstance()->SetGpuVendorIds(vendor_ids); |
1252 gpu::InitializeDualGpusIfSupported(gpu_driver_bugs_); | 1253 gpu::InitializeDualGpusIfSupported(gpu_driver_bugs_); |
1253 } | 1254 } |
1254 | 1255 |
1255 void GpuDataManagerImplPrivate::NotifyGpuInfoUpdate() { | 1256 void GpuDataManagerImplPrivate::NotifyGpuInfoUpdate() { |
1256 observer_list_->Notify(FROM_HERE, &GpuDataManagerObserver::OnGpuInfoUpdate); | 1257 observer_list_->Notify(FROM_HERE, &GpuDataManagerObserver::OnGpuInfoUpdate); |
1257 } | 1258 } |
1258 | 1259 |
1259 void GpuDataManagerImplPrivate::EnableSwiftShaderIfNecessary() { | 1260 void GpuDataManagerImplPrivate::EnableSwiftShaderIfNecessary() { |
1260 if (!GpuAccessAllowed(NULL) || | 1261 if (!GpuAccessAllowed(NULL) || |
1261 blacklisted_features_.count(gpu::GPU_FEATURE_TYPE_WEBGL)) { | 1262 blacklisted_features_.count(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL)) { |
1262 if (!swiftshader_path_.empty() && | 1263 if (!swiftshader_path_.empty() && |
1263 !base::CommandLine::ForCurrentProcess()->HasSwitch( | 1264 !base::CommandLine::ForCurrentProcess()->HasSwitch( |
1264 switches::kDisableSoftwareRasterizer)) | 1265 switches::kDisableSoftwareRasterizer)) |
1265 use_swiftshader_ = true; | 1266 use_swiftshader_ = true; |
1266 } | 1267 } |
1267 } | 1268 } |
1268 | 1269 |
1269 std::string GpuDataManagerImplPrivate::GetDomainFromURL( | 1270 std::string GpuDataManagerImplPrivate::GetDomainFromURL( |
1270 const GURL& url) const { | 1271 const GURL& url) const { |
1271 // For the moment, we just use the host, or its IP address, as the | 1272 // For the moment, we just use the host, or its IP address, as the |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1372 gpu_info_.context_info_state = gpu::kCollectInfoFatalFailure; | 1373 gpu_info_.context_info_state = gpu::kCollectInfoFatalFailure; |
1373 #if defined(OS_WIN) | 1374 #if defined(OS_WIN) |
1374 gpu_info_.dx_diagnostics_info_state = gpu::kCollectInfoFatalFailure; | 1375 gpu_info_.dx_diagnostics_info_state = gpu::kCollectInfoFatalFailure; |
1375 #endif | 1376 #endif |
1376 complete_gpu_info_already_requested_ = true; | 1377 complete_gpu_info_already_requested_ = true; |
1377 // Some observers might be waiting. | 1378 // Some observers might be waiting. |
1378 NotifyGpuInfoUpdate(); | 1379 NotifyGpuInfoUpdate(); |
1379 } | 1380 } |
1380 | 1381 |
1381 } // namespace content | 1382 } // namespace content |
OLD | NEW |