403 {
405 AnalysisProperties props = AnalysisProperties::kNone;
411 }
413 }();
414
416 props |= AnalysisProperties::kCompatibleWithCoverageAsAlpha;
417 }
418
420
424 props |= AnalysisProperties::kIgnoresInputColor;
425 } else {
426
427
428
429
430
432
434 props |= AnalysisProperties::kReadsDstInShader;
435 }
436 }
437 } else {
438
441 props |= AnalysisProperties::kReadsDstInShader;
442 }
443 }
444 }
445
447 props |= AnalysisProperties::kReadsDstInShader;
448 }
449
451 props |= AnalysisProperties::kIgnoresInputColor;
452 }
454 !hasCoverage)) {
455 props |= AnalysisProperties::kUnaffectedByDstValue;
456 }
457 return props;
458}
@ kSrcOver
r = s + (1-sa)*d
static bool isLCD(const SkScalerContextRec &rec)
const GrShaderCaps * shaderCaps() const
BlendFormula GetBlendFormula(bool isOpaque, bool hasCoverage, SkBlendMode xfermode)
BlendFormula GetLCDBlendFormula(SkBlendMode xfermode)
bool fDstReadInShaderSupport
bool fDualSourceBlendingSupport