summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-03-15 19:32:40 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-03-15 19:32:44 +0000
commit498697d905c1b3ee36f7076c5f36c8677005c4f9 (patch)
treebf95dac654b4b02b49d36ee13af09836fd728faa
parent8fabcd4377351d5e5c2cd83ea8f7534d21fe5ae1 (diff)
parentd70532d123b816e0f2ae482258b4e3af56fcdcb2 (diff)
Merge "Don't apply the sRGB OETF twice on RGBAF16 bitmaps"
-rwxr-xr-xcore/jni/android/graphics/Bitmap.cpp12
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,