Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Member Functions | List of all members
GrMeshDrawOp Class Referenceabstract

#include <GrMeshDrawOp.h>

Inheritance diagram for GrMeshDrawOp:
GrDrawOp GrOp SkNoncopyable ButtCapDashedCircleOp CircleOp CircularRRectOp DIEllipseOp EllipseOp EllipticalRRectOp TestVertexOp skgpu::ganesh::AtlasTextOp skiagm::BezierTestOp

Classes

class  PatternHelper
 
class  QuadHelper
 

Static Public Member Functions

static bool CanUpgradeAAOnMerge (GrAAType aa1, GrAAType aa2)
 
- Static Public Member Functions inherited from GrOp
template<typename Op , typename... Args>
static Owner Make (GrRecordingContext *context, Args &&... args)
 
template<typename Op , typename... Args>
static Owner MakeWithProcessorSet (GrRecordingContext *context, const SkPMColor4f &color, GrPaint &&paint, Args &&... args)
 
template<typename Op , typename... Args>
static Owner MakeWithExtraMemory (GrRecordingContext *context, size_t extraSize, Args &&... args)
 
static uint32_t GenOpClassID ()
 

Protected Member Functions

 GrMeshDrawOp (uint32_t classID)
 
void createProgramInfo (const GrCaps *caps, SkArenaAlloc *arena, const GrSurfaceProxyView &writeView, bool usesMSAASurface, GrAppliedClip &&appliedClip, const GrDstProxyView &dstProxyView, GrXferBarrierFlags renderPassXferBarriers, GrLoadOp colorLoadOp)
 
void createProgramInfo (GrMeshDrawTarget *)
 
virtual void onPrePrepareDraws (GrRecordingContext *, const GrSurfaceProxyView &writeView, GrAppliedClip *, const GrDstProxyView &, GrXferBarrierFlags renderPassXferBarriers, GrLoadOp colorLoadOp)
 
- Protected Member Functions inherited from GrDrawOp
 GR_DECL_BITFIELD_CLASS_OPS_FRIENDS (FixedFunctionFlags)
 
virtual FixedFunctionFlags fixedFunctionFlags () const
 

Static Protected Member Functions

static bool CombinedQuadCountWillOverflow (GrAAType aaType, bool willBeUpgradedToAA, int combinedQuadCount)
 

Private Member Functions

virtual GrProgramInfoprogramInfo ()=0
 
virtual void onCreateProgramInfo (const GrCaps *, SkArenaAlloc *, const GrSurfaceProxyView &writeView, bool usesMSAASurface, GrAppliedClip &&, const GrDstProxyView &, GrXferBarrierFlags renderPassXferBarriers, GrLoadOp colorLoadOp)=0
 
void onPrePrepare (GrRecordingContext *context, const GrSurfaceProxyView &writeView, GrAppliedClip *clip, const GrDstProxyView &dstProxyView, GrXferBarrierFlags renderPassXferBarriers, GrLoadOp colorLoadOp) final
 
void onPrepare (GrOpFlushState *state) final
 
virtual void onPrepareDraws (GrMeshDrawTarget *)=0
 

Additional Inherited Members

- Public Types inherited from GrDrawOp
enum class  ClipResult { kFail , kClippedGeometrically , kClippedInShader , kClippedOut }
 
- Public Types inherited from GrOp
enum class  CombineResult { kMerged , kMayChain , kCannotCombine }
 
enum class  HasAABloat : bool { kNo = false , kYes = true }
 
enum class  IsHairline : bool { kNo = false , kYes = true }
 
using Owner = std::unique_ptr< GrOp >
 
- Public Member Functions inherited from GrDrawOp
 GrDrawOp (uint32_t classID)
 
virtual bool usesMSAA () const
 
virtual ClipResult clipToShape (skgpu::ganesh::SurfaceDrawContext *, SkClipOp, const SkMatrix &, const GrShape &, GrAA)
 
virtual GrProcessorSet::Analysis finalize (const GrCaps &, const GrAppliedClip *, GrClampType)=0
 
virtual bool usesStencil () const
 
- Public Member Functions inherited from GrOp
virtual ~GrOp ()=default
 
virtual const char * name () const =0
 
virtual void visitProxies (const GrVisitProxyFunc &) const
 
CombineResult combineIfPossible (GrOp *that, SkArenaAlloc *alloc, const GrCaps &caps)
 
const SkRectbounds () const
 
void setClippedBounds (const SkRect &clippedBounds)
 
bool hasAABloat () const
 
bool hasZeroArea () const
 
void operator delete (void *p)
 
template<typename T >
const Tcast () const
 
template<typename T >
Tcast ()
 
uint32_t classID () const
 
uint32_t uniqueID () const
 
void prePrepare (GrRecordingContext *context, const GrSurfaceProxyView &dstView, GrAppliedClip *clip, const GrDstProxyView &dstProxyView, GrXferBarrierFlags renderPassXferBarriers, GrLoadOp colorLoadOp)
 
void prepare (GrOpFlushState *state)
 
void execute (GrOpFlushState *state, const SkRect &chainBounds)
 
void chainConcat (GrOp::Owner)
 
bool isChainHead () const
 
bool isChainTail () const
 
GrOpnextInChain () const
 
GrOpprevInChain () const
 
GrOp::Owner cutChain ()
 
void setBounds (const SkRect &newBounds, HasAABloat aabloat, IsHairline zeroArea)
 
void setTransformedBounds (const SkRect &srcBounds, const SkMatrix &m, HasAABloat aabloat, IsHairline zeroArea)
 
void makeFullScreen (GrSurfaceProxy *proxy)
 
- Protected Types inherited from GrDrawOp
enum class  FixedFunctionFlags : uint32_t { kNone = 0x0 , kUsesHWAA = 0x1 , kUsesStencil = 0x2 }
 

Detailed Description

Base class for mesh-drawing GrDrawOps.

Definition at line 29 of file GrMeshDrawOp.h.

Constructor & Destructor Documentation

◆ GrMeshDrawOp()

GrMeshDrawOp::GrMeshDrawOp ( uint32_t  classID)
protected

Definition at line 15 of file GrMeshDrawOp.cpp.

15: INHERITED(classID) {}
uint32_t classID() const
Definition GrOp.h:158

Member Function Documentation

◆ CanUpgradeAAOnMerge()

static bool GrMeshDrawOp::CanUpgradeAAOnMerge ( GrAAType  aa1,
GrAAType  aa2 
)
inlinestatic

Definition at line 31 of file GrMeshDrawOp.h.

31 {
32 return (aa1 == GrAAType::kNone && aa2 == GrAAType::kCoverage) ||
33 (aa1 == GrAAType::kCoverage && aa2 == GrAAType::kNone);
34 }

◆ CombinedQuadCountWillOverflow()

bool GrMeshDrawOp::CombinedQuadCountWillOverflow ( GrAAType  aaType,
bool  willBeUpgradedToAA,
int  combinedQuadCount 
)
staticprotected

Definition at line 30 of file GrMeshDrawOp.cpp.

32 {
33 bool willBeAA = (aaType == GrAAType::kCoverage) || willBeUpgradedToAA;
34
35 return combinedQuadCount > (willBeAA ? GrResourceProvider::MaxNumAAQuads()
36 : GrResourceProvider::MaxNumNonAAQuads());
37}

◆ createProgramInfo() [1/2]

void GrMeshDrawOp::createProgramInfo ( const GrCaps caps,
SkArenaAlloc arena,
const GrSurfaceProxyView writeView,
bool  usesMSAASurface,
GrAppliedClip &&  appliedClip,
const GrDstProxyView dstProxyView,
GrXferBarrierFlags  renderPassXferBarriers,
GrLoadOp  colorLoadOp 
)
inlineprotected

Definition at line 39 of file GrMeshDrawOp.h.

46 {
47 this->onCreateProgramInfo(caps, arena, writeView, usesMSAASurface, std::move(appliedClip),
48 dstProxyView, renderPassXferBarriers, colorLoadOp);
49 }
virtual void onCreateProgramInfo(const GrCaps *, SkArenaAlloc *, const GrSurfaceProxyView &writeView, bool usesMSAASurface, GrAppliedClip &&, const GrDstProxyView &, GrXferBarrierFlags renderPassXferBarriers, GrLoadOp colorLoadOp)=0

◆ createProgramInfo() [2/2]

void GrMeshDrawOp::createProgramInfo ( GrMeshDrawTarget target)
protected

Definition at line 19 of file GrMeshDrawOp.cpp.

19 {
20 this->createProgramInfo(&target->caps(),
21 target->allocator(),
22 target->writeView(),
23 target->usesMSAASurface(),
24 target->detachAppliedClip(),
25 target->dstProxyView(),
26 target->renderPassBarriers(),
27 target->colorLoadOp());
28}
void createProgramInfo(const GrCaps *caps, SkArenaAlloc *arena, const GrSurfaceProxyView &writeView, bool usesMSAASurface, GrAppliedClip &&appliedClip, const GrDstProxyView &dstProxyView, GrXferBarrierFlags renderPassXferBarriers, GrLoadOp colorLoadOp)
virtual const GrCaps & caps() const =0
uint32_t * target

◆ onCreateProgramInfo()

virtual void GrMeshDrawOp::onCreateProgramInfo ( const GrCaps ,
SkArenaAlloc ,
const GrSurfaceProxyView writeView,
bool  usesMSAASurface,
GrAppliedClip &&  ,
const GrDstProxyView ,
GrXferBarrierFlags  renderPassXferBarriers,
GrLoadOp  colorLoadOp 
)
privatepure virtual

◆ onPrepare()

void GrMeshDrawOp::onPrepare ( GrOpFlushState state)
finalprivatevirtual

Implements GrOp.

Definition at line 17 of file GrMeshDrawOp.cpp.

17{ this->onPrepareDraws(state); }
virtual void onPrepareDraws(GrMeshDrawTarget *)=0

◆ onPrepareDraws()

virtual void GrMeshDrawOp::onPrepareDraws ( GrMeshDrawTarget )
privatepure virtual

◆ onPrePrepare()

void GrMeshDrawOp::onPrePrepare ( GrRecordingContext context,
const GrSurfaceProxyView writeView,
GrAppliedClip clip,
const GrDstProxyView dstProxyView,
GrXferBarrierFlags  renderPassXferBarriers,
GrLoadOp  colorLoadOp 
)
inlinefinalprivatevirtual

Implements GrOp.

Definition at line 121 of file GrMeshDrawOp.h.

126 {
127 this->onPrePrepareDraws(context, writeView, clip, dstProxyView, renderPassXferBarriers,
128 colorLoadOp);
129 }
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
Definition SkPath.cpp:3824
virtual void onPrePrepareDraws(GrRecordingContext *, const GrSurfaceProxyView &writeView, GrAppliedClip *, const GrDstProxyView &, GrXferBarrierFlags renderPassXferBarriers, GrLoadOp colorLoadOp)

◆ onPrePrepareDraws()

void GrMeshDrawOp::onPrePrepareDraws ( GrRecordingContext context,
const GrSurfaceProxyView writeView,
GrAppliedClip clip,
const GrDstProxyView dstProxyView,
GrXferBarrierFlags  renderPassXferBarriers,
GrLoadOp  colorLoadOp 
)
protectedvirtual

Reimplemented in skgpu::ganesh::AtlasTextOp.

Definition at line 41 of file GrMeshDrawOp.cpp.

46 {
47 SkArenaAlloc* arena = context->priv().recordTimeAllocator();
48
49 // http://skbug.com/12201 -- DDL does not yet support DMSAA.
50 bool usesMSAASurface = writeView.asRenderTargetProxy()->numSamples() > 1;
51
52 // This is equivalent to a GrOpFlushState::detachAppliedClip
53 GrAppliedClip appliedClip = clip ? std::move(*clip) : GrAppliedClip::Disabled();
54
55 this->createProgramInfo(context->priv().caps(), arena, writeView, usesMSAASurface,
56 std::move(appliedClip), dstProxyView, renderPassXferBarriers,
57 colorLoadOp);
58
59 // TODO: at this point we've created both the program info and desc in the recording context's
60 // arena. In the DDL case, it would be cool if 'recordProgramInfo' could return the
61 // pre-existing versions if the program has already been seen. We could then return the
62 // memory for the current copy to the arena.
63 context->priv().recordProgramInfo(this->programInfo());
64}
const GrCaps * caps() const
virtual GrProgramInfo * programInfo()=0
void recordProgramInfo(const GrProgramInfo *programInfo)
SkArenaAlloc * recordTimeAllocator()
GrRecordingContextPriv priv()
GrRenderTargetProxy * asRenderTargetProxy() const

◆ programInfo()

virtual GrProgramInfo * GrMeshDrawOp::programInfo ( )
privatepure virtual

The documentation for this class was generated from the following files: