diff options
| author | 2017-03-15 19:32:40 +0000 | |
|---|---|---|
| committer | 2017-03-15 19:32:44 +0000 | |
| commit | 498697d905c1b3ee36f7076c5f36c8677005c4f9 (patch) | |
| tree | bf95dac654b4b02b49d36ee13af09836fd728faa | |
| parent | 8fabcd4377351d5e5c2cd83ea8f7534d21fe5ae1 (diff) | |
| parent | d70532d123b816e0f2ae482258b4e3af56fcdcb2 (diff) | |
Merge "Don't apply the sRGB OETF twice on RGBAF16 bitmaps"
| -rwxr-xr-x | core/jni/android/graphics/Bitmap.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index f85219453212..a8d683028c13 100755 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -453,7 +453,8 @@ bool GraphicsJNI::SetPixels(JNIEnv* env, jintArray srcColors, int srcOffset, int dst = dstBitmap.getAddr(x, y); SkColorSpace* colorSpace = dstBitmap.colorSpace(); - if (GraphicsJNI::isColorSpaceSRGB(colorSpace)) { + if (dstBitmap.colorType() == kRGBA_F16_SkColorType || + GraphicsJNI::isColorSpaceSRGB(colorSpace)) { // now copy/convert each scanline for (int y = 0; y < height; y++) { proc(dst, src, width, x, y); @@ -1267,7 +1268,8 @@ static jint Bitmap_getPixel(JNIEnv* env, jobject, jlong bitmapHandle, proc(dst, src, 1, bitmap.getColorTable()); SkColorSpace* colorSpace = bitmap.colorSpace(); - if (!GraphicsJNI::isColorSpaceSRGB(colorSpace)) { + if (bitmap.colorType() != kRGBA_F16_SkColorType && + !GraphicsJNI::isColorSpaceSRGB(colorSpace)) { auto sRGB = SkColorSpace::MakeSRGB(); auto xform = SkColorSpaceXform::New(colorSpace, sRGB.get()); xform->apply(SkColorSpaceXform::kBGRA_8888_ColorFormat, &dst[0], @@ -1299,7 +1301,8 @@ static void Bitmap_getPixels(JNIEnv* env, jobject, jlong bitmapHandle, SkColor* d = (SkColor*)dst + offset; SkColorSpace* colorSpace = bitmap.colorSpace(); - if (GraphicsJNI::isColorSpaceSRGB(colorSpace)) { + if (bitmap.colorType() == kRGBA_F16_SkColorType || + GraphicsJNI::isColorSpaceSRGB(colorSpace)) { while (--height >= 0) { proc(d, src, width, ctable); d += stride; @@ -1342,7 +1345,8 @@ static void Bitmap_setPixel(JNIEnv* env, jobject, jlong bitmapHandle, } SkColorSpace* colorSpace = bitmap.colorSpace(); - if (!GraphicsJNI::isColorSpaceSRGB(colorSpace)) { + if (bitmap.colorType() != kRGBA_F16_SkColorType && + !GraphicsJNI::isColorSpaceSRGB(colorSpace)) { auto sRGB = SkColorSpace::MakeSRGB(); auto xform = SkColorSpaceXform::New(sRGB.get(), colorSpace); xform->apply(SkColorSpaceXform::kBGRA_8888_ColorFormat, &color, |