From 450756ab69a77b9f198f133c275b11d5f1731be6 Mon Sep 17 00:00:00 2001 From: Derek Sollenberger Date: Mon, 7 Nov 2016 15:55:47 -0500 Subject: [PATCH] Update bitmap shaders to the special no-copy image shaders. Test: hwui unit tests and CTS graphics tests pass Change-Id: Ifd031076d0eac95a30bce9ecaa6f43e9c70f3c54 --- core/jni/Android.mk | 1 + core/jni/android/graphics/Shader.cpp | 14 ++++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/core/jni/Android.mk b/core/jni/Android.mk index 91e831074615a..f5429a1c50827 100644 --- a/core/jni/Android.mk +++ b/core/jni/Android.mk @@ -211,6 +211,7 @@ LOCAL_C_INCLUDES += \ external/skia/include/private \ external/skia/src/core \ external/skia/src/effects \ + external/skia/src/image \ external/skia/src/images \ external/sqlite/dist \ external/sqlite/android \ diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp index 657b1ef63043f..0de46e6b4d046 100644 --- a/core/jni/android/graphics/Shader.cpp +++ b/core/jni/android/graphics/Shader.cpp @@ -95,15 +95,13 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jobject jbitmap, // we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility. GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); } - sk_sp s = SkMakeBitmapShader(bitmap, - (SkShader::TileMode)tileModeX, - (SkShader::TileMode)tileModeY, - nullptr, - kNever_SkCopyPixelsMode, - nullptr); - ThrowIAE_IfNull(env, s.get()); - return reinterpret_cast(s.release()); + sk_sp image = SkMakeImageFromRasterBitmap(bitmap, kNever_SkCopyPixelsMode); + sk_sp shader = image->makeShader((SkShader::TileMode)tileModeX, + (SkShader::TileMode)tileModeY); + + ThrowIAE_IfNull(env, shader.get()); + return reinterpret_cast(shader.release()); } ///////////////////////////////////////////////////////////////////////////////////////////////