Lines Matching refs:BlendFormula
27 class BlendFormula {
44 constexpr BlendFormula(OutputType primaryOut, OutputType secondaryOut, GrBlendEquation equation,
53 BlendFormula(const BlendFormula&) = default;
54 BlendFormula& operator=(const BlendFormula&) = default;
56 bool operator==(const BlendFormula& that) const {
119 * Deduce the properties of a BlendFormula.
142 static_assert(4 == sizeof(BlendFormula));
144 SK_MAKE_BITFIELD_OPS(BlendFormula::Properties)
146 constexpr BlendFormula::Properties BlendFormula::GetProperties(OutputType PrimaryOut,
152 // The provided formula should already be optimized before a BlendFormula is constructed.
184 static constexpr BlendFormula MakeCoeffFormula(GrBlendCoeff srcCoeff, GrBlendCoeff dstCoeff) {
188 ? BlendFormula(BlendFormula::kNone_OutputType, BlendFormula::kNone_OutputType,
190 : BlendFormula(BlendFormula::kModulate_OutputType, BlendFormula::kNone_OutputType,
198 static constexpr BlendFormula MakeSAModulateFormula(GrBlendCoeff srcCoeff, GrBlendCoeff dstCoeff) {
199 return BlendFormula(BlendFormula::kSAModulate_OutputType, BlendFormula::kNone_OutputType,
217 static constexpr BlendFormula MakeCoverageFormula(
218 BlendFormula::OutputType oneMinusDstCoeffModulateOutput, GrBlendCoeff srcCoeff) {
219 return BlendFormula(BlendFormula::kModulate_OutputType, oneMinusDstCoeffModulateOutput,
237 static constexpr BlendFormula MakeCoverageSrcCoeffZeroFormula(
238 BlendFormula::OutputType oneMinusDstCoeffModulateOutput) {
239 return BlendFormula(oneMinusDstCoeffModulateOutput, BlendFormula::kNone_OutputType,
253 static constexpr BlendFormula MakeCoverageDstCoeffZeroFormula(GrBlendCoeff srcCoeff) {
254 return BlendFormula(BlendFormula::kModulate_OutputType, BlendFormula::kCoverage_OutputType,
263 static constexpr BlendFormula gBlendTable[2][2][(int)SkBlendMode::kLastCoeffMode + 1] = {
284 /* clear */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kCoverage_OutputType),
290 /* dst-in */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kISAModulate_OutputType),
294 /* dst-atop */ MakeCoverageFormula(BlendFormula::kISAModulate_OutputType, kIDA_GrBlendCoeff),
297 /* modulate */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kISCModulate_OutputType),
320 /* clear */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kCoverage_OutputType),
328 /* dst-out */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kCoverage_OutputType),
333 /* modulate */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kISCModulate_OutputType),
341 static constexpr BlendFormula gLCDBlendTable[(int)SkBlendMode::kLastCoeffMode + 1] = {
342 /* clear */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kCoverage_OutputType),
343 /* src */ MakeCoverageFormula(BlendFormula::kCoverage_OutputType, kOne_GrBlendCoeff),
345 /* src-over */ MakeCoverageFormula(BlendFormula::kSAModulate_OutputType, kOne_GrBlendCoeff),
347 /* src-in */ MakeCoverageFormula(BlendFormula::kCoverage_OutputType, kDA_GrBlendCoeff),
348 /* dst-in */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kISAModulate_OutputType),
349 /* src-out */ MakeCoverageFormula(BlendFormula::kCoverage_OutputType, kIDA_GrBlendCoeff),
351 /* src-atop */ MakeCoverageFormula(BlendFormula::kSAModulate_OutputType, kDA_GrBlendCoeff),
352 /* dst-atop */ MakeCoverageFormula(BlendFormula::kISAModulate_OutputType, kIDA_GrBlendCoeff),
353 /* xor */ MakeCoverageFormula(BlendFormula::kSAModulate_OutputType, kIDA_GrBlendCoeff),
355 /* modulate */ MakeCoverageSrcCoeffZeroFormula(BlendFormula::kISCModulate_OutputType),
359 static BlendFormula get_blend_formula(bool isOpaque,
366 static BlendFormula get_lcd_blend_formula(SkBlendMode xfermode) {
376 PorterDuffXferProcessor(BlendFormula blendFormula, GrProcessorAnalysisCoverage coverage)
387 BlendFormula getBlendFormula() const { return fBlendFormula; }
406 const BlendFormula fBlendFormula;
415 BlendFormula::OutputType outputType, const char* output,
420 case BlendFormula::kNone_OutputType:
423 case BlendFormula::kCoverage_OutputType:
426 case BlendFormula::kModulate_OutputType:
429 case BlendFormula::kSAModulate_OutputType:
432 case BlendFormula::kISAModulate_OutputType:
435 case BlendFormula::kISCModulate_OutputType:
453 static_assert(BlendFormula::kLast_OutputType < 8);
463 const BlendFormula& blendFormula = xp.fBlendFormula;
722 BlendFormula blendFormula = [&](){
753 BlendFormula formula = [&](){
829 BlendFormula blendFormula = static_cast<const PorterDuffXferProcessor*>(xp)->getBlendFormula();
838 static BlendFormula gSrcOverBlendFormula =
855 BlendFormula blendFormula = get_blend_formula(true, false, SkBlendMode::kSrc);
883 BlendFormula blendFormula = get_lcd_blend_formula(SkBlendMode::kSrcOver);
893 BlendFormula formula = get_blend_formula(false, false, blendmode);