blob: 5412f0b2925ef34e9bbfd58268d9f895d9929e4d [file] [log] [blame]
/*
* 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,
};
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