summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorAlex Sakhartchouk <alexst@google.com>2010-10-11 12:35:15 -0700
committerAlex Sakhartchouk <alexst@google.com>2010-10-11 14:04:09 -0700
commit26ae3904e8050eae655722caf93ee5d3f0ab195a (patch)
tree9dfbe324379dd9ea0067011fa85a62a348a66961 /graphics
parent3e6fee857a317d35b4861b8bb24a2d3e5e3e6fc2 (diff)
downloadframeworks_base-26ae3904e8050eae655722caf93ee5d3f0ab195a.zip
frameworks_base-26ae3904e8050eae655722caf93ee5d3f0ab195a.tar.gz
frameworks_base-26ae3904e8050eae655722caf93ee5d3f0ab195a.tar.bz2
Update allocation from bitmap.
GL attribute cleanup in type. Change-Id: I504dcf6744ad13d65e068e784b6608c999ab48c6
Diffstat (limited to 'graphics')
-rw-r--r--graphics/java/android/renderscript/Allocation.java12
-rw-r--r--graphics/java/android/renderscript/RenderScript.java4
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp18
3 files changed, 34 insertions, 0 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
index 06bfbcf..6c08ce5 100644
--- a/graphics/java/android/renderscript/Allocation.java
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -90,6 +90,18 @@ public class Allocation extends BaseObj {
subData1D(0, mType.getElementCount(), d);
}
+ public void updateFromBitmap(Bitmap b)
+ throws IllegalArgumentException {
+
+ mRS.validate();
+ if(mType.getX() != b.getWidth() ||
+ mType.getY() != b.getHeight()) {
+ throw new IllegalArgumentException("Cannot update allocation from bitmap, sizes mismatch");
+ }
+
+ mRS.nAllocationUpdateFromBitmap(mID, b);
+ }
+
public void subData(int xoff, FieldPacker fp) {
int eSize = mType.mElement.getSizeBytes();
final byte[] data = fp.getData();
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 8ad54c9..2774fea 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -186,6 +186,10 @@ public class RenderScript {
synchronized int nAllocationCreateTyped(int type) {
return rsnAllocationCreateTyped(mContext, type);
}
+ native void rsnAllocationUpdateFromBitmap(int con, int alloc, Bitmap bmp);
+ synchronized void nAllocationUpdateFromBitmap(int alloc, Bitmap bmp) {
+ rsnAllocationUpdateFromBitmap(mContext, alloc, bmp);
+ }
native int rsnAllocationCreateFromBitmap(int con, int dstFmt, boolean genMips, Bitmap bmp);
synchronized int nAllocationCreateFromBitmap(int dstFmt, boolean genMips, Bitmap bmp) {
return rsnAllocationCreateFromBitmap(mContext, dstFmt, genMips, bmp);
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 586d7e9..014f03b 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -423,6 +423,23 @@ nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint dst
return 0;
}
+static void
+nAllocationUpdateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap)
+{
+ SkBitmap const * nativeBitmap =
+ (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
+ const SkBitmap& bitmap(*nativeBitmap);
+ SkBitmap::Config config = bitmap.getConfig();
+
+ RsElement e = SkBitmapToPredefined(config);
+ if (e) {
+ bitmap.lockPixels();
+ const void* ptr = bitmap.getPixels();
+ rsAllocationUpdateFromBitmap(con, (RsAllocation)alloc, e, ptr);
+ bitmap.unlockPixels();
+ }
+}
+
static void ReleaseBitmapCallback(void *bmp)
{
SkBitmap const * nativeBitmap = (SkBitmap const *)bmp;
@@ -1234,6 +1251,7 @@ static JNINativeMethod methods[] = {
{"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData },
{"rsnAllocationCreateTyped", "(II)I", (void*)nAllocationCreateTyped },
+{"rsnAllocationUpdateFromBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationUpdateFromBitmap },
{"rsnAllocationCreateFromBitmap", "(IIZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap },
{"rsnAllocationCreateBitmapRef", "(IILandroid/graphics/Bitmap;)I", (void*)nAllocationCreateBitmapRef },
{"rsnAllocationCreateFromAssetStream","(IIZI)I", (void*)nAllocationCreateFromAssetStream },