21 : fDstProxy(
args.fDstProxyView)
22 , fWindowRectsState(hardClip.windowRectsState())
23 , fXferProcessor(
std::move(xferProcessor))
24 , fWriteSwizzle(
args.fWriteSwizzle) {
25 fFlags = (Flags)
args.fInputFlags;
27 fFlags |= Flags::kHasStencilClip;
30 fFlags |= Flags::kScissorTestEnabled;
38 :
GrPipeline(
args, processors.refXferProcessor(), appliedClip.hardClip()) {
41 fNumColorProcessors = processors.hasColorFragmentProcessor() ? 1 : 0;
42 int numTotalProcessors = fNumColorProcessors +
43 (processors.hasCoverageFragmentProcessor() ? 1 : 0) +
44 (appliedClip.hasCoverageFragmentProcessor() ? 1 : 0);
45 fFragmentProcessors.
reset(numTotalProcessors);
48 if (processors.hasColorFragmentProcessor()) {
49 fFragmentProcessors[currFPIdx++] = processors.detachColorFragmentProcessor();
51 if (processors.hasCoverageFragmentProcessor()) {
52 fFragmentProcessors[currFPIdx++] = processors.detachCoverageFragmentProcessor();
54 if (appliedClip.hasCoverageFragmentProcessor()) {
55 fFragmentProcessors[currFPIdx++] = appliedClip.detachCoverageFragmentProcessor();
71 ,
fFlags((Flags)inputFlags)
72 , fXferProcessor(
std::move(xp))
73 , fWriteSwizzle(writeSwizzle) {
75 fFlags |= Flags::kScissorTestEnabled;
82 b->add32((uint32_t)fFlags & ~(uint32_t)ignoredFlags,
"flags");
86 static constexpr uint32_t kBlendCoeffSize = 5;
87 static constexpr uint32_t kBlendEquationSize = 5;
92 b->addBits(kBlendCoeffSize,
static_cast<int>(blendInfo.
fSrcBlend),
"srcBlend");
93 b->addBits(kBlendCoeffSize,
static_cast<int>(blendInfo.
fDstBlend),
"dstBlend");
94 b->addBits(kBlendEquationSize,
static_cast<int>(blendInfo.fEquation),
"equation");
100 for (
auto&
fp : fFragmentProcessors) {
101 fp->visitTextureEffects(func);
107 for (
auto&
fp : fFragmentProcessors) {
108 fp->visitProxies(func);
126 scaleX = dstTexture->
height();
128 scaleX /= dstTexture->
width();
129 scaleY /= dstTexture->
height();
132 static_cast<float>(this->dstTextureOffset().fX),
133 static_cast<float>(this->dstTextureOffset().fY),
std::function< void(GrSurfaceProxy *, skgpu::Mipmapped)> GrVisitProxyFunc
@ kRequiresTextureBarrier
@ kTexture_GrXferBarrierType
const GrScissorState & scissorState() const
bool hasStencilClip() const
virtual void set4f(UniformHandle, float, float, float, float) const =0
@ kSnapVerticesToPixelCenters
void visitProxies(const GrVisitProxyFunc &) const
GrDstSampleFlags dstSampleFlags() const
void setDstTextureUniforms(const GrGLSLProgramDataManager &pdm, GrGLSLBuiltinUniformHandles *fBuiltinUniformHandles) const
bool usesDstInputAttachment() const
GrPipeline(GrScissorTest scissor, SkBlendMode blend, const skgpu::Swizzle &writeSwizzle, InputFlags flags=InputFlags::kNone)
void genKey(skgpu::KeyBuilder *, const GrCaps &) const
void visitTextureEffects(const std::function< void(const GrTextureEffect &)> &) const
const GrSurfaceProxyView & dstProxyView() const
bool usesDstTexture() const
GrTexture * peekDstTexture() const
GrXferBarrierType xferBarrierType(const GrCaps &) const
const GrXferProcessor & getXferProcessor() const
GrTextureType textureType() const
virtual GrXferBarrierType xferBarrierType(const GrCaps &caps) const
skgpu::BlendInfo getBlendInfo() const
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
Dart_NativeFunction function
skgpu::BlendCoeff fDstBlend
skgpu::BlendCoeff fSrcBlend