Index: content/gpu/gpu_info_collector_win.cc |
=================================================================== |
--- content/gpu/gpu_info_collector_win.cc (revision 147262) |
+++ content/gpu/gpu_info_collector_win.cc (working copy) |
@@ -153,6 +153,16 @@ |
namespace gpu_info_collector { |
+#if !defined(OFFICIAL_BUILD) |
+AMDVideoCardType GetAMDVideocardType() { |
+ return UNKNOWN; |
+} |
+#else |
+// This function has a real implementation for official builds that can |
+// be found in src/third_party/amd. |
+AMDVideoCardType GetAMDVideocardType(); |
+#endif |
+ |
bool CollectGraphicsInfo(content::GPUInfo* gpu_info) { |
TRACE_EVENT0("gpu", "CollectGraphicsInfo"); |
@@ -344,12 +354,13 @@ |
reinterpret_cast<LPBYTE>(value), &dwcb_data); |
if (result == ERROR_SUCCESS) { |
driver_vendor = WideToASCII(std::wstring(value)); |
- // If it's an Intel GPU with a driver provided by AMD then it's |
- // probably AMD's Dynamic Switchable Graphics. |
- // TODO: detect only AMD switchable |
- gpu_info->amd_switchable = |
- driver_vendor == "Advanced Micro Devices, Inc." || |
- driver_vendor == "ATI Technologies Inc."; |
+ if (driver_vendor == "Advanced Micro Devices, Inc." || |
+ driver_vendor == "ATI Technologies Inc.") { |
+ // We are conservative and assume that in the absense of a clear |
+ // signal the videocard is assumed to be switchable. |
+ AMDVideoCardType amd_card_type = GetAMDVideocardType(); |
+ gpu_info->amd_switchable = (amd_card_type != STANDALONE); |
+ } |
} |
gpu_info->driver_vendor = driver_vendor; |