Skip to content

Commit

Permalink
feat: Add model matching using subsystem id and vendor
Browse files Browse the repository at this point in the history
  • Loading branch information
VisualEhrmanntraut committed Nov 5, 2024
1 parent 37da111 commit a1d259c
Show file tree
Hide file tree
Showing 4 changed files with 214 additions and 119 deletions.
24 changes: 14 additions & 10 deletions NootedRed.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

/* Begin PBXBuildFile section */
1C748C2D1C21952C0024EED2 /* Plugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C748C2C1C21952C0024EED2 /* Plugin.cpp */; };
401075932CDA8746002D1CD7 /* Model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 401075922CDA8742002D1CD7 /* Model.cpp */; };
4014D9722C74AA7000FDE986 /* ObjectField.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4014D9712C74AA5F00FDE986 /* ObjectField.hpp */; };
40364DB629B79DFD0070A2B4 /* Model.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 40364DB529B79DFD0070A2B4 /* Model.hpp */; };
4068898B2A229BF600028D22 /* PatcherPlus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 406889892A229BF600028D22 /* PatcherPlus.cpp */; };
Expand Down Expand Up @@ -47,6 +48,7 @@
1C748C271C21952C0024EED2 /* NootedRed.kext */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NootedRed.kext; sourceTree = BUILT_PRODUCTS_DIR; };
1C748C2C1C21952C0024EED2 /* Plugin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Plugin.cpp; sourceTree = "<group>"; };
1C748C2E1C21952C0024EED2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
401075922CDA8742002D1CD7 /* Model.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Model.cpp; sourceTree = "<group>"; };
4014D9712C74AA5F00FDE986 /* ObjectField.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ObjectField.hpp; sourceTree = "<group>"; };
40364DB529B79DFD0070A2B4 /* Model.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Model.hpp; sourceTree = "<group>"; };
403E67BD2AA7356D00F43943 /* psp_hdcp.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = psp_hdcp.bin; sourceTree = "<group>"; };
Expand Down Expand Up @@ -171,29 +173,30 @@
1C748C291C21952C0024EED2 /* NootedRed */ = {
isa = PBXGroup;
children = (
4014D9712C74AA5F00FDE986 /* ObjectField.hpp */,
CEB402A71F181D8300716912 /* AMDCommon.hpp */,
6C1B36652A407C6100B184DD /* AppleGFXHDA.hpp */,
6C1B36642A407C6100B184DD /* AppleGFXHDA.cpp */,
40FC5FCE29BF942900367F9D /* ATOMBIOS.hpp */,
408F201E288ACBB0002EEC15 /* Firmware.hpp */,
408F201A288AC068002EEC15 /* Firmware */,
408F201F288ACBE6002EEC15 /* Firmware.cpp */,
408F201E288ACBB0002EEC15 /* Firmware.hpp */,
6C1B36642A407C6100B184DD /* AppleGFXHDA.cpp */,
6C1B36652A407C6100B184DD /* AppleGFXHDA.hpp */,
40FC5FDB29BF996900367F9D /* HWLibs.cpp */,
40FC5FDC29BF996900367F9D /* HWLibs.hpp */,
40FC5FDB29BF996900367F9D /* HWLibs.cpp */,
1C748C2E1C21952C0024EED2 /* Info.plist */,
40364DB529B79DFD0070A2B4 /* Model.hpp */,
CEA03B5C20EE825A00BA842F /* NRed.cpp */,
401075922CDA8742002D1CD7 /* Model.cpp */,
CEA03B5D20EE825A00BA842F /* NRed.hpp */,
406889892A229BF600028D22 /* PatcherPlus.cpp */,
CEA03B5C20EE825A00BA842F /* NRed.cpp */,
4014D9712C74AA5F00FDE986 /* ObjectField.hpp */,
4068898A2A229BF600028D22 /* PatcherPlus.hpp */,
406889892A229BF600028D22 /* PatcherPlus.cpp */,
1C748C2C1C21952C0024EED2 /* Plugin.cpp */,
40FC5FD729BF995E00367F9D /* X5000.cpp */,
40FC5FD829BF995E00367F9D /* X5000.hpp */,
40FC5FDF29BF9E2500367F9D /* X6000.cpp */,
40FC5FD729BF995E00367F9D /* X5000.cpp */,
40FC5FE029BF9E2500367F9D /* X6000.hpp */,
40FC5FD329BF995000367F9D /* X6000FB.cpp */,
40FC5FDF29BF9E2500367F9D /* X6000.cpp */,
40FC5FD429BF995000367F9D /* X6000FB.hpp */,
40FC5FD329BF995000367F9D /* X6000FB.cpp */,
);
path = NootedRed;
sourceTree = "<group>";
Expand Down Expand Up @@ -428,6 +431,7 @@
408F2020288ACBE6002EEC15 /* Firmware.cpp in Sources */,
4068898B2A229BF600028D22 /* PatcherPlus.cpp in Sources */,
40FC5FE129BF9E2500367F9D /* X6000.cpp in Sources */,
401075932CDA8746002D1CD7 /* Model.cpp in Sources */,
CEA03B5E20EE825A00BA842F /* NRed.cpp in Sources */,
CE405ED91E4A080700AA0B3D /* plugin_start.cpp in Sources */,
40FC5FD929BF995E00367F9D /* X5000.cpp in Sources */,
Expand Down
189 changes: 189 additions & 0 deletions NootedRed/Model.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
// Copyright © 2024 ChefKiss. Licensed under the Thou Shalt Not Profit License version 1.5.
// See LICENSE for details.

#include "Model.hpp"
#include <Headers/kern_iokit.hpp>
#include <Headers/kern_util.hpp>

enum struct MatchType {
RevOnly,
RevSubsys,
};

struct Model {
MatchType matchType {MatchType::RevOnly};
UInt16 revision {0};
UInt16 subsystemId {0};
UInt16 subsystemVendor {0};
const char *name {nullptr};
};

struct DevicePair {
UInt16 deviceId;
const Model *models;
size_t count;
};

static const Model dev15DD[] = {
{MatchType::RevOnly, 0xC1, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xC2, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xC3, 0x0000, 0x0000, "AMD Radeon RX Vega 10"},
{MatchType::RevOnly, 0xC4, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xC5, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xC6, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xC6, 0xD000, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xC8, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xC8, 0xD000, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xC9, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xC9, 0xD000, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xCA, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xCA, 0xD000, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xCB, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevSubsys, 0xCB, 0x876B, 0x1043, "AMD Radeon RX Vega 3"},
{MatchType::RevSubsys, 0xCB, 0xD000, 0x1458, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xCC, 0x0000, 0x0000, "AMD Radeon RX Vega 6"},
{MatchType::RevOnly, 0xCE, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xCF, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xD0, 0x0000, 0x0000, "AMD Radeon RX Vega 10"},
{MatchType::RevOnly, 0xD1, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xD3, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xD3, 0xD000, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xD5, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xD5, 0xD000, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xD6, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xD6, 0xD000, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xD7, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xD7, 0xD000, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xD8, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevSubsys, 0xD8, 0xD000, 0x1458, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xD9, 0x0000, 0x0000, "AMD Radeon RX Vega 6"},
};

static const Model dev15D8[] = {
{MatchType::RevOnly, 0x91, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0x92, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xC1, 0x0000, 0x0000, "AMD Radeon RX Vega 10"},
{MatchType::RevOnly, 0xC2, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xC3, 0x0000, 0x0000, "AMD Radeon RX Vega 6"},
{MatchType::RevOnly, 0xC4, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xC5, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xC8, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xC8, 0xD000, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xC8, 0xD001, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xC9, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xC9, 0xD000, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xC9, 0xD001, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xCA, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xCA, 0xD000, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xCB, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xCB, 0xD000, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xCC, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevSubsys, 0xCC, 0xD000, 0x1458, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xCE, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xCF, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xD1, 0x0000, 0x0000, "AMD Radeon RX Vega 10"},
{MatchType::RevOnly, 0xD2, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xD3, 0x0000, 0x0000, "AMD Radeon RX Vega 6"},
{MatchType::RevOnly, 0xD4, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xD8, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xD8, 0xD000, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xD9, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xD9, 0xD000, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xDA, 0x0000, 0x0000, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xDA, 0xD000, 0x1458, "AMD Radeon RX Vega 11"},
{MatchType::RevOnly, 0xDB, 0x0000, 0x0000, "AMD Radeon RX Vega 8"},
{MatchType::RevSubsys, 0xDB, 0xD000, 0x1458, "AMD Radeon RX Vega 8"},
{MatchType::RevOnly, 0xDC, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevSubsys, 0xDC, 0xD000, 0x1458, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xDD, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xDE, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevOnly, 0xDF, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
{MatchType::RevSubsys, 0xE1, 0x0034, 0x1414, "AMD Radeon RX Vega 11"},
{MatchType::RevSubsys, 0xE2, 0x0034, 0x1414, "AMD Radeon RX Vega 9"},
{MatchType::RevOnly, 0xE4, 0x0000, 0x0000, "AMD Radeon RX Vega 3"},
};

static const Model dev1636[] = {
{MatchType::RevSubsys, 0xC2, 0x381C, 0x17AA, "AMD Radeon RX Renoir Graphics C2"},
{MatchType::RevSubsys, 0xC2, 0x507F, 0x17AA, "AMD Radeon RX Renoir Graphics C2"},
{MatchType::RevSubsys, 0xC3, 0x381C, 0x17AA, "AMD Radeon RX Renoir Graphics C3"},
{MatchType::RevSubsys, 0xC3, 0x507F, 0x17AA, "AMD Radeon RX Renoir Graphics C3"},
{MatchType::RevSubsys, 0xC4, 0x381C, 0x17AA, "AMD Radeon RX Renoir Graphics C4"},
{MatchType::RevSubsys, 0xC4, 0x507F, 0x17AA, "AMD Radeon RX Renoir Graphics C4"},
{MatchType::RevSubsys, 0xD1, 0x16CF, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x16DF, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x16EF, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x16FF, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x171F, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x172F, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x17DF, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x17EF, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x18BF, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x18CF, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x1E11, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x1E21, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x1F11, 0x1043, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x3813, 0x17AA, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x381B, 0x17AA, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x381C, 0x17AA, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x3F1A, 0x17AA, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x507F, 0x17AA, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x5081, 0x17AA, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x5082, 0x17AA, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x5099, 0x17AA, "AMD Radeon Pro Graphics"},
{MatchType::RevSubsys, 0xD1, 0x86EE, 0x103C, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x86F1, 0x103C, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x8786, 0x103C, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD1, 0x8788, 0x103C, "AMD Radeon RX Renoir Graphics D1"},
{MatchType::RevSubsys, 0xD3, 0x5099, 0x17AA, "AMD Radeon Pro Graphics"},
{MatchType::RevSubsys, 0xD4, 0x16CF, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x16DF, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x16EF, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x16FF, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x171F, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x172F, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x17DF, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x17EF, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x1E11, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x1E21, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x1F11, 0x1043, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x380D, 0x17AA, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x381B, 0x17AA, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x381C, 0x17AA, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x507F, 0x17AA, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x86EE, 0x103C, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x86F1, 0x103C, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x8786, 0x103C, "AMD Radeon RX Renoir Graphics D4"},
{MatchType::RevSubsys, 0xD4, 0x8788, 0x103C, "AMD Radeon RX Renoir Graphics D4"},
};

static const DevicePair devices[] = {
{0x15DD, dev15DD, arrsize(dev15DD)},
{0x15D8, dev15D8, arrsize(dev15D8)},
{0x1636, dev1636, arrsize(dev1636)},
};

const char *getBrandingNameForDev(IOPCIDevice *device) {
auto deviceId = WIOKit::readPCIConfigValue(device, WIOKit::kIOPCIConfigDeviceID);
auto revisionId = WIOKit::readPCIConfigValue(device, WIOKit::kIOPCIConfigRevisionID);
auto subsystemId = WIOKit::readPCIConfigValue(device, WIOKit::kIOPCIConfigSubSystemID);
auto subsystemVendor = WIOKit::readPCIConfigValue(device, WIOKit::kIOPCIConfigSubSystemVendorID);
for (auto &device : devices) {
if (device.deviceId != deviceId) { continue; }

for (size_t i = 0; i < device.count; i++) {
auto &model = device.models[i];
if (model.revision != revisionId ||
(model.matchType == MatchType::RevSubsys &&
(model.subsystemId != subsystemId || model.subsystemVendor != subsystemVendor))) {
continue;
}

return model.name;
}

break;
}

return "AMD Radeon RX Graphics";
}
108 changes: 2 additions & 106 deletions NootedRed/Model.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,110 +2,6 @@
// See LICENSE for details.

#pragma once
#include <Headers/kern_util.hpp>
#include <IOKit/pci/IOPCIDevice.h>

struct Model {
UInt16 revision {0};
const char *name {nullptr};
};

struct DevicePair {
UInt16 deviceId;
const Model *models;
size_t count;
};

static constexpr Model dev15DD[] = {
{0x81, "AMD Radeon Vega 11"},
{0x82, "AMD Radeon Vega 8"},
{0x83, "AMD Radeon Vega 8"},
{0x84, "AMD Radeon Vega 6"},
{0x85, "AMD Radeon Vega 3"},
{0x86, "AMD Radeon Vega 11"},
{0x88, "AMD Radeon Vega 8"},
{0xC1, "AMD Radeon Vega 11"},
{0xC2, "AMD Radeon Vega 8"},
{0xC3, "AMD Radeon Vega 10"},
{0xC4, "AMD Radeon Vega 8"},
{0xC5, "AMD Radeon Vega 3"},
{0xC6, "AMD Radeon Vega 11"},
{0xC8, "AMD Radeon Vega 8"},
{0xC9, "AMD Radeon Vega 11"},
{0xCA, "AMD Radeon Vega 8"},
{0xCB, "AMD Radeon Vega 3"},
{0xCC, "AMD Radeon Vega 6"},
{0xCE, "AMD Radeon Vega 3"},
{0xCF, "AMD Radeon Vega 3"},
{0xD0, "AMD Radeon Vega 10"},
{0xD1, "AMD Radeon Vega 8"},
{0xD3, "AMD Radeon Vega 11"},
{0xD5, "AMD Radeon Vega 8"},
{0xD6, "AMD Radeon Vega 11"},
{0xD7, "AMD Radeon Vega 8"},
{0xD8, "AMD Radeon Vega 3"},
{0xD9, "AMD Radeon Vega 6"},
{0xE1, "AMD Radeon Vega 3"},
{0xE2, "AMD Radeon Vega 3"},
};

static constexpr Model dev15D8[] = {
{0x00, "AMD Radeon Vega 8 WS"},
{0x91, "AMD Radeon Vega 3"},
{0x92, "AMD Radeon Vega 3"},
{0x93, "AMD Radeon Vega 1"},
{0xA1, "AMD Radeon Vega 10"},
{0xA2, "AMD Radeon Vega 8"},
{0xA3, "AMD Radeon Vega 6"},
{0xA4, "AMD Radeon Vega 3"},
{0xB1, "AMD Radeon Vega 10"},
{0xB2, "AMD Radeon Vega 8"},
{0xB3, "AMD Radeon Vega 6"},
{0xB4, "AMD Radeon Vega 3"},
{0xC1, "AMD Radeon Vega 10"},
{0xC2, "AMD Radeon Vega 8"},
{0xC3, "AMD Radeon Vega 6"},
{0xC4, "AMD Radeon Vega 3"},
{0xC5, "AMD Radeon Vega 3"},
{0xC8, "AMD Radeon Vega 11"},
{0xC9, "AMD Radeon Vega 8"},
{0xCA, "AMD Radeon Vega 11"},
{0xCB, "AMD Radeon Vega 8"},
{0xCC, "AMD Radeon Vega 3"},
{0xCE, "AMD Radeon Vega 3"},
{0xCF, "AMD Radeon Vega 3"},
{0xD1, "AMD Radeon Vega 10"},
{0xD2, "AMD Radeon Vega 8"},
{0xD3, "AMD Radeon Vega 6"},
{0xD4, "AMD Radeon Vega 3"},
{0xD8, "AMD Radeon Vega 11"},
{0xD9, "AMD Radeon Vega 8"},
{0xDA, "AMD Radeon Vega 11"},
{0xDB, "AMD Radeon Vega 3"},
{0xDC, "AMD Radeon Vega 3"},
{0xDD, "AMD Radeon Vega 3"},
{0xDE, "AMD Radeon Vega 3"},
{0xDF, "AMD Radeon Vega 3"},
{0xE1, "AMD Radeon Vega 11"},
{0xE2, "AMD Radeon Vega 9"},
{0xE3, "AMD Radeon Vega 3"},
{0xE4, "AMD Radeon Vega 3"},
};

static constexpr DevicePair devices[] = {
{0x15DD, dev15DD, arrsize(dev15DD)},
{0x15D8, dev15D8, arrsize(dev15D8)},
};

inline const char *getBranding(UInt16 dev, UInt16 rev) {
for (auto &device : devices) {
if (device.deviceId == dev) {
for (size_t i = 0; i < device.count; i++) {
auto &model = device.models[i];
if (model.revision == rev) { return model.name; }
}
break;
}
}

return "AMD Radeon Graphics";
}
const char *getBrandingNameForDev(IOPCIDevice *device);
Loading

0 comments on commit a1d259c

Please sign in to comment.