am c1e2bf95: am 4b5af9bc: Merge "[RenderScript] Update the java API about Allocation copyTo & From FieldPacker"

* commit 'c1e2bf95ab77127ea21ebd44b8615eca85338af1':
  [RenderScript] Update the java API about Allocation copyTo & From FieldPacker
This commit is contained in:
Miao Wang
2015-03-08 00:07:09 +00:00
committed by Android Git Automerger
3 changed files with 25 additions and 66 deletions

View File

@ -797,6 +797,7 @@ public class Allocation extends BaseObj {
copy1DRangeFromUnchecked(xoff, count, data);
}
/**
* This is only intended to be used by auto-generated code reflected from
* the RenderScript script files.
@ -809,20 +810,6 @@ public class Allocation extends BaseObj {
setFromFieldPacker(xoff, 0, 0, component_number, fp);
}
/**
* @hide
* This is only intended to be used by auto-generated code reflected from
* the RenderScript script files.
*
* @param xoff
* @param yoff
* @param component_number
* @param fp
*/
public void setFromFieldPacker(int xoff, int yoff, int component_number, FieldPacker fp) {
setFromFieldPacker(xoff, yoff, 0, component_number, fp);
}
/**
* @hide
* This is only intended to be used by auto-generated code reflected from
@ -1427,35 +1414,8 @@ public class Allocation extends BaseObj {
/**
* @hide
* Copy subelement from the Allocation into an object array.
* This is intended to be used with user defined structs
*
* @param xoff
* @param component_number
* @param array
*/
public void copyElementTo(int xoff, int component_number, Object array) {
copyElementTo(xoff, 0, 0, component_number, array);
}
/**
* @hide
* Copy subelement from the Allocation into an object array.
* This is intended to be used with user defined structs
*
* @param xoff
* @param yoff
* @param component_number
* @param array
*/
public void copyElementTo(int xoff, int yoff, int component_number, Object array) {
copyElementTo(xoff, yoff, 0, component_number, array);
}
/**
* @hide
* Copy subelement from the Allocation into an object array.
* This is intended to be used with user defined structs
* This is only intended to be used by auto-generated code reflected from
* the RenderScript script files and should not be used by developers.
*
* @param xoff
* @param yoff
@ -1463,8 +1423,7 @@ public class Allocation extends BaseObj {
* @param component_number
* @param array
*/
public void copyElementTo(int xoff, int yoff, int zoff, int component_number, Object array) {
Trace.traceBegin(RenderScript.TRACE_TAG, "copyElementTo");
public void copyToFieldPacker(int xoff, int yoff, int zoff, int component_number, FieldPacker fp) {
mRS.validate();
if (component_number >= mType.mElement.mElements.length) {
throw new RSIllegalArgumentException("Component_number " + component_number + " out of range.");
@ -1479,19 +1438,18 @@ public class Allocation extends BaseObj {
throw new RSIllegalArgumentException("Offset z must be >= 0.");
}
Element.DataType dt = validateObjectIsPrimitiveArray(array, false);
int array_size = java.lang.reflect.Array.getLength(array) * dt.mSize;
final byte[] data = fp.getData();
int data_length = fp.getPos();
int eSize = mType.mElement.mElements[component_number].getBytesSize();
eSize *= mType.mElement.mArraySizes[component_number];
if (array_size < eSize) {
throw new RSIllegalArgumentException("Array Size (bytes)" + array_size +
" is smaller than component size " + eSize + ".");
if (data_length != eSize) {
throw new RSIllegalArgumentException("Field packer sizelength " + data_length +
" does not match component size " + eSize + ".");
}
mRS.nAllocationElementRead(getIDSafe(), xoff, yoff, zoff, mSelectedLOD,
component_number, array, eSize, dt);
Trace.traceEnd(RenderScript.TRACE_TAG);
component_number, data, data_length);
}
/**
* Resize a 1D allocation. The contents of the allocation are preserved.

View File

@ -579,12 +579,11 @@ public class RenderScript {
}
native void rsnAllocationElementRead(long con,long id, int xoff, int yoff, int zoff,
int mip, int compIdx, Object d, int sizeBytes, int dt);
int mip, int compIdx, byte[] d, int sizeBytes);
synchronized void nAllocationElementRead(long id, int xoff, int yoff, int zoff,
int mip, int compIdx, Object d, int sizeBytes,
Element.DataType dt) {
int mip, int compIdx, byte[] d, int sizeBytes) {
validate();
rsnAllocationElementRead(mContext, id, xoff, yoff, zoff, mip, compIdx, d, sizeBytes, dt.mID);
rsnAllocationElementRead(mContext, id, xoff, yoff, zoff, mip, compIdx, d, sizeBytes);
}
native void rsnAllocationRead2D(long con, long id, int xoff, int yoff, int mip, int face,

View File

@ -1302,19 +1302,21 @@ nAllocationRead1D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint off
// Copies from the Element in the Allocation pointed to by _alloc into the Java array data.
static void
nAllocationElementRead(JNIEnv *_env, jobject _this, jlong con, jlong _alloc,
nAllocationElementRead(JNIEnv *_env, jobject _this, jlong con, jlong alloc,
jint xoff, jint yoff, jint zoff,
jint lod, jint compIdx, jobject data, jint sizeBytes, int dataType)
jint lod, jint compIdx, jbyteArray data, jint sizeBytes)
{
RsAllocation *alloc = (RsAllocation *)_alloc;
jint len = _env->GetArrayLength(data);
if (kLogApi) {
ALOGD("nAllocationElementRead, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), comp(%i), "
"sizeBytes(%i)", (RsContext)con, alloc, xoff, yoff, zoff, compIdx, sizeBytes);
ALOGD("nAllocationElementRead, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), comp(%i), len(%i), "
"sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, xoff, yoff, zoff, compIdx, len,
sizeBytes);
}
int mSize = sizeBytes;
int count = 0;
PER_ARRAY_TYPE(0, rsAllocationElementRead, false, (RsContext)con, alloc,
xoff, yoff, zoff, lod, ptr, sizeBytes, compIdx);
jbyte *ptr = _env->GetByteArrayElements(data, nullptr);
rsAllocationElementRead((RsContext)con, (RsAllocation)alloc,
xoff, yoff, zoff,
lod, ptr, sizeBytes, compIdx);
_env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
}
// Copies from the Allocation pointed to by _alloc into the Java object data.
@ -2377,7 +2379,7 @@ static JNINativeMethod methods[] = {
{"rsnAllocationData3D", "(JJIIIIIIIJIIII)V", (void*)nAllocationData3D_alloc },
{"rsnAllocationRead", "(JJLjava/lang/Object;IIZ)V", (void*)nAllocationRead },
{"rsnAllocationRead1D", "(JJIIILjava/lang/Object;IIIZ)V", (void*)nAllocationRead1D },
{"rsnAllocationElementRead", "(JJIIIIILjava/lang/Object;II)V", (void*)nAllocationElementRead },
{"rsnAllocationElementRead", "(JJIIIII[BI)V", (void*)nAllocationElementRead },
{"rsnAllocationRead2D", "(JJIIIIIILjava/lang/Object;IIIZ)V", (void*)nAllocationRead2D },
{"rsnAllocationRead3D", "(JJIIIIIIILjava/lang/Object;IIIZ)V", (void*)nAllocationRead3D },
{"rsnAllocationGetType", "(JJ)J", (void*)nAllocationGetType},