1ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray/* 2ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Copyright (C) 2013 The Android Open Source Project 3ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 4ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Licensed under the Apache License, Version 2.0 (the "License"); 5ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * you may not use this file except in compliance with the License. 6ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * You may obtain a copy of the License at 7ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 8ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * http://www.apache.org/licenses/LICENSE-2.0 9ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 10ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Unless required by applicable law or agreed to in writing, software 11ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * distributed under the License is distributed on an "AS IS" BASIS, 12ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * See the License for the specific language governing permissions and 14ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * limitations under the License. 15ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray */ 16ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 17ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murraypackage android.support.v8.renderscript; 18ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 19ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.io.IOException; 20ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.io.InputStream; 21ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.content.res.Resources; 22ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.content.res.AssetManager; 23ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.graphics.Bitmap; 24ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.graphics.BitmapFactory; 25ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.view.Surface; 26ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.util.Log; 27ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.util.TypedValue; 28ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 29ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayclass AllocationThunker extends Allocation { 30ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation mN; 31ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray //Allocation mAdaptedAllocation; 32ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 33ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation getNObj() { 34ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return mN; 35ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 36ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 37ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static android.renderscript.Allocation.MipmapControl 38ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray convertMipmapControl(MipmapControl mc) { 39ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 40ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray switch(mc) { 41ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case MIPMAP_NONE: 42ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Allocation.MipmapControl.MIPMAP_NONE; 43ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case MIPMAP_FULL: 44ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Allocation.MipmapControl.MIPMAP_FULL; 45ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case MIPMAP_ON_SYNC_TO_TEXTURE: 46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE; 47ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 48ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return null; 49ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 50ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 51ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public Type getType() { 52ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return TypeThunker.find(mN.getType()); 53ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 54ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 55ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public Element getElement() { 56ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return getType().getElement(); 57ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 58ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public int getUsage() { 60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return mN.getUsage(); 61ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 62ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 63ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public int getBytesSize() { 64ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return mN.getBytesSize(); 65ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray AllocationThunker(RenderScript rs, Type t, int usage, android.renderscript.Allocation na) { 68ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray super(0, rs, t, usage); 69ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 70ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mType = t; 71ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mUsage = usage; 72ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN = na; 73ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 74ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 75ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void syncAll(int srcLocation) { 76ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.syncAll(srcLocation); 77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 79ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void ioSend() { 80ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.ioSend(); 81ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 82ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 83ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void ioReceive() { 84ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.ioReceive(); 85ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 86ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 87ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFrom(BaseObj[] d) { 88ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray if (d == null) { 89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return; 90ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 91ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.BaseObj[] dN = new android.renderscript.BaseObj[d.length]; 92ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray for (int i = 0; i < d.length; i++) { 93ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray dN[i] = d[i].getNObj(); 94ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 95ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFrom(dN); 96ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 97ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 98ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFromUnchecked(int[] d) { 99ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFromUnchecked(d); 100ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 101ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFromUnchecked(short[] d) { 102ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFromUnchecked(d); 103ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 104ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFromUnchecked(byte[] d) { 105ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFromUnchecked(d); 106ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFromUnchecked(float[] d) { 108ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFromUnchecked(d); 109ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 110ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 111ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFrom(int[] d) { 112ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFrom(d); 113ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 114ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFrom(short[] d) { 115ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFrom(d); 116ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 117ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFrom(byte[] d) { 118ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFrom(d); 119ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 120ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFrom(float[] d) { 121ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFrom(d); 122ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 123ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFrom(Bitmap b) { 124ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFrom(b); 125ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 126ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyFrom(Allocation a) { 127ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray AllocationThunker at = (AllocationThunker)a; 128ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyFrom(at.mN); 129ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 130ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 131ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 132ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void setFromFieldPacker(int xoff, FieldPacker fp) { 133ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.FieldPacker nfp = 134ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray new android.renderscript.FieldPacker(fp.getData()); 135ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.setFromFieldPacker(xoff, nfp); 136ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 137ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void setFromFieldPacker(int xoff, int component_number, FieldPacker fp) { 138ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.FieldPacker nfp = 139ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray new android.renderscript.FieldPacker(fp.getData()); 140ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.setFromFieldPacker(xoff, component_number, nfp); 141ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 142ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 143ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void generateMipmaps() { 144ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.generateMipmaps(); 145ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 146ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 147ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFromUnchecked(int off, int count, int[] d) { 148ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFromUnchecked(off, count, d); 149ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 150ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFromUnchecked(int off, int count, short[] d) { 151ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFromUnchecked(off, count, d); 152ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 153ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFromUnchecked(int off, int count, byte[] d) { 154ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFromUnchecked(off, count, d); 155ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 156ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFromUnchecked(int off, int count, float[] d) { 157ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFromUnchecked(off, count, d); 158ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 159ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 160ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFrom(int off, int count, int[] d) { 161ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFrom(off, count, d); 162ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 163ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFrom(int off, int count, short[] d) { 164ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFrom(off, count, d); 165ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 166ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFrom(int off, int count, byte[] d) { 167ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFrom(off, count, d); 168ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 169ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFrom(int off, int count, float[] d) { 170ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFrom(off, count, d); 171ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 172ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 173ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy1DRangeFrom(int off, int count, Allocation data, int dataOff) { 174ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray AllocationThunker at = (AllocationThunker)data; 175ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy1DRangeFrom(off, count, at.mN, dataOff); 176ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 177ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 178ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy2DRangeFrom(int xoff, int yoff, int w, int h, byte[] data) { 179ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy2DRangeFrom(xoff, yoff, w, h, data); 180ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 181ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy2DRangeFrom(int xoff, int yoff, int w, int h, short[] data) { 182ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy2DRangeFrom(xoff, yoff, w, h, data); 183ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 184ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy2DRangeFrom(int xoff, int yoff, int w, int h, int[] data) { 185ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy2DRangeFrom(xoff, yoff, w, h, data); 186ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 187ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy2DRangeFrom(int xoff, int yoff, int w, int h, float[] data) { 188ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy2DRangeFrom(xoff, yoff, w, h, data); 189ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 190ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 191ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy2DRangeFrom(int xoff, int yoff, int w, int h, 192ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Allocation data, int dataXoff, int dataYoff) { 193ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray AllocationThunker at = (AllocationThunker)data; 194ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy2DRangeFrom(xoff, yoff, w, h, at.mN, dataXoff, dataYoff); 195ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 196ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copy2DRangeFrom(int xoff, int yoff, Bitmap data) { 197ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copy2DRangeFrom(xoff, yoff, data); 198ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 199ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 200ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 201ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyTo(Bitmap b) { 202ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyTo(b); 203ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 204ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyTo(byte[] d) { 205ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyTo(d); 206ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 207ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyTo(short[] d) { 208ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyTo(d); 209ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 210ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyTo(int[] d) { 211ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyTo(d); 212ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 213ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void copyTo(float[] d) { 214ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN.copyTo(d); 215ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 216ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 217ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray // creation 218ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 219ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options(); 220ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static { 221ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mBitmapOptions.inScaled = false; 222ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 223ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 224ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static public Allocation createTyped(RenderScript rs, Type type, MipmapControl mips, int usage) { 225ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 226ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = (TypeThunker)type; 227ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 228ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation a = 229ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation.createTyped(rst.mN, tt.mN, 230ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray convertMipmapControl(mips), usage); 231ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 232ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return new AllocationThunker(rs, type, usage, a); 233ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 234ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 235ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static public Allocation createFromBitmap(RenderScript rs, Bitmap b, 236ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray MipmapControl mips, 237ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray int usage) { 238ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 239ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 240ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation a = 241ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation.createFromBitmap( 242ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray rst.mN, b, convertMipmapControl(mips), usage); 243ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = new TypeThunker(rs, a.getType()); 244ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 245ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return new AllocationThunker(rs, tt, usage, a); 246ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 247ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 248ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static public Allocation createCubemapFromBitmap(RenderScript rs, Bitmap b, 249ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray MipmapControl mips, 250ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray int usage) { 251ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 252ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation a = 253ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation.createCubemapFromBitmap( 254ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray rst.mN, b, convertMipmapControl(mips), usage); 255ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = new TypeThunker(rs, a.getType()); 256ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return new AllocationThunker(rs, tt, usage, a); 257ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 258ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 259ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static public Allocation createCubemapFromCubeFaces(RenderScript rs, 260ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Bitmap xpos, 261ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Bitmap xneg, 262ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Bitmap ypos, 263ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Bitmap yneg, 264ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Bitmap zpos, 265ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Bitmap zneg, 266ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray MipmapControl mips, 267ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray int usage) { 268ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 269ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation a = 270ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation.createCubemapFromCubeFaces( 271ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray rst.mN, xpos, xneg, ypos, yneg, zpos, zneg, 272ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray convertMipmapControl(mips), usage); 273ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = new TypeThunker(rs, a.getType()); 274ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return new AllocationThunker(rs, tt, usage, a); 275ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 276ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 277ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static public Allocation createFromBitmapResource(RenderScript rs, 278ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Resources res, 279ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray int id, 280ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray MipmapControl mips, 281ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray int usage) { 282ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 283ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 284ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation a = 285ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation.createFromBitmapResource( 286ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray rst.mN, res, id, convertMipmapControl(mips), usage); 287ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = new TypeThunker(rs, a.getType()); 288ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return new AllocationThunker(rs, tt, usage, a); 289ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 290ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 291ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static public Allocation createFromString(RenderScript rs, 292ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray String str, 293ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray int usage) { 294ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 295ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation a = 296ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation.createFromString( 297ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray rst.mN, str, usage); 298ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = new TypeThunker(rs, a.getType()); 299ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return new AllocationThunker(rs, tt, usage, a); 300ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 301ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 302ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static public Allocation createSized(RenderScript rs, Element e, 303ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray int count, int usage) { 304ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 305ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray ElementThunker et = (ElementThunker) e; 306ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation a = 307ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Allocation.createSized(rst.mN, (android.renderscript.Element)e.getNObj(), count, usage); 308ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = new TypeThunker(rs, a.getType()); 309ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return new AllocationThunker(rs, tt, usage, a); 310ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 311ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 312ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray}