From fb191da789c988b6ed1502cc1c210be3f9c53b52 Mon Sep 17 00:00:00 2001 From: Mike Klein Date: Tue, 15 Nov 2016 13:20:33 -0500 Subject: More shader preliminaries / refactoring - thread through ctm - make blitter handle paint modulation instead of each shader TBR=herb@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4830 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Change-Id: I8161e6b3864c4e48e4d47d5ad40a56a13c02fee8 Reviewed-on: https://skia-review.googlesource.com/4830 Reviewed-by: Mike Klein Reviewed-by: Herb Derby Commit-Queue: Mike Klein --- src/core/SkColorShader.cpp | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) (limited to 'src/core/SkColorShader.cpp') diff --git a/src/core/SkColorShader.cpp b/src/core/SkColorShader.cpp index 69d9e46b27..072e2a9a5f 100644 --- a/src/core/SkColorShader.cpp +++ b/src/core/SkColorShader.cpp @@ -309,34 +309,21 @@ bool SkColor4Shader::Color4Context::onChooseBlitProcs(const SkImageInfo& info, B return choose_blitprocs(&fPM4f, info, state); } -// To shade a constant color: -// 1) move the paint color to dst registers -// 2) load the constant color into the src registers -// 3) srcin, s' = s*da, modulating the src color by the paint alpha. - bool SkColorShader::onAppendStages(SkRasterPipeline* p, SkColorSpace* dst, - SkFallbackAlloc* scratch) const { + SkFallbackAlloc* scratch, + const SkMatrix& ctm) const { auto color = scratch->make(SkPM4f_from_SkColor(fColor, dst)); - p->append(SkRasterPipeline::move_src_dst); p->append(SkRasterPipeline::constant_color, color); - if (!append_gamut_transform(p, scratch, - SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named).get(), dst)) { - return false; - } - p->append(SkRasterPipeline::srcin); - return true; + return append_gamut_transform(p, scratch, + SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named).get(), dst); } bool SkColor4Shader::onAppendStages(SkRasterPipeline* p, SkColorSpace* dst, - SkFallbackAlloc* scratch) const { + SkFallbackAlloc* scratch, + const SkMatrix& ctm) const { auto color = scratch->make(fColor4.premul()); - p->append(SkRasterPipeline::move_src_dst); p->append(SkRasterPipeline::constant_color, color); - if (!append_gamut_transform(p, scratch, fColorSpace.get(), dst)) { - return false; - } - p->append(SkRasterPipeline::srcin); - return true; + return append_gamut_transform(p, scratch, fColorSpace.get(), dst); } -- cgit v1.2.3