| /* |
| * Copyright 2019 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #ifndef GrUtil_DEFINED |
| #define GrUtil_DEFINED |
| |
| #include "include/core/SkTypes.h" |
| |
| enum GrIntelGpuFamily { |
| kUnknown_IntelGpuFamily, |
| |
| // 6th gen |
| kSandyBridge_IntelGpuFamily, |
| |
| // 7th gen |
| kIvyBridge_IntelGpuFamily, |
| kValleyView_IntelGpuFamily, // aka BayTrail |
| kHaswell_IntelGpuFamily, |
| |
| // 8th gen |
| kCherryView_IntelGpuFamily, // aka Braswell |
| kBroadwell_IntelGpuFamily, |
| |
| // 9th gen |
| kApolloLake_IntelGpuFamily, |
| kSkyLake_IntelGpuFamily, |
| kGeminiLake_IntelGpuFamily, |
| kKabyLake_IntelGpuFamily, |
| kCoffeeLake_IntelGpuFamily, |
| |
| // 11th gen |
| kIceLake_IntelGpuFamily, |
| |
| kFirstGen9_IntelGpuFamily = kApolloLake_IntelGpuFamily, |
| }; |
| |
| GrIntelGpuFamily GrGetIntelGpuFamily(uint32_t deviceID) { |
| // https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units |
| uint32_t maskedID = deviceID & 0xFF00; |
| switch (maskedID) { |
| case 0x0100: |
| switch (deviceID & 0xFFF0) { |
| case 0x0100: |
| case 0x0110: |
| case 0x0120: |
| return kSandyBridge_IntelGpuFamily; |
| case 0x0150: |
| if (deviceID == 0x0155 || deviceID == 0x0157) { |
| return kValleyView_IntelGpuFamily; |
| } |
| if (deviceID == 0x0152 || deviceID == 0x015A) { |
| return kIvyBridge_IntelGpuFamily; |
| } |
| break; |
| case 0x0160: |
| return kIvyBridge_IntelGpuFamily; |
| default: |
| break; |
| } |
| break; |
| case 0x0F00: |
| return kValleyView_IntelGpuFamily; |
| case 0x0400: |
| case 0x0A00: |
| case 0x0D00: |
| return kHaswell_IntelGpuFamily; |
| case 0x2200: |
| return kCherryView_IntelGpuFamily; |
| case 0x1600: |
| return kBroadwell_IntelGpuFamily; |
| case 0x5A00: |
| return kApolloLake_IntelGpuFamily; |
| case 0x1900: |
| return kSkyLake_IntelGpuFamily; |
| case 0x3100: |
| return kGeminiLake_IntelGpuFamily; |
| case 0x5900: |
| return kKabyLake_IntelGpuFamily; |
| case 0x3E00: |
| return kCoffeeLake_IntelGpuFamily; |
| case 0x8A00: |
| return kIceLake_IntelGpuFamily; |
| default: |
| break; |
| } |
| return kUnknown_IntelGpuFamily; |
| } |
| |
| #endif |