Fix recent apps in system UI for Skia pipeline
Enable HW Bitmaps for Skia pipelines by using a readback to convert GraphicBuffer into a raster SkImage. Both BitmapShader and drawing HW bitmaps into a canvas are supported. Test: recent apps work, no memory leaks, CTS graphics and UiRendering tests passed, HWUI unit test passed bug: 38136140 Change-Id: I23fed5febad3b1009e0417fb7e21a347a8d11b0d Merged-In: I23fed5febad3b1009e0417fb7e21a347a8d11b0d
This commit is contained in:
@@ -486,7 +486,13 @@ void Bitmap::setAlphaType(SkAlphaType alphaType) {
|
||||
void Bitmap::getSkBitmap(SkBitmap* outBitmap) {
|
||||
outBitmap->setHasHardwareMipMap(mHasHardwareMipMap);
|
||||
if (isHardware()) {
|
||||
outBitmap->allocPixels(info());
|
||||
if (uirenderer::Properties::isSkiaEnabled()) {
|
||||
// TODO: add color correctness for Skia pipeline - pass null color space for now
|
||||
outBitmap->allocPixels(SkImageInfo::Make(info().width(), info().height(),
|
||||
info().colorType(), info().alphaType(), nullptr));
|
||||
} else {
|
||||
outBitmap->allocPixels(info());
|
||||
}
|
||||
uirenderer::renderthread::RenderProxy::copyGraphicBufferInto(graphicBuffer(), outBitmap);
|
||||
return;
|
||||
}
|
||||
@@ -495,9 +501,13 @@ void Bitmap::getSkBitmap(SkBitmap* outBitmap) {
|
||||
}
|
||||
|
||||
void Bitmap::getSkBitmapForShaders(SkBitmap* outBitmap) {
|
||||
outBitmap->setInfo(info(), rowBytes());
|
||||
outBitmap->setPixelRef(this);
|
||||
outBitmap->setHasHardwareMipMap(mHasHardwareMipMap);
|
||||
if (isHardware() && uirenderer::Properties::isSkiaEnabled()) {
|
||||
getSkBitmap(outBitmap);
|
||||
} else {
|
||||
outBitmap->setInfo(info(), rowBytes());
|
||||
outBitmap->setPixelRef(this);
|
||||
outBitmap->setHasHardwareMipMap(mHasHardwareMipMap);
|
||||
}
|
||||
}
|
||||
|
||||
void Bitmap::getBounds(SkRect* bounds) const {
|
||||
|
||||
Reference in New Issue
Block a user