Vendor.cs
1 using Silk.NET.Vulkan; 2 using System.Text.RegularExpressions; 3 4 namespace Ryujinx.Graphics.Vulkan 5 { 6 enum Vendor 7 { 8 Amd, 9 ImgTec, 10 Intel, 11 Nvidia, 12 ARM, 13 Broadcom, 14 Qualcomm, 15 Apple, 16 Unknown, 17 } 18 19 static partial class VendorUtils 20 { 21 [GeneratedRegex("Radeon (((HD|R(5|7|9|X)) )?((M?[2-6]\\d{2}(\\D|$))|([7-8]\\d{3}(\\D|$))|Fury|Nano))|(Pro Duo)")] 22 public static partial Regex AmdGcnRegex(); 23 24 [GeneratedRegex("NVIDIA GeForce (R|G)?TX? (\\d{3}\\d?)M?")] 25 public static partial Regex NvidiaConsumerClassRegex(); 26 27 public static Vendor FromId(uint id) 28 { 29 return id switch 30 { 31 0x1002 => Vendor.Amd, 32 0x1010 => Vendor.ImgTec, 33 0x106B => Vendor.Apple, 34 0x10DE => Vendor.Nvidia, 35 0x13B5 => Vendor.ARM, 36 0x14E4 => Vendor.Broadcom, 37 0x8086 => Vendor.Intel, 38 0x5143 => Vendor.Qualcomm, 39 _ => Vendor.Unknown, 40 }; 41 } 42 43 public static string GetNameFromId(uint id) 44 { 45 return id switch 46 { 47 0x1002 => "AMD", 48 0x1010 => "ImgTec", 49 0x106B => "Apple", 50 0x10DE => "NVIDIA", 51 0x13B5 => "ARM", 52 0x14E4 => "Broadcom", 53 0x1AE0 => "Google", 54 0x5143 => "Qualcomm", 55 0x8086 => "Intel", 56 0x10001 => "Vivante", 57 0x10002 => "VeriSilicon", 58 0x10003 => "Kazan", 59 0x10004 => "Codeplay Software Ltd.", 60 0x10005 => "Mesa", 61 0x10006 => "PoCL", 62 _ => $"0x{id:X}", 63 }; 64 } 65 66 public static string GetFriendlyDriverName(DriverId id) 67 { 68 return id switch 69 { 70 DriverId.AmdProprietary => "AMD", 71 DriverId.AmdOpenSource => "AMD (Open)", 72 DriverId.MesaRadv => "RADV", 73 DriverId.NvidiaProprietary => "NVIDIA", 74 DriverId.IntelProprietaryWindows => "Intel", 75 DriverId.IntelOpenSourceMesa => "Intel (Open)", 76 DriverId.ImaginationProprietary => "Imagination", 77 DriverId.QualcommProprietary => "Qualcomm", 78 DriverId.ArmProprietary => "ARM", 79 DriverId.GoogleSwiftshader => "SwiftShader", 80 DriverId.GgpProprietary => "GGP", 81 DriverId.BroadcomProprietary => "Broadcom", 82 DriverId.MesaLlvmpipe => "LLVMpipe", 83 DriverId.Moltenvk => "MoltenVK", 84 DriverId.CoreaviProprietary => "CoreAVI", 85 DriverId.JuiceProprietary => "Juice", 86 DriverId.VerisiliconProprietary => "Verisilicon", 87 DriverId.MesaTurnip => "Turnip", 88 DriverId.MesaV3DV => "V3DV", 89 DriverId.MesaPanvk => "PanVK", 90 DriverId.SamsungProprietary => "Samsung", 91 DriverId.MesaVenus => "Venus", 92 DriverId.MesaDozen => "Dozen", 93 DriverId.MesaNvk => "NVK", 94 DriverId.ImaginationOpenSourceMesa => "Imagination (Open)", 95 DriverId.MesaAgxv => "Honeykrisp", 96 _ => id.ToString(), 97 }; 98 } 99 } 100 }