| diff -u -rupN gpu_test_expectations_reverted/angle_config.h gpu_test_expectations/angle_config.h |
| --- gpu_test_expectations_reverted/angle_config.h 1969-12-31 19:00:00.000000000 -0500 |
| +++ gpu_test_expectations/angle_config.h 2016-08-24 13:18:58.877015665 -0400 |
| @@ -0,0 +1,66 @@ |
| +// |
| +// Copyright 2015 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. |
| +// |
| +// angle_config.h: |
| +// Helpers for importing the gpu test expectations package from Chrome. |
| +// |
| + |
| +#ifndef GPU_TEST_EXPECTATIONS_ANGLE_CONFIG_H_ |
| +#define GPU_TEST_EXPECTATIONS_ANGLE_CONFIG_H_ |
| + |
| +#include <stdint.h> |
| + |
| +#include <iostream> |
| + |
| +#include "common/debug.h" |
| +#include "common/string_utils.h" |
| + |
| +#define DCHECK_EQ(A,B) ASSERT((A) == (B)) |
| +#define DCHECK_NE(A,B) ASSERT((A) != (B)) |
| +#define DCHECK(X) ASSERT(X) |
| +#define LOG(X) std::cerr |
| + |
| +#define GPU_EXPORT |
| + |
| +typedef int32_t int32; |
| +typedef uint32_t uint32; |
| +typedef int64_t int64; |
| +typedef uint64_t uint64; |
| + |
| +// Shim Chromium's base by importing functions in the base namespace. |
| +namespace base |
| +{ |
| + using angle::kWhitespaceASCII; |
| + using angle::TRIM_WHITESPACE; |
| + using angle::KEEP_WHITESPACE; |
| + using angle::SPLIT_WANT_ALL; |
| + using angle::SPLIT_WANT_NONEMPTY; |
| + using angle::SplitString; |
| + using angle::SplitStringAlongWhitespace; |
| + using angle::HexStringToUInt; |
| + using angle::ReadFileToString; |
| + |
| + // StringPrintf is called differently in ANGLE but using cannot change |
| + // the name of the imported function. Use a define to change the name. |
| + using ::FormatString; |
| + #define StringPrintf FormatString |
| +} |
| + |
| +// TODO(jmadill): other platforms |
| +// clang-format off |
| +#if defined(_WIN32) || defined(_WIN64) |
| +# define OS_WIN |
| +#elif defined(ANDROID) |
| +# define OS_ANDROID |
| +#elif defined(__linux__) |
| +# define OS_LINUX |
| +#elif defined(__APPLE__) |
| +# define OS_MACOSX |
| +#else |
| +# error "Unsupported platform" |
| +#endif |
| +// clang-format on |
| + |
| +#endif |
| diff -u -rupN gpu_test_expectations_reverted/gpu_info.cc gpu_test_expectations/gpu_info.cc |
| --- gpu_test_expectations_reverted/gpu_info.cc 2017-02-13 11:15:30.922221193 -0500 |
| +++ gpu_test_expectations/gpu_info.cc 2015-11-25 15:47:24.575592261 -0500 |
| @@ -2,7 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| -#include "gpu/config/gpu_info.h" |
| +#include "gpu_info.h" |
| |
| namespace { |
| |
| @@ -17,31 +17,6 @@ void EnumerateGPUDevice(const gpu::GPUIn |
| enumerator->EndGPUDevice(); |
| } |
| |
| -void EnumerateVideoDecodeAcceleratorSupportedProfile( |
| - const gpu::VideoDecodeAcceleratorSupportedProfile& profile, |
| - gpu::GPUInfo::Enumerator* enumerator) { |
| - enumerator->BeginVideoDecodeAcceleratorSupportedProfile(); |
| - enumerator->AddInt("profile", profile.profile); |
| - enumerator->AddInt("maxResolutionWidth", profile.max_resolution.width()); |
| - enumerator->AddInt("maxResolutionHeight", profile.max_resolution.height()); |
| - enumerator->AddInt("minResolutionWidth", profile.min_resolution.width()); |
| - enumerator->AddInt("minResolutionHeight", profile.min_resolution.height()); |
| - enumerator->EndVideoDecodeAcceleratorSupportedProfile(); |
| -} |
| - |
| -void EnumerateVideoEncodeAcceleratorSupportedProfile( |
| - const gpu::VideoEncodeAcceleratorSupportedProfile& profile, |
| - gpu::GPUInfo::Enumerator* enumerator) { |
| - enumerator->BeginVideoEncodeAcceleratorSupportedProfile(); |
| - enumerator->AddInt("profile", profile.profile); |
| - enumerator->AddInt("maxResolutionWidth", profile.max_resolution.width()); |
| - enumerator->AddInt("maxResolutionHeight", profile.max_resolution.height()); |
| - enumerator->AddInt("maxFramerateNumerator", profile.max_framerate_numerator); |
| - enumerator->AddInt("maxFramerateDenominator", |
| - profile.max_framerate_denominator); |
| - enumerator->EndVideoEncodeAcceleratorSupportedProfile(); |
| -} |
| - |
| } // namespace |
| |
| namespace gpu { |
| @@ -68,9 +43,6 @@ GPUInfo::GPUInfo() |
| in_process_gpu(true), |
| basic_info_state(kCollectInfoNone), |
| context_info_state(kCollectInfoNone), |
| -#if defined(OS_WIN) |
| - dx_diagnostics_info_state(kCollectInfoNone), |
| -#endif |
| jpeg_decode_accelerator_supported(false) { |
| } |
| |
| @@ -78,11 +50,9 @@ GPUInfo::~GPUInfo() { } |
| |
| void GPUInfo::EnumerateFields(Enumerator* enumerator) const { |
| struct GPUInfoKnownFields { |
| - base::TimeDelta initialization_time; |
| bool optimus; |
| bool amd_switchable; |
| bool lenovo_dcute; |
| - Version display_link_version; |
| GPUDevice gpu; |
| std::vector<GPUDevice> secondary_gpus; |
| uint64 adapter_luid; |
| @@ -110,14 +80,6 @@ void GPUInfo::EnumerateFields(Enumerator |
| bool in_process_gpu; |
| CollectInfoResult basic_info_state; |
| CollectInfoResult context_info_state; |
| -#if defined(OS_WIN) |
| - CollectInfoResult dx_diagnostics_info_state; |
| - DxDiagNode dx_diagnostics; |
| -#endif |
| - VideoDecodeAcceleratorSupportedProfiles |
| - video_decode_accelerator_supported_profiles; |
| - VideoEncodeAcceleratorSupportedProfiles |
| - video_encode_accelerator_supported_profiles; |
| bool jpeg_decode_accelerator_supported; |
| }; |
| |
| @@ -136,15 +98,9 @@ void GPUInfo::EnumerateFields(Enumerator |
| EnumerateGPUDevice(secondary_gpu, enumerator); |
| |
| enumerator->BeginAuxAttributes(); |
| - enumerator->AddTimeDeltaInSecondsF("initializationTime", |
| - initialization_time); |
| enumerator->AddBool("optimus", optimus); |
| enumerator->AddBool("amdSwitchable", amd_switchable); |
| enumerator->AddBool("lenovoDcute", lenovo_dcute); |
| - if (display_link_version.IsValid()) { |
| - enumerator->AddString("displayLinkVersion", |
| - display_link_version.GetString()); |
| - } |
| enumerator->AddInt64("adapterLuid", adapter_luid); |
| enumerator->AddString("driverVendor", driver_vendor); |
| enumerator->AddString("driverVersion", driver_version); |
| @@ -171,14 +127,7 @@ void GPUInfo::EnumerateFields(Enumerator |
| enumerator->AddBool("inProcessGpu", in_process_gpu); |
| enumerator->AddInt("basicInfoState", basic_info_state); |
| enumerator->AddInt("contextInfoState", context_info_state); |
| -#if defined(OS_WIN) |
| - enumerator->AddInt("DxDiagnosticsInfoState", dx_diagnostics_info_state); |
| -#endif |
| // TODO(kbr): add dx_diagnostics on Windows. |
| - for (const auto& profile : video_decode_accelerator_supported_profiles) |
| - EnumerateVideoDecodeAcceleratorSupportedProfile(profile, enumerator); |
| - for (const auto& profile : video_encode_accelerator_supported_profiles) |
| - EnumerateVideoEncodeAcceleratorSupportedProfile(profile, enumerator); |
| enumerator->AddBool("jpegDecodeAcceleratorSupported", |
| jpeg_decode_accelerator_supported); |
| enumerator->EndAuxAttributes(); |
| diff -u -rupN gpu_test_expectations_reverted/gpu_info.h gpu_test_expectations/gpu_info.h |
| --- gpu_test_expectations_reverted/gpu_info.h 2017-02-13 11:15:30.922221193 -0500 |
| +++ gpu_test_expectations/gpu_info.h 2015-11-25 15:47:24.575592261 -0500 |
| @@ -11,13 +11,7 @@ |
| #include <string> |
| #include <vector> |
| |
| -#include "base/basictypes.h" |
| -#include "base/time/time.h" |
| -#include "base/version.h" |
| -#include "build/build_config.h" |
| -#include "gpu/config/dx_diag_node.h" |
| -#include "gpu/gpu_export.h" |
| -#include "ui/gfx/geometry/size.h" |
| +#include "angle_config.h" |
| |
| namespace gpu { |
| |
| @@ -54,25 +48,6 @@ enum VideoCodecProfile { |
| VIDEO_CODEC_PROFILE_MAX = VP9PROFILE_ANY, |
| }; |
| |
| -// Specification of a decoding profile supported by a hardware decoder. |
| -struct GPU_EXPORT VideoDecodeAcceleratorSupportedProfile { |
| - VideoCodecProfile profile; |
| - gfx::Size max_resolution; |
| - gfx::Size min_resolution; |
| -}; |
| -using VideoDecodeAcceleratorSupportedProfiles = |
| - std::vector<VideoDecodeAcceleratorSupportedProfile>; |
| - |
| -// Specification of an encoding profile supported by a hardware encoder. |
| -struct GPU_EXPORT VideoEncodeAcceleratorSupportedProfile { |
| - VideoCodecProfile profile; |
| - gfx::Size max_resolution; |
| - uint32 max_framerate_numerator; |
| - uint32 max_framerate_denominator; |
| -}; |
| -using VideoEncodeAcceleratorSupportedProfiles = |
| - std::vector<VideoEncodeAcceleratorSupportedProfile>; |
| - |
| struct GPU_EXPORT GPUInfo { |
| struct GPU_EXPORT GPUDevice { |
| GPUDevice(); |
| @@ -104,10 +79,6 @@ struct GPU_EXPORT GPUInfo { |
| return !can_lose_context && !software_rendering; |
| } |
| |
| - // The amount of time taken to get from the process starting to the message |
| - // loop being pumped. |
| - base::TimeDelta initialization_time; |
| - |
| // Computer has NVIDIA Optimus |
| bool optimus; |
| |
| @@ -117,10 +88,6 @@ struct GPU_EXPORT GPUInfo { |
| // Lenovo dCute is installed. http://crbug.com/181665. |
| bool lenovo_dcute; |
| |
| - // Version of DisplayLink driver installed. Zero if not installed. |
| - // http://crbug.com/177611. |
| - Version display_link_version; |
| - |
| // Primary GPU, for exmaple, the discrete GPU in a dual GPU machine. |
| GPUDevice gpu; |
| |
| @@ -213,17 +180,7 @@ struct GPU_EXPORT GPUInfo { |
| // if the collection fails or not. |
| CollectInfoResult basic_info_state; |
| CollectInfoResult context_info_state; |
| -#if defined(OS_WIN) |
| - CollectInfoResult dx_diagnostics_info_state; |
| |
| - // The information returned by the DirectX Diagnostics Tool. |
| - DxDiagNode dx_diagnostics; |
| -#endif |
| - |
| - VideoDecodeAcceleratorSupportedProfiles |
| - video_decode_accelerator_supported_profiles; |
| - VideoEncodeAcceleratorSupportedProfiles |
| - video_encode_accelerator_supported_profiles; |
| bool jpeg_decode_accelerator_supported; |
| |
| // Note: when adding new members, please remember to update EnumerateFields |
| @@ -243,8 +200,6 @@ struct GPU_EXPORT GPUInfo { |
| virtual void AddInt(const char* name, int value) = 0; |
| virtual void AddString(const char* name, const std::string& value) = 0; |
| virtual void AddBool(const char* name, bool value) = 0; |
| - virtual void AddTimeDeltaInSecondsF(const char* name, |
| - const base::TimeDelta& value) = 0; |
| |
| // Markers indicating that a GPUDevice is being described. |
| virtual void BeginGPUDevice() = 0; |
| diff -u -rupN gpu_test_expectations_reverted/gpu_test_config.cc gpu_test_expectations/gpu_test_config.cc |
| --- gpu_test_expectations_reverted/gpu_test_config.cc 2017-02-13 11:15:30.922221193 -0500 |
| +++ gpu_test_expectations/gpu_test_config.cc 2016-09-14 14:55:40.134685526 -0400 |
| @@ -2,20 +2,205 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| -#include "gpu/config/gpu_test_config.h" |
| +#include "gpu_test_config.h" |
| |
| -#include "base/logging.h" |
| -#include "base/sys_info.h" |
| -#include "gpu/config/gpu_info.h" |
| -#include "gpu/config/gpu_info_collector.h" |
| -#include "gpu/config/gpu_test_expectations_parser.h" |
| +#include "gpu_info.h" |
| +#include "gpu_test_expectations_parser.h" |
| + |
| +#if defined(OS_LINUX) |
| +extern "C" { |
| +# include <pci/pci.h> |
| +} |
| +#endif |
| |
| #if defined(OS_MACOSX) |
| -#include "base/mac/mac_util.h" |
| -#elif defined(OS_WIN) |
| -#include "base/win/windows_version.h" |
| +#include "gpu_test_config_mac.h" |
| +#endif |
| + |
| +using namespace gpu; |
| + |
| +#if defined(OS_WIN) |
| + |
| +namespace base { |
| + |
| +namespace { |
| + |
| +// Disable the deprecated function warning for GetVersionEx |
| +#pragma warning(disable: 4996) |
| + |
| +class SysInfo |
| +{ |
| + public: |
| + static void OperatingSystemVersionNumbers( |
| + int32 *major_version, int32 *minor_version, int32 *bugfix_version); |
| +}; |
| + |
| +// static |
| +void SysInfo::OperatingSystemVersionNumbers( |
| + int32 *major_version, int32 *minor_version, int32 *bugfix_version) |
| +{ |
| + OSVERSIONINFOEX version_info = { sizeof version_info }; |
| + ::GetVersionEx(reinterpret_cast<OSVERSIONINFO*>(&version_info)); |
| + *major_version = version_info.dwMajorVersion; |
| + *minor_version = version_info.dwMinorVersion; |
| + *bugfix_version = version_info.dwBuildNumber; |
| +} |
| + |
| +} // anonymous namespace |
| + |
| +} // namespace base |
| + |
| +void DeviceIDToVendorAndDevice(const std::string& id, |
| + uint32* vendor_id, |
| + uint32* device_id) { |
| + *vendor_id = 0; |
| + *device_id = 0; |
| + if (id.length() < 21) |
| + return; |
| + std::string vendor_id_string = id.substr(8, 4); |
| + std::string device_id_string = id.substr(17, 4); |
| + base::HexStringToUInt(vendor_id_string, vendor_id); |
| + base::HexStringToUInt(device_id_string, device_id); |
| +} |
| + |
| +CollectInfoResult CollectGpuID(uint32* vendor_id, uint32* device_id) { |
| + DCHECK(vendor_id && device_id); |
| + *vendor_id = 0; |
| + *device_id = 0; |
| + |
| + // Taken from http://developer.nvidia.com/object/device_ids.html |
| + DISPLAY_DEVICEA dd; |
| + dd.cb = sizeof(DISPLAY_DEVICEA); |
| + std::string id; |
| + for (int i = 0; EnumDisplayDevicesA(NULL, i, &dd, 0); ++i) { |
| + if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) { |
| + id = dd.DeviceID; |
| + break; |
| + } |
| + } |
| + |
| + if (id.length() > 20) { |
| + DeviceIDToVendorAndDevice(id, vendor_id, device_id); |
| + if (*vendor_id != 0 && *device_id != 0) |
| + return kCollectInfoSuccess; |
| + } |
| + return kCollectInfoNonFatalFailure; |
| +} |
| + |
| +#endif // defined(OS_WIN) |
| + |
| +#if defined(OS_LINUX) |
| + |
| +const uint32 kVendorIDIntel = 0x8086; |
| +const uint32 kVendorIDNVidia = 0x10de; |
| +const uint32 kVendorIDAMD = 0x1002; |
| + |
| +CollectInfoResult CollectPCIVideoCardInfo(GPUInfo* gpu_info) { |
| + DCHECK(gpu_info); |
| + |
| + struct pci_access* access = pci_alloc(); |
| + DCHECK(access != NULL); |
| + pci_init(access); |
| + pci_scan_bus(access); |
| + |
| + bool primary_gpu_identified = false; |
| + for (pci_dev* device = access->devices; |
| + device != NULL; device = device->next) { |
| + pci_fill_info(device, 33); |
| + bool is_gpu = false; |
| + switch (device->device_class) { |
| + case PCI_CLASS_DISPLAY_VGA: |
| + case PCI_CLASS_DISPLAY_XGA: |
| + case PCI_CLASS_DISPLAY_3D: |
| + is_gpu = true; |
| + break; |
| + case PCI_CLASS_DISPLAY_OTHER: |
| + default: |
| + break; |
| + } |
| + if (!is_gpu) |
| + continue; |
| + if (device->vendor_id == 0 || device->device_id == 0) |
| + continue; |
| + |
| + GPUInfo::GPUDevice gpu; |
| + gpu.vendor_id = device->vendor_id; |
| + gpu.device_id = device->device_id; |
| + |
| + if (!primary_gpu_identified) { |
| + primary_gpu_identified = true; |
| + gpu_info->gpu = gpu; |
| + } else { |
| + // TODO(zmo): if there are multiple GPUs, we assume the non Intel |
| + // one is primary. Revisit this logic because we actually don't know |
| + // which GPU we are using at this point. |
| + if (gpu_info->gpu.vendor_id == kVendorIDIntel && |
| + gpu.vendor_id != kVendorIDIntel) { |
| + gpu_info->secondary_gpus.push_back(gpu_info->gpu); |
| + gpu_info->gpu = gpu; |
| + } else { |
| + gpu_info->secondary_gpus.push_back(gpu); |
| + } |
| + } |
| + } |
| + |
| + // Detect Optimus or AMD Switchable GPU. |
| + if (gpu_info->secondary_gpus.size() == 1 && |
| + gpu_info->secondary_gpus[0].vendor_id == kVendorIDIntel) { |
| + if (gpu_info->gpu.vendor_id == kVendorIDNVidia) |
| + gpu_info->optimus = true; |
| + if (gpu_info->gpu.vendor_id == kVendorIDAMD) |
| + gpu_info->amd_switchable = true; |
| + } |
| + |
| + pci_cleanup(access); |
| + if (!primary_gpu_identified) |
| + return kCollectInfoNonFatalFailure; |
| + return kCollectInfoSuccess; |
| +} |
| + |
| +CollectInfoResult CollectGpuID(uint32* vendor_id, uint32* device_id) { |
| + DCHECK(vendor_id && device_id); |
| + *vendor_id = 0; |
| + *device_id = 0; |
| + |
| + GPUInfo gpu_info; |
| + CollectInfoResult result = CollectPCIVideoCardInfo(&gpu_info); |
| + if (result == kCollectInfoSuccess) { |
| + *vendor_id = gpu_info.gpu.vendor_id; |
| + *device_id = gpu_info.gpu.device_id; |
| + } |
| + return result; |
| +} |
| + |
| +#endif // defined(OS_LINUX) |
| + |
| +#if defined(OS_MACOSX) |
| + |
| +CollectInfoResult CollectGpuID(uint32* vendor_id, uint32* device_id) { |
| + DCHECK(vendor_id && device_id); |
| + |
| + GPUInfo::GPUDevice gpu = GetActiveGPU(); |
| + *vendor_id = gpu.vendor_id; |
| + *device_id = gpu.device_id; |
| + |
| + if (*vendor_id != 0 && *device_id != 0) |
| + return kCollectInfoSuccess; |
| + return kCollectInfoNonFatalFailure; |
| +} |
| + |
| #endif |
| |
| +#if defined(OS_ANDROID) |
| +CollectInfoResult CollectGpuID(uint32 *vendor_id, uint32 *device_id) |
| +{ |
| + DCHECK(vendor_id && device_id); |
| + *vendor_id = 0; |
| + *device_id = 0; |
| + return kCollectInfoNonFatalFailure; |
| +} |
| +#endif // defined(OS_ANDROID) |
| + |
| namespace gpu { |
| |
| namespace { |
| @@ -245,33 +430,41 @@ bool GPUTestBotConfig::Matches(const std |
| return Matches(config); |
| } |
| |
| -bool GPUTestBotConfig::LoadCurrentConfig(const GPUInfo* gpu_info) { |
| - bool rt; |
| - if (gpu_info == NULL) { |
| - GPUInfo my_gpu_info; |
| - CollectInfoResult result = CollectGpuID( |
| - &my_gpu_info.gpu.vendor_id, &my_gpu_info.gpu.device_id); |
| - if (result != kCollectInfoSuccess) { |
| - LOG(ERROR) << "Fail to identify GPU"; |
| - DisableGPUInfoValidation(); |
| - rt = true; |
| - } else { |
| - rt = SetGPUInfo(my_gpu_info); |
| +bool GPUTestBotConfig::LoadCurrentConfig(const GPUInfo *gpu_info) |
| +{ |
| + bool rt; |
| + if (gpu_info == NULL) |
| + { |
| + GPUInfo my_gpu_info; |
| + CollectInfoResult result = |
| + CollectGpuID(&my_gpu_info.gpu.vendor_id, &my_gpu_info.gpu.device_id); |
| + if (result != kCollectInfoSuccess) |
| + { |
| + LOG(ERROR) << "Fail to identify GPU\n"; |
| + DisableGPUInfoValidation(); |
| + rt = true; |
| + } |
| + else |
| + { |
| + rt = SetGPUInfo(my_gpu_info); |
| + } |
| + } |
| + else |
| + { |
| + rt = SetGPUInfo(*gpu_info); |
| + } |
| + set_os(GetCurrentOS()); |
| + if (os() == kOsUnknown) |
| + { |
| + LOG(ERROR) << "Unknown OS\n"; |
| + rt = false; |
| } |
| - } else { |
| - rt = SetGPUInfo(*gpu_info); |
| - } |
| - set_os(GetCurrentOS()); |
| - if (os() == kOsUnknown) { |
| - LOG(ERROR) << "Unknown OS"; |
| - rt = false; |
| - } |
| #if defined(NDEBUG) |
| - set_build_type(kBuildTypeRelease); |
| + set_build_type(kBuildTypeRelease); |
| #else |
| - set_build_type(kBuildTypeDebug); |
| + set_build_type(kBuildTypeDebug); |
| #endif |
| - return rt; |
| + return rt; |
| } |
| |
| // static |
| @@ -295,21 +488,5 @@ bool GPUTestBotConfig::CurrentConfigMatc |
| return false; |
| } |
| |
| -// static |
| -bool GPUTestBotConfig::GpuBlacklistedOnBot() { |
| -#if defined(OS_MACOSX) |
| - // Blacklist rule #81 disables all Gpu acceleration on Mac < 10.8 bots. |
| - if (CurrentConfigMatches("MAC VMWARE") && base::mac::IsOSLionOrEarlier()) { |
| - return true; |
| - } |
| -#elif defined(OS_WIN) |
| - // Blacklist rule #79 disables all Gpu acceleration before Windows 7. |
| - if (base::win::GetVersion() <= base::win::VERSION_VISTA) { |
| - return true; |
| - } |
| -#endif |
| - return false; |
| -} |
| - |
| } // namespace gpu |
| |
| diff -u -rupN gpu_test_expectations_reverted/gpu_test_config.h gpu_test_expectations/gpu_test_config.h |
| --- gpu_test_expectations_reverted/gpu_test_config.h 2017-02-13 11:15:30.922221193 -0500 |
| +++ gpu_test_expectations/gpu_test_config.h 2015-11-25 15:47:24.575592261 -0500 |
| @@ -8,9 +8,7 @@ |
| #include <string> |
| #include <vector> |
| |
| -#include "base/basictypes.h" |
| -#include "base/compiler_specific.h" |
| -#include "gpu/gpu_export.h" |
| +#include "angle_config.h" |
| |
| namespace gpu { |
| |
| @@ -134,9 +132,6 @@ class GPU_EXPORT GPUTestBotConfig : publ |
| // Check if this bot's config matches |config_data| or any of the |configs|. |
| static bool CurrentConfigMatches(const std::string& config_data); |
| static bool CurrentConfigMatches(const std::vector<std::string>& configs); |
| - |
| - // Check if the bot has blacklisted all GPU features. |
| - static bool GpuBlacklistedOnBot(); |
| }; |
| |
| } // namespace gpu |
| diff -u -rupN gpu_test_expectations_reverted/gpu_test_config_mac.h gpu_test_expectations/gpu_test_config_mac.h |
| --- gpu_test_expectations_reverted/gpu_test_config_mac.h 1969-12-31 19:00:00.000000000 -0500 |
| +++ gpu_test_expectations/gpu_test_config_mac.h 2015-09-16 16:05:45.788950024 -0400 |
| @@ -0,0 +1,28 @@ |
| +// |
| +// Copyright 2015 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. |
| +// |
| +// gpu_test_config_mac.h: |
| +// Helper functions for gpu_test_config that have to be compiled in ObjectiveC++ |
| +// |
| + |
| +#ifndef GPU_TEST_EXPECTATIONS_GPU_TEST_CONFIG_MAC_H_ |
| +#define GPU_TEST_EXPECTATIONS_GPU_TEST_CONFIG_MAC_H_ |
| + |
| +#include "gpu_info.h" |
| + |
| +namespace base { |
| + |
| +class SysInfo |
| +{ |
| + public: |
| + static void OperatingSystemVersionNumbers( |
| + int32 *major_version, int32 *minor_version, int32 *bugfix_version); |
| +}; |
| + |
| +} // namespace base |
| + |
| +gpu::GPUInfo::GPUDevice GetActiveGPU(); |
| + |
| +#endif // GPU_TEST_EXPECTATIONS_GPU_TEST_CONFIG_MAC_H_ |
| diff -u -rupN gpu_test_expectations_reverted/gpu_test_config_mac.mm gpu_test_expectations/gpu_test_config_mac.mm |
| --- gpu_test_expectations_reverted/gpu_test_config_mac.mm 1969-12-31 19:00:00.000000000 -0500 |
| +++ gpu_test_expectations/gpu_test_config_mac.mm 2017-02-13 11:20:54.656424702 -0500 |
| @@ -0,0 +1,75 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// gpu_test_config_mac.mm: |
| +// Helper functions for gpu_test_config that have to be compiled in ObjectiveC++ |
| + |
| +#include "gpu_test_config_mac.h" |
| + |
| +#import <Cocoa/Cocoa.h> |
| + |
| +namespace base { |
| + |
| +// OSX 10.8 deprecates Gestalt but doesn't make the operatingSystemVersion property part of the |
| +// public interface of NSProcessInfo until 10.10. Add a forward declaration. |
| +#if !defined(MAC_OS_X_VERSION_10_10) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10 |
| +@interface NSProcessInfo (YosemiteSDK) |
| +@property(readonly) NSOperatingSystemVersion operatingSystemVersion; |
| +@end |
| +#endif |
| + |
| +void SysInfo::OperatingSystemVersionNumbers( |
| + int32 *major_version, int32 *minor_version, int32 *bugfix_version) |
| +{ |
| +#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 |
| + Gestalt(gestaltSystemVersionMajor, reinterpret_cast<SInt32*>(major_version)); |
| + Gestalt(gestaltSystemVersionMinor, reinterpret_cast<SInt32*>(minor_version)); |
| + Gestalt(gestaltSystemVersionBugFix, reinterpret_cast<SInt32*>(bugfix_version)); |
| +#else |
| + NSOperatingSystemVersion version = [[NSProcessInfo processInfo] operatingSystemVersion]; |
| + *major_version = version.majorVersion; |
| + *minor_version = version.minorVersion; |
| + *bugfix_version = version.patchVersion; |
| +#endif |
| +} |
| + |
| +} // namespace base |
| + |
| +UInt32 GetEntryProperty(io_registry_entry_t entry, CFStringRef property_name) { |
| + CFTypeRef type = IORegistryEntrySearchCFProperty(entry, |
| + kIOServicePlane, |
| + property_name, |
| + kCFAllocatorDefault, |
| + kIORegistryIterateRecursively | kIORegistryIterateParents); |
| + CFDataRef data = reinterpret_cast<CFDataRef>(type); |
| + if (!data) { |
| + CFRelease(data); |
| + return 0; |
| + } |
| + |
| + UInt32 value = 0; |
| + const uint32_t* valuePointer = reinterpret_cast<const uint32_t*>(CFDataGetBytePtr(data)); |
| + if (valuePointer != NULL) { |
| + value = *valuePointer; |
| + } |
| + CFRelease(data); |
| + return value; |
| +} |
| + |
| +gpu::GPUInfo::GPUDevice GetActiveGPU() { |
| + gpu::GPUInfo::GPUDevice gpu; |
| + |
| + // Ignore the fact that CGDisplayIOServicePort is deprecated as Apple |
| + // did not provide a good replacement for it as of 10.10. |
| + // TODO(cwallez) revisit with later systems |
| + #pragma clang diagnostic push |
| + #pragma clang diagnostic ignored "-Wdeprecated-declarations" |
| + io_registry_entry_t dsp_port = CGDisplayIOServicePort(kCGDirectMainDisplay); |
| + #pragma clang diagnostic pop |
| + |
| + gpu.vendor_id = GetEntryProperty(dsp_port, CFSTR("vendor-id")); |
| + gpu.device_id = GetEntryProperty(dsp_port, CFSTR("device-id")); |
| + return gpu; |
| +} |
| + |
| diff -u -rupN gpu_test_expectations_reverted/gpu_test_expectations_parser.cc gpu_test_expectations/gpu_test_expectations_parser.cc |
| --- gpu_test_expectations_reverted/gpu_test_expectations_parser.cc 2017-02-13 11:15:30.922221193 -0500 |
| +++ gpu_test_expectations/gpu_test_expectations_parser.cc 2015-11-25 15:47:24.575592261 -0500 |
| @@ -2,14 +2,43 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| -#include "gpu/config/gpu_test_expectations_parser.h" |
| +#include "gpu_test_expectations_parser.h" |
| |
| -#include "base/files/file_util.h" |
| -#include "base/logging.h" |
| -#include "base/strings/string_number_conversions.h" |
| -#include "base/strings/string_split.h" |
| -#include "base/strings/string_util.h" |
| -#include "base/strings/stringprintf.h" |
| +#include "common/angleutils.h" |
| + |
| +namespace base { |
| + |
| +namespace { |
| + |
| +bool StartsWithASCII(const std::string& str, |
| + const std::string& search, |
| + bool case_sensitive) { |
| + ASSERT(!case_sensitive); |
| + return str.compare(0, search.length(), search) == 0; |
| +} |
| + |
| +template <class Char> inline Char ToLowerASCII(Char c) { |
| + return (c >= 'A' && c <= 'Z') ? (c + ('a' - 'A')) : c; |
| +} |
| + |
| +template<typename Iter> |
| +static inline bool DoLowerCaseEqualsASCII(Iter a_begin, |
| + Iter a_end, |
| + const char* b) { |
| + for (Iter it = a_begin; it != a_end; ++it, ++b) { |
| + if (!*b || base::ToLowerASCII(*it) != *b) |
| + return false; |
| + } |
| + return *b == 0; |
| +} |
| + |
| +bool LowerCaseEqualsASCII(const std::string& a, const char* b) { |
| + return DoLowerCaseEqualsASCII(a.begin(), a.end(), b); |
| +} |
| + |
| +} // anonymous namespace |
| + |
| +} // namespace base |
| |
| namespace gpu { |
| |
| @@ -146,9 +175,9 @@ const char* kErrorMessage[] = { |
| }; |
| |
| Token ParseToken(const std::string& word) { |
| - if (base::StartsWith(word, "//", base::CompareCase::INSENSITIVE_ASCII)) |
| + if (base::StartsWithASCII(word, "//", false)) |
| return kTokenComment; |
| - if (base::StartsWith(word, "0x", base::CompareCase::INSENSITIVE_ASCII)) |
| + if (base::StartsWithASCII(word, "0x", false)) |
| return kConfigGPUDeviceID; |
| |
| for (int32 i = 0; i < kNumberOfExactMatchTokens; ++i) { |
| @@ -176,10 +205,10 @@ bool NamesMatching(const std::string& re |
| |
| GPUTestExpectationsParser::GPUTestExpectationsParser() { |
| // Some sanity check. |
| - DCHECK_EQ(static_cast<unsigned int>(kNumberOfExactMatchTokens), |
| - sizeof(kTokenData) / sizeof(kTokenData[0])); |
| - DCHECK_EQ(static_cast<unsigned int>(kNumberOfErrors), |
| - sizeof(kErrorMessage) / sizeof(kErrorMessage[0])); |
| + static_assert(static_cast<unsigned int>(kNumberOfExactMatchTokens) == |
| + sizeof(kTokenData) / sizeof(kTokenData[0]), "sanity check"); |
| + static_assert(static_cast<unsigned int>(kNumberOfErrors) == |
| + sizeof(kErrorMessage) / sizeof(kErrorMessage[0]), "sanity check"); |
| } |
| |
| GPUTestExpectationsParser::~GPUTestExpectationsParser() { |
| @@ -204,8 +233,8 @@ bool GPUTestExpectationsParser::LoadTest |
| return rt; |
| } |
| |
| -bool GPUTestExpectationsParser::LoadTestExpectations( |
| - const base::FilePath& path) { |
| +bool GPUTestExpectationsParser::LoadTestExpectationsFromFile( |
| + const std::string& path) { |
| entries_.clear(); |
| error_messages_.clear(); |
| |
| @@ -399,7 +428,7 @@ bool GPUTestExpectationsParser::ParseLin |
| stage++; |
| break; |
| default: |
| - DCHECK(false); |
| + UNREACHABLE(); |
| break; |
| } |
| } |
| @@ -488,7 +517,7 @@ bool GPUTestExpectationsParser::UpdateTe |
| config->set_api(config->api() | kTokenData[token].flag); |
| break; |
| default: |
| - DCHECK(false); |
| + UNREACHABLE(); |
| break; |
| } |
| return true; |
| diff -u -rupN gpu_test_expectations_reverted/gpu_test_expectations_parser.h gpu_test_expectations/gpu_test_expectations_parser.h |
| --- gpu_test_expectations_reverted/gpu_test_expectations_parser.h 2017-02-13 11:15:30.922221193 -0500 |
| +++ gpu_test_expectations/gpu_test_expectations_parser.h 2015-06-30 09:40:06.654788989 -0400 |
| @@ -8,10 +8,8 @@ |
| #include <string> |
| #include <vector> |
| |
| -#include "base/basictypes.h" |
| -#include "base/files/file_path.h" |
| -#include "gpu/config/gpu_test_config.h" |
| -#include "gpu/gpu_export.h" |
| +#include "angle_config.h" |
| +#include "gpu_test_config.h" |
| |
| namespace gpu { |
| |
| @@ -32,7 +30,7 @@ class GPU_EXPORT GPUTestExpectationsPars |
| // save all the entries. Otherwise, generate error messages. |
| // Return true if parsing succeeds. |
| bool LoadTestExpectations(const std::string& data); |
| - bool LoadTestExpectations(const base::FilePath& path); |
| + bool LoadTestExpectationsFromFile(const std::string& path); |
| |
| // Query error messages from the last LoadTestExpectations() call. |
| const std::vector<std::string>& GetErrorMessages() const; |
| diff -u -rupN gpu_test_expectations_reverted/HowToMakeChanges.md gpu_test_expectations/HowToMakeChanges.md |
| --- gpu_test_expectations_reverted/HowToMakeChanges.md 1969-12-31 19:00:00.000000000 -0500 |
| +++ gpu_test_expectations/HowToMakeChanges.md 2016-09-14 14:55:40.134685526 -0400 |
| @@ -0,0 +1,22 @@ |
| +Because the ```gpu_test_expectations``` directory is based on parts of Chromium's ```gpu/config``` |
| +directory, we want to keep a patch of the changes added to make it compile with ANGLE. This |
| +will allow us to merge Chromium changes easily in our ```gpu_test_expectations```. |
| + |
| +In order to make a change to this directory, do the following: |
| + |
| + * copy the directory somewhere like in ```gpu_test_expectations_reverted``` |
| + * in ```gpu_test_expectations_reverted``` run ```patch -p 1 -R < angle-mods.patch``` |
| + * do your changes in ```gpu_test_expectations``` |
| + * delete angle-mods.patch in both directories |
| + * run ```diff -rupN gpu_test_expectations_reverted gpu_test_expectations > angle-mods.patch``` |
| + * copy ```angle-mods.patch``` in ```gpu_test_expectations``` |
| + |
| +How to update from Chromium: |
| + |
| + * ```git apply -R angle-mods.patch```, ```git add . -u```, ```git commit``` |
| + * Copy over Chromium files, ```git add . -u```, ```git commit``` |
| + * ```git revert HEAD~``` |
| + * ```rm angle-mods.patch``` |
| + * ```git diff HEAD~ (`)ls(`) > angle-mods.patch```,```git add angle-mods.patch```, ```git commit --amend``` |
| + * ```git rebase -i``` to squash the three patches into one. |
| + |