mirror of
https://github.com/henrygd/beszel.git
synced 2026-03-22 05:36:15 +01:00
update sysfs amd collector to pull pretty name from amdgpu.ids (#1569)
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
package agent
|
package agent
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"os"
|
"os"
|
||||||
@@ -15,6 +16,15 @@ import (
|
|||||||
"github.com/henrygd/beszel/internal/entities/system"
|
"github.com/henrygd/beszel/internal/entities/system"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var amdgpuNameCache = struct {
|
||||||
|
sync.RWMutex
|
||||||
|
hits map[string]string
|
||||||
|
misses map[string]struct{}
|
||||||
|
}{
|
||||||
|
hits: make(map[string]string),
|
||||||
|
misses: make(map[string]struct{}),
|
||||||
|
}
|
||||||
|
|
||||||
// hasAmdSysfs returns true if any AMD GPU sysfs nodes are found
|
// hasAmdSysfs returns true if any AMD GPU sysfs nodes are found
|
||||||
func (gm *GPUManager) hasAmdSysfs() bool {
|
func (gm *GPUManager) hasAmdSysfs() bool {
|
||||||
cards, err := filepath.Glob("/sys/class/drm/card*/device/vendor")
|
cards, err := filepath.Glob("/sys/class/drm/card*/device/vendor")
|
||||||
@@ -75,6 +85,7 @@ func (gm *GPUManager) collectAmdStats() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isAmdGpu checks whether a DRM card path belongs to AMD vendor ID 0x1002.
|
||||||
func isAmdGpu(cardPath string) bool {
|
func isAmdGpu(cardPath string) bool {
|
||||||
vendorPath := filepath.Join(cardPath, "device/vendor")
|
vendorPath := filepath.Join(cardPath, "device/vendor")
|
||||||
vendor, err := os.ReadFile(vendorPath)
|
vendor, err := os.ReadFile(vendorPath)
|
||||||
@@ -134,6 +145,7 @@ func (gm *GPUManager) updateAmdGpuData(cardPath string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// readSysfsFloat reads and parses a numeric value from a sysfs file.
|
||||||
func readSysfsFloat(path string) (float64, error) {
|
func readSysfsFloat(path string) (float64, error) {
|
||||||
val, err := os.ReadFile(path)
|
val, err := os.ReadFile(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -142,6 +154,110 @@ func readSysfsFloat(path string) (float64, error) {
|
|||||||
return strconv.ParseFloat(strings.TrimSpace(string(val)), 64)
|
return strconv.ParseFloat(strings.TrimSpace(string(val)), 64)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// normalizeHexID normalizes hex IDs by trimming spaces, lowercasing, and dropping 0x.
|
||||||
|
func normalizeHexID(id string) string {
|
||||||
|
return strings.TrimPrefix(strings.ToLower(strings.TrimSpace(id)), "0x")
|
||||||
|
}
|
||||||
|
|
||||||
|
// cacheKeyForAmdgpu builds the cache key for a device and optional revision.
|
||||||
|
func cacheKeyForAmdgpu(deviceID, revisionID string) string {
|
||||||
|
if revisionID != "" {
|
||||||
|
return deviceID + ":" + revisionID
|
||||||
|
}
|
||||||
|
return deviceID
|
||||||
|
}
|
||||||
|
|
||||||
|
// lookupAmdgpuNameInFile resolves an AMDGPU name from amdgpu.ids by device/revision.
|
||||||
|
func lookupAmdgpuNameInFile(deviceID, revisionID, filePath string) (name string, exact bool, found bool) {
|
||||||
|
file, err := os.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return "", false, false
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
var byDevice string
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := strings.TrimSpace(scanner.Text())
|
||||||
|
if line == "" || strings.HasPrefix(line, "#") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
parts := strings.SplitN(line, ",", 3)
|
||||||
|
if len(parts) != 3 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
dev := normalizeHexID(parts[0])
|
||||||
|
rev := normalizeHexID(parts[1])
|
||||||
|
productName := strings.TrimSpace(parts[2])
|
||||||
|
if dev == "" || productName == "" || dev != deviceID {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if byDevice == "" {
|
||||||
|
byDevice = productName
|
||||||
|
}
|
||||||
|
if revisionID != "" && rev == revisionID {
|
||||||
|
return productName, true, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if byDevice != "" {
|
||||||
|
return byDevice, false, true
|
||||||
|
}
|
||||||
|
return "", false, false
|
||||||
|
}
|
||||||
|
|
||||||
|
// getCachedAmdgpuName returns cached hit/miss status for the given device/revision.
|
||||||
|
func getCachedAmdgpuName(deviceID, revisionID string) (name string, found bool, done bool) {
|
||||||
|
// Build the list of cache keys to check. We always look up the exact device+revision key.
|
||||||
|
// When revisionID is set, we also look up deviceID alone, since the cache may store a
|
||||||
|
// device-only fallback when we couldn't resolve the exact revision.
|
||||||
|
keys := []string{cacheKeyForAmdgpu(deviceID, revisionID)}
|
||||||
|
if revisionID != "" {
|
||||||
|
keys = append(keys, deviceID)
|
||||||
|
}
|
||||||
|
|
||||||
|
knownMisses := 0
|
||||||
|
amdgpuNameCache.RLock()
|
||||||
|
defer amdgpuNameCache.RUnlock()
|
||||||
|
for _, key := range keys {
|
||||||
|
if name, ok := amdgpuNameCache.hits[key]; ok {
|
||||||
|
return name, true, true
|
||||||
|
}
|
||||||
|
if _, ok := amdgpuNameCache.misses[key]; ok {
|
||||||
|
knownMisses++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// done=true means "don't bother doing slow lookup": we either found a name (above) or
|
||||||
|
// every key we checked was already a known miss, so we've tried before and failed.
|
||||||
|
return "", false, knownMisses == len(keys)
|
||||||
|
}
|
||||||
|
|
||||||
|
// normalizeAmdgpuName trims standard suffixes from AMDGPU product names.
|
||||||
|
func normalizeAmdgpuName(name string) string {
|
||||||
|
return strings.TrimSuffix(strings.TrimSpace(name), " Graphics")
|
||||||
|
}
|
||||||
|
|
||||||
|
// cacheAmdgpuName stores a resolved AMDGPU name in the lookup cache.
|
||||||
|
func cacheAmdgpuName(deviceID, revisionID, name string, exact bool) {
|
||||||
|
name = normalizeAmdgpuName(name)
|
||||||
|
amdgpuNameCache.Lock()
|
||||||
|
defer amdgpuNameCache.Unlock()
|
||||||
|
if exact && revisionID != "" {
|
||||||
|
amdgpuNameCache.hits[cacheKeyForAmdgpu(deviceID, revisionID)] = name
|
||||||
|
}
|
||||||
|
amdgpuNameCache.hits[deviceID] = name
|
||||||
|
}
|
||||||
|
|
||||||
|
// cacheMissingAmdgpuName records unresolved device/revision lookups.
|
||||||
|
func cacheMissingAmdgpuName(deviceID, revisionID string) {
|
||||||
|
amdgpuNameCache.Lock()
|
||||||
|
defer amdgpuNameCache.Unlock()
|
||||||
|
amdgpuNameCache.misses[deviceID] = struct{}{}
|
||||||
|
if revisionID != "" {
|
||||||
|
amdgpuNameCache.misses[cacheKeyForAmdgpu(deviceID, revisionID)] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// getAmdGpuName attempts to get a descriptive GPU name.
|
// getAmdGpuName attempts to get a descriptive GPU name.
|
||||||
// First tries product_name (rarely available), then looks up the PCI device ID.
|
// First tries product_name (rarely available), then looks up the PCI device ID.
|
||||||
// Falls back to showing the raw device ID if not found in the lookup table.
|
// Falls back to showing the raw device ID if not found in the lookup table.
|
||||||
@@ -153,33 +269,24 @@ func getAmdGpuName(devicePath string) string {
|
|||||||
|
|
||||||
// Read PCI device ID and look it up
|
// Read PCI device ID and look it up
|
||||||
if deviceID, err := os.ReadFile(filepath.Join(devicePath, "device")); err == nil {
|
if deviceID, err := os.ReadFile(filepath.Join(devicePath, "device")); err == nil {
|
||||||
id := strings.TrimPrefix(strings.ToLower(strings.TrimSpace(string(deviceID))), "0x")
|
id := normalizeHexID(string(deviceID))
|
||||||
if name, ok := getRadeonNames()[id]; ok {
|
revision := ""
|
||||||
return fmt.Sprintf("Radeon %s", name)
|
if revBytes, revErr := os.ReadFile(filepath.Join(devicePath, "revision")); revErr == nil {
|
||||||
|
revision = normalizeHexID(string(revBytes))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if name, found, done := getCachedAmdgpuName(id, revision); found {
|
||||||
|
return name
|
||||||
|
} else if !done {
|
||||||
|
if name, exact, ok := lookupAmdgpuNameInFile(id, revision, "/usr/share/libdrm/amdgpu.ids"); ok {
|
||||||
|
cacheAmdgpuName(id, revision, name, exact)
|
||||||
|
return normalizeAmdgpuName(name)
|
||||||
|
}
|
||||||
|
cacheMissingAmdgpuName(id, revision)
|
||||||
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("AMD GPU (%s)", id)
|
return fmt.Sprintf("AMD GPU (%s)", id)
|
||||||
}
|
}
|
||||||
|
|
||||||
return "AMD GPU"
|
return "AMD GPU"
|
||||||
}
|
}
|
||||||
|
|
||||||
// getRadeonNames returns the AMD GPU name lookup table
|
|
||||||
// Device IDs from https://pci-ids.ucw.cz/read/PC/1002
|
|
||||||
var getRadeonNames = sync.OnceValue(func() map[string]string {
|
|
||||||
return map[string]string{
|
|
||||||
"7550": "RX 9070",
|
|
||||||
"7590": "RX 9060 XT",
|
|
||||||
"7551": "AI PRO R9700",
|
|
||||||
|
|
||||||
"744c": "RX 7900",
|
|
||||||
|
|
||||||
"1681": "680M",
|
|
||||||
|
|
||||||
"7448": "PRO W7900",
|
|
||||||
"745e": "PRO W7800",
|
|
||||||
"7470": "PRO W7700",
|
|
||||||
"73e3": "PRO W6600",
|
|
||||||
"7422": "PRO W6400",
|
|
||||||
"7341": "PRO W5500",
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|||||||
236
agent/gpu_amd_linux_test.go
Normal file
236
agent/gpu_amd_linux_test.go
Normal file
@@ -0,0 +1,236 @@
|
|||||||
|
//go:build linux
|
||||||
|
|
||||||
|
package agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/henrygd/beszel/internal/entities/system"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestNormalizeHexID(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
in string
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{"0x1002", "1002"},
|
||||||
|
{"C2", "c2"},
|
||||||
|
{" 15BF ", "15bf"},
|
||||||
|
{"0x15bf", "15bf"},
|
||||||
|
{"", ""},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
subName := tt.in
|
||||||
|
if subName == "" {
|
||||||
|
subName = "empty_string"
|
||||||
|
}
|
||||||
|
t.Run(subName, func(t *testing.T) {
|
||||||
|
got := normalizeHexID(tt.in)
|
||||||
|
assert.Equal(t, tt.want, got)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCacheKeyForAmdgpu(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
deviceID string
|
||||||
|
revisionID string
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{"1114", "c2", "1114:c2"},
|
||||||
|
{"15bf", "", "15bf"},
|
||||||
|
{"1506", "c1", "1506:c1"},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
got := cacheKeyForAmdgpu(tt.deviceID, tt.revisionID)
|
||||||
|
assert.Equal(t, tt.want, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestReadSysfsFloat(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
|
||||||
|
validPath := filepath.Join(dir, "val")
|
||||||
|
require.NoError(t, os.WriteFile(validPath, []byte(" 42.5 \n"), 0o644))
|
||||||
|
got, err := readSysfsFloat(validPath)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 42.5, got)
|
||||||
|
|
||||||
|
// Integer and scientific
|
||||||
|
sciPath := filepath.Join(dir, "sci")
|
||||||
|
require.NoError(t, os.WriteFile(sciPath, []byte("1e2"), 0o644))
|
||||||
|
got, err = readSysfsFloat(sciPath)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 100.0, got)
|
||||||
|
|
||||||
|
// Missing file
|
||||||
|
_, err = readSysfsFloat(filepath.Join(dir, "missing"))
|
||||||
|
require.Error(t, err)
|
||||||
|
|
||||||
|
// Invalid content
|
||||||
|
badPath := filepath.Join(dir, "bad")
|
||||||
|
require.NoError(t, os.WriteFile(badPath, []byte("not a number"), 0o644))
|
||||||
|
_, err = readSysfsFloat(badPath)
|
||||||
|
require.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIsAmdGpu(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
deviceDir := filepath.Join(dir, "device")
|
||||||
|
require.NoError(t, os.MkdirAll(deviceDir, 0o755))
|
||||||
|
|
||||||
|
// AMD vendor 0x1002 -> true
|
||||||
|
require.NoError(t, os.WriteFile(filepath.Join(deviceDir, "vendor"), []byte("0x1002\n"), 0o644))
|
||||||
|
assert.True(t, isAmdGpu(dir), "vendor 0x1002 should be AMD")
|
||||||
|
|
||||||
|
// Non-AMD vendor -> false
|
||||||
|
require.NoError(t, os.WriteFile(filepath.Join(deviceDir, "vendor"), []byte("0x10de\n"), 0o644))
|
||||||
|
assert.False(t, isAmdGpu(dir), "vendor 0x10de should not be AMD")
|
||||||
|
|
||||||
|
// Missing vendor file -> false
|
||||||
|
require.NoError(t, os.Remove(filepath.Join(deviceDir, "vendor")))
|
||||||
|
assert.False(t, isAmdGpu(dir), "missing vendor file should be false")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAmdgpuNameCacheRoundTrip(t *testing.T) {
|
||||||
|
// Cache a name and retrieve it (unique key to avoid affecting other tests)
|
||||||
|
deviceID, revisionID := "cachedev99", "00"
|
||||||
|
cacheAmdgpuName(deviceID, revisionID, "AMD Test GPU 99 Graphics", true)
|
||||||
|
|
||||||
|
name, found, done := getCachedAmdgpuName(deviceID, revisionID)
|
||||||
|
assert.True(t, found)
|
||||||
|
assert.True(t, done)
|
||||||
|
assert.Equal(t, "AMD Test GPU 99", name)
|
||||||
|
|
||||||
|
// Device-only key also stored
|
||||||
|
name2, found2, _ := getCachedAmdgpuName(deviceID, "")
|
||||||
|
assert.True(t, found2)
|
||||||
|
assert.Equal(t, "AMD Test GPU 99", name2)
|
||||||
|
|
||||||
|
// Cache a miss
|
||||||
|
cacheMissingAmdgpuName("missedev99", "ab")
|
||||||
|
_, found3, done3 := getCachedAmdgpuName("missedev99", "ab")
|
||||||
|
assert.False(t, found3)
|
||||||
|
assert.True(t, done3, "done should be true so caller skips file lookup")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdateAmdGpuDataWithFakeSysfs(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
cardPath := filepath.Join(dir, "card0")
|
||||||
|
devicePath := filepath.Join(cardPath, "device")
|
||||||
|
hwmonPath := filepath.Join(devicePath, "hwmon", "hwmon0")
|
||||||
|
require.NoError(t, os.MkdirAll(hwmonPath, 0o755))
|
||||||
|
|
||||||
|
write := func(name, content string) {
|
||||||
|
require.NoError(t, os.WriteFile(filepath.Join(devicePath, name), []byte(content), 0o644))
|
||||||
|
}
|
||||||
|
write("vendor", "0x1002")
|
||||||
|
write("device", "0x1506")
|
||||||
|
write("revision", "0xc1")
|
||||||
|
write("gpu_busy_percent", "25")
|
||||||
|
write("mem_info_vram_used", "1073741824")
|
||||||
|
write("mem_info_vram_total", "2147483648")
|
||||||
|
require.NoError(t, os.WriteFile(filepath.Join(hwmonPath, "temp1_input"), []byte("45000"), 0o644))
|
||||||
|
require.NoError(t, os.WriteFile(filepath.Join(hwmonPath, "power1_input"), []byte("20000000"), 0o644))
|
||||||
|
|
||||||
|
// Pre-cache name so getAmdGpuName returns a known value (it uses system amdgpu.ids path)
|
||||||
|
cacheAmdgpuName("1506", "c1", "AMD Radeon 610M Graphics", true)
|
||||||
|
|
||||||
|
gm := &GPUManager{GpuDataMap: make(map[string]*system.GPUData)}
|
||||||
|
ok := gm.updateAmdGpuData(cardPath)
|
||||||
|
require.True(t, ok)
|
||||||
|
|
||||||
|
gpu, ok := gm.GpuDataMap["card0"]
|
||||||
|
require.True(t, ok)
|
||||||
|
assert.Equal(t, "AMD Radeon 610M", gpu.Name)
|
||||||
|
assert.Equal(t, 25.0, gpu.Usage)
|
||||||
|
assert.Equal(t, bytesToMegabytes(1073741824), gpu.MemoryUsed)
|
||||||
|
assert.Equal(t, bytesToMegabytes(2147483648), gpu.MemoryTotal)
|
||||||
|
assert.Equal(t, 45.0, gpu.Temperature)
|
||||||
|
assert.Equal(t, 20.0, gpu.Power)
|
||||||
|
assert.Equal(t, 1.0, gpu.Count)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLookupAmdgpuNameInFile(t *testing.T) {
|
||||||
|
idsPath := filepath.Join("test-data", "amdgpu.ids")
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
deviceID string
|
||||||
|
revisionID string
|
||||||
|
wantName string
|
||||||
|
wantExact bool
|
||||||
|
wantFound bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "exact device and revision match",
|
||||||
|
deviceID: "1114",
|
||||||
|
revisionID: "c2",
|
||||||
|
wantName: "AMD Radeon 860M Graphics",
|
||||||
|
wantExact: true,
|
||||||
|
wantFound: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "exact match 15BF revision 01 returns 760M",
|
||||||
|
deviceID: "15bf",
|
||||||
|
revisionID: "01",
|
||||||
|
wantName: "AMD Radeon 760M Graphics",
|
||||||
|
wantExact: true,
|
||||||
|
wantFound: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "exact match 15BF revision 00 returns 780M",
|
||||||
|
deviceID: "15bf",
|
||||||
|
revisionID: "00",
|
||||||
|
wantName: "AMD Radeon 780M Graphics",
|
||||||
|
wantExact: true,
|
||||||
|
wantFound: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "device-only match returns first entry for device",
|
||||||
|
deviceID: "1506",
|
||||||
|
revisionID: "",
|
||||||
|
wantName: "AMD Radeon 610M",
|
||||||
|
wantExact: false,
|
||||||
|
wantFound: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "unknown device not found",
|
||||||
|
deviceID: "dead",
|
||||||
|
revisionID: "00",
|
||||||
|
wantName: "",
|
||||||
|
wantExact: false,
|
||||||
|
wantFound: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
gotName, gotExact, gotFound := lookupAmdgpuNameInFile(tt.deviceID, tt.revisionID, idsPath)
|
||||||
|
assert.Equal(t, tt.wantName, gotName, "name")
|
||||||
|
assert.Equal(t, tt.wantExact, gotExact, "exact")
|
||||||
|
assert.Equal(t, tt.wantFound, gotFound, "found")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetAmdGpuNameFromIdsFile(t *testing.T) {
|
||||||
|
// Test that getAmdGpuName resolves a name when we can't inject the ids path.
|
||||||
|
// We only verify behavior when product_name is missing and device/revision
|
||||||
|
// would be read from sysfs; the actual lookup uses /usr/share/libdrm/amdgpu.ids.
|
||||||
|
// So this test focuses on normalizeAmdgpuName and that lookupAmdgpuNameInFile
|
||||||
|
// returns the expected name for our test-data file.
|
||||||
|
idsPath := filepath.Join("test-data", "amdgpu.ids")
|
||||||
|
name, exact, found := lookupAmdgpuNameInFile("1435", "ae", idsPath)
|
||||||
|
require.True(t, found)
|
||||||
|
require.True(t, exact)
|
||||||
|
assert.Equal(t, "AMD Custom GPU 0932", name)
|
||||||
|
assert.Equal(t, "AMD Custom GPU 0932", normalizeAmdgpuName(name))
|
||||||
|
|
||||||
|
// " Graphics" suffix is trimmed by normalizeAmdgpuName
|
||||||
|
name2 := "AMD Radeon 860M Graphics"
|
||||||
|
assert.Equal(t, "AMD Radeon 860M", normalizeAmdgpuName(name2))
|
||||||
|
}
|
||||||
700
agent/test-data/amdgpu.ids
Normal file
700
agent/test-data/amdgpu.ids
Normal file
@@ -0,0 +1,700 @@
|
|||||||
|
# List of AMDGPU IDs
|
||||||
|
#
|
||||||
|
# Syntax:
|
||||||
|
# device_id, revision_id, product_name <-- single tab after comma
|
||||||
|
|
||||||
|
1.0.0
|
||||||
|
1114, C2, AMD Radeon 860M Graphics
|
||||||
|
1114, C3, AMD Radeon 840M Graphics
|
||||||
|
1114, D2, AMD Radeon 860M Graphics
|
||||||
|
1114, D3, AMD Radeon 840M Graphics
|
||||||
|
1309, 00, AMD Radeon R7 Graphics
|
||||||
|
130A, 00, AMD Radeon R6 Graphics
|
||||||
|
130B, 00, AMD Radeon R4 Graphics
|
||||||
|
130C, 00, AMD Radeon R7 Graphics
|
||||||
|
130D, 00, AMD Radeon R6 Graphics
|
||||||
|
130E, 00, AMD Radeon R5 Graphics
|
||||||
|
130F, 00, AMD Radeon R7 Graphics
|
||||||
|
130F, D4, AMD Radeon R7 Graphics
|
||||||
|
130F, D5, AMD Radeon R7 Graphics
|
||||||
|
130F, D6, AMD Radeon R7 Graphics
|
||||||
|
130F, D7, AMD Radeon R7 Graphics
|
||||||
|
1313, 00, AMD Radeon R7 Graphics
|
||||||
|
1313, D4, AMD Radeon R7 Graphics
|
||||||
|
1313, D5, AMD Radeon R7 Graphics
|
||||||
|
1313, D6, AMD Radeon R7 Graphics
|
||||||
|
1315, 00, AMD Radeon R5 Graphics
|
||||||
|
1315, D4, AMD Radeon R5 Graphics
|
||||||
|
1315, D5, AMD Radeon R5 Graphics
|
||||||
|
1315, D6, AMD Radeon R5 Graphics
|
||||||
|
1315, D7, AMD Radeon R5 Graphics
|
||||||
|
1316, 00, AMD Radeon R5 Graphics
|
||||||
|
1318, 00, AMD Radeon R5 Graphics
|
||||||
|
131B, 00, AMD Radeon R4 Graphics
|
||||||
|
131C, 00, AMD Radeon R7 Graphics
|
||||||
|
131D, 00, AMD Radeon R6 Graphics
|
||||||
|
1435, AE, AMD Custom GPU 0932
|
||||||
|
1506, C1, AMD Radeon 610M
|
||||||
|
1506, C2, AMD Radeon 610M
|
||||||
|
1506, C3, AMD Radeon 610M
|
||||||
|
1506, C4, AMD Radeon 610M
|
||||||
|
150E, C1, AMD Radeon 890M Graphics
|
||||||
|
150E, C4, AMD Radeon 890M Graphics
|
||||||
|
150E, C5, AMD Radeon 890M Graphics
|
||||||
|
150E, C6, AMD Radeon 890M Graphics
|
||||||
|
150E, D1, AMD Radeon 890M Graphics
|
||||||
|
150E, D2, AMD Radeon 890M Graphics
|
||||||
|
150E, D3, AMD Radeon 890M Graphics
|
||||||
|
1586, C1, Radeon 8060S Graphics
|
||||||
|
1586, C2, Radeon 8050S Graphics
|
||||||
|
1586, C4, Radeon 8050S Graphics
|
||||||
|
1586, D1, Radeon 8060S Graphics
|
||||||
|
1586, D2, Radeon 8050S Graphics
|
||||||
|
1586, D4, Radeon 8050S Graphics
|
||||||
|
1586, D5, Radeon 8040S Graphics
|
||||||
|
15BF, 00, AMD Radeon 780M Graphics
|
||||||
|
15BF, 01, AMD Radeon 760M Graphics
|
||||||
|
15BF, 02, AMD Radeon 780M Graphics
|
||||||
|
15BF, 03, AMD Radeon 760M Graphics
|
||||||
|
15BF, C1, AMD Radeon 780M Graphics
|
||||||
|
15BF, C2, AMD Radeon 780M Graphics
|
||||||
|
15BF, C3, AMD Radeon 760M Graphics
|
||||||
|
15BF, C4, AMD Radeon 780M Graphics
|
||||||
|
15BF, C5, AMD Radeon 740M Graphics
|
||||||
|
15BF, C6, AMD Radeon 780M Graphics
|
||||||
|
15BF, C7, AMD Radeon 780M Graphics
|
||||||
|
15BF, C8, AMD Radeon 760M Graphics
|
||||||
|
15BF, C9, AMD Radeon 780M Graphics
|
||||||
|
15BF, CA, AMD Radeon 740M Graphics
|
||||||
|
15BF, CB, AMD Radeon 760M Graphics
|
||||||
|
15BF, CC, AMD Radeon 740M Graphics
|
||||||
|
15BF, CD, AMD Radeon 760M Graphics
|
||||||
|
15BF, CF, AMD Radeon 780M Graphics
|
||||||
|
15BF, D0, AMD Radeon 780M Graphics
|
||||||
|
15BF, D1, AMD Radeon 780M Graphics
|
||||||
|
15BF, D2, AMD Radeon 780M Graphics
|
||||||
|
15BF, D3, AMD Radeon 780M Graphics
|
||||||
|
15BF, D4, AMD Radeon 780M Graphics
|
||||||
|
15BF, D5, AMD Radeon 760M Graphics
|
||||||
|
15BF, D6, AMD Radeon 760M Graphics
|
||||||
|
15BF, D7, AMD Radeon 780M Graphics
|
||||||
|
15BF, D8, AMD Radeon 740M Graphics
|
||||||
|
15BF, D9, AMD Radeon 780M Graphics
|
||||||
|
15BF, DA, AMD Radeon 780M Graphics
|
||||||
|
15BF, DB, AMD Radeon 760M Graphics
|
||||||
|
15BF, DC, AMD Radeon 760M Graphics
|
||||||
|
15BF, DD, AMD Radeon 780M Graphics
|
||||||
|
15BF, DE, AMD Radeon 740M Graphics
|
||||||
|
15BF, DF, AMD Radeon 760M Graphics
|
||||||
|
15BF, F0, AMD Radeon 760M Graphics
|
||||||
|
15C8, C1, AMD Radeon 740M Graphics
|
||||||
|
15C8, C2, AMD Radeon 740M Graphics
|
||||||
|
15C8, C3, AMD Radeon 740M Graphics
|
||||||
|
15C8, C4, AMD Radeon 740M Graphics
|
||||||
|
15C8, D1, AMD Radeon 740M Graphics
|
||||||
|
15C8, D2, AMD Radeon 740M Graphics
|
||||||
|
15C8, D3, AMD Radeon 740M Graphics
|
||||||
|
15C8, D4, AMD Radeon 740M Graphics
|
||||||
|
15D8, 00, AMD Radeon RX Vega 8 Graphics WS
|
||||||
|
15D8, 91, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, 91, AMD Ryzen Embedded R1606G with Radeon Vega Gfx
|
||||||
|
15D8, 92, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, 92, AMD Ryzen Embedded R1505G with Radeon Vega Gfx
|
||||||
|
15D8, 93, AMD Radeon Vega 1 Graphics
|
||||||
|
15D8, A1, AMD Radeon Vega 10 Graphics
|
||||||
|
15D8, A2, AMD Radeon Vega 8 Graphics
|
||||||
|
15D8, A3, AMD Radeon Vega 6 Graphics
|
||||||
|
15D8, A4, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, B1, AMD Radeon Vega 10 Graphics
|
||||||
|
15D8, B2, AMD Radeon Vega 8 Graphics
|
||||||
|
15D8, B3, AMD Radeon Vega 6 Graphics
|
||||||
|
15D8, B4, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, C1, AMD Radeon Vega 10 Graphics
|
||||||
|
15D8, C2, AMD Radeon Vega 8 Graphics
|
||||||
|
15D8, C3, AMD Radeon Vega 6 Graphics
|
||||||
|
15D8, C4, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, C5, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, C8, AMD Radeon Vega 11 Graphics
|
||||||
|
15D8, C9, AMD Radeon Vega 8 Graphics
|
||||||
|
15D8, CA, AMD Radeon Vega 11 Graphics
|
||||||
|
15D8, CB, AMD Radeon Vega 8 Graphics
|
||||||
|
15D8, CC, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, CE, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, CF, AMD Ryzen Embedded R1305G with Radeon Vega Gfx
|
||||||
|
15D8, D1, AMD Radeon Vega 10 Graphics
|
||||||
|
15D8, D2, AMD Radeon Vega 8 Graphics
|
||||||
|
15D8, D3, AMD Radeon Vega 6 Graphics
|
||||||
|
15D8, D4, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, D8, AMD Radeon Vega 11 Graphics
|
||||||
|
15D8, D9, AMD Radeon Vega 8 Graphics
|
||||||
|
15D8, DA, AMD Radeon Vega 11 Graphics
|
||||||
|
15D8, DB, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, DB, AMD Radeon Vega 8 Graphics
|
||||||
|
15D8, DC, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, DD, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, DE, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, DF, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, E3, AMD Radeon Vega 3 Graphics
|
||||||
|
15D8, E4, AMD Ryzen Embedded R1102G with Radeon Vega Gfx
|
||||||
|
15DD, 81, AMD Ryzen Embedded V1807B with Radeon Vega Gfx
|
||||||
|
15DD, 82, AMD Ryzen Embedded V1756B with Radeon Vega Gfx
|
||||||
|
15DD, 83, AMD Ryzen Embedded V1605B with Radeon Vega Gfx
|
||||||
|
15DD, 84, AMD Radeon Vega 6 Graphics
|
||||||
|
15DD, 85, AMD Ryzen Embedded V1202B with Radeon Vega Gfx
|
||||||
|
15DD, 86, AMD Radeon Vega 11 Graphics
|
||||||
|
15DD, 88, AMD Radeon Vega 8 Graphics
|
||||||
|
15DD, C1, AMD Radeon Vega 11 Graphics
|
||||||
|
15DD, C2, AMD Radeon Vega 8 Graphics
|
||||||
|
15DD, C3, AMD Radeon Vega 3 / 10 Graphics
|
||||||
|
15DD, C4, AMD Radeon Vega 8 Graphics
|
||||||
|
15DD, C5, AMD Radeon Vega 3 Graphics
|
||||||
|
15DD, C6, AMD Radeon Vega 11 Graphics
|
||||||
|
15DD, C8, AMD Radeon Vega 8 Graphics
|
||||||
|
15DD, C9, AMD Radeon Vega 11 Graphics
|
||||||
|
15DD, CA, AMD Radeon Vega 8 Graphics
|
||||||
|
15DD, CB, AMD Radeon Vega 3 Graphics
|
||||||
|
15DD, CC, AMD Radeon Vega 6 Graphics
|
||||||
|
15DD, CE, AMD Radeon Vega 3 Graphics
|
||||||
|
15DD, CF, AMD Radeon Vega 3 Graphics
|
||||||
|
15DD, D0, AMD Radeon Vega 10 Graphics
|
||||||
|
15DD, D1, AMD Radeon Vega 8 Graphics
|
||||||
|
15DD, D3, AMD Radeon Vega 11 Graphics
|
||||||
|
15DD, D5, AMD Radeon Vega 8 Graphics
|
||||||
|
15DD, D6, AMD Radeon Vega 11 Graphics
|
||||||
|
15DD, D7, AMD Radeon Vega 8 Graphics
|
||||||
|
15DD, D8, AMD Radeon Vega 3 Graphics
|
||||||
|
15DD, D9, AMD Radeon Vega 6 Graphics
|
||||||
|
15DD, E1, AMD Radeon Vega 3 Graphics
|
||||||
|
15DD, E2, AMD Radeon Vega 3 Graphics
|
||||||
|
163F, AE, AMD Custom GPU 0405
|
||||||
|
163F, E1, AMD Custom GPU 0405
|
||||||
|
164E, D8, AMD Radeon 610M
|
||||||
|
164E, D9, AMD Radeon 610M
|
||||||
|
164E, DA, AMD Radeon 610M
|
||||||
|
164E, DB, AMD Radeon 610M
|
||||||
|
164E, DC, AMD Radeon 610M
|
||||||
|
1681, 06, AMD Radeon 680M
|
||||||
|
1681, 07, AMD Radeon 660M
|
||||||
|
1681, 0A, AMD Radeon 680M
|
||||||
|
1681, 0B, AMD Radeon 660M
|
||||||
|
1681, C7, AMD Radeon 680M
|
||||||
|
1681, C8, AMD Radeon 680M
|
||||||
|
1681, C9, AMD Radeon 660M
|
||||||
|
1900, 01, AMD Radeon 780M Graphics
|
||||||
|
1900, 02, AMD Radeon 760M Graphics
|
||||||
|
1900, 03, AMD Radeon 780M Graphics
|
||||||
|
1900, 04, AMD Radeon 760M Graphics
|
||||||
|
1900, 05, AMD Radeon 780M Graphics
|
||||||
|
1900, 06, AMD Radeon 780M Graphics
|
||||||
|
1900, 07, AMD Radeon 760M Graphics
|
||||||
|
1900, B0, AMD Radeon 780M Graphics
|
||||||
|
1900, B1, AMD Radeon 780M Graphics
|
||||||
|
1900, B2, AMD Radeon 780M Graphics
|
||||||
|
1900, B3, AMD Radeon 780M Graphics
|
||||||
|
1900, B4, AMD Radeon 780M Graphics
|
||||||
|
1900, B5, AMD Radeon 780M Graphics
|
||||||
|
1900, B6, AMD Radeon 780M Graphics
|
||||||
|
1900, B7, AMD Radeon 760M Graphics
|
||||||
|
1900, B8, AMD Radeon 760M Graphics
|
||||||
|
1900, B9, AMD Radeon 780M Graphics
|
||||||
|
1900, BA, AMD Radeon 780M Graphics
|
||||||
|
1900, BB, AMD Radeon 780M Graphics
|
||||||
|
1900, C0, AMD Radeon 780M Graphics
|
||||||
|
1900, C1, AMD Radeon 760M Graphics
|
||||||
|
1900, C2, AMD Radeon 780M Graphics
|
||||||
|
1900, C3, AMD Radeon 760M Graphics
|
||||||
|
1900, C4, AMD Radeon 780M Graphics
|
||||||
|
1900, C5, AMD Radeon 780M Graphics
|
||||||
|
1900, C6, AMD Radeon 760M Graphics
|
||||||
|
1900, C7, AMD Radeon 780M Graphics
|
||||||
|
1900, C8, AMD Radeon 760M Graphics
|
||||||
|
1900, C9, AMD Radeon 780M Graphics
|
||||||
|
1900, CA, AMD Radeon 760M Graphics
|
||||||
|
1900, CB, AMD Radeon 780M Graphics
|
||||||
|
1900, CC, AMD Radeon 780M Graphics
|
||||||
|
1900, CD, AMD Radeon 760M Graphics
|
||||||
|
1900, CE, AMD Radeon 780M Graphics
|
||||||
|
1900, CF, AMD Radeon 760M Graphics
|
||||||
|
1900, D0, AMD Radeon 780M Graphics
|
||||||
|
1900, D1, AMD Radeon 760M Graphics
|
||||||
|
1900, D2, AMD Radeon 780M Graphics
|
||||||
|
1900, D3, AMD Radeon 760M Graphics
|
||||||
|
1900, D4, AMD Radeon 780M Graphics
|
||||||
|
1900, D5, AMD Radeon 780M Graphics
|
||||||
|
1900, D6, AMD Radeon 760M Graphics
|
||||||
|
1900, D7, AMD Radeon 780M Graphics
|
||||||
|
1900, D8, AMD Radeon 760M Graphics
|
||||||
|
1900, D9, AMD Radeon 780M Graphics
|
||||||
|
1900, DA, AMD Radeon 760M Graphics
|
||||||
|
1900, DB, AMD Radeon 780M Graphics
|
||||||
|
1900, DC, AMD Radeon 780M Graphics
|
||||||
|
1900, DD, AMD Radeon 760M Graphics
|
||||||
|
1900, DE, AMD Radeon 780M Graphics
|
||||||
|
1900, DF, AMD Radeon 760M Graphics
|
||||||
|
1900, F0, AMD Radeon 780M Graphics
|
||||||
|
1900, F1, AMD Radeon 780M Graphics
|
||||||
|
1900, F2, AMD Radeon 780M Graphics
|
||||||
|
1901, C1, AMD Radeon 740M Graphics
|
||||||
|
1901, C2, AMD Radeon 740M Graphics
|
||||||
|
1901, C3, AMD Radeon 740M Graphics
|
||||||
|
1901, C6, AMD Radeon 740M Graphics
|
||||||
|
1901, C7, AMD Radeon 740M Graphics
|
||||||
|
1901, C8, AMD Radeon 740M Graphics
|
||||||
|
1901, C9, AMD Radeon 740M Graphics
|
||||||
|
1901, CA, AMD Radeon 740M Graphics
|
||||||
|
1901, D1, AMD Radeon 740M Graphics
|
||||||
|
1901, D2, AMD Radeon 740M Graphics
|
||||||
|
1901, D3, AMD Radeon 740M Graphics
|
||||||
|
1901, D4, AMD Radeon 740M Graphics
|
||||||
|
1901, D5, AMD Radeon 740M Graphics
|
||||||
|
1901, D6, AMD Radeon 740M Graphics
|
||||||
|
1901, D7, AMD Radeon 740M Graphics
|
||||||
|
1901, D8, AMD Radeon 740M Graphics
|
||||||
|
6600, 00, AMD Radeon HD 8600 / 8700M
|
||||||
|
6600, 81, AMD Radeon R7 M370
|
||||||
|
6601, 00, AMD Radeon HD 8500M / 8700M
|
||||||
|
6604, 00, AMD Radeon R7 M265 Series
|
||||||
|
6604, 81, AMD Radeon R7 M350
|
||||||
|
6605, 00, AMD Radeon R7 M260 Series
|
||||||
|
6605, 81, AMD Radeon R7 M340
|
||||||
|
6606, 00, AMD Radeon HD 8790M
|
||||||
|
6607, 00, AMD Radeon R5 M240
|
||||||
|
6608, 00, AMD FirePro W2100
|
||||||
|
6610, 00, AMD Radeon R7 200 Series
|
||||||
|
6610, 81, AMD Radeon R7 350
|
||||||
|
6610, 83, AMD Radeon R5 340
|
||||||
|
6610, 87, AMD Radeon R7 200 Series
|
||||||
|
6611, 00, AMD Radeon R7 200 Series
|
||||||
|
6611, 87, AMD Radeon R7 200 Series
|
||||||
|
6613, 00, AMD Radeon R7 200 Series
|
||||||
|
6617, 00, AMD Radeon R7 240 Series
|
||||||
|
6617, 87, AMD Radeon R7 200 Series
|
||||||
|
6617, C7, AMD Radeon R7 240 Series
|
||||||
|
6640, 00, AMD Radeon HD 8950
|
||||||
|
6640, 80, AMD Radeon R9 M380
|
||||||
|
6646, 00, AMD Radeon R9 M280X
|
||||||
|
6646, 80, AMD Radeon R9 M385
|
||||||
|
6646, 80, AMD Radeon R9 M470X
|
||||||
|
6647, 00, AMD Radeon R9 M200X Series
|
||||||
|
6647, 80, AMD Radeon R9 M380
|
||||||
|
6649, 00, AMD FirePro W5100
|
||||||
|
6658, 00, AMD Radeon R7 200 Series
|
||||||
|
665C, 00, AMD Radeon HD 7700 Series
|
||||||
|
665D, 00, AMD Radeon R7 200 Series
|
||||||
|
665F, 81, AMD Radeon R7 360 Series
|
||||||
|
6660, 00, AMD Radeon HD 8600M Series
|
||||||
|
6660, 81, AMD Radeon R5 M335
|
||||||
|
6660, 83, AMD Radeon R5 M330
|
||||||
|
6663, 00, AMD Radeon HD 8500M Series
|
||||||
|
6663, 83, AMD Radeon R5 M320
|
||||||
|
6664, 00, AMD Radeon R5 M200 Series
|
||||||
|
6665, 00, AMD Radeon R5 M230 Series
|
||||||
|
6665, 83, AMD Radeon R5 M320
|
||||||
|
6665, C3, AMD Radeon R5 M435
|
||||||
|
6666, 00, AMD Radeon R5 M200 Series
|
||||||
|
6667, 00, AMD Radeon R5 M200 Series
|
||||||
|
666F, 00, AMD Radeon HD 8500M
|
||||||
|
66A1, 02, AMD Instinct MI60 / MI50
|
||||||
|
66A1, 06, AMD Radeon Pro VII
|
||||||
|
66AF, C1, AMD Radeon VII
|
||||||
|
6780, 00, AMD FirePro W9000
|
||||||
|
6784, 00, ATI FirePro V (FireGL V) Graphics Adapter
|
||||||
|
6788, 00, ATI FirePro V (FireGL V) Graphics Adapter
|
||||||
|
678A, 00, AMD FirePro W8000
|
||||||
|
6798, 00, AMD Radeon R9 200 / HD 7900 Series
|
||||||
|
6799, 00, AMD Radeon HD 7900 Series
|
||||||
|
679A, 00, AMD Radeon HD 7900 Series
|
||||||
|
679B, 00, AMD Radeon HD 7900 Series
|
||||||
|
679E, 00, AMD Radeon HD 7800 Series
|
||||||
|
67A0, 00, AMD Radeon FirePro W9100
|
||||||
|
67A1, 00, AMD Radeon FirePro W8100
|
||||||
|
67B0, 00, AMD Radeon R9 200 Series
|
||||||
|
67B0, 80, AMD Radeon R9 390 Series
|
||||||
|
67B1, 00, AMD Radeon R9 200 Series
|
||||||
|
67B1, 80, AMD Radeon R9 390 Series
|
||||||
|
67B9, 00, AMD Radeon R9 200 Series
|
||||||
|
67C0, 00, AMD Radeon Pro WX 7100 Graphics
|
||||||
|
67C0, 80, AMD Radeon E9550
|
||||||
|
67C2, 01, AMD Radeon Pro V7350x2
|
||||||
|
67C2, 02, AMD Radeon Pro V7300X
|
||||||
|
67C4, 00, AMD Radeon Pro WX 7100 Graphics
|
||||||
|
67C4, 80, AMD Radeon E9560 / E9565 Graphics
|
||||||
|
67C7, 00, AMD Radeon Pro WX 5100 Graphics
|
||||||
|
67C7, 80, AMD Radeon E9390 Graphics
|
||||||
|
67D0, 01, AMD Radeon Pro V7350x2
|
||||||
|
67D0, 02, AMD Radeon Pro V7300X
|
||||||
|
67DF, C0, AMD Radeon Pro 580X
|
||||||
|
67DF, C1, AMD Radeon RX 580 Series
|
||||||
|
67DF, C2, AMD Radeon RX 570 Series
|
||||||
|
67DF, C3, AMD Radeon RX 580 Series
|
||||||
|
67DF, C4, AMD Radeon RX 480 Graphics
|
||||||
|
67DF, C5, AMD Radeon RX 470 Graphics
|
||||||
|
67DF, C6, AMD Radeon RX 570 Series
|
||||||
|
67DF, C7, AMD Radeon RX 480 Graphics
|
||||||
|
67DF, CF, AMD Radeon RX 470 Graphics
|
||||||
|
67DF, D7, AMD Radeon RX 470 Graphics
|
||||||
|
67DF, E0, AMD Radeon RX 470 Series
|
||||||
|
67DF, E1, AMD Radeon RX 590 Series
|
||||||
|
67DF, E3, AMD Radeon RX Series
|
||||||
|
67DF, E7, AMD Radeon RX 580 Series
|
||||||
|
67DF, EB, AMD Radeon Pro 580X
|
||||||
|
67DF, EF, AMD Radeon RX 570 Series
|
||||||
|
67DF, F7, AMD Radeon RX P30PH
|
||||||
|
67DF, FF, AMD Radeon RX 470 Series
|
||||||
|
67E0, 00, AMD Radeon Pro WX Series
|
||||||
|
67E3, 00, AMD Radeon Pro WX 4100
|
||||||
|
67E8, 00, AMD Radeon Pro WX Series
|
||||||
|
67E8, 01, AMD Radeon Pro WX Series
|
||||||
|
67E8, 80, AMD Radeon E9260 Graphics
|
||||||
|
67EB, 00, AMD Radeon Pro V5300X
|
||||||
|
67EF, C0, AMD Radeon RX Graphics
|
||||||
|
67EF, C1, AMD Radeon RX 460 Graphics
|
||||||
|
67EF, C2, AMD Radeon Pro Series
|
||||||
|
67EF, C3, AMD Radeon RX Series
|
||||||
|
67EF, C5, AMD Radeon RX 460 Graphics
|
||||||
|
67EF, C7, AMD Radeon RX Graphics
|
||||||
|
67EF, CF, AMD Radeon RX 460 Graphics
|
||||||
|
67EF, E0, AMD Radeon RX 560 Series
|
||||||
|
67EF, E1, AMD Radeon RX Series
|
||||||
|
67EF, E2, AMD Radeon RX 560X
|
||||||
|
67EF, E3, AMD Radeon RX Series
|
||||||
|
67EF, E5, AMD Radeon RX 560 Series
|
||||||
|
67EF, E7, AMD Radeon RX 560 Series
|
||||||
|
67EF, EF, AMD Radeon 550 Series
|
||||||
|
67EF, FF, AMD Radeon RX 460 Graphics
|
||||||
|
67FF, C0, AMD Radeon Pro 465
|
||||||
|
67FF, C1, AMD Radeon RX 560 Series
|
||||||
|
67FF, CF, AMD Radeon RX 560 Series
|
||||||
|
67FF, EF, AMD Radeon RX 560 Series
|
||||||
|
67FF, FF, AMD Radeon RX 550 Series
|
||||||
|
6800, 00, AMD Radeon HD 7970M
|
||||||
|
6801, 00, AMD Radeon HD 8970M
|
||||||
|
6806, 00, AMD Radeon R9 M290X
|
||||||
|
6808, 00, AMD FirePro W7000
|
||||||
|
6808, 00, ATI FirePro V (FireGL V) Graphics Adapter
|
||||||
|
6809, 00, ATI FirePro W5000
|
||||||
|
6810, 00, AMD Radeon R9 200 Series
|
||||||
|
6810, 81, AMD Radeon R9 370 Series
|
||||||
|
6811, 00, AMD Radeon R9 200 Series
|
||||||
|
6811, 81, AMD Radeon R7 370 Series
|
||||||
|
6818, 00, AMD Radeon HD 7800 Series
|
||||||
|
6819, 00, AMD Radeon HD 7800 Series
|
||||||
|
6820, 00, AMD Radeon R9 M275X
|
||||||
|
6820, 81, AMD Radeon R9 M375
|
||||||
|
6820, 83, AMD Radeon R9 M375X
|
||||||
|
6821, 00, AMD Radeon R9 M200X Series
|
||||||
|
6821, 83, AMD Radeon R9 M370X
|
||||||
|
6821, 87, AMD Radeon R7 M380
|
||||||
|
6822, 00, AMD Radeon E8860
|
||||||
|
6823, 00, AMD Radeon R9 M200X Series
|
||||||
|
6825, 00, AMD Radeon HD 7800M Series
|
||||||
|
6826, 00, AMD Radeon HD 7700M Series
|
||||||
|
6827, 00, AMD Radeon HD 7800M Series
|
||||||
|
6828, 00, AMD FirePro W600
|
||||||
|
682B, 00, AMD Radeon HD 8800M Series
|
||||||
|
682B, 87, AMD Radeon R9 M360
|
||||||
|
682C, 00, AMD FirePro W4100
|
||||||
|
682D, 00, AMD Radeon HD 7700M Series
|
||||||
|
682F, 00, AMD Radeon HD 7700M Series
|
||||||
|
6830, 00, AMD Radeon 7800M Series
|
||||||
|
6831, 00, AMD Radeon 7700M Series
|
||||||
|
6835, 00, AMD Radeon R7 Series / HD 9000 Series
|
||||||
|
6837, 00, AMD Radeon HD 7700 Series
|
||||||
|
683D, 00, AMD Radeon HD 7700 Series
|
||||||
|
683F, 00, AMD Radeon HD 7700 Series
|
||||||
|
684C, 00, ATI FirePro V (FireGL V) Graphics Adapter
|
||||||
|
6860, 00, AMD Radeon Instinct MI25
|
||||||
|
6860, 01, AMD Radeon Instinct MI25
|
||||||
|
6860, 02, AMD Radeon Instinct MI25
|
||||||
|
6860, 03, AMD Radeon Pro V340
|
||||||
|
6860, 04, AMD Radeon Instinct MI25x2
|
||||||
|
6860, 07, AMD Radeon Pro V320
|
||||||
|
6861, 00, AMD Radeon Pro WX 9100
|
||||||
|
6862, 00, AMD Radeon Pro SSG
|
||||||
|
6863, 00, AMD Radeon Vega Frontier Edition
|
||||||
|
6864, 03, AMD Radeon Pro V340
|
||||||
|
6864, 04, AMD Radeon Instinct MI25x2
|
||||||
|
6864, 05, AMD Radeon Pro V340
|
||||||
|
6868, 00, AMD Radeon Pro WX 8200
|
||||||
|
686C, 00, AMD Radeon Instinct MI25 MxGPU
|
||||||
|
686C, 01, AMD Radeon Instinct MI25 MxGPU
|
||||||
|
686C, 02, AMD Radeon Instinct MI25 MxGPU
|
||||||
|
686C, 03, AMD Radeon Pro V340 MxGPU
|
||||||
|
686C, 04, AMD Radeon Instinct MI25x2 MxGPU
|
||||||
|
686C, 05, AMD Radeon Pro V340L MxGPU
|
||||||
|
686C, 06, AMD Radeon Instinct MI25 MxGPU
|
||||||
|
687F, 01, AMD Radeon RX Vega
|
||||||
|
687F, C0, AMD Radeon RX Vega
|
||||||
|
687F, C1, AMD Radeon RX Vega
|
||||||
|
687F, C3, AMD Radeon RX Vega
|
||||||
|
687F, C7, AMD Radeon RX Vega
|
||||||
|
6900, 00, AMD Radeon R7 M260
|
||||||
|
6900, 81, AMD Radeon R7 M360
|
||||||
|
6900, 83, AMD Radeon R7 M340
|
||||||
|
6900, C1, AMD Radeon R5 M465 Series
|
||||||
|
6900, C3, AMD Radeon R5 M445 Series
|
||||||
|
6900, D1, AMD Radeon 530 Series
|
||||||
|
6900, D3, AMD Radeon 530 Series
|
||||||
|
6901, 00, AMD Radeon R5 M255
|
||||||
|
6902, 00, AMD Radeon Series
|
||||||
|
6907, 00, AMD Radeon R5 M255
|
||||||
|
6907, 87, AMD Radeon R5 M315
|
||||||
|
6920, 00, AMD Radeon R9 M395X
|
||||||
|
6920, 01, AMD Radeon R9 M390X
|
||||||
|
6921, 00, AMD Radeon R9 M390X
|
||||||
|
6929, 00, AMD FirePro S7150
|
||||||
|
6929, 01, AMD FirePro S7100X
|
||||||
|
692B, 00, AMD FirePro W7100
|
||||||
|
6938, 00, AMD Radeon R9 200 Series
|
||||||
|
6938, F0, AMD Radeon R9 200 Series
|
||||||
|
6938, F1, AMD Radeon R9 380 Series
|
||||||
|
6939, 00, AMD Radeon R9 200 Series
|
||||||
|
6939, F0, AMD Radeon R9 200 Series
|
||||||
|
6939, F1, AMD Radeon R9 380 Series
|
||||||
|
694C, C0, AMD Radeon RX Vega M GH Graphics
|
||||||
|
694E, C0, AMD Radeon RX Vega M GL Graphics
|
||||||
|
6980, 00, AMD Radeon Pro WX 3100
|
||||||
|
6981, 00, AMD Radeon Pro WX 3200 Series
|
||||||
|
6981, 01, AMD Radeon Pro WX 3200 Series
|
||||||
|
6981, 10, AMD Radeon Pro WX 3200 Series
|
||||||
|
6985, 00, AMD Radeon Pro WX 3100
|
||||||
|
6986, 00, AMD Radeon Pro WX 2100
|
||||||
|
6987, 80, AMD Embedded Radeon E9171
|
||||||
|
6987, C0, AMD Radeon 550X Series
|
||||||
|
6987, C1, AMD Radeon RX 640
|
||||||
|
6987, C3, AMD Radeon 540X Series
|
||||||
|
6987, C7, AMD Radeon 540
|
||||||
|
6995, 00, AMD Radeon Pro WX 2100
|
||||||
|
6997, 00, AMD Radeon Pro WX 2100
|
||||||
|
699F, 81, AMD Embedded Radeon E9170 Series
|
||||||
|
699F, C0, AMD Radeon 500 Series
|
||||||
|
699F, C1, AMD Radeon 540 Series
|
||||||
|
699F, C3, AMD Radeon 500 Series
|
||||||
|
699F, C7, AMD Radeon RX 550 / 550 Series
|
||||||
|
699F, C9, AMD Radeon 540
|
||||||
|
6FDF, E7, AMD Radeon RX 590 GME
|
||||||
|
6FDF, EF, AMD Radeon RX 580 2048SP
|
||||||
|
7300, C1, AMD FirePro S9300 x2
|
||||||
|
7300, C8, AMD Radeon R9 Fury Series
|
||||||
|
7300, C9, AMD Radeon Pro Duo
|
||||||
|
7300, CA, AMD Radeon R9 Fury Series
|
||||||
|
7300, CB, AMD Radeon R9 Fury Series
|
||||||
|
7312, 00, AMD Radeon Pro W5700
|
||||||
|
731E, C6, AMD Radeon RX 5700XTB
|
||||||
|
731E, C7, AMD Radeon RX 5700B
|
||||||
|
731F, C0, AMD Radeon RX 5700 XT 50th Anniversary
|
||||||
|
731F, C1, AMD Radeon RX 5700 XT
|
||||||
|
731F, C2, AMD Radeon RX 5600M
|
||||||
|
731F, C3, AMD Radeon RX 5700M
|
||||||
|
731F, C4, AMD Radeon RX 5700
|
||||||
|
731F, C5, AMD Radeon RX 5700 XT
|
||||||
|
731F, CA, AMD Radeon RX 5600 XT
|
||||||
|
731F, CB, AMD Radeon RX 5600 OEM
|
||||||
|
7340, C1, AMD Radeon RX 5500M
|
||||||
|
7340, C3, AMD Radeon RX 5300M
|
||||||
|
7340, C5, AMD Radeon RX 5500 XT
|
||||||
|
7340, C7, AMD Radeon RX 5500
|
||||||
|
7340, C9, AMD Radeon RX 5500XTB
|
||||||
|
7340, CF, AMD Radeon RX 5300
|
||||||
|
7341, 00, AMD Radeon Pro W5500
|
||||||
|
7347, 00, AMD Radeon Pro W5500M
|
||||||
|
7360, 41, AMD Radeon Pro 5600M
|
||||||
|
7360, C3, AMD Radeon Pro V520
|
||||||
|
7362, C1, AMD Radeon Pro V540
|
||||||
|
7362, C3, AMD Radeon Pro V520
|
||||||
|
738C, 01, AMD Instinct MI100
|
||||||
|
73A1, 00, AMD Radeon Pro V620
|
||||||
|
73A3, 00, AMD Radeon Pro W6800
|
||||||
|
73A5, C0, AMD Radeon RX 6950 XT
|
||||||
|
73AE, 00, AMD Radeon Pro V620 MxGPU
|
||||||
|
73AF, C0, AMD Radeon RX 6900 XT
|
||||||
|
73BF, C0, AMD Radeon RX 6900 XT
|
||||||
|
73BF, C1, AMD Radeon RX 6800 XT
|
||||||
|
73BF, C3, AMD Radeon RX 6800
|
||||||
|
73DF, C0, AMD Radeon RX 6750 XT
|
||||||
|
73DF, C1, AMD Radeon RX 6700 XT
|
||||||
|
73DF, C2, AMD Radeon RX 6800M
|
||||||
|
73DF, C3, AMD Radeon RX 6800M
|
||||||
|
73DF, C5, AMD Radeon RX 6700 XT
|
||||||
|
73DF, CF, AMD Radeon RX 6700M
|
||||||
|
73DF, D5, AMD Radeon RX 6750 GRE 12GB
|
||||||
|
73DF, D7, AMD TDC-235
|
||||||
|
73DF, DF, AMD Radeon RX 6700
|
||||||
|
73DF, E5, AMD Radeon RX 6750 GRE 12GB
|
||||||
|
73DF, FF, AMD Radeon RX 6700
|
||||||
|
73E0, 00, AMD Radeon RX 6600M
|
||||||
|
73E1, 00, AMD Radeon Pro W6600M
|
||||||
|
73E3, 00, AMD Radeon Pro W6600
|
||||||
|
73EF, C0, AMD Radeon RX 6800S
|
||||||
|
73EF, C1, AMD Radeon RX 6650 XT
|
||||||
|
73EF, C2, AMD Radeon RX 6700S
|
||||||
|
73EF, C3, AMD Radeon RX 6650M
|
||||||
|
73EF, C4, AMD Radeon RX 6650M XT
|
||||||
|
73FF, C1, AMD Radeon RX 6600 XT
|
||||||
|
73FF, C3, AMD Radeon RX 6600M
|
||||||
|
73FF, C7, AMD Radeon RX 6600
|
||||||
|
73FF, CB, AMD Radeon RX 6600S
|
||||||
|
73FF, CF, AMD Radeon RX 6600 LE
|
||||||
|
73FF, DF, AMD Radeon RX 6750 GRE 10GB
|
||||||
|
7408, 00, AMD Instinct MI250X
|
||||||
|
740C, 01, AMD Instinct MI250X / MI250
|
||||||
|
740F, 02, AMD Instinct MI210
|
||||||
|
7421, 00, AMD Radeon Pro W6500M
|
||||||
|
7422, 00, AMD Radeon Pro W6400
|
||||||
|
7423, 00, AMD Radeon Pro W6300M
|
||||||
|
7423, 01, AMD Radeon Pro W6300
|
||||||
|
7424, 00, AMD Radeon RX 6300
|
||||||
|
743F, C1, AMD Radeon RX 6500 XT
|
||||||
|
743F, C3, AMD Radeon RX 6500
|
||||||
|
743F, C3, AMD Radeon RX 6500M
|
||||||
|
743F, C7, AMD Radeon RX 6400
|
||||||
|
743F, C8, AMD Radeon RX 6500M
|
||||||
|
743F, CC, AMD Radeon 6550S
|
||||||
|
743F, CE, AMD Radeon RX 6450M
|
||||||
|
743F, CF, AMD Radeon RX 6300M
|
||||||
|
743F, D3, AMD Radeon RX 6550M
|
||||||
|
743F, D7, AMD Radeon RX 6400
|
||||||
|
7448, 00, AMD Radeon Pro W7900
|
||||||
|
7449, 00, AMD Radeon Pro W7800 48GB
|
||||||
|
744A, 00, AMD Radeon Pro W7900 Dual Slot
|
||||||
|
744B, 00, AMD Radeon Pro W7900D
|
||||||
|
744C, C8, AMD Radeon RX 7900 XTX
|
||||||
|
744C, CC, AMD Radeon RX 7900 XT
|
||||||
|
744C, CE, AMD Radeon RX 7900 GRE
|
||||||
|
744C, CF, AMD Radeon RX 7900M
|
||||||
|
745E, CC, AMD Radeon Pro W7800
|
||||||
|
7460, 00, AMD Radeon Pro V710
|
||||||
|
7461, 00, AMD Radeon Pro V710 MxGPU
|
||||||
|
7470, 00, AMD Radeon Pro W7700
|
||||||
|
747E, C8, AMD Radeon RX 7800 XT
|
||||||
|
747E, D8, AMD Radeon RX 7800M
|
||||||
|
747E, DB, AMD Radeon RX 7700
|
||||||
|
747E, FF, AMD Radeon RX 7700 XT
|
||||||
|
7480, 00, AMD Radeon Pro W7600
|
||||||
|
7480, C0, AMD Radeon RX 7600 XT
|
||||||
|
7480, C1, AMD Radeon RX 7700S
|
||||||
|
7480, C2, AMD Radeon RX 7650 GRE
|
||||||
|
7480, C3, AMD Radeon RX 7600S
|
||||||
|
7480, C7, AMD Radeon RX 7600M XT
|
||||||
|
7480, CF, AMD Radeon RX 7600
|
||||||
|
7481, C7, AMD Steam Machine
|
||||||
|
7483, CF, AMD Radeon RX 7600M
|
||||||
|
7489, 00, AMD Radeon Pro W7500
|
||||||
|
7499, 00, AMD Radeon Pro W7400
|
||||||
|
7499, C0, AMD Radeon RX 7400
|
||||||
|
7499, C1, AMD Radeon RX 7300
|
||||||
|
74A0, 00, AMD Instinct MI300A
|
||||||
|
74A1, 00, AMD Instinct MI300X
|
||||||
|
74A2, 00, AMD Instinct MI308X
|
||||||
|
74A5, 00, AMD Instinct MI325X
|
||||||
|
74A8, 00, AMD Instinct MI308X HF
|
||||||
|
74A9, 00, AMD Instinct MI300X HF
|
||||||
|
74B5, 00, AMD Instinct MI300X VF
|
||||||
|
74B6, 00, AMD Instinct MI308X
|
||||||
|
74BD, 00, AMD Instinct MI300X HF
|
||||||
|
7550, C0, AMD Radeon RX 9070 XT
|
||||||
|
7550, C2, AMD Radeon RX 9070 GRE
|
||||||
|
7550, C3, AMD Radeon RX 9070
|
||||||
|
7551, C0, AMD Radeon AI PRO R9700
|
||||||
|
7590, C0, AMD Radeon RX 9060 XT
|
||||||
|
7590, C7, AMD Radeon RX 9060
|
||||||
|
75A0, C0, AMD Instinct MI350X
|
||||||
|
75A3, C0, AMD Instinct MI355X
|
||||||
|
75B0, C0, AMD Instinct MI350X VF
|
||||||
|
75B3, C0, AMD Instinct MI355X VF
|
||||||
|
9830, 00, AMD Radeon HD 8400 / R3 Series
|
||||||
|
9831, 00, AMD Radeon HD 8400E
|
||||||
|
9832, 00, AMD Radeon HD 8330
|
||||||
|
9833, 00, AMD Radeon HD 8330E
|
||||||
|
9834, 00, AMD Radeon HD 8210
|
||||||
|
9835, 00, AMD Radeon HD 8210E
|
||||||
|
9836, 00, AMD Radeon HD 8200 / R3 Series
|
||||||
|
9837, 00, AMD Radeon HD 8280E
|
||||||
|
9838, 00, AMD Radeon HD 8200 / R3 series
|
||||||
|
9839, 00, AMD Radeon HD 8180
|
||||||
|
983D, 00, AMD Radeon HD 8250
|
||||||
|
9850, 00, AMD Radeon R3 Graphics
|
||||||
|
9850, 03, AMD Radeon R3 Graphics
|
||||||
|
9850, 40, AMD Radeon R2 Graphics
|
||||||
|
9850, 45, AMD Radeon R3 Graphics
|
||||||
|
9851, 00, AMD Radeon R4 Graphics
|
||||||
|
9851, 01, AMD Radeon R5E Graphics
|
||||||
|
9851, 05, AMD Radeon R5 Graphics
|
||||||
|
9851, 06, AMD Radeon R5E Graphics
|
||||||
|
9851, 40, AMD Radeon R4 Graphics
|
||||||
|
9851, 45, AMD Radeon R5 Graphics
|
||||||
|
9852, 00, AMD Radeon R2 Graphics
|
||||||
|
9852, 40, AMD Radeon E1 Graphics
|
||||||
|
9853, 00, AMD Radeon R2 Graphics
|
||||||
|
9853, 01, AMD Radeon R4E Graphics
|
||||||
|
9853, 03, AMD Radeon R2 Graphics
|
||||||
|
9853, 05, AMD Radeon R1E Graphics
|
||||||
|
9853, 06, AMD Radeon R1E Graphics
|
||||||
|
9853, 07, AMD Radeon R1E Graphics
|
||||||
|
9853, 08, AMD Radeon R1E Graphics
|
||||||
|
9853, 40, AMD Radeon R2 Graphics
|
||||||
|
9854, 00, AMD Radeon R3 Graphics
|
||||||
|
9854, 01, AMD Radeon R3E Graphics
|
||||||
|
9854, 02, AMD Radeon R3 Graphics
|
||||||
|
9854, 05, AMD Radeon R2 Graphics
|
||||||
|
9854, 06, AMD Radeon R4 Graphics
|
||||||
|
9854, 07, AMD Radeon R3 Graphics
|
||||||
|
9855, 02, AMD Radeon R6 Graphics
|
||||||
|
9855, 05, AMD Radeon R4 Graphics
|
||||||
|
9856, 00, AMD Radeon R2 Graphics
|
||||||
|
9856, 01, AMD Radeon R2E Graphics
|
||||||
|
9856, 02, AMD Radeon R2 Graphics
|
||||||
|
9856, 05, AMD Radeon R1E Graphics
|
||||||
|
9856, 06, AMD Radeon R2 Graphics
|
||||||
|
9856, 07, AMD Radeon R1E Graphics
|
||||||
|
9856, 08, AMD Radeon R1E Graphics
|
||||||
|
9856, 13, AMD Radeon R1E Graphics
|
||||||
|
9874, 81, AMD Radeon R6 Graphics
|
||||||
|
9874, 84, AMD Radeon R7 Graphics
|
||||||
|
9874, 85, AMD Radeon R6 Graphics
|
||||||
|
9874, 87, AMD Radeon R5 Graphics
|
||||||
|
9874, 88, AMD Radeon R7E Graphics
|
||||||
|
9874, 89, AMD Radeon R6E Graphics
|
||||||
|
9874, C4, AMD Radeon R7 Graphics
|
||||||
|
9874, C5, AMD Radeon R6 Graphics
|
||||||
|
9874, C6, AMD Radeon R6 Graphics
|
||||||
|
9874, C7, AMD Radeon R5 Graphics
|
||||||
|
9874, C8, AMD Radeon R7 Graphics
|
||||||
|
9874, C9, AMD Radeon R7 Graphics
|
||||||
|
9874, CA, AMD Radeon R5 Graphics
|
||||||
|
9874, CB, AMD Radeon R5 Graphics
|
||||||
|
9874, CC, AMD Radeon R7 Graphics
|
||||||
|
9874, CD, AMD Radeon R7 Graphics
|
||||||
|
9874, CE, AMD Radeon R5 Graphics
|
||||||
|
9874, E1, AMD Radeon R7 Graphics
|
||||||
|
9874, E2, AMD Radeon R7 Graphics
|
||||||
|
9874, E3, AMD Radeon R7 Graphics
|
||||||
|
9874, E4, AMD Radeon R7 Graphics
|
||||||
|
9874, E5, AMD Radeon R5 Graphics
|
||||||
|
9874, E6, AMD Radeon R5 Graphics
|
||||||
|
98E4, 80, AMD Radeon R5E Graphics
|
||||||
|
98E4, 81, AMD Radeon R4E Graphics
|
||||||
|
98E4, 83, AMD Radeon R2E Graphics
|
||||||
|
98E4, 84, AMD Radeon R2E Graphics
|
||||||
|
98E4, 86, AMD Radeon R1E Graphics
|
||||||
|
98E4, C0, AMD Radeon R4 Graphics
|
||||||
|
98E4, C1, AMD Radeon R5 Graphics
|
||||||
|
98E4, C2, AMD Radeon R4 Graphics
|
||||||
|
98E4, C4, AMD Radeon R5 Graphics
|
||||||
|
98E4, C6, AMD Radeon R5 Graphics
|
||||||
|
98E4, C8, AMD Radeon R4 Graphics
|
||||||
|
98E4, C9, AMD Radeon R4 Graphics
|
||||||
|
98E4, CA, AMD Radeon R5 Graphics
|
||||||
|
98E4, D0, AMD Radeon R2 Graphics
|
||||||
|
98E4, D1, AMD Radeon R2 Graphics
|
||||||
|
98E4, D2, AMD Radeon R2 Graphics
|
||||||
|
98E4, D4, AMD Radeon R2 Graphics
|
||||||
|
98E4, D9, AMD Radeon R5 Graphics
|
||||||
|
98E4, DA, AMD Radeon R5 Graphics
|
||||||
|
98E4, DB, AMD Radeon R3 Graphics
|
||||||
|
98E4, E1, AMD Radeon R3 Graphics
|
||||||
|
98E4, E2, AMD Radeon R3 Graphics
|
||||||
|
98E4, E9, AMD Radeon R4 Graphics
|
||||||
|
98E4, EA, AMD Radeon R4 Graphics
|
||||||
|
98E4, EB, AMD Radeon R3 Graphics
|
||||||
|
98E4, EB, AMD Radeon R4 Graphics
|
||||||
Reference in New Issue
Block a user