• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)13 GrIntelGpuFamily 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)65 bool 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