summaryrefslogtreecommitdiffstats
path: root/graphics/java/android/renderscript/Allocation.java
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2010-03-26 15:33:42 -0700
committerJason Sams <rjsams@android.com>2010-03-26 15:34:30 -0700
commita70f416c9cf2fc6cc5e132c1d656ce07441d6b82 (patch)
tree2738fc0a8eefb95c041f0f158f18d73b45d0f342 /graphics/java/android/renderscript/Allocation.java
parentc1d726c2d62424867ec14f2cde16b00fe0ddfee1 (diff)
downloadframeworks_base-a70f416c9cf2fc6cc5e132c1d656ce07441d6b82.zip
frameworks_base-a70f416c9cf2fc6cc5e132c1d656ce07441d6b82.tar.gz
frameworks_base-a70f416c9cf2fc6cc5e132c1d656ce07441d6b82.tar.bz2
Checkin new types for RS.
Change-Id: I3d7a1a91c45cc1c97c60f3615f32e54e98e12f91
Diffstat (limited to 'graphics/java/android/renderscript/Allocation.java')
-rw-r--r--graphics/java/android/renderscript/Allocation.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
index 17c0778..d32a0b5 100644
--- a/graphics/java/android/renderscript/Allocation.java
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -76,10 +76,30 @@ public class Allocation extends BaseObj {
subData1D(0, mType.getElementCount(), d);
}
+ public void subData(int off, FieldPacker fp) {
+ int eSize = mType.mElement.getSizeBytes();
+ final byte[] data = fp.getData();
+
+ int count = data.length / eSize;
+ if ((eSize * count) != data.length) {
+ 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);
+ }
+
private void data1DChecks(int off, int count, int len, int dataSize) {
mRS.validate();
- if((off < 0) || (count < 1) || ((off + count) > mType.getElementCount())) {
- throw new IllegalArgumentException("Offset or Count out of bounds.");
+ if(off < 0) {
+ throw new IllegalArgumentException("Offset must be >= 0.");
+ }
+ if(count < 1) {
+ throw new IllegalArgumentException("Count must be >= 1.");
+ }
+ if((off + count) > mType.getElementCount()) {
+ throw new IllegalArgumentException("Overflow, Available count " + mType.getElementCount() +
+ ", got " + count + " at offset " + off + ".");
}
if((len) < dataSize) {
throw new IllegalArgumentException("Array too small for allocation type.");