Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | List of all members
CoverageSetOpXP Class Reference
Inheritance diagram for CoverageSetOpXP:
GrXferProcessor GrProcessor GrNonAtomicRef< GrXferProcessor > SkNoncopyable

Public Member Functions

 CoverageSetOpXP (SkRegion::Op regionOp, bool invertCoverage)
 
const char * name () const override
 
std::unique_ptr< ProgramImplmakeProgramImpl () const override
 
- Public Member Functions inherited from GrXferProcessor
void addToKey (const GrShaderCaps &, skgpu::KeyBuilder *, const GrSurfaceOrigin *originIfDstTexture, bool usesInputAttachmentForDstRead) const
 
virtual GrXferBarrierType xferBarrierType (const GrCaps &caps) const
 
skgpu::BlendInfo getBlendInfo () const
 
bool willReadDstColor () const
 
bool hasSecondaryOutput () const
 
bool isLCD () const
 
bool isEqual (const GrXferProcessor &that) const
 
- Public Member Functions inherited from GrProcessor
virtual ~GrProcessor ()=default
 
void * operator new (size_t size)
 
void * operator new (size_t object_size, size_t footer_size)
 
void operator delete (void *target)
 
void * operator new (size_t size, void *placement)
 
void operator delete (void *target, void *placement)
 
template<typename T >
const Tcast () const
 
ClassID classID () const
 
- Public Member Functions inherited from GrNonAtomicRef< GrXferProcessor >
 GrNonAtomicRef ()
 
bool unique () const
 
int refCnt () const
 
void ref () const
 
void unref () const
 
- Public Member Functions inherited from SkNoncopyable
 SkNoncopyable ()=default
 
 SkNoncopyable (SkNoncopyable &&)=default
 
SkNoncopyableoperator= (SkNoncopyable &&)=default
 

Private Member Functions

void onAddToKey (const GrShaderCaps &, skgpu::KeyBuilder *) const override
 
void onGetBlendInfo (skgpu::BlendInfo *blendInfo) const override
 
bool onIsEqual (const GrXferProcessor &xpBase) const override
 

Additional Inherited Members

- Public Types inherited from GrProcessor
enum  ClassID {
  kNull_ClassID , kAttributeTestProcessor_ClassID , kBigKeyProcessor_ClassID , kBlendFragmentProcessor_ClassID ,
  kBlockInputFragmentProcessor_ClassID , kButtCapStrokedCircleGeometryProcessor_ClassID , kCircleGeometryProcessor_ClassID , kCircularRRectEffect_ClassID ,
  kClockwiseTestProcessor_ClassID , kColorTableEffect_ClassID , kCoverageSetOpXP_ClassID , kCustomXP_ClassID ,
  kDashingCircleEffect_ClassID , kDashingLineEffect_ClassID , kDefaultGeoProc_ClassID , kDeviceSpace_ClassID ,
  kDIEllipseGeometryProcessor_ClassID , kDisableColorXP_ClassID , kDrawAtlasPathShader_ClassID , kEllipseGeometryProcessor_ClassID ,
  kEllipticalRRectEffect_ClassID , kFwidthSquircleTestProcessor_ClassID , kGP_ClassID , kGrBicubicEffect_ClassID ,
  kGrBitmapTextGeoProc_ClassID , kGrColorSpaceXformEffect_ClassID , kGrConicEffect_ClassID , kGrConvexPolyEffect_ClassID ,
  kGrDiffuseLightingEffect_ClassID , kGrDisplacementMapEffect_ClassID , kGrDistanceFieldA8TextGeoProc_ClassID , kGrDistanceFieldLCDTextGeoProc_ClassID ,
  kGrDistanceFieldPathGeoProc_ClassID , kGrFillRRectOp_Processor_ClassID , kGrGaussianConvolutionFragmentProcessor_ClassID , kGrMatrixConvolutionEffect_ClassID ,
  kGrMatrixEffect_ClassID , kGrMeshTestProcessor_ClassID , kGrMorphologyEffect_ClassID , kGrPerlinNoise2Effect_ClassID ,
  kGrPipelineDynamicStateTestProcessor_ClassID , kGrQuadEffect_ClassID , kGrRRectShadowGeoProc_ClassID , kGrSkSLFP_ClassID ,
  kGrSpecularLightingEffect_ClassID , kGrTextureEffect_ClassID , kGrUnrolledBinaryGradientColorizer_ClassID , kGrYUVtoRGBEffect_ClassID ,
  kHighPrecisionFragmentProcessor_ClassID , kLatticeGP_ClassID , kPDLCDXferProcessor_ClassID , kPorterDuffXferProcessor_ClassID ,
  kPremulFragmentProcessor_ClassID , kQuadEdgeEffect_ClassID , kQuadPerEdgeAAGeometryProcessor_ClassID , kSeriesFragmentProcessor_ClassID ,
  kShaderPDXferProcessor_ClassID , kSurfaceColorProcessor_ClassID , kSwizzleFragmentProcessor_ClassID , kTessellate_BoundingBoxShader_ClassID ,
  kTessellate_GrModulateAtlasCoverageEffect_ClassID , kTessellate_GrStrokeTessellationShader_ClassID , kTessellate_HullShader_ClassID , kTessellate_MiddleOutShader_ClassID ,
  kTessellate_SimpleTriangleShader_ClassID , kTessellationTestTriShader_ClassID , kTestFP_ClassID , kTestRectOp_ClassID ,
  kVertexColorSpaceBenchGP_ClassID , kVerticesGP_ClassID
}
 
- Protected Member Functions inherited from GrXferProcessor
 GrXferProcessor (ClassID classID)
 
 GrXferProcessor (ClassID classID, bool willReadDstColor, GrProcessorAnalysisCoverage)
 
- Protected Member Functions inherited from GrProcessor
 GrProcessor (ClassID classID)
 
 GrProcessor (const GrProcessor &)=delete
 
GrProcessoroperator= (const GrProcessor &)=delete
 
- Protected Attributes inherited from GrProcessor
const ClassID fClassID
 

Detailed Description

Definition at line 23 of file GrCoverageSetOpXP.cpp.

Constructor & Destructor Documentation

◆ CoverageSetOpXP()

CoverageSetOpXP::CoverageSetOpXP ( SkRegion::Op  regionOp,
bool  invertCoverage 
)
inline

Definition at line 25 of file GrCoverageSetOpXP.cpp.

26 : INHERITED(kCoverageSetOpXP_ClassID)
27 , fRegionOp(regionOp)
28 , fInvertCoverage(invertCoverage) {}
@ kCoverageSetOpXP_ClassID
Definition GrProcessor.h:36

Member Function Documentation

◆ makeProgramImpl()

std::unique_ptr< GrXferProcessor::ProgramImpl > CoverageSetOpXP::makeProgramImpl ( ) const
overridevirtual

Returns a new instance of the appropriate GL implementation class for the given GrXferProcessor; caller is responsible for deleting the object.

Implements GrXferProcessor.

Definition at line 55 of file GrCoverageSetOpXP.cpp.

55 {
56 class Impl : public ProgramImpl {
57 private:
58 void emitOutputsForBlendState(const EmitArgs& args) override {
59 const CoverageSetOpXP& xp = args.fXP.cast<CoverageSetOpXP>();
60 GrGLSLXPFragmentBuilder* fb = args.fXPFragBuilder;
61 if (xp.fInvertCoverage) {
62 fb->codeAppendf("%s = 1.0 - %s;", args.fOutputPrimary, args.fInputCoverage);
63 } else {
64 fb->codeAppendf("%s = %s;", args.fOutputPrimary, args.fInputCoverage);
65 }
66 }
67 };
68 return std::make_unique<Impl>();
69}
void codeAppendf(const char format[],...) SK_PRINTF_LIKE(2
const T & cast() const
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args

◆ name()

const char * CoverageSetOpXP::name ( ) const
inlineoverridevirtual

Human-meaningful string to identify this processor; may be embedded in generated shader code and must be a legal SkSL identifier prefix.

Implements GrProcessor.

Definition at line 30 of file GrCoverageSetOpXP.cpp.

30{ return "Coverage Set Op"; }

◆ onAddToKey()

void CoverageSetOpXP::onAddToKey ( const GrShaderCaps ,
skgpu::KeyBuilder  
) const
overrideprivatevirtual

Adds a key on the skgpu::KeyBuilder that reflects any variety in the code that may be emitted by the xfer processor subclass.

Implements GrXferProcessor.

Definition at line 51 of file GrCoverageSetOpXP.cpp.

51 {
52 b->addBool(fInvertCoverage, "invert coverage");
53}
static bool b

◆ onGetBlendInfo()

void CoverageSetOpXP::onGetBlendInfo ( skgpu::BlendInfo ) const
overrideprivatevirtual

If we are not performing a dst read, retrieves the fixed-function blend state required by the subclass. When using dst reads, the base class controls the fixed-function blend state and this method will not be called. The BlendInfo struct comes initialized to "no blending".

Reimplemented from GrXferProcessor.

Definition at line 71 of file GrCoverageSetOpXP.cpp.

71 {
72 switch (fRegionOp) {
74 blendInfo->fSrcBlend = skgpu::BlendCoeff::kOne;
75 blendInfo->fDstBlend = skgpu::BlendCoeff::kZero;
76 break;
78 blendInfo->fSrcBlend = skgpu::BlendCoeff::kDC;
79 blendInfo->fDstBlend = skgpu::BlendCoeff::kZero;
80 break;
82 blendInfo->fSrcBlend = skgpu::BlendCoeff::kOne;
83 blendInfo->fDstBlend = skgpu::BlendCoeff::kISC;
84 break;
86 blendInfo->fSrcBlend = skgpu::BlendCoeff::kIDC;
87 blendInfo->fDstBlend = skgpu::BlendCoeff::kISC;
88 break;
90 blendInfo->fSrcBlend = skgpu::BlendCoeff::kZero;
91 blendInfo->fDstBlend = skgpu::BlendCoeff::kISC;
92 break;
94 blendInfo->fSrcBlend = skgpu::BlendCoeff::kIDC;
95 blendInfo->fDstBlend = skgpu::BlendCoeff::kZero;
96 break;
97 }
98 blendInfo->fBlendConstant = SK_PMColor4fTRANSPARENT;
99}
constexpr SkPMColor4f SK_PMColor4fTRANSPARENT
@ kReverseDifference_Op
operand minus target
Definition SkRegion.h:371
@ kUnion_Op
target unioned with operand
Definition SkRegion.h:369
@ kReplace_Op
replace target with operand
Definition SkRegion.h:372
@ kIntersect_Op
target intersected with operand
Definition SkRegion.h:368
@ kDifference_Op
target minus operand
Definition SkRegion.h:367
@ kXOR_Op
target exclusive or with operand
Definition SkRegion.h:370

◆ onIsEqual()

bool CoverageSetOpXP::onIsEqual ( const GrXferProcessor xpBase) const
inlineoverrideprivatevirtual

Implements GrXferProcessor.

Definition at line 39 of file GrCoverageSetOpXP.cpp.

39 {
40 const CoverageSetOpXP& xp = xpBase.cast<CoverageSetOpXP>();
41 return (fRegionOp == xp.fRegionOp &&
42 fInvertCoverage == xp.fInvertCoverage);
43 }

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