1 /* 2 * Copyright 2020 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 8 #include "src/gpu/GrUtil.h" 9 10 #include "src/core/SkDrawProcs.h" 11 #include "src/gpu/GrStyle.h" 12 GrGetIntelGpuFamily(uint32_t deviceID)13GrIntelGpuFamily GrGetIntelGpuFamily(uint32_t deviceID) { 14 // https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units 15 uint32_t maskedID = deviceID & 0xFF00; 16 switch (maskedID) { 17 case 0x0100: 18 switch (deviceID & 0xFFF0) { 19 case 0x0100: 20 case 0x0110: 21 case 0x0120: 22 return kSandyBridge_IntelGpuFamily; 23 case 0x0150: 24 if (deviceID == 0x0155 || deviceID == 0x0157) { 25 return kValleyView_IntelGpuFamily; 26 } 27 if (deviceID == 0x0152 || deviceID == 0x015A) { 28 return kIvyBridge_IntelGpuFamily; 29 } 30 break; 31 case 0x0160: 32 return kIvyBridge_IntelGpuFamily; 33 default: 34 break; 35 } 36 break; 37 case 0x0F00: 38 return kValleyView_IntelGpuFamily; 39 case 0x0400: 40 case 0x0A00: 41 case 0x0D00: 42 return kHaswell_IntelGpuFamily; 43 case 0x2200: 44 return kCherryView_IntelGpuFamily; 45 case 0x1600: 46 return kBroadwell_IntelGpuFamily; 47 case 0x5A00: 48 return kApolloLake_IntelGpuFamily; 49 case 0x1900: 50 return kSkyLake_IntelGpuFamily; 51 case 0x3100: 52 return kGeminiLake_IntelGpuFamily; 53 case 0x5900: 54 return kKabyLake_IntelGpuFamily; 55 case 0x3E00: 56 return kCoffeeLake_IntelGpuFamily; 57 case 0x8A00: 58 return kIceLake_IntelGpuFamily; 59 default: 60 break; 61 } 62 return kUnknown_IntelGpuFamily; 63 } 64 GrIsStrokeHairlineOrEquivalent(const GrStyle & style,const SkMatrix & matrix,SkScalar * outCoverage)65bool GrIsStrokeHairlineOrEquivalent(const GrStyle& style, 66 const SkMatrix& matrix, 67 SkScalar* outCoverage) { 68 if (style.pathEffect()) { 69 return false; 70 } 71 const SkStrokeRec& stroke = style.strokeRec(); 72 if (stroke.isHairlineStyle()) { 73 if (outCoverage) { 74 *outCoverage = SK_Scalar1; 75 } 76 return true; 77 } 78 return stroke.getStyle() == SkStrokeRec::kStroke_Style && 79 SkDrawTreatAAStrokeAsHairline(stroke.getWidth(), matrix, outCoverage); 80 } 81