From eceee040d69a2dd07c58c67c0a18b55f088cd35d Mon Sep 17 00:00:00 2001 From: Leon Scroggins III Date: Tue, 23 May 2017 16:58:09 -0400 Subject: [PATCH] Premultiply in DM before drawing unpremul f16 We special case N32, but need to also handle f16 Change-Id: I0d6061d55e55c5952c740255e4600366d8d77919 Reviewed-on: https://skia-review.googlesource.com/17786 Reviewed-by: Matt Sarett Commit-Queue: Leon Scroggins --- dm/DMSrcSink.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index 8979d2d..643a1a4 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -326,6 +326,16 @@ static void premultiply_if_necessary(SkBitmap& bitmap) { } switch (bitmap.colorType()) { + case kRGBA_F16_SkColorType: + for (int y = 0; y < bitmap.height(); y++) { + void* row = bitmap.getAddr(0, y); + SkRasterPipeline p; + p.append(SkRasterPipeline::load_f16, &row); + p.append(SkRasterPipeline::premul); + p.append(SkRasterPipeline::store_f16, &row); + p.run(0, bitmap.width()); + } + break; case kN32_SkColorType: for (int y = 0; y < bitmap.height(); y++) { uint32_t* row = (uint32_t*) bitmap.getAddr(0, y); -- 2.7.4