Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b5af9bc authored by Miao Wang's avatar Miao Wang Committed by Gerrit Code Review
Browse files

Merge "[RenderScript] Update the java API about Allocation copyTo & From FieldPacker"

parents 8b86ee9f 45cec0a9
Loading
Loading
Loading
Loading
+10 −52
Original line number Diff line number Diff line
@@ -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
@@ -1423,35 +1410,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
@@ -1459,8 +1419,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.");
@@ -1475,19 +1434,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.
+3 −4
Original line number Diff line number Diff line
@@ -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,
+12 −10
Original line number Diff line number Diff line
@@ -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},