From 49bdaf0293408159df18a1d8540360f9623c40f7 Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Tue, 31 Aug 2010 13:50:42 -0700 Subject: SubElementData data upload functions. Change-Id: I5f8c738b5457ae7f6085fc4cd331cf3d13ad75cf --- graphics/java/android/renderscript/Allocation.java | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'graphics/java/android/renderscript/Allocation.java') 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) { -- cgit v1.1