• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
10 #include "include/core/SkTypes.h"
11 
12 enum GrIntelGpuFamily {
13     kUnknown_IntelGpuFamily,
14 
15     // 6th gen
16     kSandyBridge_IntelGpuFamily,
17 
18     // 7th gen
19     kIvyBridge_IntelGpuFamily,
20     kValleyView_IntelGpuFamily, // aka BayTrail
21     kHaswell_IntelGpuFamily,
22 
23     // 8th gen
24     kCherryView_IntelGpuFamily, // aka Braswell
25     kBroadwell_IntelGpuFamily,
26 
27     // 9th gen
28     kApolloLake_IntelGpuFamily,
29     kSkyLake_IntelGpuFamily,
30     kGeminiLake_IntelGpuFamily,
31     kKabyLake_IntelGpuFamily,
32     kCoffeeLake_IntelGpuFamily,
33 
34     // 11th gen
35     kIceLake_IntelGpuFamily,
36 };
37 
GrGetIntelGpuFamily(uint32_t deviceID)38 GrIntelGpuFamily GrGetIntelGpuFamily(uint32_t deviceID) {
39     // https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units
40     uint32_t maskedID = deviceID & 0xFF00;
41     switch (maskedID) {
42         case 0x0100:
43             switch (deviceID & 0xFFF0) {
44                 case 0x0100:
45                 case 0x0110:
46                 case 0x0120:
47                     return kSandyBridge_IntelGpuFamily;
48                 case 0x0150:
49                     if (deviceID == 0x0155 || deviceID == 0x0157) {
50                         return kValleyView_IntelGpuFamily;
51                     }
52                     if (deviceID == 0x0152 || deviceID == 0x015A) {
53                         return kIvyBridge_IntelGpuFamily;
54                     }
55                     break;
56                 case 0x0160:
57                     return kIvyBridge_IntelGpuFamily;
58                 default:
59                     break;
60             }
61             break;
62         case 0x0F00:
63             return kValleyView_IntelGpuFamily;
64         case 0x0400:
65         case 0x0A00:
66         case 0x0D00:
67             return kHaswell_IntelGpuFamily;
68         case 0x2200:
69             return kCherryView_IntelGpuFamily;
70         case 0x1600:
71             return kBroadwell_IntelGpuFamily;
72         case 0x5A00:
73             return kApolloLake_IntelGpuFamily;
74         case 0x1900:
75             return kSkyLake_IntelGpuFamily;
76         case 0x3100:
77             return kGeminiLake_IntelGpuFamily;
78         case 0x5900:
79             return kKabyLake_IntelGpuFamily;
80         case 0x3E00:
81             return kCoffeeLake_IntelGpuFamily;
82         case 0x8A00:
83             return kIceLake_IntelGpuFamily;
84         default:
85             break;
86     }
87     return kUnknown_IntelGpuFamily;
88 }
89 
90 #endif
91