Update bitmap shaders to the special no-copy image shaders.
Test: hwui unit tests and CTS graphics tests pass
Change-Id: Ifd031076d0eac95a30bce9ecaa6f43e9c70f3c54
diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp
index 657b1ef..0de46e6 100644
--- a/core/jni/android/graphics/Shader.cpp
+++ b/core/jni/android/graphics/Shader.cpp
@@ -95,15 +95,13 @@
// we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility.
GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap);
}
- sk_sp<SkShader> s = SkMakeBitmapShader(bitmap,
- (SkShader::TileMode)tileModeX,
- (SkShader::TileMode)tileModeY,
- nullptr,
- kNever_SkCopyPixelsMode,
- nullptr);
- ThrowIAE_IfNull(env, s.get());
- return reinterpret_cast<jlong>(s.release());
+ sk_sp<SkImage> image = SkMakeImageFromRasterBitmap(bitmap, kNever_SkCopyPixelsMode);
+ sk_sp<SkShader> shader = image->makeShader((SkShader::TileMode)tileModeX,
+ (SkShader::TileMode)tileModeY);
+
+ ThrowIAE_IfNull(env, shader.get());
+ return reinterpret_cast<jlong>(shader.release());
}
///////////////////////////////////////////////////////////////////////////////////////////////