Vendor.cs 3.4 KB

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