RenderScript.java revision 4ef6650bd05a39a09958ea1db92f120ea4949cb1
160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/* 260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Copyright (C) 2008 The Android Open Source Project 360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * 460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License"); 560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * you may not use this file except in compliance with the License. 660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * You may obtain a copy of the License at 760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * 860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * http://www.apache.org/licenses/LICENSE-2.0 960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * 1060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Unless required by applicable law or agreed to in writing, software 1160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS, 1260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * See the License for the specific language governing permissions and 1460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * limitations under the License. 1560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich */ 1660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 1794d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samspackage android.renderscript; 1860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 1943ee06857bb7f99446d1d84f8789016c5d105558Jason Samsimport java.lang.reflect.Field; 2036e612a488511940b61f09803b270aa1c61b68e0Jason Sams 21b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.graphics.Bitmap; 22650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guyimport android.graphics.BitmapFactory; 2336e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Config; 2436e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Log; 2536e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.view.Surface; 2643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 2760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 28e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams/** 29e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams * @hide 30e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams * 3127676fe24be7444a174c15df476e49adc5335d03Jason Sams * RenderScript base master class. An instance of this class creates native 3227676fe24be7444a174c15df476e49adc5335d03Jason Sams * worker threads for processing commands from this object. This base class 3327676fe24be7444a174c15df476e49adc5335d03Jason Sams * does not provide any extended capabilities beyond simple data processing. 3427676fe24be7444a174c15df476e49adc5335d03Jason Sams * For extended capabilities use derived classes such as RenderScriptGL. 3527676fe24be7444a174c15df476e49adc5335d03Jason Sams * 3627676fe24be7444a174c15df476e49adc5335d03Jason Sams * 3727676fe24be7444a174c15df476e49adc5335d03Jason Sams * 38e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams **/ 3960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichpublic class RenderScript { 403bc47d438171dce294e816366d53bc9eca772c5bJason Sams static final String LOG_TAG = "RenderScript_jni"; 41bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final boolean DEBUG = false; 42650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"UnusedDeclaration", "deprecation"}) 43bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV; 4460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 4560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 4660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 4702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams /* 4860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * We use a class initializer to allow the native code to cache some 4960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * field offsets. 5060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich */ 51650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"}) 52bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static boolean sInitialized; 53bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams native static void _nInit(); 5460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 55dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams 5660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich static { 5760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = false; 5860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich try { 59e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams System.loadLibrary("rs_jni"); 6060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich _nInit(); 6160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = true; 6260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } catch (UnsatisfiedLinkError e) { 6360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Log.d(LOG_TAG, "RenderScript JNI library not found!"); 6460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 6560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 6660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // Non-threadsafe functions. 6836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nDeviceCreate(); 6936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nDeviceDestroy(int dev); 70ebfb436a49673693b98469683451bd9ede797557Jason Sams native void nDeviceSetConfig(int dev, int param, int value); 711c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams native void nContextGetUserMessage(int con, int[] data); 721c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams native String nContextGetErrorMessage(int con); 731c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams native int nContextPeekMessage(int con, int[] subID, boolean wait); 742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void nContextInitToClient(int con); 752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void nContextDeinitToClient(int con); 762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // Methods below are wrapped to protect the non-threadsafe 792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // lockless fifo. 8011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams native int rsnContextCreateGL(int dev, int ver, 8111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 8211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 8311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 8411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 8511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int samplesMin, int samplesPref, float samplesQ); 8611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams synchronized int nContextCreateGL(int dev, int ver, 8711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 8811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 8911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 9011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 9111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int samplesMin, int samplesPref, float samplesQ) { 9211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams return rsnContextCreateGL(dev, ver, colorMin, colorPref, 9311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams alphaMin, alphaPref, depthMin, depthPref, 9411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams stencilMin, stencilPref, 9511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams samplesMin, samplesPref, samplesQ); 962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnContextCreate(int dev, int ver); 982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nContextCreate(int dev, int ver) { 992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnContextCreate(dev, ver); 1002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextDestroy(int con); 1022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextDestroy() { 1032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextDestroy(mContext); 1042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextSetSurface(int con, int w, int h, Surface sur); 1062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextSetSurface(int w, int h, Surface sur) { 1072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextSetSurface(mContext, w, h, sur); 1082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextSetPriority(int con, int p); 1102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextSetPriority(int p) { 1112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextSetPriority(mContext, p); 1122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextDump(int con, int bits); 1142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextDump(int bits) { 1152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextDump(mContext, bits); 1162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextFinish(int con); 1182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextFinish() { 1192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextFinish(mContext); 1202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindRootScript(int con, int script); 1232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindRootScript(int script) { 1242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindRootScript(mContext, script); 1252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindSampler(int con, int sampler, int slot); 1272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindSampler(int sampler, int slot) { 1282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindSampler(mContext, sampler, slot); 1292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramStore(int con, int pfs); 1312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramStore(int pfs) { 1322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramStore(mContext, pfs); 1332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramFragment(int con, int pf); 1352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramFragment(int pf) { 1362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramFragment(mContext, pf); 1372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramVertex(int con, int pv); 1392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramVertex(int pv) { 1402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramVertex(mContext, pv); 1412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramRaster(int con, int pr); 1432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramRaster(int pr) { 1442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramRaster(mContext, pr); 1452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextPause(int con); 1472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextPause() { 1482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextPause(mContext); 1492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextResume(int con); 1512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextResume() { 1522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextResume(mContext); 1532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAssignName(int con, int obj, byte[] name); 1562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAssignName(int obj, byte[] name) { 1572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAssignName(mContext, obj, name); 1582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native String rsnGetName(int con, int obj); 1602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized String nGetName(int obj) { 1612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnGetName(mContext, obj); 1622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnObjDestroy(int con, int id); 1642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nObjDestroy(int id) { 1652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnObjDestroy(mContext, id); 1662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnElementCreate(int con, int type, int kind, boolean norm, int vecSize); 1692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nElementCreate(int type, int kind, boolean norm, int vecSize) { 1702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnElementCreate(mContext, type, kind, norm, vecSize); 1712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 17270d4e5024298f71edb3b04867e05568f5495b4ceJason Sams native int rsnElementCreate2(int con, int[] elements, String[] names, int[] arraySizes); 17370d4e5024298f71edb3b04867e05568f5495b4ceJason Sams synchronized int nElementCreate2(int[] elements, String[] names, int[] arraySizes) { 17470d4e5024298f71edb3b04867e05568f5495b4ceJason Sams return rsnElementCreate2(mContext, elements, names, arraySizes); 1752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnElementGetNativeData(int con, int id, int[] elementData); 1772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nElementGetNativeData(int id, int[] elementData) { 1782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnElementGetNativeData(mContext, id, elementData); 1792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnElementGetSubElements(int con, int id, int[] IDs, String[] names); 1812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nElementGetSubElements(int id, int[] IDs, String[] names) { 1822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnElementGetSubElements(mContext, id, IDs, names); 1832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 185bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams native int rsnTypeCreate(int con, int eid, int x, int y, int z, boolean mips, boolean faces); 186bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams synchronized int nTypeCreate(int eid, int x, int y, int z, boolean mips, boolean faces) { 187bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams return rsnTypeCreate(mContext, eid, x, y, z, mips, faces); 1882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnTypeGetNativeData(int con, int id, int[] typeData); 1902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nTypeGetNativeData(int id, int[] typeData) { 1912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnTypeGetNativeData(mContext, id, typeData); 1922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1945476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCreateTyped(int con, int type, int usage); 1955476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCreateTyped(int type, int usage) { 1965476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCreateTyped(mContext, type, usage); 1972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1985476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCreateFromBitmap(int con, int type, int mip, Bitmap bmp, int usage); 1995476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCreateFromBitmap(int type, int mip, Bitmap bmp, int usage) { 2005476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCreateFromBitmap(mContext, type, mip, bmp, usage); 20126ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk } 2025476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCubeCreateFromBitmap(int con, int type, int mip, Bitmap bmp, int usage); 2035476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCubeCreateFromBitmap(int type, int mip, Bitmap bmp, int usage) { 2045476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCubeCreateFromBitmap(mContext, type, mip, bmp, usage); 20567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk } 2062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnAllocationCreateBitmapRef(int con, int type, Bitmap bmp); 2072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nAllocationCreateBitmapRef(int type, Bitmap bmp) { 2082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnAllocationCreateBitmapRef(mContext, type, bmp); 2092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2105476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCreateFromAssetStream(int con, int mips, int assetStream, int usage); 2115476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCreateFromAssetStream(int mips, int assetStream, int usage) { 2125476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCreateFromAssetStream(mContext, mips, assetStream, usage); 2135476b450e50939940dcf3f15c92335cee2fc572dJason Sams } 2145476b450e50939940dcf3f15c92335cee2fc572dJason Sams 2154ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams native void rsnAllocationCopyToBitmap(int con, int alloc, Bitmap bmp); 2164ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams synchronized void nAllocationCopyToBitmap(int alloc, Bitmap bmp) { 2174ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsnAllocationCopyToBitmap(mContext, alloc, bmp); 2184ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams } 2194ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 2204ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 2215476b450e50939940dcf3f15c92335cee2fc572dJason Sams native void rsnAllocationSyncAll(int con, int alloc, int src); 2225476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized void nAllocationSyncAll(int alloc, int src) { 2235476b450e50939940dcf3f15c92335cee2fc572dJason Sams rsnAllocationSyncAll(mContext, alloc, src); 2245476b450e50939940dcf3f15c92335cee2fc572dJason Sams } 2254ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams native void rsnAllocationCopyFromBitmap(int con, int alloc, Bitmap bmp); 2264ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams synchronized void nAllocationCopyFromBitmap(int alloc, Bitmap bmp) { 2274ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsnAllocationCopyFromBitmap(mContext, alloc, bmp); 2282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 2302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationUploadToTexture(int con, int alloc, boolean genMips, int baseMioLevel); 2312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationUploadToTexture(int alloc, boolean genMips, int baseMioLevel) { 2322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationUploadToTexture(mContext, alloc, genMips, baseMioLevel); 2332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationUploadToBufferObject(int con, int alloc); 2352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationUploadToBufferObject(int alloc) { 2362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationUploadToBufferObject(mContext, alloc); 2372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 2392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationSubData1D(int con, int id, int off, int count, int[] d, int sizeBytes); 2402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationSubData1D(int id, int off, int count, int[] d, int sizeBytes) { 2412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationSubData1D(mContext, id, off, count, d, sizeBytes); 2422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationSubData1D(int con, int id, int off, int count, short[] d, int sizeBytes); 2442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationSubData1D(int id, int off, int count, short[] d, int sizeBytes) { 2452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationSubData1D(mContext, id, off, count, d, sizeBytes); 2462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationSubData1D(int con, int id, int off, int count, byte[] d, int sizeBytes); 2482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationSubData1D(int id, int off, int count, byte[] d, int sizeBytes) { 2492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationSubData1D(mContext, id, off, count, d, sizeBytes); 2502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 25149bdaf0293408159df18a1d8540360f9623c40f7Jason Sams native void rsnAllocationSubElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes); 25249bdaf0293408159df18a1d8540360f9623c40f7Jason Sams synchronized void nAllocationSubElementData1D(int id, int xoff, int compIdx, byte[] d, int sizeBytes) { 25349bdaf0293408159df18a1d8540360f9623c40f7Jason Sams rsnAllocationSubElementData1D(mContext, id, xoff, compIdx, d, sizeBytes); 25449bdaf0293408159df18a1d8540360f9623c40f7Jason Sams } 2552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationSubData1D(int con, int id, int off, int count, float[] d, int sizeBytes); 2562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationSubData1D(int id, int off, int count, float[] d, int sizeBytes) { 2572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationSubData1D(mContext, id, off, count, d, sizeBytes); 2582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 2602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationSubData2D(int con, int id, int xoff, int yoff, int w, int h, int[] d, int sizeBytes); 2612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d, int sizeBytes) { 2622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationSubData2D(mContext, id, xoff, yoff, w, h, d, sizeBytes); 2632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationSubData2D(int con, int id, int xoff, int yoff, int w, int h, float[] d, int sizeBytes); 2652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d, int sizeBytes) { 2662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationSubData2D(mContext, id, xoff, yoff, w, h, d, sizeBytes); 2672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationRead(int con, int id, int[] d); 2692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationRead(int id, int[] d) { 2702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationRead(mContext, id, d); 2712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationRead(int con, int id, float[] d); 2732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationRead(int id, float[] d) { 2742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationRead(mContext, id, d); 2752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnAllocationGetType(int con, int id); 2772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nAllocationGetType(int id) { 2782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnAllocationGetType(mContext, id); 2792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 2815edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams native void rsnAllocationResize1D(int con, int id, int dimX); 2825edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams synchronized void nAllocationResize1D(int id, int dimX) { 2835edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsnAllocationResize1D(mContext, id, dimX); 2845edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 2855edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams native void rsnAllocationResize2D(int con, int id, int dimX, int dimY); 2865edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams synchronized void nAllocationResize2D(int id, int dimX, int dimY) { 2875edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsnAllocationResize2D(mContext, id, dimX, dimY); 2885edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 2895edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 2902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DCreateFromAssetStream(int con, int assetStream); 2912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DCreateFromAssetStream(int assetStream) { 2922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DCreateFromAssetStream(mContext, assetStream); 2932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DGetNumIndexEntries(int con, int fileA3D); 2952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DGetNumIndexEntries(int fileA3D) { 2962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DGetNumIndexEntries(mContext, fileA3D); 2972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnFileA3DGetIndexEntries(int con, int fileA3D, int numEntries, int[] IDs, String[] names); 2992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nFileA3DGetIndexEntries(int fileA3D, int numEntries, int[] IDs, String[] names) { 3002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnFileA3DGetIndexEntries(mContext, fileA3D, numEntries, IDs, names); 3012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DGetEntryByIndex(int con, int fileA3D, int index); 3032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DGetEntryByIndex(int fileA3D, int index) { 3042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DGetEntryByIndex(mContext, fileA3D, index); 3052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 3072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFontCreateFromFile(int con, String fileName, int size, int dpi); 3082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFontCreateFromFile(String fileName, int size, int dpi) { 3092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFontCreateFromFile(mContext, fileName, size, dpi); 3102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 3122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter1DBindAllocation(int con, int ad, int alloc); 3132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter1DBindAllocation(int ad, int alloc) { 3142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter1DBindAllocation(mContext, ad, alloc); 3152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter1DSetConstraint(int con, int ad, int dim, int value); 3172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter1DSetConstraint(int ad, int dim, int value) { 3182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter1DSetConstraint(mContext, ad, dim, value); 3192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter1DData(int con, int ad, int[] d); 3212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter1DData(int ad, int[] d) { 3222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter1DData(mContext, ad, d); 3232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter1DData(int con, int ad, float[] d); 3252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter1DData(int ad, float[] d) { 3262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter1DData(mContext, ad, d); 3272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter1DSubData(int con, int ad, int off, int count, int[] d); 3292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter1DSubData(int ad, int off, int count, int[] d) { 3302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter1DSubData(mContext, ad, off, count, d); 3312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter1DSubData(int con, int ad, int off, int count, float[] d); 3332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter1DSubData(int ad, int off, int count, float[] d) { 3342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter1DSubData(mContext, ad, off, count, d); 3352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnAdapter1DCreate(int con); 3372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nAdapter1DCreate() { 3382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnAdapter1DCreate(mContext); 3392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 3412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter2DBindAllocation(int con, int ad, int alloc); 3422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter2DBindAllocation(int ad, int alloc) { 3432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter2DBindAllocation(mContext, ad, alloc); 3442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter2DSetConstraint(int con, int ad, int dim, int value); 3462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter2DSetConstraint(int ad, int dim, int value) { 3472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter2DSetConstraint(mContext, ad, dim, value); 3482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter2DData(int con, int ad, int[] d); 3502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter2DData(int ad, int[] d) { 3512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter2DData(mContext, ad, d); 3522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter2DData(int con, int ad, float[] d); 3542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter2DData(int ad, float[] d) { 3552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter2DData(mContext, ad, d); 3562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter2DSubData(int con, int ad, int xoff, int yoff, int w, int h, int[] d); 3582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter2DSubData(int ad, int xoff, int yoff, int w, int h, int[] d) { 3592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter2DSubData(mContext, ad, xoff, yoff, w, h, d); 3602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAdapter2DSubData(int con, int ad, int xoff, int yoff, int w, int h, float[] d); 3622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAdapter2DSubData(int ad, int xoff, int yoff, int w, int h, float[] d) { 3632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAdapter2DSubData(mContext, ad, xoff, yoff, w, h, d); 3642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnAdapter2DCreate(int con); 3662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nAdapter2DCreate() { 3672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnAdapter2DCreate(mContext); 3682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 3702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptBindAllocation(int con, int script, int alloc, int slot); 3712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptBindAllocation(int script, int alloc, int slot) { 3722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptBindAllocation(mContext, script, alloc, slot); 3732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetTimeZone(int con, int script, byte[] timeZone); 3752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetTimeZone(int script, byte[] timeZone) { 3762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetTimeZone(mContext, script, timeZone); 3772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptInvoke(int con, int id, int slot); 3792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptInvoke(int id, int slot) { 3802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptInvoke(mContext, id, slot); 3812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptInvokeV(int con, int id, int slot, byte[] params); 3832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptInvokeV(int id, int slot, byte[] params) { 3842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptInvokeV(mContext, id, slot, params); 3852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarI(int con, int id, int slot, int val); 3872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarI(int id, int slot, int val) { 3882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarI(mContext, id, slot, val); 3892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 390031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines native void rsnScriptSetVarJ(int con, int id, int slot, long val); 391031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines synchronized void nScriptSetVarJ(int id, int slot, long val) { 392031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsnScriptSetVarJ(mContext, id, slot, val); 393031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines } 3942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarF(int con, int id, int slot, float val); 3952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarF(int id, int slot, float val) { 3962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarF(mContext, id, slot, val); 3972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 398ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines native void rsnScriptSetVarD(int con, int id, int slot, double val); 399ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines synchronized void nScriptSetVarD(int id, int slot, double val) { 400ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsnScriptSetVarD(mContext, id, slot, val); 401ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines } 4022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarV(int con, int id, int slot, byte[] val); 4032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarV(int id, int slot, byte[] val) { 4042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarV(mContext, id, slot, val); 4052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4066f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams native void rsnScriptSetVarObj(int con, int id, int slot, int val); 4076f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams synchronized void nScriptSetVarObj(int id, int slot, int val) { 4086f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsnScriptSetVarObj(mContext, id, slot, val); 4096f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams } 4102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 4112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptCBegin(int con); 4122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptCBegin() { 4132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptCBegin(mContext); 4142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptCSetScript(int con, byte[] script, int offset, int length); 4162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptCSetScript(byte[] script, int offset, int length) { 4172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptCSetScript(mContext, script, offset, length); 4182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 419a914f340ae5b267dc3ab36c1156c795b8fa18f5dShih-wei Liao native int rsnScriptCCreate(int con, String val); 420a914f340ae5b267dc3ab36c1156c795b8fa18f5dShih-wei Liao synchronized int nScriptCCreate(String val) { 421a914f340ae5b267dc3ab36c1156c795b8fa18f5dShih-wei Liao return rsnScriptCCreate(mContext, val); 4222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 4242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnSamplerBegin(int con); 4252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nSamplerBegin() { 4262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnSamplerBegin(mContext); 4272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnSamplerSet(int con, int param, int value); 4292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nSamplerSet(int param, int value) { 4302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnSamplerSet(mContext, param, value); 4312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 432f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk native void rsnSamplerSet2(int con, int param, float value); 433f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk synchronized void nSamplerSet2(int param, float value) { 434f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk rsnSamplerSet2(mContext, param, value); 435f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk } 4362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnSamplerCreate(int con); 4372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nSamplerCreate() { 4382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnSamplerCreate(mContext); 4392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 4412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramStoreBegin(int con, int in, int out); 4422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramStoreBegin(int in, int out) { 4432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramStoreBegin(mContext, in, out); 4442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramStoreDepthFunc(int con, int func); 4462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramStoreDepthFunc(int func) { 4472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramStoreDepthFunc(mContext, func); 4482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramStoreDepthMask(int con, boolean enable); 4502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramStoreDepthMask(boolean enable) { 4512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramStoreDepthMask(mContext, enable); 4522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramStoreColorMask(int con, boolean r, boolean g, boolean b, boolean a); 4542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramStoreColorMask(boolean r, boolean g, boolean b, boolean a) { 4552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramStoreColorMask(mContext, r, g, b, a); 4562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramStoreBlendFunc(int con, int src, int dst); 4582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramStoreBlendFunc(int src, int dst) { 4592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramStoreBlendFunc(mContext, src, dst); 4602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramStoreDither(int con, boolean enable); 4622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramStoreDither(boolean enable) { 4632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramStoreDither(mContext, enable); 4642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnProgramStoreCreate(int con); 4662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nProgramStoreCreate() { 4672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnProgramStoreCreate(mContext); 4682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 4702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnProgramRasterCreate(int con, boolean pointSmooth, boolean lineSmooth, boolean pointSprite); 4712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nProgramRasterCreate(boolean pointSmooth, boolean lineSmooth, boolean pointSprite) { 4722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnProgramRasterCreate(mContext, pointSmooth, lineSmooth, pointSprite); 4732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramRasterSetLineWidth(int con, int pr, float v); 4752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramRasterSetLineWidth(int pr, float v) { 4762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramRasterSetLineWidth(mContext, pr, v); 4772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramRasterSetCullMode(int con, int pr, int mode); 4792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramRasterSetCullMode(int pr, int mode) { 4802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramRasterSetCullMode(mContext, pr, mode); 4812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 4832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindConstants(int con, int pv, int slot, int mID); 4842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindConstants(int pv, int slot, int mID) { 4852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindConstants(mContext, pv, slot, mID); 4862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindTexture(int con, int vpf, int slot, int a); 4882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindTexture(int vpf, int slot, int a) { 4892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindTexture(mContext, vpf, slot, a); 4902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindSampler(int con, int vpf, int slot, int s); 4922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindSampler(int vpf, int slot, int s) { 4932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindSampler(mContext, vpf, slot, s); 4942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 495b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk native int rsnProgramFragmentCreate(int con, String shader, int[] params); 496b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk synchronized int nProgramFragmentCreate(String shader, int[] params) { 497b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk return rsnProgramFragmentCreate(mContext, shader, params); 4982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 499b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk native int rsnProgramVertexCreate(int con, String shader, int[] params); 500b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk synchronized int nProgramVertexCreate(String shader, int[] params) { 501b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk return rsnProgramVertexCreate(mContext, shader, params); 5022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 5042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnMeshCreate(int con, int vtxCount, int indexCount); 5052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nMeshCreate(int vtxCount, int indexCount) { 5062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnMeshCreate(mContext, vtxCount, indexCount); 5072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnMeshBindVertex(int con, int id, int alloc, int slot); 5092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nMeshBindVertex(int id, int alloc, int slot) { 5102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnMeshBindVertex(mContext, id, alloc, slot); 5112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnMeshBindIndex(int con, int id, int alloc, int prim, int slot); 5132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nMeshBindIndex(int id, int alloc, int prim, int slot) { 5142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnMeshBindIndex(mContext, id, alloc, prim, slot); 5152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5169d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk native void rsnMeshInitVertexAttribs(int con, int id); 5179d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk synchronized void nMeshInitVertexAttribs(int id) { 5189d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk rsnMeshInitVertexAttribs(mContext, id); 5199d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk } 5202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnMeshGetVertexBufferCount(int con, int id); 5212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nMeshGetVertexBufferCount(int id) { 5222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnMeshGetVertexBufferCount(mContext, id); 5232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnMeshGetIndexCount(int con, int id); 5252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nMeshGetIndexCount(int id) { 5262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnMeshGetIndexCount(mContext, id); 5272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnMeshGetVertices(int con, int id, int[] vtxIds, int vtxIdCount); 5292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nMeshGetVertices(int id, int[] vtxIds, int vtxIdCount) { 5302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnMeshGetVertices(mContext, id, vtxIds, vtxIdCount); 5312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnMeshGetIndices(int con, int id, int[] idxIds, int[] primitives, int vtxIdCount); 5332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nMeshGetIndices(int id, int[] idxIds, int[] primitives, int vtxIdCount) { 5342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnMeshGetIndices(mContext, id, idxIds, primitives, vtxIdCount); 5352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 53760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 538bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int mDev; 539bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int mContext; 540650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"FieldCanBeLocal"}) 541bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams MessageThread mMessageThread; 54260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 5438cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U8; 5448cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I8; 5458cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U16; 5468cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I16; 5478cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U32; 5488cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I32; 54952d836332f6aae74ed97fda1b53681f36710af64Stephen Hines Element mElement_U64; 550ef1dac28d3bf98bd61cd9874fb3ccab42105e9b6Stephen Hines Element mElement_I64; 5518cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_F32; 55202f41705199336f808ece50d81585450e7f8f61fStephen Hines Element mElement_F64; 553f110d4b787b91dabe968a812e76e5c1f8d953487Jason Sams Element mElement_BOOLEAN; 5548cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams 5558cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_ELEMENT; 5568cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_TYPE; 5578cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_ALLOCATION; 5588cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_SAMPLER; 5598cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_SCRIPT; 5608cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_MESH; 5618cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_FRAGMENT; 5628cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_VERTEX; 5638cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_RASTER; 5648cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_STORE; 565a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 5663c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_A_8; 5673c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGB_565; 5683c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGB_888; 5693c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_5551; 5703c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_4444; 5713c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_8888; 5723c0dfbab807a459622aeade4940daddf482dec66Jason Sams 5738cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_2; 5748cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_3; 5758cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_4; 5768cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_UCHAR_4; 5777d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 5781d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_4X4; 5791d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_3X3; 5801d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_2X2; 5811d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams 5824d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_NEAREST; 5834d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_LINEAR; 5844d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR; 5854d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_NEAREST; 5864d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_LINEAR; 5874d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_LINEAR_MIP_LINEAR; 5884d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 589d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_NONE_DEPTH_TEST; 590d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH; 591d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_NONE_DEPTH_NO_TEST; 592d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_NONE_DEPTH_NO_WRITE; 593d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_TEST; 594d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH; 595d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_NO_TEST; 596d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_NO_WRITE; 597d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ADD_DEPTH_TEST; 598d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ADD_DEPTH_NO_DEPTH; 599d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ADD_DEPTH_NO_TEST; 600d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ADD_DEPTH_NO_WRITE; 601d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 602d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_BACK; 603d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_FRONT; 604d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_NONE; 60532e09b5891da0174f161d99e2d3ebe67d6efa39cAlex Sakhartchouk 60660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 60743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich // 60860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 60927676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 61027676fe24be7444a174c15df476e49adc5335d03Jason Sams * Base class application should derive from for handling RS messages 61127676fe24be7444a174c15df476e49adc5335d03Jason Sams * comming from their scripts. When a script calls sendToClient the data 61227676fe24be7444a174c15df476e49adc5335d03Jason Sams * fields will be filled in and then the run method called by a message 61327676fe24be7444a174c15df476e49adc5335d03Jason Sams * handling thread. This will occur some time after sendToClient completes 61427676fe24be7444a174c15df476e49adc5335d03Jason Sams * in the script. 61527676fe24be7444a174c15df476e49adc5335d03Jason Sams * 61627676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 617bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public static class RSMessageHandler implements Runnable { 618516c31911578db8ce53529483c3ded918ac7dc6bJason Sams protected int[] mData; 619516c31911578db8ce53529483c3ded918ac7dc6bJason Sams protected int mID; 6201c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected int mLength; 621516c31911578db8ce53529483c3ded918ac7dc6bJason Sams public void run() { 622516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 623516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 62427676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 62527676fe24be7444a174c15df476e49adc5335d03Jason Sams * If an application is expecting messages it should set this field to an 62627676fe24be7444a174c15df476e49adc5335d03Jason Sams * instance of RSMessage. This instance will receive all the user messages 62727676fe24be7444a174c15df476e49adc5335d03Jason Sams * sent from sendToClient by scripts from this context. 62827676fe24be7444a174c15df476e49adc5335d03Jason Sams * 62927676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 630bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams RSMessageHandler mMessageCallback = null; 631bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 632bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setMessageHandler(RSMessageHandler msg) { 633bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mMessageCallback = msg; 634bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 635bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public RSMessageHandler getMessageHandler() { 636bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams return mMessageCallback; 637bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 638516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 63927676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 64027676fe24be7444a174c15df476e49adc5335d03Jason Sams * Runtime error base class. An application should derive from this class 64127676fe24be7444a174c15df476e49adc5335d03Jason Sams * if it wishes to install an error handler. When errors occur at runtime 64227676fe24be7444a174c15df476e49adc5335d03Jason Sams * the fields in this class will be filled and the run method called. 64327676fe24be7444a174c15df476e49adc5335d03Jason Sams * 64427676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 645bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public static class RSErrorHandler implements Runnable { 6461c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected String mErrorMessage; 6471c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected int mErrorNum; 6481c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams public void run() { 6491c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 6501c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 65127676fe24be7444a174c15df476e49adc5335d03Jason Sams 65227676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 65327676fe24be7444a174c15df476e49adc5335d03Jason Sams * Application Error handler. All runtime errors will be dispatched to the 65427676fe24be7444a174c15df476e49adc5335d03Jason Sams * instance of RSAsyncError set here. If this field is null a 65527676fe24be7444a174c15df476e49adc5335d03Jason Sams * RSRuntimeException will instead be thrown with details about the error. 65627676fe24be7444a174c15df476e49adc5335d03Jason Sams * This will cause program termaination. 65727676fe24be7444a174c15df476e49adc5335d03Jason Sams * 65827676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 659bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams RSErrorHandler mErrorCallback = null; 660bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 661bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setErrorHandler(RSErrorHandler msg) { 662bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mErrorCallback = msg; 663bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 664bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public RSErrorHandler getErrorHandler() { 665bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams return mErrorCallback; 666bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 6671c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 66827676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 66927676fe24be7444a174c15df476e49adc5335d03Jason Sams * RenderScript worker threads priority enumeration. The default value is 67027676fe24be7444a174c15df476e49adc5335d03Jason Sams * NORMAL. Applications wishing to do background processing such as 67127676fe24be7444a174c15df476e49adc5335d03Jason Sams * wallpapers should set their priority to LOW to avoid starving forground 67227676fe24be7444a174c15df476e49adc5335d03Jason Sams * processes. 67327676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 6747d787b4722eaeb79cab42c36060336e092b77b5fJason Sams public enum Priority { 675bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams // Remap these numbers to opaque... 6767d787b4722eaeb79cab42c36060336e092b77b5fJason Sams LOW (5), //ANDROID_PRIORITY_BACKGROUND + 5 6777d787b4722eaeb79cab42c36060336e092b77b5fJason Sams NORMAL (-4); //ANDROID_PRIORITY_DISPLAY 6787d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 6797d787b4722eaeb79cab42c36060336e092b77b5fJason Sams int mID; 6807d787b4722eaeb79cab42c36060336e092b77b5fJason Sams Priority(int id) { 6817d787b4722eaeb79cab42c36060336e092b77b5fJason Sams mID = id; 6827d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 6837d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 6847d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 685771bebb94054d06f97284379c93a2620613513c3Jason Sams void validate() { 686771bebb94054d06f97284379c93a2620613513c3Jason Sams if (mContext == 0) { 687c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSInvalidStateException("Calling RS with no Context active."); 688771bebb94054d06f97284379c93a2620613513c3Jason Sams } 689771bebb94054d06f97284379c93a2620613513c3Jason Sams } 690771bebb94054d06f97284379c93a2620613513c3Jason Sams 69127676fe24be7444a174c15df476e49adc5335d03Jason Sams 69227676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 69327676fe24be7444a174c15df476e49adc5335d03Jason Sams * Change the priority of the worker threads for this context. 69427676fe24be7444a174c15df476e49adc5335d03Jason Sams * 69527676fe24be7444a174c15df476e49adc5335d03Jason Sams * @param p New priority to be set. 69627676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 697bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setPriority(Priority p) { 6985dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 6997d787b4722eaeb79cab42c36060336e092b77b5fJason Sams nContextSetPriority(p.mID); 7007d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 7017d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 702bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static class MessageThread extends Thread { 703516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RenderScript mRS; 704516c31911578db8ce53529483c3ded918ac7dc6bJason Sams boolean mRun = true; 705bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int[] mAuxData = new int[2]; 7061c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 707bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_NONE = 0; 708bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_EXCEPTION = 1; 709bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_RESIZE = 2; 710bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_ERROR = 3; 711bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_USER = 4; 712516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 713bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_ERROR_FATAL_UNKNOWN = 0x1000; 714add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams 715516c31911578db8ce53529483c3ded918ac7dc6bJason Sams MessageThread(RenderScript rs) { 716516c31911578db8ce53529483c3ded918ac7dc6bJason Sams super("RSMessageThread"); 717516c31911578db8ce53529483c3ded918ac7dc6bJason Sams mRS = rs; 718516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 719516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 720516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 721516c31911578db8ce53529483c3ded918ac7dc6bJason Sams public void run() { 722516c31911578db8ce53529483c3ded918ac7dc6bJason Sams // This function is a temporary solution. The final solution will 723516c31911578db8ce53529483c3ded918ac7dc6bJason Sams // used typed allocations where the message id is the type indicator. 724516c31911578db8ce53529483c3ded918ac7dc6bJason Sams int[] rbuf = new int[16]; 7252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams mRS.nContextInitToClient(mRS.mContext); 726516c31911578db8ce53529483c3ded918ac7dc6bJason Sams while(mRun) { 7271d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams rbuf[0] = 0; 728bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData, true); 729bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int size = mAuxData[1]; 730bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int subID = mAuxData[0]; 7311c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 7321c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (msg == RS_MESSAGE_TO_CLIENT_USER) { 7331c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if ((size>>2) >= rbuf.length) { 7341c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams rbuf = new int[(size + 3) >> 2]; 7351c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 7361c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.nContextGetUserMessage(mRS.mContext, rbuf); 7371c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 7381c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if(mRS.mMessageCallback != null) { 7391c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mData = rbuf; 7401c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mID = subID; 7411c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mLength = size; 7421c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.run(); 7431d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams } else { 7441c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams throw new RSInvalidStateException("Received a message from the script with no message handler installed."); 745516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 746ab98bb6e8b95bef7415c1ad239be71f93322fbadStephen Hines continue; 747516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 7481c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 7491c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (msg == RS_MESSAGE_TO_CLIENT_ERROR) { 7501c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams String e = mRS.nContextGetErrorMessage(mRS.mContext); 7511c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 752add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams if (subID >= RS_ERROR_FATAL_UNKNOWN) { 753add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams throw new RSRuntimeException("Fatal error " + subID + ", details: " + e); 754add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams } 755add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams 7561c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if(mRS.mErrorCallback != null) { 7571c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.mErrorMessage = e; 7581c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.mErrorNum = subID; 7591c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.run(); 7601c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } else { 7611c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams //throw new RSRuntimeException("Received error num " + subID + ", details: " + e); 7621c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 7631c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams continue; 7641c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 7651c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 7661c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // 2: teardown. 7671c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // But we want to avoid starving other threads during 7681c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // teardown by yielding until the next line in the destructor 7691c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // can execute to set mRun = false 7701c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams try { 7711c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams sleep(1, 0); 7721c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } catch(InterruptedException e) { 773516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 774516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 7753bc47d438171dce294e816366d53bc9eca772c5bJason Sams Log.d(LOG_TAG, "MessageThread exiting."); 776516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 777516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 778516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 77927676fe24be7444a174c15df476e49adc5335d03Jason Sams RenderScript() { 78060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 78160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 78227676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 78327676fe24be7444a174c15df476e49adc5335d03Jason Sams * Create a basic RenderScript context. 78427676fe24be7444a174c15df476e49adc5335d03Jason Sams * 78527676fe24be7444a174c15df476e49adc5335d03Jason Sams * 78627676fe24be7444a174c15df476e49adc5335d03Jason Sams * @return RenderScript 78727676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 788704ff64b099406bb328898a7443921f22dbffd6dJason Sams public static RenderScript create() { 789704ff64b099406bb328898a7443921f22dbffd6dJason Sams RenderScript rs = new RenderScript(); 790704ff64b099406bb328898a7443921f22dbffd6dJason Sams 791704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mDev = rs.nDeviceCreate(); 792704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mContext = rs.nContextCreate(rs.mDev, 0); 793704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mMessageThread = new MessageThread(rs); 794704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mMessageThread.start(); 795704ff64b099406bb328898a7443921f22dbffd6dJason Sams return rs; 796efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 797efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 79827676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 79927676fe24be7444a174c15df476e49adc5335d03Jason Sams * Print the currently available debugging information about the state of 80027676fe24be7444a174c15df476e49adc5335d03Jason Sams * the RS context to the log. 80127676fe24be7444a174c15df476e49adc5335d03Jason Sams * 80227676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 803bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void contextDump() { 8045dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 805bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams nContextDump(0); 806715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams } 807715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams 80827676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 80927676fe24be7444a174c15df476e49adc5335d03Jason Sams * Wait for any commands in the fifo between the java bindings and native to 81027676fe24be7444a174c15df476e49adc5335d03Jason Sams * be processed. 81127676fe24be7444a174c15df476e49adc5335d03Jason Sams * 81227676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 81396ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams public void finish() { 81496ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams nContextFinish(); 81596ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams } 81696ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 81727676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 81827676fe24be7444a174c15df476e49adc5335d03Jason Sams * Destroy this renderscript context. Once this function is called its no 81927676fe24be7444a174c15df476e49adc5335d03Jason Sams * longer legal to use this or any objects created by this context. 82027676fe24be7444a174c15df476e49adc5335d03Jason Sams * 82127676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 822f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams public void destroy() { 8235dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 8242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams nContextDeinitToClient(mContext); 825516c31911578db8ce53529483c3ded918ac7dc6bJason Sams mMessageThread.mRun = false; 826a8bf9429b29743b3489817feb21bde2416acc465Jason Sams try { 827a8bf9429b29743b3489817feb21bde2416acc465Jason Sams mMessageThread.join(); 828a8bf9429b29743b3489817feb21bde2416acc465Jason Sams } catch(InterruptedException e) { 829a8bf9429b29743b3489817feb21bde2416acc465Jason Sams } 830516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 8312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams nContextDestroy(); 832f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams mContext = 0; 833f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams 834f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams nDeviceDestroy(mDev); 835f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams mDev = 0; 836f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams } 83702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 838a9e7a05b84470257637c97d65f6562aa832c66efJason Sams boolean isAlive() { 839a9e7a05b84470257637c97d65f6562aa832c66efJason Sams return mContext != 0; 840a9e7a05b84470257637c97d65f6562aa832c66efJason Sams } 841a9e7a05b84470257637c97d65f6562aa832c66efJason Sams 842bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int safeID(BaseObj o) { 8436b9dec00afec359f091ed353f371f08ff150278aJason Sams if(o != null) { 84406d69de78845659e6904ae4964e606a7f1a6a4a8Jason Sams return o.getID(); 845d8e4161f114331343b897cbacea927e7e60e7b17Jason Sams } 8466b9dec00afec359f091ed353f371f08ff150278aJason Sams return 0; 84760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 84860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich} 849