diff options
author | Leon Scroggins III <scroggo@google.com> | 2019-03-26 16:28:41 -0400 |
---|---|---|
committer | Leon Scroggins III <scroggo@google.com> | 2019-03-27 13:39:23 -0400 |
commit | 71fae62f5fe03e9f8453ac3880587567ffcf9be6 (patch) | |
tree | 2d6c009c2e34eaebd050506048406dd1876a9f02 /rs/java/android/renderscript | |
parent | ca8aef63766b3193464b8f9b4cde45324a83789a (diff) |
Pass Bitmap's native instance to JNI where feasible
Test: CtsGraphicsTestCases, CtsUiRenderingTestCases,
CtsRenderscriptTestCases
This is significantly faster than passing the Java object down and then
calling a JNI method to retrieve the pointer. See
https://buganizer.corp.google.com/issues/16656908#comment19
In some cases this changes what used to be native crashes (due to
android::BitmapWrapper:assertValid's LOG_ALWAYS_FATAL_IF) into
NullPointerExceptions (if a caller used a null Bitmap).
In addition:
- Remove unnecessary JNIEnv param from toBitmap(jlong)
- Change instances of toBitmap(JNIEnv*, jobject) to the above
- Replace calls to GraphicsJNI::getSkBitmap() to inline calls to
toBitmap/getSkBitmap
- make Canvas#nInitRaster @FastNative (FIXME: Could these be
@CriticalNative?)
Change-Id: I6194097be1b6e6952eba70e1e7052a5a250eed93
Diffstat (limited to 'rs/java/android/renderscript')
-rw-r--r-- | rs/java/android/renderscript/RenderScript.java | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/rs/java/android/renderscript/RenderScript.java b/rs/java/android/renderscript/RenderScript.java index 85c82bc009a0..f4c27771c846 100644 --- a/rs/java/android/renderscript/RenderScript.java +++ b/rs/java/android/renderscript/RenderScript.java @@ -447,27 +447,33 @@ public class RenderScript { validate(); return rsnAllocationCreateTyped(mContext, type, mip, usage, pointer); } - native long rsnAllocationCreateFromBitmap(long con, long type, int mip, Bitmap bmp, int usage); + native long rsnAllocationCreateFromBitmap(long con, long type, int mip, long bitmapHandle, + int usage); synchronized long nAllocationCreateFromBitmap(long type, int mip, Bitmap bmp, int usage) { validate(); - return rsnAllocationCreateFromBitmap(mContext, type, mip, bmp, usage); + return rsnAllocationCreateFromBitmap(mContext, type, mip, bmp.getNativeInstance(), usage); } - native long rsnAllocationCreateBitmapBackedAllocation(long con, long type, int mip, Bitmap bmp, int usage); - synchronized long nAllocationCreateBitmapBackedAllocation(long type, int mip, Bitmap bmp, int usage) { + native long rsnAllocationCreateBitmapBackedAllocation(long con, long type, int mip, long bitmapHandle, + int usage); + synchronized long nAllocationCreateBitmapBackedAllocation(long type, int mip, Bitmap bmp, + int usage) { validate(); - return rsnAllocationCreateBitmapBackedAllocation(mContext, type, mip, bmp, usage); + return rsnAllocationCreateBitmapBackedAllocation(mContext, type, mip, bmp.getNativeInstance(), + usage); } - native long rsnAllocationCubeCreateFromBitmap(long con, long type, int mip, Bitmap bmp, int usage); + native long rsnAllocationCubeCreateFromBitmap(long con, long type, int mip, long bitmapHandle, + int usage); synchronized long nAllocationCubeCreateFromBitmap(long type, int mip, Bitmap bmp, int usage) { validate(); - return rsnAllocationCubeCreateFromBitmap(mContext, type, mip, bmp, usage); + return rsnAllocationCubeCreateFromBitmap(mContext, type, mip, bmp.getNativeInstance(), + usage); } - native long rsnAllocationCreateBitmapRef(long con, long type, Bitmap bmp); + native long rsnAllocationCreateBitmapRef(long con, long type, long bitmapHandle); synchronized long nAllocationCreateBitmapRef(long type, Bitmap bmp) { validate(); - return rsnAllocationCreateBitmapRef(mContext, type, bmp); + return rsnAllocationCreateBitmapRef(mContext, type, bmp.getNativeInstance()); } native long rsnAllocationCreateFromAssetStream(long con, int mips, int assetStream, int usage); synchronized long nAllocationCreateFromAssetStream(int mips, int assetStream, int usage) { @@ -475,10 +481,10 @@ public class RenderScript { return rsnAllocationCreateFromAssetStream(mContext, mips, assetStream, usage); } - native void rsnAllocationCopyToBitmap(long con, long alloc, Bitmap bmp); + native void rsnAllocationCopyToBitmap(long con, long alloc, long bitmapHandle); synchronized void nAllocationCopyToBitmap(long alloc, Bitmap bmp) { validate(); - rsnAllocationCopyToBitmap(mContext, alloc, bmp); + rsnAllocationCopyToBitmap(mContext, alloc, bmp.getNativeInstance()); } native void rsnAllocationSyncAll(long con, long alloc, int src); @@ -487,8 +493,10 @@ public class RenderScript { rsnAllocationSyncAll(mContext, alloc, src); } - native ByteBuffer rsnAllocationGetByteBuffer(long con, long alloc, long[] stride, int xBytesSize, int dimY, int dimZ); - synchronized ByteBuffer nAllocationGetByteBuffer(long alloc, long[] stride, int xBytesSize, int dimY, int dimZ) { + native ByteBuffer rsnAllocationGetByteBuffer(long con, long alloc, long[] stride, + int xBytesSize, int dimY, int dimZ); + synchronized ByteBuffer nAllocationGetByteBuffer(long alloc, long[] stride, int xBytesSize, + int dimY, int dimZ) { validate(); return rsnAllocationGetByteBuffer(mContext, alloc, stride, xBytesSize, dimY, dimZ); } @@ -529,10 +537,10 @@ public class RenderScript { validate(); rsnAllocationGenerateMipmaps(mContext, alloc); } - native void rsnAllocationCopyFromBitmap(long con, long alloc, Bitmap bmp); + native void rsnAllocationCopyFromBitmap(long con, long alloc, long bitmapHandle); synchronized void nAllocationCopyFromBitmap(long alloc, Bitmap bmp) { validate(); - rsnAllocationCopyFromBitmap(mContext, alloc, bmp); + rsnAllocationCopyFromBitmap(mContext, alloc, bmp.getNativeInstance()); } |