summaryrefslogtreecommitdiffstats
path: root/graphics/java
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/java')
-rw-r--r--graphics/java/android/renderscript/Allocation.java26
-rw-r--r--graphics/java/android/renderscript/RenderScript.java4
2 files changed, 27 insertions, 3 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
index 6775c08..ee5dbc1 100644
--- a/graphics/java/android/renderscript/Allocation.java
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -90,7 +90,7 @@ public class Allocation extends BaseObj {
subData1D(0, mType.getElementCount(), d);
}
- public void subData(int off, FieldPacker fp) {
+ public void subData(int xoff, FieldPacker fp) {
int eSize = mType.mElement.getSizeBytes();
final byte[] data = fp.getData();
@@ -99,8 +99,28 @@ public class Allocation extends BaseObj {
throw new IllegalArgumentException("Field packer length " + data.length +
" not divisible by element size " + eSize + ".");
}
- data1DChecks(off, count, data.length, data.length);
- mRS.nAllocationSubData1D(mID, off, count, data, data.length);
+ data1DChecks(xoff, count, data.length, data.length);
+ mRS.nAllocationSubData1D(mID, xoff, count, data, data.length);
+ }
+
+
+ public void subElementData(int xoff, int component_number, FieldPacker fp) {
+ if (component_number >= mType.mElement.mElements.length) {
+ throw new IllegalArgumentException("Component_number " + component_number + " out of range.");
+ }
+ if(xoff < 0) {
+ throw new IllegalArgumentException("Offset must be >= 0.");
+ }
+
+ final byte[] data = fp.getData();
+ int eSize = mType.mElement.mElements[component_number].getSizeBytes();
+
+ if (data.length != eSize) {
+ throw new IllegalArgumentException("Field packer sizelength " + data.length +
+ " does not match component size " + eSize + ".");
+ }
+
+ mRS.nAllocationSubElementData1D(mID, xoff, component_number, data, data.length);
}
private void data1DChecks(int off, int count, int len, int dataSize) {
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 08ba7e2..d51257b 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -232,6 +232,10 @@ public class RenderScript {
synchronized void nAllocationSubData1D(int id, int off, int count, byte[] d, int sizeBytes) {
rsnAllocationSubData1D(mContext, id, off, count, d, sizeBytes);
}
+ native void rsnAllocationSubElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes);
+ synchronized void nAllocationSubElementData1D(int id, int xoff, int compIdx, byte[] d, int sizeBytes) {
+ rsnAllocationSubElementData1D(mContext, id, xoff, compIdx, d, sizeBytes);
+ }
native void rsnAllocationSubData1D(int con, int id, int off, int count, float[] d, int sizeBytes);
synchronized void nAllocationSubData1D(int id, int off, int count, float[] d, int sizeBytes) {
rsnAllocationSubData1D(mContext, id, off, count, d, sizeBytes);