8#ifndef skgpu_graphite_PathAtlas_DEFINED
9#define skgpu_graphite_PathAtlas_DEFINED
87 std::pair<const Renderer*, std::optional<MaskAndOrigin>>
addShape(
88 const Rect& transformedShapeBounds,
104 const Rect& clipBounds)
const {
144 size_t plotWidth,
size_t plotHeight,
146 std::string_view label,
const Caps*);
158 struct UniqueKeyHash {
162 ShapeCache fShapeCache;
168 struct ShapeKeyEntry {
#define SK_DECLARE_INTERNAL_LLIST_INTERFACE(ClassName)
bool recordUploads(DrawContext *, Recorder *)
void evict(PlotLocator) override
const TextureProxy * addToAtlas(Recorder *recorder, const Shape &shape, const Transform &transform, const SkStrokeRec &strokeRec, skvx::half2 maskSize, skvx::half2 *outPos, AtlasLocator *locator)
DrawAtlasMgr(size_t width, size_t height, size_t plotWidth, size_t plotHeight, DrawAtlas::UseStorageTextures useStorageTextures, std::string_view label, const Caps *)
virtual bool onAddToAtlas(const Shape &, const Transform &transform, const SkStrokeRec &, SkIRect shapeBounds, const AtlasLocator &)=0
std::unique_ptr< DrawAtlas > fDrawAtlas
const TextureProxy * findOrCreateEntry(Recorder *recorder, const Shape &shape, const Transform &transform, const SkStrokeRec &strokeRec, skvx::half2 maskSize, skvx::half2 *outPos)
void postFlush(Recorder *)
virtual const TextureProxy * onAddShape(const Shape &, const Transform &transform, const SkStrokeRec &, skvx::half2 maskSize, skvx::half2 *outPos)=0
std::pair< CoverageMaskShape, SkIPoint > MaskAndOrigin
virtual bool isSuitableForAtlasing(const Rect &transformedShapeBounds, const Rect &clipBounds) const
static constexpr int kEntryPadding
std::pair< const Renderer *, std::optional< MaskAndOrigin > > addShape(const Rect &transformedShapeBounds, const Shape &shape, const Transform &localToDevice, const SkStrokeRec &style)
PathAtlas(Recorder *recorder, uint32_t requestedWidth, uint32_t requestedHeight)
skgpu::graphite::Transform Transform
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)