| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/metal_util/device.h" |
| |
| #import <Metal/Metal.h> |
| |
| #include "base/logging.h" |
| |
| namespace metal { |
| |
| id<MTLDevice> GetDefaultDevice() { |
| // First attempt to find a low power device to use. |
| #if BUILDFLAG(IS_MAC) |
| for (id<MTLDevice> device in MTLCopyAllDevices()) { |
| if (device.lowPower) { |
| return device; |
| } |
| } |
| #endif |
| // Failing that, use the system default device. |
| id<MTLDevice> system_default = MTLCreateSystemDefaultDevice(); |
| if (!system_default) { |
| DLOG(ERROR) << "Failed to find MTLDevice."; |
| return nil; |
| } |
| |
| return system_default; |
| } |
| |
| } // namespace metal |