GrUtil.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * Copyright 2019 Google LLC
  3. *
  4. * Use of this source code is governed by a BSD-style license that can be
  5. * found in the LICENSE file.
  6. */
  7. #ifndef GrUtil_DEFINED
  8. #define GrUtil_DEFINED
  9. #include "include/core/SkTypes.h"
  10. enum GrIntelGpuFamily {
  11. kUnknown_IntelGpuFamily,
  12. // 6th gen
  13. kSandyBridge_IntelGpuFamily,
  14. // 7th gen
  15. kIvyBridge_IntelGpuFamily,
  16. kValleyView_IntelGpuFamily, // aka BayTrail
  17. kHaswell_IntelGpuFamily,
  18. // 8th gen
  19. kCherryView_IntelGpuFamily, // aka Braswell
  20. kBroadwell_IntelGpuFamily,
  21. // 9th gen
  22. kApolloLake_IntelGpuFamily,
  23. kSkyLake_IntelGpuFamily,
  24. kGeminiLake_IntelGpuFamily,
  25. kKabyLake_IntelGpuFamily,
  26. kCoffeeLake_IntelGpuFamily,
  27. // 11th gen
  28. kIceLake_IntelGpuFamily,
  29. kFirstGen9_IntelGpuFamily = kApolloLake_IntelGpuFamily,
  30. };
  31. GrIntelGpuFamily GrGetIntelGpuFamily(uint32_t deviceID) {
  32. // https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units
  33. uint32_t maskedID = deviceID & 0xFF00;
  34. switch (maskedID) {
  35. case 0x0100:
  36. switch (deviceID & 0xFFF0) {
  37. case 0x0100:
  38. case 0x0110:
  39. case 0x0120:
  40. return kSandyBridge_IntelGpuFamily;
  41. case 0x0150:
  42. if (deviceID == 0x0155 || deviceID == 0x0157) {
  43. return kValleyView_IntelGpuFamily;
  44. }
  45. if (deviceID == 0x0152 || deviceID == 0x015A) {
  46. return kIvyBridge_IntelGpuFamily;
  47. }
  48. break;
  49. case 0x0160:
  50. return kIvyBridge_IntelGpuFamily;
  51. default:
  52. break;
  53. }
  54. break;
  55. case 0x0F00:
  56. return kValleyView_IntelGpuFamily;
  57. case 0x0400:
  58. case 0x0A00:
  59. case 0x0D00:
  60. return kHaswell_IntelGpuFamily;
  61. case 0x2200:
  62. return kCherryView_IntelGpuFamily;
  63. case 0x1600:
  64. return kBroadwell_IntelGpuFamily;
  65. case 0x5A00:
  66. return kApolloLake_IntelGpuFamily;
  67. case 0x1900:
  68. return kSkyLake_IntelGpuFamily;
  69. case 0x3100:
  70. return kGeminiLake_IntelGpuFamily;
  71. case 0x5900:
  72. return kKabyLake_IntelGpuFamily;
  73. case 0x3E00:
  74. return kCoffeeLake_IntelGpuFamily;
  75. case 0x8A00:
  76. return kIceLake_IntelGpuFamily;
  77. default:
  78. break;
  79. }
  80. return kUnknown_IntelGpuFamily;
  81. }
  82. #endif