#pragma once #include "util/types.hpp" #include 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, NV_generic, NV_kepler, NV_maxwell, NV_pascal, NV_volta, NV_turing, NV_ampere, MVK_apple }; enum class driver_vendor { unknown, AMD, NVIDIA, RADV, INTEL, ANV, MVK }; driver_vendor get_driver_vendor(); struct chip_family_table { chip_class default_ = chip_class::unknown; std::unordered_map lut; void add(u32 first, u32 last, chip_class family); void add(u32 id, chip_class family); chip_class find(u32 device_id) const; }; chip_class get_chip_family(); chip_class get_chip_family(u32 vendor_id, u32 device_id); }