glide icon indicating copy to clipboard operation
glide copied to clipboard

Need workaround for Android U issue where single-channel, hardware gainmaps are dropped when rendering using skiagl

Open falhassen opened this issue 1 year ago • 1 comments
trafficstars

There is an AOSP bug in the original Android U release in https://android.googlesource.com/platform/frameworks/base/+/master/libs/hwui/HardwareBitmapUploader.cpp where single-channel bitmaps are initialized with the wrong GL enum (GL_R8 instead of GL_RGBA, introduced in https://cs.android.com/android/_/android/platform/frameworks/base/+/a008aa9c85bc136daefc4e056d88008cc4f55781:libs/hwui/HardwareBitmapUploader.cpp;dlc=4207fcf360998d0c6717f430c00aab13e5de80b9), causing the process of uploading the bitmap to hardware to fail.

As such, Ultra HDR images can fail to decode on Android U on devices where hwui is configured to use skiagl. This is not an issue on devices where hwui is configured to use skiavk.

A workaround could be to decode a single-channel, hardware 1x1 bitmap, see if it fails, and if it does, to copy the gainmap to a three-channel bitmap before uploading to hardware.

falhassen avatar Jan 30 '24 00:01 falhassen

Fixed `BitmapFactory in https://github.com/bumptech/glide/pull/5357.

But we still need a workaround for ImageDecoder like we do for BitmapFactory .

falhassen avatar Feb 03 '24 01:02 falhassen