diff options
Diffstat (limited to 'src/shaders/SkImageShader.cpp')
-rw-r--r-- | src/shaders/SkImageShader.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp index af3dab92a0..4ca6cd9d8f 100644 --- a/src/shaders/SkImageShader.cpp +++ b/src/shaders/SkImageShader.cpp @@ -338,14 +338,22 @@ bool SkImageShader::onAppendStages(const StageRec& rec) const { case kMirror_TileMode: p->append(SkRasterPipeline::mirror_y, limit_y); break; case kRepeat_TileMode: p->append(SkRasterPipeline::repeat_y, limit_y); break; } + void* ctx = gather; switch (info.colorType()) { - case kAlpha_8_SkColorType: p->append(SkRasterPipeline::gather_a8, gather); break; - case kGray_8_SkColorType: p->append(SkRasterPipeline::gather_g8, gather); break; - case kRGB_565_SkColorType: p->append(SkRasterPipeline::gather_565, gather); break; - case kARGB_4444_SkColorType: p->append(SkRasterPipeline::gather_4444, gather); break; - case kBGRA_8888_SkColorType: p->append(SkRasterPipeline::gather_bgra, gather); break; - case kRGBA_8888_SkColorType: p->append(SkRasterPipeline::gather_8888, gather); break; - case kRGBA_F16_SkColorType: p->append(SkRasterPipeline::gather_f16, gather); break; + case kAlpha_8_SkColorType: p->append(SkRasterPipeline::gather_a8, ctx); break; + case kGray_8_SkColorType: p->append(SkRasterPipeline::gather_g8, ctx); break; + case kRGB_565_SkColorType: p->append(SkRasterPipeline::gather_565, ctx); break; + case kARGB_4444_SkColorType: p->append(SkRasterPipeline::gather_4444, ctx); break; + case kBGRA_8888_SkColorType: p->append(SkRasterPipeline::gather_bgra, ctx); break; + case kRGBA_8888_SkColorType: p->append(SkRasterPipeline::gather_8888, ctx); break; + case kRGBA_1010102_SkColorType: p->append(SkRasterPipeline::gather_1010102, ctx); break; + case kRGBA_F16_SkColorType: p->append(SkRasterPipeline::gather_f16, ctx); break; + + case kRGB_888x_SkColorType: p->append(SkRasterPipeline::gather_8888, ctx); + p->append(SkRasterPipeline::force_opaque ); break; + case kRGB_101010x_SkColorType: p->append(SkRasterPipeline::gather_1010102, ctx); + p->append(SkRasterPipeline::force_opaque ); break; + default: SkASSERT(false); } if (is_srgb) { |