Preparing renderscript java code for use with phanton references.

Changing rs_quaternion to be float4

Change-Id: Ibf49f412be8979eaa04cb252b407467eacd9dbf0
This commit is contained in:
Alex Sakhartchouk
2010-08-11 14:41:28 -07:00
parent aa56ede879
commit 0de9444aa6
15 changed files with 51 additions and 55 deletions

View File

@@ -286,32 +286,27 @@ public class Element extends BaseObj {
}
Element(RenderScript rs, Element[] e, String[] n) {
super(rs);
Element(int id, RenderScript rs, Element[] e, String[] n) {
super(id, rs);
mSize = 0;
mElements = e;
mElementNames = n;
int[] ids = new int[mElements.length];
for (int ct = 0; ct < mElements.length; ct++ ) {
mSize += mElements[ct].mSize;
ids[ct] = mElements[ct].mID;
}
mID = rs.nElementCreate2(ids, mElementNames);
}
Element(RenderScript rs, DataType dt, DataKind dk, boolean norm, int size) {
super(rs);
Element(int id, RenderScript rs, DataType dt, DataKind dk, boolean norm, int size) {
super(id, rs);
mSize = dt.mSize * size;
mType = dt;
mKind = dk;
mNormalized = norm;
mVectorSize = size;
mID = rs.nElementCreate(dt.mID, dk.mID, norm, size);
}
Element(RenderScript rs, int id) {
super(rs);
mID = id;
Element(int id, RenderScript rs) {
super(id, rs);
}
@Override
@@ -320,9 +315,14 @@ public class Element extends BaseObj {
// we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements
int[] dataBuffer = new int[5];
mRS.nElementGetNativeData(mID, dataBuffer);
mNormalized = dataBuffer[2] == 1 ? true : false;
mVectorSize = dataBuffer[3];
mSize = 0;
for (DataType dt: DataType.values()) {
if(dt.mID == dataBuffer[0]){
mType = dt;
mSize = mType.mSize * mVectorSize;
}
}
for (DataKind dk: DataKind.values()) {
@@ -331,8 +331,6 @@ public class Element extends BaseObj {
}
}
mNormalized = dataBuffer[2] == 1 ? true : false;
mVectorSize = dataBuffer[3];
int numSubElements = dataBuffer[4];
if(numSubElements > 0) {
mElements = new Element[numSubElements];
@@ -341,8 +339,9 @@ public class Element extends BaseObj {
int[] subElementIds = new int[numSubElements];
mRS.nElementGetSubElements(mID, subElementIds, mElementNames);
for(int i = 0; i < numSubElements; i ++) {
mElements[i] = new Element(mRS, subElementIds[i]);
mElements[i] = new Element(subElementIds[i], mRS);
mElements[i].updateFromNative();
mSize += mElements[i].mSize;
}
}
@@ -354,14 +353,21 @@ public class Element extends BaseObj {
/////////////////////////////////////////
public static Element createUser(RenderScript rs, DataType dt) {
return new Element(rs, dt, DataKind.USER, false, 1);
DataKind dk = DataKind.USER;
boolean norm = false;
int vecSize = 1;
int id = rs.nElementCreate(dt.mID, dk.mID, norm, vecSize);
return new Element(id, rs, dt, dk, norm, vecSize);
}
public static Element createVector(RenderScript rs, DataType dt, int size) {
if (size < 2 || size > 4) {
throw new IllegalArgumentException("Bad size");
}
return new Element(rs, dt, DataKind.USER, false, size);
DataKind dk = DataKind.USER;
boolean norm = false;
int id = rs.nElementCreate(dt.mID, dk.mID, norm, size);
return new Element(id, rs, dt, dk, norm, size);
}
public static Element createPixel(RenderScript rs, DataType dt, DataKind dk) {
@@ -399,7 +405,9 @@ public class Element extends BaseObj {
size = 4;
}
return new Element(rs, dt, dk, true, size);
boolean norm = true;
int id = rs.nElementCreate(dt.mID, dk.mID, norm, size);
return new Element(id, rs, dt, dk, norm, size);
}
public static class Builder {
@@ -435,7 +443,13 @@ public class Element extends BaseObj {
String[] sin = new String[mCount];
java.lang.System.arraycopy(mElements, 0, ein, 0, mCount);
java.lang.System.arraycopy(mElementNames, 0, sin, 0, mCount);
return new Element(mRS, ein, sin);
int[] ids = new int[ein.length];
for (int ct = 0; ct < ein.length; ct++ ) {
ids[ct] = ein[ct].mID;
}
int id = mRS.nElementCreate2(ids, sin);
return new Element(id, mRS, ein, sin);
}
}