chromium/third_party/angle/src/libANGLE/renderer/driver_utils.h

//
// Copyright 2016 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.
//

// driver_utils.h : provides more information about current driver.

#ifndef LIBANGLE_RENDERER_DRIVER_UTILS_H_
#define LIBANGLE_RENDERER_DRIVER_UTILS_H_

#include "common/platform.h"
#include "common/platform_helpers.h"
#include "libANGLE/angletypes.h"

namespace rx
{

enum VendorID : uint32_t
{};

enum AndroidDeviceID : uint32_t
{};

inline bool IsAMD(uint32_t vendorId)
{}

inline bool IsAppleGPU(uint32_t vendorId)
{}

inline bool IsARM(uint32_t vendorId)
{}

inline bool IsBroadcom(uint32_t vendorId)
{}

inline bool IsIntel(uint32_t vendorId)
{}

inline bool IsGoogle(uint32_t vendorId)
{}

inline bool IsMicrosoft(uint32_t vendorId)
{}

inline bool IsNvidia(uint32_t vendorId)
{}

inline bool IsPowerVR(uint32_t vendorId)
{}

inline bool IsQualcomm(uint32_t vendorId)
{}

inline bool IsSamsung(uint32_t vendorId)
{}

inline bool IsVivante(uint32_t vendorId)
{}

inline bool IsVMWare(uint32_t vendorId)
{}

inline bool IsVirtIO(uint32_t vendorId)
{}

inline bool IsNexus5X(uint32_t vendorId, uint32_t deviceId)
{}

inline bool IsPixel1XL(uint32_t vendorId, uint32_t deviceId)
{}

inline bool IsPixel2(uint32_t vendorId, uint32_t deviceId)
{}

inline bool IsPixel4(uint32_t vendorId, uint32_t deviceId)
{}

inline bool IsGalaxyA23(uint32_t vendorId, uint32_t deviceId)
{}

inline bool IsGalaxyS23(uint32_t vendorId, uint32_t deviceId)
{}

inline bool IsSwiftshader(uint32_t vendorId, uint32_t deviceId)
{}

std::string GetVendorString(uint32_t vendorId);

// For Linux, Intel graphics driver version is the Mesa version. The version number has three
// fields: major revision, minor revision and release number.
// For Windows, The version number includes 3rd and 4th fields. Please refer the details at
// http://www.intel.com/content/www/us/en/support/graphics-drivers/000005654.html.
// Current implementation only supports Windows.
class IntelDriverVersion
{};

IntelDriverVersion ParseIntelWindowsDriverVersion(uint32_t driverVersion);

bool IsSandyBridge(uint32_t DeviceId);
bool IsIvyBridge(uint32_t DeviceId);
bool IsHaswell(uint32_t DeviceId);
bool IsBroadwell(uint32_t DeviceId);
bool IsCherryView(uint32_t DeviceId);
bool IsSkylake(uint32_t DeviceId);
bool IsBroxton(uint32_t DeviceId);
bool IsKabyLake(uint32_t DeviceId);
bool IsGeminiLake(uint32_t DeviceId);
bool IsCoffeeLake(uint32_t DeviceId);
bool IsMeteorLake(uint32_t DeviceId);
bool Is9thGenIntel(uint32_t DeviceId);
bool Is11thGenIntel(uint32_t DeviceId);
bool Is12thGenIntel(uint32_t DeviceId);

ARMDriverVersion;
ARMDriverVersion ParseARMVulkanDriverVersion(uint32_t driverVersion);

QualcommDriverVersion;
QualcommDriverVersion ParseQualcommVulkanDriverVersion(uint32_t driverVersion);

// Platform helpers
IsAndroid;
IsApple;
IsChromeOS;
IsFuchsia;
IsIOS;
IsLinux;
IsMac;
IsWindows;
IsWindows10OrLater;
IsWindows8OrLater;
IsWindowsVistaOrLater;

bool IsWayland();

OSVersion;

OSVersion GetMacOSVersion();

OSVersion GetiOSVersion();

OSVersion GetLinuxOSVersion();

int GetAndroidSDKVersion();

}  // namespace rx
#endif  // LIBANGLE_RENDERER_DRIVER_UTILS_H_