diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp index 0a755f0d67fdb..cbebae9ed4389 100644 --- a/libs/hwui/hwui/Bitmap.cpp +++ b/libs/hwui/hwui/Bitmap.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -458,6 +459,16 @@ BitmapPalette Bitmap::computePalette(const SkImageInfo& info, const void* addr, } bool Bitmap::compress(JavaCompressFormat format, int32_t quality, SkWStream* stream) { +#ifdef __ANDROID__ // TODO: This isn't built for host for some reason? + if (hasGainmap() && format == JavaCompressFormat::Jpeg) { + SkBitmap baseBitmap = getSkBitmap(); + SkBitmap gainmapBitmap = gainmap()->bitmap->getSkBitmap(); + SkJpegEncoder::Options options{.fQuality = quality}; + return SkJpegGainmapEncoder::EncodeJpegR(stream, baseBitmap.pixmap(), options, + gainmapBitmap.pixmap(), options, gainmap()->info); + } +#endif + SkBitmap skbitmap; getSkBitmap(&skbitmap); return compress(skbitmap, format, quality, stream);