Allocation.java revision 5edc608a0749ed4b7074b5c1243043eb722c3c31
1b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams/* 2b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * Copyright (C) 2008 The Android Open Source Project 3b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * 4b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * you may not use this file except in compliance with the License. 6b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * You may obtain a copy of the License at 7b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * 8b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * 10b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * Unless required by applicable law or agreed to in writing, software 11b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * See the License for the specific language governing permissions and 14b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * limitations under the License. 15b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams */ 16b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 17b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samspackage android.renderscript; 18b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 19b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport java.io.IOException; 20b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport java.io.InputStream; 21b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 22b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.content.res.Resources; 23650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guyimport android.content.res.AssetManager; 24b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.graphics.Bitmap; 25b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.graphics.BitmapFactory; 26b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.util.Log; 27650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guyimport android.util.TypedValue; 28b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 29b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams/** 30b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * @hide 31b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams * 32b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams **/ 33b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samspublic class Allocation extends BaseObj { 3443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams Type mType; 358a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams Bitmap mBitmap; 3643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 3743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams Allocation(int id, RenderScript rs, Type t) { 380de9444aa6c25d2c586e8204a6168d10e67376e0Alex Sakhartchouk super(id, rs); 3943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams mType = t; 40b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 41b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 4280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk Allocation(int id, RenderScript rs) { 430de9444aa6c25d2c586e8204a6168d10e67376e0Alex Sakhartchouk super(id, rs); 4480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 4580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 46dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk @Override 47dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk void updateFromNative() { 48dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk mRS.validate(); 49fb10c16a0528a418053e4b8e75eebe57476b86efAlex Sakhartchouk mName = mRS.nGetName(mID); 50dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk int typeID = mRS.nAllocationGetType(mID); 51dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk if(typeID != 0) { 52dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk mType = new Type(typeID, mRS); 53dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk mType.updateFromNative(); 54dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 55dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk } 56dfac814c18f73dd7289f9927edca3e3b6ec6bc00Alex Sakhartchouk 57ea87e96959895ef94cc3aa9576f41a660d2bbf03Jason Sams public Type getType() { 58ea87e96959895ef94cc3aa9576f41a660d2bbf03Jason Sams return mType; 59ea87e96959895ef94cc3aa9576f41a660d2bbf03Jason Sams } 60ea87e96959895ef94cc3aa9576f41a660d2bbf03Jason Sams 61b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void uploadToTexture(int baseMipLevel) { 62771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 63c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams mRS.nAllocationUploadToTexture(mID, false, baseMipLevel); 64c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams } 65c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams 66c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams public void uploadToTexture(boolean genMips, int baseMipLevel) { 67c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams mRS.validate(); 68c2908e60c9b021fb4bb69acff8d49981dd4dade8Jason Sams mRS.nAllocationUploadToTexture(mID, genMips, baseMipLevel); 69b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 70b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 7107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public void uploadToBufferObject() { 72771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 7307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams mRS.nAllocationUploadToBufferObject(mID); 7407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 7507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 76b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void data(int[] d) { 77771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 78768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams subData1D(0, mType.getElementCount(), d); 79768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 80768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams public void data(short[] d) { 81771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 82768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams subData1D(0, mType.getElementCount(), d); 83768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 84768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams public void data(byte[] d) { 85771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 86768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams subData1D(0, mType.getElementCount(), d); 87b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 88b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void data(float[] d) { 89771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 90768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams subData1D(0, mType.getElementCount(), d); 91b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 92b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 9349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams public void subData(int xoff, FieldPacker fp) { 94a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams int eSize = mType.mElement.getSizeBytes(); 95a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams final byte[] data = fp.getData(); 96a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 97a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams int count = data.length / eSize; 98a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams if ((eSize * count) != data.length) { 99a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams throw new IllegalArgumentException("Field packer length " + data.length + 100a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams " not divisible by element size " + eSize + "."); 101a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 10249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams data1DChecks(xoff, count, data.length, data.length); 10349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams mRS.nAllocationSubData1D(mID, xoff, count, data, data.length); 10449bdaf0293408159df18a1d8540360f9623c40f7Jason Sams } 10549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 10649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 10749bdaf0293408159df18a1d8540360f9623c40f7Jason Sams public void subElementData(int xoff, int component_number, FieldPacker fp) { 10849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams if (component_number >= mType.mElement.mElements.length) { 10949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams throw new IllegalArgumentException("Component_number " + component_number + " out of range."); 11049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams } 11149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams if(xoff < 0) { 11249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams throw new IllegalArgumentException("Offset must be >= 0."); 11349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams } 11449bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 11549bdaf0293408159df18a1d8540360f9623c40f7Jason Sams final byte[] data = fp.getData(); 11649bdaf0293408159df18a1d8540360f9623c40f7Jason Sams int eSize = mType.mElement.mElements[component_number].getSizeBytes(); 11749bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 11849bdaf0293408159df18a1d8540360f9623c40f7Jason Sams if (data.length != eSize) { 11949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams throw new IllegalArgumentException("Field packer sizelength " + data.length + 12049bdaf0293408159df18a1d8540360f9623c40f7Jason Sams " does not match component size " + eSize + "."); 12149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams } 12249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams 12349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams mRS.nAllocationSubElementData1D(mID, xoff, component_number, data, data.length); 124a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 125a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 126768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams private void data1DChecks(int off, int count, int len, int dataSize) { 127771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 128a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams if(off < 0) { 129a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams throw new IllegalArgumentException("Offset must be >= 0."); 130a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 131a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams if(count < 1) { 132a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams throw new IllegalArgumentException("Count must be >= 1."); 133a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 134a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams if((off + count) > mType.getElementCount()) { 135a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams throw new IllegalArgumentException("Overflow, Available count " + mType.getElementCount() + 136a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams ", got " + count + " at offset " + off + "."); 137768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 138768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams if((len) < dataSize) { 139768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams throw new IllegalArgumentException("Array too small for allocation type."); 140768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 141b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 142b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 143768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams public void subData1D(int off, int count, int[] d) { 144768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams int dataSize = mType.mElement.getSizeBytes() * count; 145768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams data1DChecks(off, count, d.length * 4, dataSize); 146768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams mRS.nAllocationSubData1D(mID, off, count, d, dataSize); 147768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 148768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams public void subData1D(int off, int count, short[] d) { 149768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams int dataSize = mType.mElement.getSizeBytes() * count; 150768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams data1DChecks(off, count, d.length * 2, dataSize); 151768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams mRS.nAllocationSubData1D(mID, off, count, d, dataSize); 152768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 153768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams public void subData1D(int off, int count, byte[] d) { 154768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams int dataSize = mType.mElement.getSizeBytes() * count; 155768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams data1DChecks(off, count, d.length, dataSize); 156768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams mRS.nAllocationSubData1D(mID, off, count, d, dataSize); 157768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 158b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void subData1D(int off, int count, float[] d) { 159768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams int dataSize = mType.mElement.getSizeBytes() * count; 160768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams data1DChecks(off, count, d.length * 4, dataSize); 161768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams mRS.nAllocationSubData1D(mID, off, count, d, dataSize); 162b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 163b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 164768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams 165b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void subData2D(int xoff, int yoff, int w, int h, int[] d) { 166771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 16707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d, d.length * 4); 168b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 169b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 170b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void subData2D(int xoff, int yoff, int w, int h, float[] d) { 171771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 17207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d, d.length * 4); 173b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 174b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 17540a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams public void readData(int[] d) { 176771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 17740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams mRS.nAllocationRead(mID, d); 17840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams } 17940a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 18040a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams public void readData(float[] d) { 181771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 18240a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams mRS.nAllocationRead(mID, d); 18340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams } 18440a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 1855edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams public void resize(int dimX) { 1865edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams if ((mType.getY() > 0)|| (mType.getZ() > 0) || mType.getFaces() || mType.getLOD()) { 1875edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams throw new IllegalStateException("Resize only support for 1D allocations at this time."); 1885edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 1895edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams mRS.nAllocationResize1D(mID, dimX); 1905edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 1915edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 1925edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams /* 1935edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams public void resize(int dimX, int dimY) { 1945edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams if ((mType.getZ() > 0) || mType.getFaces() || mType.getLOD()) { 1955edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams throw new IllegalStateException("Resize only support for 2D allocations at this time."); 1965edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 1975edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams if (mType.getY() == 0) { 1985edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams throw new IllegalStateException("Resize only support for 2D allocations at this time."); 1995edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 2005edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams mRS.nAllocationResize2D(mID, dimX, dimY); 2015edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 2025edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams */ 20340a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams 204b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public class Adapter1D extends BaseObj { 205b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams Adapter1D(int id, RenderScript rs) { 2060de9444aa6c25d2c586e8204a6168d10e67376e0Alex Sakhartchouk super(id, rs); 207b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 208b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 209b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void setConstraint(Dimension dim, int value) { 210771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 211b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams mRS.nAdapter1DSetConstraint(mID, dim.mID, value); 212b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 213b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 214b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void data(int[] d) { 215771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 216b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams mRS.nAdapter1DData(mID, d); 217b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 218b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 219b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void data(float[] d) { 220771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 221b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams mRS.nAdapter1DData(mID, d); 222b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 223b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 224bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams public void subData(int off, int count, int[] d) { 225771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 226bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams mRS.nAdapter1DSubData(mID, off, count, d); 227bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 228bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 229b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public void subData(int off, int count, float[] d) { 230771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 231b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams mRS.nAdapter1DSubData(mID, off, count, d); 232b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 233b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 234b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 235b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams public Adapter1D createAdapter1D() { 236771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 237b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams int id = mRS.nAdapter1DCreate(); 238718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams if(id == 0) { 239718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams throw new IllegalStateException("allocation failed."); 240b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 241718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams mRS.nAdapter1DBindAllocation(id, mID); 242b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams return new Adapter1D(id, mRS); 243b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 244b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 245b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 246bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams public class Adapter2D extends BaseObj { 247bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams Adapter2D(int id, RenderScript rs) { 2480de9444aa6c25d2c586e8204a6168d10e67376e0Alex Sakhartchouk super(id, rs); 249bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 250bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 251bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams public void setConstraint(Dimension dim, int value) { 252771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 253bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams mRS.nAdapter2DSetConstraint(mID, dim.mID, value); 254bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 255bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 256bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams public void data(int[] d) { 257771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 258bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams mRS.nAdapter2DData(mID, d); 259bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 260bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 261bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams public void data(float[] d) { 262771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 263bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams mRS.nAdapter2DData(mID, d); 264bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 265bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 266bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams public void subData(int xoff, int yoff, int w, int h, int[] d) { 267771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 268bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams mRS.nAdapter2DSubData(mID, xoff, yoff, w, h, d); 269bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 270bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 271bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams public void subData(int xoff, int yoff, int w, int h, float[] d) { 272771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 273bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams mRS.nAdapter2DSubData(mID, xoff, yoff, w, h, d); 274bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 275bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 276bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 277bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams public Adapter2D createAdapter2D() { 278771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 279bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams int id = mRS.nAdapter2DCreate(); 280718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams if(id == 0) { 281718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams throw new IllegalStateException("allocation failed."); 282bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 283718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams mRS.nAdapter2DBindAllocation(id, mID); 284bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams return new Adapter2D(id, mRS); 285bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams } 286bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 287b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 288b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams // creation 289b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 290b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams private static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options(); 291b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams static { 292b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams mBitmapOptions.inScaled = false; 293b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 294b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 2951bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams static public Allocation createTyped(RenderScript rs, Type type) 2961bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams throws IllegalArgumentException { 2971bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 298771bebb94054d06f97284379c93a2620613513c3Jason Sams rs.validate(); 2991bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams if(type.mID == 0) { 3001bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams throw new IllegalStateException("Bad Type"); 3011bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams } 302b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams int id = rs.nAllocationCreateTyped(type.mID); 30343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return new Allocation(id, rs, type); 304b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 305b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 3061bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams static public Allocation createSized(RenderScript rs, Element e, int count) 3071bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams throws IllegalArgumentException { 3081bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 309771bebb94054d06f97284379c93a2620613513c3Jason Sams rs.validate(); 310768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams Type.Builder b = new Type.Builder(rs, e); 311768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams b.add(Dimension.X, count); 312768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams Type t = b.create(); 313768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams 314768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams int id = rs.nAllocationCreateTyped(t.mID); 315ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams if(id == 0) { 316ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams throw new IllegalStateException("Bad element."); 317b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 318768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams return new Allocation(id, rs, t); 319b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 320b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 3218a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams static private Element elementFromBitmap(RenderScript rs, Bitmap b) { 3228a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams final Bitmap.Config bc = b.getConfig(); 3238a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams if (bc == Bitmap.Config.ALPHA_8) { 3248a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return Element.A_8(rs); 3258a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams } 3268a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams if (bc == Bitmap.Config.ARGB_4444) { 3278a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return Element.RGBA_4444(rs); 3288a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams } 3298a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams if (bc == Bitmap.Config.ARGB_8888) { 3308a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return Element.RGBA_8888(rs); 3318a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams } 3328a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams if (bc == Bitmap.Config.RGB_565) { 3338a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return Element.RGB_565(rs); 3348a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams } 3358a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams throw new IllegalStateException("Bad bitmap type."); 3368a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams } 3378a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 3388a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams static private Type typeFromBitmap(RenderScript rs, Bitmap b) { 3398a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams Element e = elementFromBitmap(rs, b); 3408a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams Type.Builder tb = new Type.Builder(rs, e); 3418a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams tb.add(Dimension.X, b.getWidth()); 3428a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams tb.add(Dimension.Y, b.getHeight()); 3438a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return tb.create(); 3448a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams } 3458a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 346b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams static public Allocation createFromBitmap(RenderScript rs, Bitmap b, Element dstFmt, boolean genMips) 347b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams throws IllegalArgumentException { 348b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 349771bebb94054d06f97284379c93a2620613513c3Jason Sams rs.validate(); 3508a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams Type t = typeFromBitmap(rs, b); 3518a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 352ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams int id = rs.nAllocationCreateFromBitmap(dstFmt.mID, genMips, b); 353718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams if(id == 0) { 354718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams throw new IllegalStateException("Load failed."); 355718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams } 3568a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return new Allocation(id, rs, t); 3578a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams } 3588a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 3598a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams static public Allocation createBitmapRef(RenderScript rs, Bitmap b) 3608a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams throws IllegalArgumentException { 3618a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 3628a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams rs.validate(); 3638a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams Type t = typeFromBitmap(rs, b); 3648a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 3658a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams int id = rs.nAllocationCreateBitmapRef(t.getID(), b); 3668a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams if(id == 0) { 3678a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams throw new IllegalStateException("Load failed."); 3688a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams } 3698a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams 3708a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams Allocation a = new Allocation(id, rs, t); 3718a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams a.mBitmap = b; 3728a64743f37ed35af7c2204acd18bb3d62d8f66d5Jason Sams return a; 373b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 374b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 37574e02ef2000ff2783e526d6916e2f0b5d517593eJason Sams static Allocation createFromBitmapBoxed(RenderScript rs, Bitmap b, Element dstFmt, boolean genMips) 376b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams throws IllegalArgumentException { 377b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 378771bebb94054d06f97284379c93a2620613513c3Jason Sams rs.validate(); 379ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams int id = rs.nAllocationCreateFromBitmapBoxed(dstFmt.mID, genMips, b); 380718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams if(id == 0) { 381718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams throw new IllegalStateException("Load failed."); 382718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams } 38343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return new Allocation(id, rs, null); 384b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 385b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 386b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams static public Allocation createFromBitmapResource(RenderScript rs, Resources res, int id, Element dstFmt, boolean genMips) 387b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams throws IllegalArgumentException { 388b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 389771bebb94054d06f97284379c93a2620613513c3Jason Sams rs.validate(); 390650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy InputStream is = null; 391650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy try { 392650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy final TypedValue value = new TypedValue(); 393650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy is = res.openRawResource(id, value); 394650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 395650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy int asset = ((AssetManager.AssetInputStream) is).getAssetInt(); 396ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams int allocationId = rs.nAllocationCreateFromAssetStream(dstFmt.mID, genMips, 397650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy asset); 398650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 399718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams if(allocationId == 0) { 400718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams throw new IllegalStateException("Load failed."); 401718cd1f322ee5b62b6a49cb36195bcb18a5ab711Jason Sams } 402ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return new Allocation(allocationId, rs, null); 403650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } catch (Exception e) { 404650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy // Ignore 405650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } finally { 406650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy if (is != null) { 407650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy try { 408650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy is.close(); 409650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } catch (IOException e) { 410650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy // Ignore 411650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } 412650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } 413650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy } 414650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy 415650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy return null; 416b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 417b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 418b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams static public Allocation createFromBitmapResourceBoxed(RenderScript rs, Resources res, int id, Element dstFmt, boolean genMips) 419b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams throws IllegalArgumentException { 420b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 421f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy mBitmapOptions.inPreferredConfig = null; 422f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy if (dstFmt == rs.mElement_RGBA_8888) { 423f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy mBitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; 424f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy } else if (dstFmt == rs.mElement_RGB_888) { 425f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy mBitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; 426f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy } else if (dstFmt == rs.mElement_RGBA_4444) { 427f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy mBitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_4444; 428f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy } else if (dstFmt == rs.mElement_RGB_565) { 429f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy mBitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565; 430f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy } 431f92a0a6d4e95660b0e7ebe259323de17d821c50fRomain Guy 432b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions); 433b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams return createFromBitmapBoxed(rs, b, dstFmt, genMips); 434b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams } 4359b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk 4369b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk static public Allocation createFromString(RenderScript rs, String str) 4379b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk throws IllegalArgumentException { 4389b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk byte[] allocArray = null; 4399b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk try { 4409b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk allocArray = str.getBytes("UTF-8"); 4419b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk Allocation alloc = Allocation.createSized(rs, Element.U8(rs), allocArray.length); 4429b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk alloc.data(allocArray); 4439b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return alloc; 4449b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk } 4459b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk catch (Exception e) { 4469b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk Log.e("rs", "could not convert string to utf-8"); 4479b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk } 4489b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk return null; 4499b949fce39f0f39ce9275b71d7c347210775e7a8Alex Sakhartchouk } 450b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams} 451b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 452b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Sams 453