blob: a9da247e24aeed55e301891654179345079ed4c5 [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,
36
37 kFirstGen9_IntelGpuFamily = kApolloLake_IntelGpuFamily,
38};
39
40GrIntelGpuFamily GrGetIntelGpuFamily(uint32_t deviceID) {
41 // https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units
42 uint32_t maskedID = deviceID & 0xFF00;
43 switch (maskedID) {
44 case 0x0100:
45 switch (deviceID & 0xFFF0) {
46 case 0x0100:
47 case 0x0110:
48 case 0x0120:
49 return kSandyBridge_IntelGpuFamily;
50 case 0x0150:
51 if (deviceID == 0x0155 || deviceID == 0x0157) {
52 return kValleyView_IntelGpuFamily;
53 }
54 if (deviceID == 0x0152 || deviceID == 0x015A) {
55 return kIvyBridge_IntelGpuFamily;
56 }
57 break;
58 case 0x0160:
59 return kIvyBridge_IntelGpuFamily;
60 default:
61 break;
62 }
63 break;
64 case 0x0F00:
65 return kValleyView_IntelGpuFamily;
66 case 0x0400:
67 case 0x0A00:
68 case 0x0D00:
69 return kHaswell_IntelGpuFamily;
70 case 0x2200:
71 return kCherryView_IntelGpuFamily;
72 case 0x1600:
73 return kBroadwell_IntelGpuFamily;
74 case 0x5A00:
75 return kApolloLake_IntelGpuFamily;
76 case 0x1900:
77 return kSkyLake_IntelGpuFamily;
78 case 0x3100:
79 return kGeminiLake_IntelGpuFamily;
80 case 0x5900:
81 return kKabyLake_IntelGpuFamily;
82 case 0x3E00:
83 return kCoffeeLake_IntelGpuFamily;
84 case 0x8A00:
85 return kIceLake_IntelGpuFamily;
86 default:
87 break;
88 }
89 return kUnknown_IntelGpuFamily;
90}
91
92#endif