8#ifndef skgpu_graphite_Device_DEFINED
9#define skgpu_graphite_Device_DEFINED
35enum class LoadOp : uint8_t;
43class TextureProxyView;
58 bool registerWithRecorder=
true);
67 bool registerWithRecorder=
true);
117#if !defined(SK_RESOLVE_FILTERS_BEFORE_RESTORE)
206 class IntersectionTreeSet;
229 enum class DrawFlags :
unsigned {
235 kIgnorePathEffect = 0b001,
242 void drawGeometry(
const Transform&,
248 bool skipColorXform =
false);
252 void drawClipShape(
const Transform&,
const Shape&,
const Clip&, DrawOrder);
282 std::pair<const Renderer*, PathAtlas*> chooseRenderer(
const Transform&
localToDevice,
285 bool requireMSAA)
const;
290 void internalFlush();
309 std::unique_ptr<BoundsManager> fColorDepthBoundsManager;
311 std::unique_ptr<IntersectionTreeSet> fDisjointStencilSet;
314 Transform fCachedLocalToDevice;
320 bool fMSAASupported =
false;
323 bool fIsFlushing =
false;
333 uint32_t fScopedRecordingID = 0;
#define SK_DECL_BITMASK_OPS_FRIENDS(E)
#define SK_MAKE_BITMASK_OPS(E)
static SkColorType colorType(AImageDecoder *decoder, const AImageDecoderHeaderInfo *headerInfo)
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
sk_sp< SkSpecialImage > snapSpecial()
const SkMatrix & localToDevice() const
const SkSurfaceProps & surfaceProps() const
ClipState clipState() const
sk_sp< SkDevice > createDevice(const CreateInfo &, const SkPaint *) override
TextureProxyView readSurfaceView() const
bool useDrawCoverageMaskForMaskFilters() const override
static sk_sp< Device > Make(Recorder *recorder, sk_sp< TextureProxy >, SkISize deviceSize, const SkColorInfo &, const SkSurfaceProps &, LoadOp initialLoadOp, bool registerWithRecorder=true)
void drawRect(const SkRect &r, const SkPaint &paint) override
sk_sp< SkSurface > makeSurface(const SkImageInfo &, const SkSurfaceProps &) override
void drawOval(const SkRect &oval, const SkPaint &paint) override
void clipRRect(const SkRRect &rrect, SkClipOp, bool aa) override
void drawEdgeAAQuad(const SkRect &rect, const SkPoint clip[4], SkCanvas::QuadAAFlags aaFlags, const SkColor4f &color, SkBlendMode mode) override
void drawAtlas(const SkRSXform[], const SkRect[], const SkColor[], int count, sk_sp< SkBlender >, const SkPaint &) override
Recorder * recorder() const override
void android_utils_clipAsRgn(SkRegion *) const override
void drawPaint(const SkPaint &paint) override
void drawImageLattice(const SkImage *, const SkCanvas::Lattice &, const SkRect &dst, SkFilterMode, const SkPaint &) override
void drawVertices(const SkVertices *, sk_sp< SkBlender >, const SkPaint &, bool) override
sk_sp< SkSpecialImage > makeSpecial(const SkBitmap &) override
void replaceClip(const SkIRect &rect) override
bool drawBlurredRRect(const SkRRect &, const SkPaint &, float deviceSigma) override
void onDrawGlyphRunList(SkCanvas *, const sktext::GlyphRunList &, const SkPaint &) override
sk_sp< sktext::gpu::Slug > convertGlyphRunListToSlug(const sktext::GlyphRunList &glyphRunList, const SkPaint &paint) override
const Transform & localToDeviceTransform()
bool onReadPixels(const SkPixmap &, int x, int y) override
bool drawAsTiledImageRect(SkCanvas *, const SkImage *, const SkRect *src, const SkRect &dst, const SkSamplingOptions &, const SkPaint &, SkCanvas::SrcRectConstraint) override
void drawRRect(const SkRRect &rr, const SkPaint &paint) override
void flushPendingWorkToRecorder(Recorder *recorder=nullptr)
void drawSlug(SkCanvas *, const sktext::gpu::Slug *slug, const SkPaint &paint) override
sk_sp< skif::Backend > createImageFilteringBackend(const SkSurfaceProps &surfaceProps, SkColorType colorType) const override
void drawEdgeAAImageSet(const SkCanvas::ImageSetEntry[], int count, const SkPoint dstClips[], const SkMatrix preViewMatrices[], const SkSamplingOptions &, const SkPaint &, SkCanvas::SrcRectConstraint) override
void drawSpecial(SkSpecialImage *, const SkMatrix &localToDevice, const SkSamplingOptions &, const SkPaint &, SkCanvas::SrcRectConstraint) override
void onClipShader(sk_sp< SkShader > shader) override
bool isClipAntiAliased() const override
void clipRegion(const SkRegion &globalRgn, SkClipOp) override
SkStrikeDeviceInfo strikeDeviceInfo() const override
void drawShadow(const SkPath &, const SkDrawShadowRec &) override
void drawPath(const SkPath &path, const SkPaint &paint, bool pathIsMutable=false) override
bool isScratchDevice() const
void drawImageRect(const SkImage *, const SkRect *src, const SkRect &dst, const SkSamplingOptions &, const SkPaint &, SkCanvas::SrcRectConstraint) override
Device * asGraphiteDevice() override
void drawMesh(const SkMesh &, sk_sp< SkBlender >, const SkPaint &) override
bool isClipRect() const override
void drawCoverageMask(const SkSpecialImage *, const SkMatrix &localToDevice, const SkSamplingOptions &, const SkPaint &) override
void clipRect(const SkRect &rect, SkClipOp, bool aa) override
void setImmutable() override
void drawDrawable(SkCanvas *, SkDrawable *, const SkMatrix *) override
sk_sp< Image > makeImageCopy(const SkIRect &subset, Budgeted, Mipmapped, SkBackingFit)
bool onWritePixels(const SkPixmap &, int x, int y) override
void popClipStack() override
SkIRect devClipBounds() const override
sk_sp< Task > lastDrawTask() const
void drawPoints(SkCanvas::PointMode mode, size_t count, const SkPoint[], const SkPaint &paint) override
void pushClipStack() override
bool isClipWideOpen() const override
bool isClipEmpty() const override
void clipPath(const SkPath &path, SkClipOp, bool aa) override
MonotonicValue< PaintersDepthSequence > PaintersDepth
std::function< void(const sktext::gpu::AtlasSubRun *subRun, SkPoint drawOrigin, const SkPaint &paint, sk_sp< SkRefCnt > subRunStorage, sktext::gpu::RendererData)> AtlasDrawDelegate