| Index: gpu/config/gpu_control_list.cc
|
| diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc
|
| index f921b003c8977d68affd2112df29c22b40db47d3..e881606723bf12e7c58f274ccb502592bbc4f45c 100644
|
| --- a/gpu/config/gpu_control_list.cc
|
| +++ b/gpu/config/gpu_control_list.cc
|
| @@ -87,6 +87,10 @@ int CompareLexicalNumberStrings(
|
| }
|
|
|
| const char kMultiGpuStyleStringAMDSwitchable[] = "amd_switchable";
|
| +const char kMultiGpuStyleStringAMDSwitchableDiscrete[] =
|
| + "amd_switchable_discrete";
|
| +const char kMultiGpuStyleStringAMDSwitchableIntegrated[] =
|
| + "amd_switchable_integrated";
|
| const char kMultiGpuStyleStringOptimus[] = "optimus";
|
|
|
| const char kMultiGpuCategoryStringPrimary[] = "primary";
|
| @@ -1078,6 +1082,10 @@ GpuControlList::GpuControlListEntry::StringToMultiGpuStyle(
|
| return kMultiGpuStyleOptimus;
|
| if (style == kMultiGpuStyleStringAMDSwitchable)
|
| return kMultiGpuStyleAMDSwitchable;
|
| + if (style == kMultiGpuStyleStringAMDSwitchableIntegrated)
|
| + return kMultiGpuStyleAMDSwitchableIntegrated;
|
| + if (style == kMultiGpuStyleStringAMDSwitchableDiscrete)
|
| + return kMultiGpuStyleAMDSwitchableDiscrete;
|
| return kMultiGpuStyleNone;
|
| }
|
|
|
| @@ -1199,6 +1207,22 @@ bool GpuControlList::GpuControlListEntry::Contains(
|
| if (!gpu_info.amd_switchable)
|
| return false;
|
| break;
|
| + case kMultiGpuStyleAMDSwitchableDiscrete:
|
| + if (!gpu_info.amd_switchable)
|
| + return false;
|
| + // The discrete GPU is always the primary GPU.
|
| + // This is guaranteed by GpuInfoCollector.
|
| + if (!gpu_info.gpu.active)
|
| + return false;
|
| + break;
|
| + case kMultiGpuStyleAMDSwitchableIntegrated:
|
| + if (!gpu_info.amd_switchable)
|
| + return false;
|
| + // Assume the integrated GPU is the first in the secondary GPU list.
|
| + if (gpu_info.secondary_gpus.size() == 0 ||
|
| + !gpu_info.secondary_gpus[0].active)
|
| + return false;
|
| + break;
|
| case kMultiGpuStyleNone:
|
| break;
|
| }
|
|
|