| // |
| // Copyright 2017 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| // PrintSystemInfoTest.cpp: |
| // prints the information gathered about the system so that it appears in the test logs |
| |
| #include <gtest/gtest.h> |
| |
| #include <iostream> |
| |
| #include "common/platform.h" |
| #include "gpu_info_util/SystemInfo.h" |
| |
| using namespace angle; |
| |
| namespace |
| { |
| |
| #if defined(ANGLE_PLATFORM_WINDOWS) || defined(ANGLE_PLATFORM_LINUX) || \ |
| defined(ANGLE_PLATFORM_APPLE) |
| #define SYSTEM_INFO_IMPLEMENTED |
| #endif |
| |
| #if defined(SYSTEM_INFO_IMPLEMENTED) |
| std::string VendorName(VendorID vendor) |
| { |
| switch (vendor) |
| { |
| case kVendorID_AMD: |
| return "AMD"; |
| case kVendorID_Intel: |
| return "Intel"; |
| case kVendorID_Nvidia: |
| return "Nvidia"; |
| case kVendorID_Qualcomm: |
| return "Qualcomm"; |
| default: |
| return "Unknown (" + std::to_string(vendor) + ")"; |
| } |
| } |
| #endif |
| |
| // Prints the information gathered about the system |
| TEST(PrintSystemInfoTest, Print) |
| { |
| #if defined(SYSTEM_INFO_IMPLEMENTED) |
| SystemInfo info; |
| |
| ASSERT_TRUE(GetSystemInfo(&info)); |
| ASSERT_GT(info.gpus.size(), 0u); |
| |
| std::cout << info.gpus.size() << " GPUs:\n"; |
| |
| for (size_t i = 0; i < info.gpus.size(); i++) |
| { |
| const auto &gpu = info.gpus[i]; |
| |
| std::cout << " " << i << " - " << VendorName(gpu.vendorId) << " device " << gpu.deviceId |
| << "\n"; |
| if (!gpu.driverVendor.empty()) |
| { |
| std::cout << " Driver Vendor: " << gpu.driverVendor << "\n"; |
| } |
| if (!gpu.driverVersion.empty()) |
| { |
| std::cout << " Driver Version: " << gpu.driverVersion << "\n"; |
| } |
| if (!gpu.driverDate.empty()) |
| { |
| std::cout << " Driver Date: " << gpu.driverDate << "\n"; |
| } |
| } |
| |
| std::cout << "\n"; |
| std::cout << "Active GPU: " << info.activeGPUIndex << "\n"; |
| std::cout << "Primary GPU: " << info.primaryGPUIndex << "\n"; |
| |
| std::cout << "\n"; |
| std::cout << "Optimus: " << (info.isOptimus ? "true" : "false") << "\n"; |
| std::cout << "AMD Switchable: " << (info.isAMDSwitchable ? "true" : "false") << "\n"; |
| |
| std::cout << "\n"; |
| if (!info.machineModelName.empty() || !info.machineModelVersion.empty()) |
| { |
| std::cout << "Machine Model: " << info.machineModelName << " version " |
| << info.machineModelVersion << "\n"; |
| } |
| std::cout << std::endl; |
| #else |
| std::cerr << "GetSystemInfo not implemented, skipping" << std::endl; |
| #endif |
| } |
| |
| } // anonymous namespace |