Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 038fc373 authored by Stan Iliev's avatar Stan Iliev
Browse files

Set bilinear filter quality when drawing VectorDrawable

Set filter quality to GL_LINEAR, when drawing
VectorDrawable cache into the frame buffer.

Bug: 77841258
Test: Search bar icon jagged edge in launcher fixed
Change-Id: I91270f64964ae3ba7a47264aec395bc2c2d9e968
parent bd493762
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -474,14 +474,13 @@ SkPaint* Tree::getPaint() {
// Update the given paint with alpha and color filter. Return nullptr if no color filter is
// specified and root alpha is 1. Otherwise, return updated paint.
SkPaint* Tree::updatePaint(SkPaint* outPaint, TreeProperties* prop) {
    if (prop->getRootAlpha() == 1.0f && prop->getColorFilter() == nullptr) {
        return nullptr;
    } else {
        outPaint->setColorFilter(sk_ref_sp(prop->getColorFilter()));
    // HWUI always draws VD with bilinear filtering.
    outPaint->setFilterQuality(kLow_SkFilterQuality);
    if (prop->getRootAlpha() < 1.0f || prop->getColorFilter() != nullptr) {
        outPaint->setColorFilter(sk_ref_sp(prop->getColorFilter()));
        outPaint->setAlpha(prop->getRootAlpha() * 255);
        return outPaint;
    }
    return outPaint;
}

Bitmap& Tree::getBitmapUpdateIfDirty() {
+2 −3
Original line number Diff line number Diff line
@@ -257,9 +257,8 @@ void SkiaRecordingCanvas::drawNinePatch(Bitmap& bitmap, const Res_png_9patch& ch
    SkRect dst = SkRect::MakeLTRB(dstLeft, dstTop, dstRight, dstBottom);

    PaintCoW filteredPaint(paint);
    // Besides kNone, the other three SkFilterQualities are treated the same. And Android's
    // Java API only supports kLow and kNone anyway.
    if (!filteredPaint || filteredPaint->getFilterQuality() == kNone_SkFilterQuality) {
    // HWUI always draws 9-patches with bilinear filtering, regardless of what is set in the Paint.
    if (!filteredPaint || filteredPaint->getFilterQuality() != kLow_SkFilterQuality) {
        filteredPaint.writeable().setFilterQuality(kLow_SkFilterQuality);
    }
    sk_sp<SkColorFilter> colorFilter;