aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Vulkan/Vendor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/Vendor.cs')
-rw-r--r--Ryujinx.Graphics.Vulkan/Vendor.cs51
1 files changed, 51 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.Vulkan/Vendor.cs b/Ryujinx.Graphics.Vulkan/Vendor.cs
new file mode 100644
index 00000000..f06211ca
--- /dev/null
+++ b/Ryujinx.Graphics.Vulkan/Vendor.cs
@@ -0,0 +1,51 @@
+using System.Text.RegularExpressions;
+
+namespace Ryujinx.Graphics.Vulkan
+{
+ enum Vendor
+ {
+ Amd,
+ Intel,
+ Nvidia,
+ Qualcomm,
+ Unknown
+ }
+
+ static class VendorUtils
+ {
+ public static Regex AmdGcnRegex = new Regex(@"Radeon (((HD|R(5|7|9|X)) )?((M?[2-6]\d{2}(\D|$))|([7-8]\d{3}(\D|$))|Fury|Nano))|(Pro Duo)");
+
+ public static Vendor FromId(uint id)
+ {
+ return id switch
+ {
+ 0x1002 => Vendor.Amd,
+ 0x10DE => Vendor.Nvidia,
+ 0x8086 => Vendor.Intel,
+ 0x5143 => Vendor.Qualcomm,
+ _ => Vendor.Unknown
+ };
+ }
+
+ public static string GetNameFromId(uint id)
+ {
+ return id switch
+ {
+ 0x1002 => "AMD",
+ 0x1010 => "ImgTec",
+ 0x10DE => "NVIDIA",
+ 0x13B5 => "ARM",
+ 0x1AE0 => "Google",
+ 0x5143 => "Qualcomm",
+ 0x8086 => "Intel",
+ 0x10001 => "Vivante",
+ 0x10002 => "VeriSilicon",
+ 0x10003 => "Kazan",
+ 0x10004 => "Codeplay Software Ltd.",
+ 0x10005 => "Mesa",
+ 0x10006 => "PoCL",
+ _ => $"0x{id:X}"
+ };
+ }
+ }
+}