am 62d675c2: am 0d3548be: am d138029d: am 14420e29: Merge "AArch64: Use long[] for RS id array"

* commit '62d675c240fd87cb987c86ae4f6ac17dc13374c8':
  AArch64: Use long[] for RS id array
This commit is contained in:
Narayan Kamath
2014-02-28 13:35:07 +00:00
committed by Android Git Automerger
10 changed files with 213 additions and 149 deletions

View File

@@ -800,8 +800,6 @@ public class Element extends BaseObj {
void updateFromNative() {
super.updateFromNative();
// FIXME: updateFromNative is broken in JNI for 64-bit
// we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements
int[] dataBuffer = new int[5];
mRS.nElementGetNativeData(getID(mRS), dataBuffer);
@@ -828,7 +826,7 @@ public class Element extends BaseObj {
mArraySizes = new int[numSubElements];
mOffsetInBytes = new int[numSubElements];
int[] subElementIds = new int[numSubElements];
long[] subElementIds = new long[numSubElements];
mRS.nElementGetSubElements(getID(mRS), subElementIds, mElementNames, mArraySizes);
for(int i = 0; i < numSubElements; i ++) {
mElements[i] = new Element(subElementIds[i], mRS);
@@ -1087,10 +1085,9 @@ public class Element extends BaseObj {
java.lang.System.arraycopy(mElementNames, 0, sin, 0, mCount);
java.lang.System.arraycopy(mArraySizes, 0, asin, 0, mCount);
// FIXME: broken for 64-bit
int[] ids = new int[ein.length];
long[] ids = new long[ein.length];
for (int ct = 0; ct < ein.length; ct++ ) {
ids[ct] = (int)ein[ct].getID(mRS);
ids[ct] = ein[ct].getID(mRS);
}
long id = mRS.nElementCreate2(ids, sin, asin);
return new Element(id, mRS, ein, sin, asin);

View File

@@ -152,8 +152,8 @@ public class Mesh extends BaseObj {
int vtxCount = mRS.nMeshGetVertexBufferCount(getID(mRS));
int idxCount = mRS.nMeshGetIndexCount(getID(mRS));
int[] vtxIDs = new int[vtxCount];
int[] idxIDs = new int[idxCount];
long[] vtxIDs = new long[vtxCount];
long[] idxIDs = new long[idxCount];
int[] primitives = new int[idxCount];
mRS.nMeshGetVertices(getID(mRS), vtxIDs, vtxCount);
@@ -348,8 +348,8 @@ public class Mesh extends BaseObj {
**/
public Mesh create() {
mRS.validate();
int[] vtx = new int[mVertexTypeCount];
int[] idx = new int[mIndexTypes.size()];
long[] vtx = new long[mVertexTypeCount];
long[] idx = new long[mIndexTypes.size()];
int[] prim = new int[mIndexTypes.size()];
Allocation[] vertexBuffers = new Allocation[mVertexTypeCount];
@@ -365,7 +365,7 @@ public class Mesh extends BaseObj {
alloc = Allocation.createSized(mRS, entry.e, entry.size, mUsage);
}
vertexBuffers[ct] = alloc;
vtx[ct] = (int)alloc.getID(mRS);
vtx[ct] = alloc.getID(mRS);
}
for(int ct = 0; ct < mIndexTypes.size(); ct ++) {
@@ -380,7 +380,7 @@ public class Mesh extends BaseObj {
indexBuffers[ct] = alloc;
primitives[ct] = entry.prim;
idx[ct] = (int)allocID;
idx[ct] = allocID;
prim[ct] = entry.prim.mID;
}
@@ -504,8 +504,8 @@ public class Mesh extends BaseObj {
public Mesh create() {
mRS.validate();
int[] vtx = new int[mVertexTypeCount];
int[] idx = new int[mIndexTypes.size()];
long[] vtx = new long[mVertexTypeCount];
long[] idx = new long[mIndexTypes.size()];
int[] prim = new int[mIndexTypes.size()];
Allocation[] indexBuffers = new Allocation[mIndexTypes.size()];
@@ -515,7 +515,7 @@ public class Mesh extends BaseObj {
for(int ct = 0; ct < mVertexTypeCount; ct ++) {
Entry entry = mVertexTypes[ct];
vertexBuffers[ct] = entry.a;
vtx[ct] = (int)entry.a.getID(mRS);
vtx[ct] = entry.a.getID(mRS);
}
for(int ct = 0; ct < mIndexTypes.size(); ct ++) {
@@ -524,7 +524,7 @@ public class Mesh extends BaseObj {
indexBuffers[ct] = entry.a;
primitives[ct] = entry.prim;
idx[ct] = (int)allocID;
idx[ct] = allocID;
prim[ct] = entry.prim.mID;
}

View File

@@ -62,25 +62,25 @@ public class ProgramFragment extends Program {
*/
public ProgramFragment create() {
mRS.validate();
int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
long[] tmp = new long[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
String[] texNames = new String[mTextureCount];
int idx = 0;
for (int i=0; i < mInputCount; i++) {
tmp[idx++] = ProgramParam.INPUT.mID;
tmp[idx++] = (int)mInputs[i].getID(mRS);
tmp[idx++] = mInputs[i].getID(mRS);
}
for (int i=0; i < mOutputCount; i++) {
tmp[idx++] = ProgramParam.OUTPUT.mID;
tmp[idx++] = (int)mOutputs[i].getID(mRS);
tmp[idx++] = mOutputs[i].getID(mRS);
}
for (int i=0; i < mConstantCount; i++) {
tmp[idx++] = ProgramParam.CONSTANT.mID;
tmp[idx++] = (int)mConstants[i].getID(mRS);
tmp[idx++] = mConstants[i].getID(mRS);
}
for (int i=0; i < mTextureCount; i++) {
tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
tmp[idx++] = (int)mTextureTypes[i].mID;
tmp[idx++] = mTextureTypes[i].mID;
texNames[i] = mTextureNames[i];
}

View File

@@ -49,25 +49,25 @@ public class ProgramFragmentFixedFunction extends ProgramFragment {
*/
public ProgramFragmentFixedFunction create() {
mRS.validate();
int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
long[] tmp = new long[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
String[] texNames = new String[mTextureCount];
int idx = 0;
for (int i=0; i < mInputCount; i++) {
tmp[idx++] = ProgramParam.INPUT.mID;
tmp[idx++] = (int)mInputs[i].getID(mRS);
tmp[idx++] = mInputs[i].getID(mRS);
}
for (int i=0; i < mOutputCount; i++) {
tmp[idx++] = ProgramParam.OUTPUT.mID;
tmp[idx++] = (int)mOutputs[i].getID(mRS);
tmp[idx++] = mOutputs[i].getID(mRS);
}
for (int i=0; i < mConstantCount; i++) {
tmp[idx++] = ProgramParam.CONSTANT.mID;
tmp[idx++] = (int)mConstants[i].getID(mRS);
tmp[idx++] = mConstants[i].getID(mRS);
}
for (int i=0; i < mTextureCount; i++) {
tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
tmp[idx++] = (int)mTextureTypes[i].mID;
tmp[idx++] = mTextureTypes[i].mID;
texNames[i] = mTextureNames[i];
}

View File

@@ -122,25 +122,25 @@ public class ProgramVertex extends Program {
*/
public ProgramVertex create() {
mRS.validate();
int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
long[] tmp = new long[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
String[] texNames = new String[mTextureCount];
int idx = 0;
for (int i=0; i < mInputCount; i++) {
tmp[idx++] = ProgramParam.INPUT.mID;
tmp[idx++] = (int)mInputs[i].getID(mRS);
tmp[idx++] = mInputs[i].getID(mRS);
}
for (int i=0; i < mOutputCount; i++) {
tmp[idx++] = ProgramParam.OUTPUT.mID;
tmp[idx++] = (int)mOutputs[i].getID(mRS);
tmp[idx++] = mOutputs[i].getID(mRS);
}
for (int i=0; i < mConstantCount; i++) {
tmp[idx++] = ProgramParam.CONSTANT.mID;
tmp[idx++] = (int)mConstants[i].getID(mRS);
tmp[idx++] = mConstants[i].getID(mRS);
}
for (int i=0; i < mTextureCount; i++) {
tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
tmp[idx++] = (int)mTextureTypes[i].mID;
tmp[idx++] = mTextureTypes[i].mID;
texNames[i] = mTextureNames[i];
}

View File

@@ -75,25 +75,25 @@ public class ProgramVertexFixedFunction extends ProgramVertex {
*/
public ProgramVertexFixedFunction create() {
mRS.validate();
int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
long[] tmp = new long[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
String[] texNames = new String[mTextureCount];
int idx = 0;
for (int i=0; i < mInputCount; i++) {
tmp[idx++] = ProgramParam.INPUT.mID;
tmp[idx++] = (int)mInputs[i].getID(mRS);
tmp[idx++] = mInputs[i].getID(mRS);
}
for (int i=0; i < mOutputCount; i++) {
tmp[idx++] = ProgramParam.OUTPUT.mID;
tmp[idx++] = (int)mOutputs[i].getID(mRS);
tmp[idx++] = mOutputs[i].getID(mRS);
}
for (int i=0; i < mConstantCount; i++) {
tmp[idx++] = ProgramParam.CONSTANT.mID;
tmp[idx++] = (int)mConstants[i].getID(mRS);
tmp[idx++] = mConstants[i].getID(mRS);
}
for (int i=0; i < mTextureCount; i++) {
tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
tmp[idx++] = (int)mTextureTypes[i].mID;
tmp[idx++] = mTextureTypes[i].mID;
texNames[i] = mTextureNames[i];
}

View File

@@ -303,8 +303,8 @@ public class RenderScript {
validate();
return rsnElementCreate(mContext, type, kind, norm, vecSize);
}
native long rsnElementCreate2(long con, int[]elements, String[] names, int[] arraySizes);
synchronized long nElementCreate2(int[] elements, String[] names, int[] arraySizes) {
native long rsnElementCreate2(long con, long[] elements, String[] names, int[] arraySizes);
synchronized long nElementCreate2(long[] elements, String[] names, int[] arraySizes) {
validate();
return rsnElementCreate2(mContext, elements, names, arraySizes);
}
@@ -314,8 +314,8 @@ public class RenderScript {
rsnElementGetNativeData(mContext, id, elementData);
}
native void rsnElementGetSubElements(long con, long id,
int[] IDs, String[] names, int[] arraySizes);
synchronized void nElementGetSubElements(long id, int[] IDs, String[] names, int[] arraySizes) {
long[] IDs, String[] names, int[] arraySizes);
synchronized void nElementGetSubElements(long id, long[] IDs, String[] names, int[] arraySizes) {
validate();
rsnElementGetSubElements(mContext, id, IDs, names, arraySizes);
}
@@ -325,14 +325,14 @@ public class RenderScript {
validate();
return rsnTypeCreate(mContext, eid, x, y, z, mips, faces, yuv);
}
native void rsnTypeGetNativeData(long con, long id, int[] typeData);
synchronized void nTypeGetNativeData(long id, int[] typeData) {
native void rsnTypeGetNativeData(long con, long id, long[] typeData);
synchronized void nTypeGetNativeData(long id, long[] typeData) {
validate();
rsnTypeGetNativeData(mContext, id, typeData);
}
native long rsnAllocationCreateTyped(long con, long type, int mip, int usage, int pointer);
synchronized long nAllocationCreateTyped(long type, int mip, int usage, int pointer) {
native long rsnAllocationCreateTyped(long con, long type, int mip, int usage, long pointer);
synchronized long nAllocationCreateTyped(long type, int mip, int usage, long pointer) {
validate();
return rsnAllocationCreateTyped(mContext, type, mip, usage, pointer);
}
@@ -700,8 +700,8 @@ public class RenderScript {
return rsnScriptFieldIDCreate(mContext, sid, slot);
}
native long rsnScriptGroupCreate(long con, int[] kernels, int[] src, int[] dstk, int[] dstf, int[] types);
synchronized long nScriptGroupCreate(int[] kernels, int[] src, int[] dstk, int[] dstf, int[] types) {
native long rsnScriptGroupCreate(long con, long[] kernels, long[] src, long[] dstk, long[] dstf, long[] types);
synchronized long nScriptGroupCreate(long[] kernels, long[] src, long[] dstk, long[] dstf, long[] types) {
validate();
return rsnScriptGroupCreate(mContext, kernels, src, dstk, dstf, types);
}
@@ -764,19 +764,19 @@ public class RenderScript {
validate();
rsnProgramBindSampler(mContext, vpf, slot, s);
}
native long rsnProgramFragmentCreate(long con, String shader, String[] texNames, int[] params);
synchronized long nProgramFragmentCreate(String shader, String[] texNames, int[] params) {
native long rsnProgramFragmentCreate(long con, String shader, String[] texNames, long[] params);
synchronized long nProgramFragmentCreate(String shader, String[] texNames, long[] params) {
validate();
return rsnProgramFragmentCreate(mContext, shader, texNames, params);
}
native long rsnProgramVertexCreate(long con, String shader, String[] texNames, int[] params);
synchronized long nProgramVertexCreate(String shader, String[] texNames, int[] params) {
native long rsnProgramVertexCreate(long con, String shader, String[] texNames, long[] params);
synchronized long nProgramVertexCreate(String shader, String[] texNames, long[] params) {
validate();
return rsnProgramVertexCreate(mContext, shader, texNames, params);
}
native long rsnMeshCreate(long con, int[] vtx, int[] idx, int[] prim);
synchronized long nMeshCreate(int[] vtx, int[] idx, int[] prim) {
native long rsnMeshCreate(long con, long[] vtx, long[] idx, int[] prim);
synchronized long nMeshCreate(long[] vtx, long[] idx, int[] prim) {
validate();
return rsnMeshCreate(mContext, vtx, idx, prim);
}
@@ -790,13 +790,13 @@ public class RenderScript {
validate();
return rsnMeshGetIndexCount(mContext, id);
}
native void rsnMeshGetVertices(long con, long id, int[] vtxIds, int vtxIdCount);
synchronized void nMeshGetVertices(long id, int[] vtxIds, int vtxIdCount) {
native void rsnMeshGetVertices(long con, long id, long[] vtxIds, int vtxIdCount);
synchronized void nMeshGetVertices(long id, long[] vtxIds, int vtxIdCount) {
validate();
rsnMeshGetVertices(mContext, id, vtxIds, vtxIdCount);
}
native void rsnMeshGetIndices(long con, long id, int[] idxIds, int[] primitives, int vtxIdCount);
synchronized void nMeshGetIndices(long id, int[] idxIds, int[] primitives, int vtxIdCount) {
native void rsnMeshGetIndices(long con, long id, long[] idxIds, int[] primitives, int vtxIdCount);
synchronized void nMeshGetIndices(long id, long[] idxIds, int[] primitives, int vtxIdCount) {
validate();
rsnMeshGetIndices(mContext, id, idxIds, primitives, vtxIdCount);
}

View File

@@ -379,7 +379,6 @@ public final class ScriptGroup extends BaseObj {
* @return ScriptGroup The new ScriptGroup
*/
public ScriptGroup create() {
// FIXME: this is broken for 64-bit
if (mNodes.size() == 0) {
throw new RSInvalidStateException("Empty script groups are not allowed");
@@ -394,13 +393,13 @@ public final class ScriptGroup extends BaseObj {
ArrayList<IO> inputs = new ArrayList<IO>();
ArrayList<IO> outputs = new ArrayList<IO>();
int[] kernels = new int[mKernelCount];
long[] kernels = new long[mKernelCount];
int idx = 0;
for (int ct=0; ct < mNodes.size(); ct++) {
Node n = mNodes.get(ct);
for (int ct2=0; ct2 < n.mKernels.size(); ct2++) {
final Script.KernelID kid = n.mKernels.get(ct2);
kernels[idx++] = (int)kid.getID(mRS);
kernels[idx++] = kid.getID(mRS);
boolean hasInput = false;
boolean hasOutput = false;
@@ -427,21 +426,21 @@ public final class ScriptGroup extends BaseObj {
throw new RSRuntimeException("Count mismatch, should not happen.");
}
int[] src = new int[mLines.size()];
int[] dstk = new int[mLines.size()];
int[] dstf = new int[mLines.size()];
int[] types = new int[mLines.size()];
long[] src = new long[mLines.size()];
long[] dstk = new long[mLines.size()];
long[] dstf = new long[mLines.size()];
long[] types = new long[mLines.size()];
for (int ct=0; ct < mLines.size(); ct++) {
ConnectLine cl = mLines.get(ct);
src[ct] = (int)cl.mFrom.getID(mRS);
src[ct] = cl.mFrom.getID(mRS);
if (cl.mToK != null) {
dstk[ct] = (int)cl.mToK.getID(mRS);
dstk[ct] = cl.mToK.getID(mRS);
}
if (cl.mToF != null) {
dstf[ct] = (int)cl.mToF.getID(mRS);
dstf[ct] = cl.mToF.getID(mRS);
}
types[ct] = (int)cl.mAllocationType.getID(mRS);
types[ct] = cl.mAllocationType.getID(mRS);
}
long id = mRS.nScriptGroupCreate(kernels, src, dstk, dstf, types);

View File

@@ -190,20 +190,18 @@ public class Type extends BaseObj {
@Override
void updateFromNative() {
// FIXME: rsaTypeGetNativeData needs 32-bit and 64-bit paths
// We have 6 integer to obtain mDimX; mDimY; mDimZ;
// We have 6 integer/long to obtain mDimX; mDimY; mDimZ;
// mDimLOD; mDimFaces; mElement;
int[] dataBuffer = new int[6];
mRS.nTypeGetNativeData((int)getID(mRS), dataBuffer);
long[] dataBuffer = new long[6];
mRS.nTypeGetNativeData(getID(mRS), dataBuffer);
mDimX = dataBuffer[0];
mDimY = dataBuffer[1];
mDimZ = dataBuffer[2];
mDimX = (int)dataBuffer[0];
mDimY = (int)dataBuffer[1];
mDimZ = (int)dataBuffer[2];
mDimMipmaps = dataBuffer[3] == 1 ? true : false;
mDimFaces = dataBuffer[4] == 1 ? true : false;
int elementID = dataBuffer[5];
long elementID = dataBuffer[5];
if(elementID != 0) {
mElement = new Element(elementID, mRS);
mElement.updateFromNative();