blob: 3e35e84173cbec5f2cd5f0667cdd198ecee06ee0 [file] [log] [blame]
John Stiles4b9b3452020-08-03 10:52:54 -04001/*
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
Robert Phillips62214f72021-06-15 10:12:51 -040010#include "src/core/SkDrawProcs.h"
11#include "src/gpu/GrStyle.h"
12
John Stiles4b9b3452020-08-03 10:52:54 -040013GrIntelGpuFamily 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}
Robert Phillips62214f72021-06-15 10:12:51 -040064
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}