Commit b9d12b3e authored by Austin Eng's avatar Austin Eng Committed by Commit Bot

WebGPU: Always pick the discrete GPU if it is available

This will be replaced when we implement the GPUAdapterOptions
to select high/low power.

Bug: chromium:852089
Change-Id: If698c1edd3c1cb8f6d10377133f276351d05dc2f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1572533Reviewed-by: default avatarKai Ninomiya <kainino@chromium.org>
Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652202}
parent 4ed9dea9
......@@ -371,12 +371,42 @@ ContextResult WebGPUDecoderImpl::Initialize() {
DawnDevice WebGPUDecoderImpl::CreateDefaultDevice() {
dawn_instance_->DiscoverDefaultAdapters();
std::vector<dawn_native::Adapter> adapters = dawn_instance_->GetAdapters();
dawn_native::Adapter integrated_gpu_adapter = {};
dawn_native::Adapter cpu_adapter = {};
dawn_native::Adapter unknown_adapter = {};
for (dawn_native::Adapter adapter : adapters) {
if (adapter.GetBackendType() != dawn_native::BackendType::Null &&
adapter.GetBackendType() != dawn_native::BackendType::OpenGL) {
return adapter.CreateDevice();
switch (adapter.GetDeviceType()) {
case dawn_native::DeviceType::DiscreteGPU:
// For now, we always prefer the discrete GPU
return adapter.CreateDevice();
case dawn_native::DeviceType::IntegratedGPU:
integrated_gpu_adapter = adapter;
break;
case dawn_native::DeviceType::CPU:
cpu_adapter = adapter;
break;
case dawn_native::DeviceType::Unknown:
unknown_adapter = adapter;
break;
default:
NOTREACHED();
break;
}
}
}
if (integrated_gpu_adapter) {
return integrated_gpu_adapter.CreateDevice();
}
if (cpu_adapter) {
return cpu_adapter.CreateDevice();
}
if (unknown_adapter) {
return unknown_adapter.CreateDevice();
}
return nullptr;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment