| /* | |
| * Copyright 2020 Google LLC | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "src/gpu/ganesh/GrUtil.h" | |
| #include "include/core/SkStrokeRec.h" | |
| #include "src/core/SkDrawProcs.h" | |
| #include "src/gpu/ganesh/GrStyle.h" | |
| 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; | |
| } | |
| bool GrIsStrokeHairlineOrEquivalent(const GrStyle& style, | |
| const SkMatrix& matrix, | |
| SkScalar* outCoverage) { | |
| if (style.pathEffect()) { | |
| return false; | |
| } | |
| const SkStrokeRec& stroke = style.strokeRec(); | |
| if (stroke.isHairlineStyle()) { | |
| if (outCoverage) { | |
| *outCoverage = SK_Scalar1; | |
| } | |
| return true; | |
| } | |
| return stroke.getStyle() == SkStrokeRec::kStroke_Style && | |
| skcpu::DrawTreatAAStrokeAsHairline(stroke.getWidth(), matrix, outCoverage); | |
| } |