diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /gfx/angle/src/tests/third_party/gpu_test_expectations/angle-mods.patch | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'gfx/angle/src/tests/third_party/gpu_test_expectations/angle-mods.patch')
-rwxr-xr-x | gfx/angle/src/tests/third_party/gpu_test_expectations/angle-mods.patch | 868 |
1 files changed, 868 insertions, 0 deletions
diff --git a/gfx/angle/src/tests/third_party/gpu_test_expectations/angle-mods.patch b/gfx/angle/src/tests/third_party/gpu_test_expectations/angle-mods.patch new file mode 100755 index 000000000..8df858c7c --- /dev/null +++ b/gfx/angle/src/tests/third_party/gpu_test_expectations/angle-mods.patch @@ -0,0 +1,868 @@ +diff -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-23 13:50:18.282742505 -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 -rupN gpu_test_expectations_reverted/gpu_info.cc gpu_test_expectations/gpu_info.cc +--- gpu_test_expectations_reverted/gpu_info.cc 2016-08-12 21:23:54.884132405 -0400 ++++ gpu_test_expectations/gpu_info.cc 2015-11-30 21:54:30.239267635 -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 -rupN gpu_test_expectations_reverted/gpu_info.h gpu_test_expectations/gpu_info.h +--- gpu_test_expectations_reverted/gpu_info.h 2016-08-12 21:23:54.884132405 -0400 ++++ gpu_test_expectations/gpu_info.h 2015-11-30 21:54:30.239267635 -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 -rupN gpu_test_expectations_reverted/gpu_test_config.cc gpu_test_expectations/gpu_test_config.cc +--- gpu_test_expectations_reverted/gpu_test_config.cc 2016-08-12 21:23:54.884132405 -0400 ++++ gpu_test_expectations/gpu_test_config.cc 2016-09-09 16:40:05.597864465 -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 -rupN gpu_test_expectations_reverted/gpu_test_config.h gpu_test_expectations/gpu_test_config.h +--- gpu_test_expectations_reverted/gpu_test_config.h 2016-08-12 21:23:54.884132405 -0400 ++++ gpu_test_expectations/gpu_test_config.h 2015-11-30 21:54:30.239267635 -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 -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-11-30 21:54:30.239267635 -0500 +@@ -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 -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 2015-11-30 21:54:30.239267635 -0500 +@@ -0,0 +1,67 @@ ++// 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 { ++ ++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 -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 2016-08-12 21:23:54.884132405 -0400 ++++ gpu_test_expectations/gpu_test_expectations_parser.cc 2015-11-30 21:54:30.239267635 -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 -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 2016-08-12 21:23:54.884132405 -0400 ++++ gpu_test_expectations/gpu_test_expectations_parser.h 2015-11-30 21:54:30.239267635 -0500 +@@ -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 -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-09 16:27:56.575809921 -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. ++ |