diff options
Diffstat (limited to 'libs/hwui/pipeline/skia/LayerDrawable.cpp')
-rw-r--r-- | libs/hwui/pipeline/skia/LayerDrawable.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libs/hwui/pipeline/skia/LayerDrawable.cpp b/libs/hwui/pipeline/skia/LayerDrawable.cpp index f95f347cffaf..34df5ddbb210 100644 --- a/libs/hwui/pipeline/skia/LayerDrawable.cpp +++ b/libs/hwui/pipeline/skia/LayerDrawable.cpp @@ -141,18 +141,20 @@ bool LayerDrawable::DrawLayer(GrRecordingContext* context, // then use nearest neighbor, otherwise use bilerp sampling. // Skia TextureOp has the above logic build-in, but not NonAAFillRectOp. TextureOp works // only for SrcOver blending and without color filter (readback uses Src blending). + SkSamplingOptions sampling(SkFilterMode::kNearest); if (layer->getForceFilter() || shouldFilterRect(totalMatrix, skiaSrcRect, skiaDestRect)) { - paint.setFilterQuality(kLow_SkFilterQuality); + sampling = SkSamplingOptions(SkFilterMode::kLinear); } - canvas->drawImageRect(layerImage.get(), skiaSrcRect, skiaDestRect, &paint, + canvas->drawImageRect(layerImage.get(), skiaSrcRect, skiaDestRect, sampling, &paint, SkCanvas::kFast_SrcRectConstraint); } else { SkRect imageRect = SkRect::MakeIWH(layerImage->width(), layerImage->height()); + SkSamplingOptions sampling(SkFilterMode::kNearest); if (layer->getForceFilter() || shouldFilterRect(totalMatrix, imageRect, imageRect)) { - paint.setFilterQuality(kLow_SkFilterQuality); + sampling = SkSamplingOptions(SkFilterMode::kLinear); } - canvas->drawImage(layerImage.get(), 0, 0, &paint); + canvas->drawImage(layerImage.get(), 0, 0, sampling, &paint); } // restore the original matrix if (nonIdentityMatrix) { |