blob: f160f4ef21cb2918a39d023ab4f7e863242d5f08 [file] [log] [blame]
/*
* Copyright 2019 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef GrUtil_DEFINED
#define GrUtil_DEFINED
#include "include/core/SkScalar.h"
#include "include/core/SkTypes.h"
#include "include/private/GrTypesPriv.h"
#include "src/core/SkSLTypeShared.h"
class GrStyle;
class SkMatrix;
enum GrIntelGpuFamily {
kUnknown_IntelGpuFamily,
// 6th gen
kSandyBridge_IntelGpuFamily,
// 7th gen
kIvyBridge_IntelGpuFamily,
kValleyView_IntelGpuFamily, // aka BayTrail
kHaswell_IntelGpuFamily,
// 8th gen
kCherryView_IntelGpuFamily, // aka Braswell
kBroadwell_IntelGpuFamily,
// 9th gen
kApolloLake_IntelGpuFamily,
kSkyLake_IntelGpuFamily,
kGeminiLake_IntelGpuFamily,
kKabyLake_IntelGpuFamily,
kCoffeeLake_IntelGpuFamily,
// 11th gen
kIceLake_IntelGpuFamily,
};
GrIntelGpuFamily GrGetIntelGpuFamily(uint32_t deviceID);
// Helper for determining if we can treat a thin stroke as a hairline w/ coverage.
// If we can, we draw lots faster (raster device does this same test).
bool GrIsStrokeHairlineOrEquivalent(const GrStyle&, const SkMatrix&, SkScalar* outCoverage);
static inline SkSLType SkSLCombinedSamplerTypeForTextureType(GrTextureType type) {
switch (type) {
case GrTextureType::k2D:
return SkSLType::kTexture2DSampler;
case GrTextureType::kRectangle:
return SkSLType::kTexture2DRectSampler;
case GrTextureType::kExternal:
return SkSLType::kTextureExternalSampler;
default:
SK_ABORT("Unexpected texture type");
}
}
#endif