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