rpcsx/rpcs3/Emu/RSX/VK/vkutils/chip_class.h

58 lines
985 B
C
Raw Normal View History

2020-12-24 11:49:08 +01:00
#pragma once
#include "util/types.hpp"
#include <unordered_map>
namespace vk
{
// Chip classes grouped by vendor in order of release
enum class chip_class
{
unknown,
AMD_gcn_generic,
AMD_polaris,
AMD_vega,
AMD_navi1x,
AMD_navi2x,
2022-12-27 00:06:21 +03:00
AMD_navi3x,
2020-12-24 11:49:08 +01:00
NV_generic,
NV_kepler,
NV_maxwell,
NV_pascal,
NV_volta,
NV_turing,
2022-01-18 00:25:59 +01:00
NV_ampere,
2022-12-27 00:06:21 +03:00
NV_lovelace,
2022-01-18 00:25:59 +01:00
MVK_apple
2020-12-24 11:49:08 +01:00
};
enum class driver_vendor
{
unknown,
AMD,
NVIDIA,
RADV,
INTEL,
2022-01-18 00:25:59 +01:00
ANV,
MVK
2020-12-24 11:49:08 +01:00
};
driver_vendor get_driver_vendor();
2020-12-24 11:49:08 +01:00
struct chip_family_table
{
chip_class default_ = chip_class::unknown;
std::unordered_map<u32, chip_class> lut;
void add(u32 first, u32 last, chip_class family);
void add(u32 id, chip_class family);
chip_class find(u32 device_id) const;
2020-12-24 11:49:08 +01:00
};
chip_class get_chip_family();
chip_class get_chip_family(u32 vendor_id, u32 device_id);
static inline bool is_NVIDIA(chip_class chip) { return chip >= chip_class::NV_generic && chip <= chip_class::NV_ampere; }
2020-12-24 11:49:08 +01:00
}