R/Ryujinx.Graphics.Vulkan/Vendor.cs
2023-01-13 06:04:59 +00:00

59 lines
1.5 KiB
C#

using System.Text.RegularExpressions;
namespace Ryujinx.Graphics.Vulkan
{
enum Vendor
{
Amd,
ImgTec,
Intel,
Nvidia,
ARM,
Qualcomm,
Apple,
Unknown
}
static partial class VendorUtils
{
[GeneratedRegex("Radeon (((HD|R(5|7|9|X)) )?((M?[2-6]\\d{2}(\\D|$))|([7-8]\\d{3}(\\D|$))|Fury|Nano))|(Pro Duo)")]
public static partial Regex AmdGcnRegex();
public static Vendor FromId(uint id)
{
return id switch
{
0x1002 => Vendor.Amd,
0x1010 => Vendor.ImgTec,
0x106B => Vendor.Apple,
0x10DE => Vendor.Nvidia,
0x13B5 => Vendor.ARM,
0x8086 => Vendor.Intel,
0x5143 => Vendor.Qualcomm,
_ => Vendor.Unknown
};
}
public static string GetNameFromId(uint id)
{
return id switch
{
0x1002 => "AMD",
0x1010 => "ImgTec",
0x106B => "Apple",
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}"
};
}
}
}