blob: 5412f0b2925ef34e9bbfd58268d9f895d9929e4d [file] [log] [blame]
Brian Osman7fbb3632019-07-19 11:38:57 -04001/*
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
12enum 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,
Brian Osman7fbb3632019-07-19 11:38:57 -040036};
37
38GrIntelGpuFamily 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