mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
131 lines
3.6 KiB
C++
131 lines
3.6 KiB
C++
// 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.
|
|
|
|
#ifndef GPU_CONFIG_GPU_TEST_CONFIG_H_
|
|
#define GPU_CONFIG_GPU_TEST_CONFIG_H_
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "base/basictypes.h"
|
|
#include "base/compiler_specific.h"
|
|
#include "gpu/gpu_export.h"
|
|
|
|
namespace gpu {
|
|
|
|
struct GPUInfo;
|
|
|
|
class GPU_EXPORT GPUTestConfig {
|
|
public:
|
|
enum OS {
|
|
kOsUnknown = 0,
|
|
kOsWinXP = 1 << 0,
|
|
kOsWinVista = 1 << 1,
|
|
kOsWin7 = 1 << 2,
|
|
kOsWin8 = 1 << 3,
|
|
kOsWin = kOsWinXP | kOsWinVista | kOsWin7 | kOsWin8,
|
|
kOsMacLeopard = 1 << 4,
|
|
kOsMacSnowLeopard = 1 << 5,
|
|
kOsMacLion = 1 << 6,
|
|
kOsMacMountainLion = 1 << 7,
|
|
kOsMacMavericks = 1 << 8,
|
|
kOsMac = kOsMacLeopard | kOsMacSnowLeopard | kOsMacLion |
|
|
kOsMacMountainLion |
|
|
kOsMacMavericks,
|
|
kOsLinux = 1 << 9,
|
|
kOsChromeOS = 1 << 10,
|
|
kOsAndroid = 1 << 11,
|
|
kOsiOS = 1 << 12,
|
|
};
|
|
|
|
enum BuildType {
|
|
kBuildTypeUnknown = 0,
|
|
kBuildTypeRelease = 1 << 0,
|
|
kBuildTypeDebug = 1 << 1,
|
|
};
|
|
|
|
GPUTestConfig();
|
|
virtual ~GPUTestConfig();
|
|
|
|
void set_os(int32 os);
|
|
void set_gpu_device_id(uint32 id);
|
|
void set_build_type(int32 build_type);
|
|
|
|
virtual void AddGPUVendor(uint32 gpu_vendor);
|
|
|
|
int32 os() const { return os_; }
|
|
const std::vector<uint32>& gpu_vendor() const { return gpu_vendor_; }
|
|
uint32 gpu_device_id() const { return gpu_device_id_; }
|
|
int32 build_type() const { return build_type_; }
|
|
|
|
// Check if the config is valid. For example, if gpu_device_id_ is set, but
|
|
// gpu_vendor_ is unknown, then it's invalid.
|
|
virtual bool IsValid() const;
|
|
|
|
// Check if two configs overlap, i.e., if there exists a config that matches
|
|
// both configs.
|
|
bool OverlapsWith(const GPUTestConfig& config) const;
|
|
|
|
// Disable validation of GPU vendor and device ids.
|
|
void DisableGPUInfoValidation();
|
|
|
|
protected:
|
|
void ClearGPUVendor();
|
|
|
|
// Indicates that the OS has the notion of a numeric GPU vendor and device id
|
|
// and this data should be validated.
|
|
bool validate_gpu_info_;
|
|
|
|
private:
|
|
// operating system.
|
|
int32 os_;
|
|
|
|
// GPU vendor.
|
|
std::vector<uint32> gpu_vendor_;
|
|
|
|
// GPU device id (unique to each vendor).
|
|
uint32 gpu_device_id_;
|
|
|
|
// Release or Debug.
|
|
int32 build_type_;
|
|
};
|
|
|
|
class GPU_EXPORT GPUTestBotConfig : public GPUTestConfig {
|
|
public:
|
|
GPUTestBotConfig() { }
|
|
~GPUTestBotConfig() override;
|
|
|
|
// This should only be called when no gpu_vendor is added.
|
|
void AddGPUVendor(uint32 gpu_vendor) override;
|
|
|
|
// Return false if gpu_info does not have valid vendor_id and device_id.
|
|
bool SetGPUInfo(const GPUInfo& gpu_info);
|
|
|
|
// Check if the bot config is valid, i.e., if it is one valid test-bot
|
|
// environment. For example, if a field is unknown, or if OS is not one
|
|
// fully defined OS, then it's valid.
|
|
bool IsValid() const override;
|
|
|
|
// Check if a bot config matches a test config, i.e., the test config is a
|
|
// superset of the bot config.
|
|
bool Matches(const GPUTestConfig& config) const;
|
|
bool Matches(const std::string& config_data) const;
|
|
|
|
// Setup the config with the current gpu testing environment.
|
|
// If gpu_info is NULL, collect GPUInfo first.
|
|
bool LoadCurrentConfig(const GPUInfo* gpu_info);
|
|
|
|
// 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
|
|
|
|
#endif // GPU_CONFIG_GPU_TEST_CONFIG_H_
|
|
|