RenderScript.java revision 615e7cee03d1a53072b0369fa9f247811ac56845
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 216b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liaoimport android.content.Context; 224382467a80dd12c6362d57edca7f2367f7ae877cStephen Hinesimport android.content.pm.ApplicationInfo; 234382467a80dd12c6362d57edca7f2367f7ae877cStephen Hinesimport android.content.pm.PackageManager; 24b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukimport android.content.res.AssetManager; 25b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.graphics.Bitmap; 26650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guyimport android.graphics.BitmapFactory; 27faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Samsimport android.graphics.SurfaceTexture; 28260c77a4f741c3db76057cc4ea2ee54fe335ecf9Glenn Kastenimport android.os.Process; 2936e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Log; 3036e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.view.Surface; 3143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 3260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 334382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines 34e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams/** 353aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * Renderscript base master class. An instance of this class creates native 3627676fe24be7444a174c15df476e49adc5335d03Jason Sams * worker threads for processing commands from this object. This base class 3727676fe24be7444a174c15df476e49adc5335d03Jason Sams * does not provide any extended capabilities beyond simple data processing. 3827676fe24be7444a174c15df476e49adc5335d03Jason Sams * For extended capabilities use derived classes such as RenderScriptGL. 3927676fe24be7444a174c15df476e49adc5335d03Jason Sams * 403aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <div class="special reference"> 413aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <h3>Developer Guides</h3> 423aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <p>For more information about creating an application that uses Renderscript, read the 433aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p> 443aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * </div> 45e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams **/ 4660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichpublic class RenderScript { 473bc47d438171dce294e816366d53bc9eca772c5bJason Sams static final String LOG_TAG = "RenderScript_jni"; 48bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final boolean DEBUG = false; 49650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"UnusedDeclaration", "deprecation"}) 5043a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato static final boolean LOG_ENABLED = false; 5160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 526b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao private Context mApplicationContext; 5360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 546b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao /* 5560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * We use a class initializer to allow the native code to cache some 5660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * field offsets. 5760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich */ 58650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"}) 59bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static boolean sInitialized; 60bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams native static void _nInit(); 6160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 62dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams 6360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich static { 6460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = false; 6560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich try { 66e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams System.loadLibrary("rs_jni"); 6760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich _nInit(); 6860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = true; 6960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } catch (UnsatisfiedLinkError e) { 70fa445b9353972735d8d65e8a936786b1afe9886dJason Sams Log.e(LOG_TAG, "Error loading RS jni library: " + e); 71fa445b9353972735d8d65e8a936786b1afe9886dJason Sams throw new RSRuntimeException("Error loading RS jni library: " + e); 7260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 7360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 7460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // Non-threadsafe functions. 7636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nDeviceCreate(); 7736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nDeviceDestroy(int dev); 78ebfb436a49673693b98469683451bd9ede797557Jason Sams native void nDeviceSetConfig(int dev, int param, int value); 79edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams native int nContextGetUserMessage(int con, int[] data); 801c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams native String nContextGetErrorMessage(int con); 81edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams native int nContextPeekMessage(int con, int[] subID); 822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void nContextInitToClient(int con); 832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void nContextDeinitToClient(int con); 842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // Methods below are wrapped to protect the non-threadsafe 872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // lockless fifo. 884382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines native int rsnContextCreateGL(int dev, int ver, int sdkVer, 8911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 9011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 9111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 9211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 932c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int samplesMin, int samplesPref, float samplesQ, int dpi); 944382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines synchronized int nContextCreateGL(int dev, int ver, int sdkVer, 9511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 9611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 9711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 9811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 992c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int samplesMin, int samplesPref, float samplesQ, int dpi) { 1004382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines return rsnContextCreateGL(dev, ver, sdkVer, colorMin, colorPref, 10111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams alphaMin, alphaPref, depthMin, depthPref, 10211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams stencilMin, stencilPref, 1032c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk samplesMin, samplesPref, samplesQ, dpi); 1042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1054382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines native int rsnContextCreate(int dev, int ver, int sdkVer); 1064382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines synchronized int nContextCreate(int dev, int ver, int sdkVer) { 1074382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines return rsnContextCreate(dev, ver, sdkVer); 1082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextDestroy(int con); 1102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextDestroy() { 111d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextDestroy(mContext); 1132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextSetSurface(int con, int w, int h, Surface sur); 1152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextSetSurface(int w, int h, Surface sur) { 116d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextSetSurface(mContext, w, h, sur); 1182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 119faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams native void rsnContextSetSurfaceTexture(int con, int w, int h, SurfaceTexture sur); 120faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams synchronized void nContextSetSurfaceTexture(int w, int h, SurfaceTexture sur) { 121faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams validate(); 122faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams rsnContextSetSurfaceTexture(mContext, w, h, sur); 123faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } 1242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextSetPriority(int con, int p); 1252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextSetPriority(int p) { 126d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextSetPriority(mContext, p); 1282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextDump(int con, int bits); 1302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextDump(int bits) { 131d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextDump(mContext, bits); 1332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextFinish(int con); 1352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextFinish() { 136d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextFinish(mContext); 1382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindRootScript(int con, int script); 1412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindRootScript(int script) { 142d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindRootScript(mContext, script); 1442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindSampler(int con, int sampler, int slot); 1462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindSampler(int sampler, int slot) { 147d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindSampler(mContext, sampler, slot); 1492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramStore(int con, int pfs); 1512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramStore(int pfs) { 152d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramStore(mContext, pfs); 1542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramFragment(int con, int pf); 1562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramFragment(int pf) { 157d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramFragment(mContext, pf); 1592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramVertex(int con, int pv); 1612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramVertex(int pv) { 162d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramVertex(mContext, pv); 1642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramRaster(int con, int pr); 1662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramRaster(int pr) { 167d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramRaster(mContext, pr); 1692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextPause(int con); 1712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextPause() { 172d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextPause(mContext); 1742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextResume(int con); 1762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextResume() { 177d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextResume(mContext); 1792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAssignName(int con, int obj, byte[] name); 1822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAssignName(int obj, byte[] name) { 183d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAssignName(mContext, obj, name); 1852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native String rsnGetName(int con, int obj); 1872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized String nGetName(int obj) { 188d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnGetName(mContext, obj); 1902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnObjDestroy(int con, int id); 1922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nObjDestroy(int id) { 193d1ac98149737299513da1357e36f68cbb6d74425Jason Sams // There is a race condition here. The calling code may be run 194d1ac98149737299513da1357e36f68cbb6d74425Jason Sams // by the gc while teardown is occuring. This protects againts 195d1ac98149737299513da1357e36f68cbb6d74425Jason Sams // deleting dead objects. 196d1ac98149737299513da1357e36f68cbb6d74425Jason Sams if (mContext != 0) { 197d1ac98149737299513da1357e36f68cbb6d74425Jason Sams rsnObjDestroy(mContext, id); 198d1ac98149737299513da1357e36f68cbb6d74425Jason Sams } 1992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 2012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnElementCreate(int con, int type, int kind, boolean norm, int vecSize); 2022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nElementCreate(int type, int kind, boolean norm, int vecSize) { 203d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnElementCreate(mContext, type, kind, norm, vecSize); 2052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 20670d4e5024298f71edb3b04867e05568f5495b4ceJason Sams native int rsnElementCreate2(int con, int[] elements, String[] names, int[] arraySizes); 20770d4e5024298f71edb3b04867e05568f5495b4ceJason Sams synchronized int nElementCreate2(int[] elements, String[] names, int[] arraySizes) { 208d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 20970d4e5024298f71edb3b04867e05568f5495b4ceJason Sams return rsnElementCreate2(mContext, elements, names, arraySizes); 2102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnElementGetNativeData(int con, int id, int[] elementData); 2122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nElementGetNativeData(int id, int[] elementData) { 213d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnElementGetNativeData(mContext, id, elementData); 2152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2167d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk native void rsnElementGetSubElements(int con, int id, 2177d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk int[] IDs, String[] names, int[] arraySizes); 2187d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk synchronized void nElementGetSubElements(int id, int[] IDs, String[] names, int[] arraySizes) { 219d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2207d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk rsnElementGetSubElements(mContext, id, IDs, names, arraySizes); 2212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 223bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams native int rsnTypeCreate(int con, int eid, int x, int y, int z, boolean mips, boolean faces); 224bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams synchronized int nTypeCreate(int eid, int x, int y, int z, boolean mips, boolean faces) { 225d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 226bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams return rsnTypeCreate(mContext, eid, x, y, z, mips, faces); 2272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnTypeGetNativeData(int con, int id, int[] typeData); 2292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nTypeGetNativeData(int id, int[] typeData) { 230d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2312e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnTypeGetNativeData(mContext, id, typeData); 2322e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 234857d0c7017da763a420e825fffa2f260eb982c97Jason Sams native int rsnAllocationCreateTyped(int con, int type, int mip, int usage, int pointer); 235857d0c7017da763a420e825fffa2f260eb982c97Jason Sams synchronized int nAllocationCreateTyped(int type, int mip, int usage, int pointer) { 236d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 237857d0c7017da763a420e825fffa2f260eb982c97Jason Sams return rsnAllocationCreateTyped(mContext, type, mip, usage, pointer); 2382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2395476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCreateFromBitmap(int con, int type, int mip, Bitmap bmp, int usage); 2405476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCreateFromBitmap(int type, int mip, Bitmap bmp, int usage) { 241d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2425476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCreateFromBitmap(mContext, type, mip, bmp, usage); 24326ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk } 2445476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCubeCreateFromBitmap(int con, int type, int mip, Bitmap bmp, int usage); 2455476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCubeCreateFromBitmap(int type, int mip, Bitmap bmp, int usage) { 246d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2475476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCubeCreateFromBitmap(mContext, type, mip, bmp, usage); 24867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk } 2492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnAllocationCreateBitmapRef(int con, int type, Bitmap bmp); 2502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nAllocationCreateBitmapRef(int type, Bitmap bmp) { 251d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnAllocationCreateBitmapRef(mContext, type, bmp); 2532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2545476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCreateFromAssetStream(int con, int mips, int assetStream, int usage); 2555476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCreateFromAssetStream(int mips, int assetStream, int usage) { 256d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2575476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCreateFromAssetStream(mContext, mips, assetStream, usage); 2585476b450e50939940dcf3f15c92335cee2fc572dJason Sams } 2595476b450e50939940dcf3f15c92335cee2fc572dJason Sams 2604ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams native void rsnAllocationCopyToBitmap(int con, int alloc, Bitmap bmp); 2614ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams synchronized void nAllocationCopyToBitmap(int alloc, Bitmap bmp) { 262d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2634ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsnAllocationCopyToBitmap(mContext, alloc, bmp); 2644ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams } 2654ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 2664ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 2675476b450e50939940dcf3f15c92335cee2fc572dJason Sams native void rsnAllocationSyncAll(int con, int alloc, int src); 2685476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized void nAllocationSyncAll(int alloc, int src) { 269d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2705476b450e50939940dcf3f15c92335cee2fc572dJason Sams rsnAllocationSyncAll(mContext, alloc, src); 2715476b450e50939940dcf3f15c92335cee2fc572dJason Sams } 272615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams native int rsnAllocationGetSurfaceTextureID(int con, int alloc); 273615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams synchronized int nAllocationGetSurfaceTextureID(int alloc) { 274615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams validate(); 275615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams return rsnAllocationGetSurfaceTextureID(mContext, alloc); 276615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams } 277615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams 278f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams native void rsnAllocationGenerateMipmaps(int con, int alloc); 279f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams synchronized void nAllocationGenerateMipmaps(int alloc) { 280d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 281f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsnAllocationGenerateMipmaps(mContext, alloc); 282f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams } 2834ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams native void rsnAllocationCopyFromBitmap(int con, int alloc, Bitmap bmp); 2844ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams synchronized void nAllocationCopyFromBitmap(int alloc, Bitmap bmp) { 285d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2864ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsnAllocationCopyFromBitmap(mContext, alloc, bmp); 2872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 2892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 29049a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData1D(int con, int id, int off, int mip, int count, int[] d, int sizeBytes); 29149a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData1D(int id, int off, int mip, int count, int[] d, int sizeBytes) { 292d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 29349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes); 2942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 29549a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData1D(int con, int id, int off, int mip, int count, short[] d, int sizeBytes); 29649a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData1D(int id, int off, int mip, int count, short[] d, int sizeBytes) { 297d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 29849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes); 2992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 30049a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData1D(int con, int id, int off, int mip, int count, byte[] d, int sizeBytes); 30149a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData1D(int id, int off, int mip, int count, byte[] d, int sizeBytes) { 302d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 30349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes); 3042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 30549a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData1D(int con, int id, int off, int mip, int count, float[] d, int sizeBytes); 30649a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData1D(int id, int off, int mip, int count, float[] d, int sizeBytes) { 307d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 30849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes); 30949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams } 31049a05d7b82956009f03acbb92a064eed054eb031Jason Sams 31149a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationElementData1D(int con, int id, int xoff, int mip, int compIdx, byte[] d, int sizeBytes); 31249a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationElementData1D(int id, int xoff, int mip, int compIdx, byte[] d, int sizeBytes) { 313d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 31449a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationElementData1D(mContext, id, xoff, mip, compIdx, d, sizeBytes); 3152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 317304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk native void rsnAllocationData2D(int con, 318304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int dstAlloc, int dstXoff, int dstYoff, 319304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int dstMip, int dstFace, 320304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int width, int height, 321304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int srcAlloc, int srcXoff, int srcYoff, 322304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int srcMip, int srcFace); 323304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk synchronized void nAllocationData2D(int dstAlloc, int dstXoff, int dstYoff, 324304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int dstMip, int dstFace, 325304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int width, int height, 326304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int srcAlloc, int srcXoff, int srcYoff, 327304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int srcMip, int srcFace) { 328304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk validate(); 329304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk rsnAllocationData2D(mContext, 330304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstAlloc, dstXoff, dstYoff, 331304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstMip, dstFace, 332304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, 333304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcAlloc, srcXoff, srcYoff, 334304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcMip, srcFace); 335304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk } 336304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 337fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, int w, int h, byte[] d, int sizeBytes); 338fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, int w, int h, byte[] d, int sizeBytes) { 339d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 340fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes); 341fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 342fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, int w, int h, short[] d, int sizeBytes); 343fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, int w, int h, short[] d, int sizeBytes) { 344d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 345fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes); 346fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 34749a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, int w, int h, int[] d, int sizeBytes); 34849a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, int w, int h, int[] d, int sizeBytes) { 349d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 35049a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes); 3512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 35249a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, int w, int h, float[] d, int sizeBytes); 35349a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, int w, int h, float[] d, int sizeBytes) { 354d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 35549a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes); 3562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 357fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, Bitmap b); 358fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, Bitmap b) { 359d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 360fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, b); 361fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 36249a05d7b82956009f03acbb92a064eed054eb031Jason Sams 363fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationRead(int con, int id, byte[] d); 364fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationRead(int id, byte[] d) { 365d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 366fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationRead(mContext, id, d); 367fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 368fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationRead(int con, int id, short[] d); 369fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationRead(int id, short[] d) { 370d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 371fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationRead(mContext, id, d); 372fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 3732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationRead(int con, int id, int[] d); 3742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationRead(int id, int[] d) { 375d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationRead(mContext, id, d); 3772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationRead(int con, int id, float[] d); 3792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationRead(int id, float[] d) { 380d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationRead(mContext, id, d); 3822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnAllocationGetType(int con, int id); 3842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nAllocationGetType(int id) { 385d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnAllocationGetType(mContext, id); 3872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 3895edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams native void rsnAllocationResize1D(int con, int id, int dimX); 3905edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams synchronized void nAllocationResize1D(int id, int dimX) { 391d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3925edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsnAllocationResize1D(mContext, id, dimX); 3935edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 3945edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams native void rsnAllocationResize2D(int con, int id, int dimX, int dimY); 3955edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams synchronized void nAllocationResize2D(int id, int dimX, int dimY) { 396d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3975edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsnAllocationResize2D(mContext, id, dimX, dimY); 3985edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 3995edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 4002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DCreateFromAssetStream(int con, int assetStream); 4012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DCreateFromAssetStream(int assetStream) { 402d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4032e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DCreateFromAssetStream(mContext, assetStream); 4042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 405b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk native int rsnFileA3DCreateFromFile(int con, String path); 406b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk synchronized int nFileA3DCreateFromFile(String path) { 407d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 408b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return rsnFileA3DCreateFromFile(mContext, path); 409b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 410b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk native int rsnFileA3DCreateFromAsset(int con, AssetManager mgr, String path); 411b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk synchronized int nFileA3DCreateFromAsset(AssetManager mgr, String path) { 412d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 413b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return rsnFileA3DCreateFromAsset(mContext, mgr, path); 414b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 4152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DGetNumIndexEntries(int con, int fileA3D); 4162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DGetNumIndexEntries(int fileA3D) { 417d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DGetNumIndexEntries(mContext, fileA3D); 4192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnFileA3DGetIndexEntries(int con, int fileA3D, int numEntries, int[] IDs, String[] names); 4212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nFileA3DGetIndexEntries(int fileA3D, int numEntries, int[] IDs, String[] names) { 422d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnFileA3DGetIndexEntries(mContext, fileA3D, numEntries, IDs, names); 4242e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DGetEntryByIndex(int con, int fileA3D, int index); 4262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DGetEntryByIndex(int fileA3D, int index) { 427d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DGetEntryByIndex(mContext, fileA3D, index); 4292e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4302e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 431e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk native int rsnFontCreateFromFile(int con, String fileName, float size, int dpi); 432e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk synchronized int nFontCreateFromFile(String fileName, float size, int dpi) { 433d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFontCreateFromFile(mContext, fileName, size, dpi); 4352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 436b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk native int rsnFontCreateFromAssetStream(int con, String name, float size, int dpi, int assetStream); 437b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk synchronized int nFontCreateFromAssetStream(String name, float size, int dpi, int assetStream) { 438d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 439b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return rsnFontCreateFromAssetStream(mContext, name, size, dpi, assetStream); 440b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 441b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk native int rsnFontCreateFromAsset(int con, AssetManager mgr, String path, float size, int dpi); 442b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk synchronized int nFontCreateFromAsset(AssetManager mgr, String path, float size, int dpi) { 443d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 444b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return rsnFontCreateFromAsset(mContext, mgr, path, size, dpi); 445b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 4462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 4472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 4482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptBindAllocation(int con, int script, int alloc, int slot); 4492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptBindAllocation(int script, int alloc, int slot) { 450d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptBindAllocation(mContext, script, alloc, slot); 4522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetTimeZone(int con, int script, byte[] timeZone); 4542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetTimeZone(int script, byte[] timeZone) { 455d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetTimeZone(mContext, script, timeZone); 4572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptInvoke(int con, int id, int slot); 4592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptInvoke(int id, int slot) { 460d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptInvoke(mContext, id, slot); 4622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4636e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams native void rsnScriptForEach(int con, int id, int slot, int ain, int aout, byte[] params); 4646e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams native void rsnScriptForEach(int con, int id, int slot, int ain, int aout); 4656e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams synchronized void nScriptForEach(int id, int slot, int ain, int aout, byte[] params) { 4666e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams validate(); 4676e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams if (params == null) { 4686e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsnScriptForEach(mContext, id, slot, ain, aout); 4696e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } else { 4706e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsnScriptForEach(mContext, id, slot, ain, aout, params); 4716e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 4726e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 4732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptInvokeV(int con, int id, int slot, byte[] params); 4742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptInvokeV(int id, int slot, byte[] params) { 475d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptInvokeV(mContext, id, slot, params); 4772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarI(int con, int id, int slot, int val); 4792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarI(int id, int slot, int val) { 480d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarI(mContext, id, slot, val); 4822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 483031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines native void rsnScriptSetVarJ(int con, int id, int slot, long val); 484031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines synchronized void nScriptSetVarJ(int id, int slot, long val) { 485d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 486031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsnScriptSetVarJ(mContext, id, slot, val); 487031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines } 4882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarF(int con, int id, int slot, float val); 4892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarF(int id, int slot, float val) { 490d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarF(mContext, id, slot, val); 4922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 493ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines native void rsnScriptSetVarD(int con, int id, int slot, double val); 494ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines synchronized void nScriptSetVarD(int id, int slot, double val) { 495d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 496ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsnScriptSetVarD(mContext, id, slot, val); 497ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines } 4982e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarV(int con, int id, int slot, byte[] val); 4992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarV(int id, int slot, byte[] val) { 500d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarV(mContext, id, slot, val); 5022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5036f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams native void rsnScriptSetVarObj(int con, int id, int slot, int val); 5046f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams synchronized void nScriptSetVarObj(int id, int slot, int val) { 505d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5066f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsnScriptSetVarObj(mContext, id, slot, val); 5076f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams } 5082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 509e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams native int rsnScriptCCreate(int con, String resName, String cacheDir, 510e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams byte[] script, int length); 511e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams synchronized int nScriptCCreate(String resName, String cacheDir, byte[] script, int length) { 512d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 513e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams return rsnScriptCCreate(mContext, resName, cacheDir, script, length); 5142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 516a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk native int rsnSamplerCreate(int con, int magFilter, int minFilter, 517a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk int wrapS, int wrapT, int wrapR, float aniso); 518a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk synchronized int nSamplerCreate(int magFilter, int minFilter, 519a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk int wrapS, int wrapT, int wrapR, float aniso) { 520d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 521a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk return rsnSamplerCreate(mContext, magFilter, minFilter, wrapS, wrapT, wrapR, aniso); 5222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 524331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams native int rsnProgramStoreCreate(int con, boolean r, boolean g, boolean b, boolean a, 525331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams boolean depthMask, boolean dither, 526331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams int srcMode, int dstMode, int depthFunc); 527331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams synchronized int nProgramStoreCreate(boolean r, boolean g, boolean b, boolean a, 528331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams boolean depthMask, boolean dither, 529331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams int srcMode, int dstMode, int depthFunc) { 530d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 531bd184c55850997a5c5e285357998dadbe95b7b5dJason Sams return rsnProgramStoreCreate(mContext, r, g, b, a, depthMask, dither, srcMode, 532bd184c55850997a5c5e285357998dadbe95b7b5dJason Sams dstMode, depthFunc); 5332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 53594aaed38467c71a6c804f0e18b41346a4013c25bJason Sams native int rsnProgramRasterCreate(int con, boolean pointSprite, int cullMode); 53694aaed38467c71a6c804f0e18b41346a4013c25bJason Sams synchronized int nProgramRasterCreate(boolean pointSprite, int cullMode) { 537d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 53894aaed38467c71a6c804f0e18b41346a4013c25bJason Sams return rsnProgramRasterCreate(mContext, pointSprite, cullMode); 5392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 5412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindConstants(int con, int pv, int slot, int mID); 5422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindConstants(int pv, int slot, int mID) { 543d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindConstants(mContext, pv, slot, mID); 5452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindTexture(int con, int vpf, int slot, int a); 5472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindTexture(int vpf, int slot, int a) { 548d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindTexture(mContext, vpf, slot, a); 5502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindSampler(int con, int vpf, int slot, int s); 5522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindSampler(int vpf, int slot, int s) { 553d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindSampler(mContext, vpf, slot, s); 5552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 556b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk native int rsnProgramFragmentCreate(int con, String shader, int[] params); 557b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk synchronized int nProgramFragmentCreate(String shader, int[] params) { 558d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 559b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk return rsnProgramFragmentCreate(mContext, shader, params); 5602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 561b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk native int rsnProgramVertexCreate(int con, String shader, int[] params); 562b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk synchronized int nProgramVertexCreate(String shader, int[] params) { 563d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 564b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk return rsnProgramVertexCreate(mContext, shader, params); 5652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 56725999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk native int rsnMeshCreate(int con, int[] vtx, int[] idx, int[] prim); 56825999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk synchronized int nMeshCreate(int[] vtx, int[] idx, int[] prim) { 569d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 57025999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk return rsnMeshCreate(mContext, vtx, idx, prim); 5719d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk } 5722e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnMeshGetVertexBufferCount(int con, int id); 5732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nMeshGetVertexBufferCount(int id) { 574d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnMeshGetVertexBufferCount(mContext, id); 5762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnMeshGetIndexCount(int con, int id); 5782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nMeshGetIndexCount(int id) { 579d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnMeshGetIndexCount(mContext, id); 5812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnMeshGetVertices(int con, int id, int[] vtxIds, int vtxIdCount); 5832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nMeshGetVertices(int id, int[] vtxIds, int vtxIdCount) { 584d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnMeshGetVertices(mContext, id, vtxIds, vtxIdCount); 5862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnMeshGetIndices(int con, int id, int[] idxIds, int[] primitives, int vtxIdCount); 5882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nMeshGetIndices(int id, int[] idxIds, int[] primitives, int vtxIdCount) { 589d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnMeshGetIndices(mContext, id, idxIds, primitives, vtxIdCount); 5912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 593f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams native int rsnPathCreate(int con, int prim, boolean isStatic, int vtx, int loop, float q); 594f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams synchronized int nPathCreate(int prim, boolean isStatic, int vtx, int loop, float q) { 595f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams validate(); 596f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams return rsnPathCreate(mContext, prim, isStatic, vtx, loop, q); 597f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams } 59860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 599bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int mDev; 600bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int mContext; 601650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"FieldCanBeLocal"}) 602bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams MessageThread mMessageThread; 60360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 6048cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U8; 6058cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I8; 6068cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U16; 6078cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I16; 6088cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U32; 6098cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I32; 61052d836332f6aae74ed97fda1b53681f36710af64Stephen Hines Element mElement_U64; 611ef1dac28d3bf98bd61cd9874fb3ccab42105e9b6Stephen Hines Element mElement_I64; 6128cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_F32; 61302f41705199336f808ece50d81585450e7f8f61fStephen Hines Element mElement_F64; 614f110d4b787b91dabe968a812e76e5c1f8d953487Jason Sams Element mElement_BOOLEAN; 6158cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams 6168cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_ELEMENT; 6178cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_TYPE; 6188cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_ALLOCATION; 6198cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_SAMPLER; 6208cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_SCRIPT; 6218cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_MESH; 6228cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_FRAGMENT; 6238cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_VERTEX; 6248cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_RASTER; 6258cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_STORE; 626a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 6273c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_A_8; 6283c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGB_565; 6293c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGB_888; 6303c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_5551; 6313c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_4444; 6323c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_8888; 6333c0dfbab807a459622aeade4940daddf482dec66Jason Sams 6348cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_2; 6358cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_3; 6368cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_4; 637836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 638836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_DOUBLE_2; 639836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_DOUBLE_3; 640836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_DOUBLE_4; 641836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 642836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UCHAR_2; 643836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UCHAR_3; 6448cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_UCHAR_4; 6457d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 646836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_CHAR_2; 647836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_CHAR_3; 648836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_CHAR_4; 649836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 650836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_USHORT_2; 651836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_USHORT_3; 652836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_USHORT_4; 653836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 654836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_SHORT_2; 655836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_SHORT_3; 656836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_SHORT_4; 657836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 658836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UINT_2; 659836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UINT_3; 660836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UINT_4; 661836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 662836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_INT_2; 663836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_INT_3; 664836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_INT_4; 665836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 666836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_ULONG_2; 667836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_ULONG_3; 668836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_ULONG_4; 669836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 670836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_LONG_2; 671836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_LONG_3; 672836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_LONG_4; 673836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 6741d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_4X4; 6751d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_3X3; 6761d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_2X2; 6771d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams 6784d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_NEAREST; 6794d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_LINEAR; 6804d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR; 6814d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_NEAREST; 6824d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_LINEAR; 6834d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_LINEAR_MIP_LINEAR; 6844d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 685d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_NONE_DEPTH_TEST; 686d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH; 687d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_TEST; 688d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH; 689d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 690d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_BACK; 691d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_FRONT; 692d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_NONE; 69332e09b5891da0174f161d99e2d3ebe67d6efa39cAlex Sakhartchouk 69460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 69543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich // 69660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 69727676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 69827676fe24be7444a174c15df476e49adc5335d03Jason Sams * Base class application should derive from for handling RS messages 6998cecbb5293f73e3f63f2601dda68016762c58a0cStephen Hines * coming from their scripts. When a script calls sendToClient the data 70027676fe24be7444a174c15df476e49adc5335d03Jason Sams * fields will be filled in and then the run method called by a message 70127676fe24be7444a174c15df476e49adc5335d03Jason Sams * handling thread. This will occur some time after sendToClient completes 70227676fe24be7444a174c15df476e49adc5335d03Jason Sams * in the script. 70327676fe24be7444a174c15df476e49adc5335d03Jason Sams * 70427676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 705bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public static class RSMessageHandler implements Runnable { 706516c31911578db8ce53529483c3ded918ac7dc6bJason Sams protected int[] mData; 707516c31911578db8ce53529483c3ded918ac7dc6bJason Sams protected int mID; 7081c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected int mLength; 709516c31911578db8ce53529483c3ded918ac7dc6bJason Sams public void run() { 710516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 711516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 71227676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 71327676fe24be7444a174c15df476e49adc5335d03Jason Sams * If an application is expecting messages it should set this field to an 71427676fe24be7444a174c15df476e49adc5335d03Jason Sams * instance of RSMessage. This instance will receive all the user messages 71527676fe24be7444a174c15df476e49adc5335d03Jason Sams * sent from sendToClient by scripts from this context. 71627676fe24be7444a174c15df476e49adc5335d03Jason Sams * 71727676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 718bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams RSMessageHandler mMessageCallback = null; 719bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 720bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setMessageHandler(RSMessageHandler msg) { 721bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mMessageCallback = msg; 722bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 723bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public RSMessageHandler getMessageHandler() { 724bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams return mMessageCallback; 725bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 726516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 72727676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 72827676fe24be7444a174c15df476e49adc5335d03Jason Sams * Runtime error base class. An application should derive from this class 72927676fe24be7444a174c15df476e49adc5335d03Jason Sams * if it wishes to install an error handler. When errors occur at runtime 73027676fe24be7444a174c15df476e49adc5335d03Jason Sams * the fields in this class will be filled and the run method called. 73127676fe24be7444a174c15df476e49adc5335d03Jason Sams * 73227676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 733bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public static class RSErrorHandler implements Runnable { 7341c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected String mErrorMessage; 7351c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected int mErrorNum; 7361c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams public void run() { 7371c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 7381c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 73927676fe24be7444a174c15df476e49adc5335d03Jason Sams 74027676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 74127676fe24be7444a174c15df476e49adc5335d03Jason Sams * Application Error handler. All runtime errors will be dispatched to the 74227676fe24be7444a174c15df476e49adc5335d03Jason Sams * instance of RSAsyncError set here. If this field is null a 74327676fe24be7444a174c15df476e49adc5335d03Jason Sams * RSRuntimeException will instead be thrown with details about the error. 74427676fe24be7444a174c15df476e49adc5335d03Jason Sams * This will cause program termaination. 74527676fe24be7444a174c15df476e49adc5335d03Jason Sams * 74627676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 747bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams RSErrorHandler mErrorCallback = null; 748bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 749bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setErrorHandler(RSErrorHandler msg) { 750bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mErrorCallback = msg; 751bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 752bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public RSErrorHandler getErrorHandler() { 753bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams return mErrorCallback; 754bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 7551c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 75627676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 75727676fe24be7444a174c15df476e49adc5335d03Jason Sams * RenderScript worker threads priority enumeration. The default value is 75827676fe24be7444a174c15df476e49adc5335d03Jason Sams * NORMAL. Applications wishing to do background processing such as 75927676fe24be7444a174c15df476e49adc5335d03Jason Sams * wallpapers should set their priority to LOW to avoid starving forground 76027676fe24be7444a174c15df476e49adc5335d03Jason Sams * processes. 76127676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 7627d787b4722eaeb79cab42c36060336e092b77b5fJason Sams public enum Priority { 763260c77a4f741c3db76057cc4ea2ee54fe335ecf9Glenn Kasten LOW (Process.THREAD_PRIORITY_BACKGROUND + (5 * Process.THREAD_PRIORITY_LESS_FAVORABLE)), 764260c77a4f741c3db76057cc4ea2ee54fe335ecf9Glenn Kasten NORMAL (Process.THREAD_PRIORITY_DISPLAY); 7657d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 7667d787b4722eaeb79cab42c36060336e092b77b5fJason Sams int mID; 7677d787b4722eaeb79cab42c36060336e092b77b5fJason Sams Priority(int id) { 7687d787b4722eaeb79cab42c36060336e092b77b5fJason Sams mID = id; 7697d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 7707d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 7717d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 772771bebb94054d06f97284379c93a2620613513c3Jason Sams void validate() { 773771bebb94054d06f97284379c93a2620613513c3Jason Sams if (mContext == 0) { 774c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSInvalidStateException("Calling RS with no Context active."); 775771bebb94054d06f97284379c93a2620613513c3Jason Sams } 776771bebb94054d06f97284379c93a2620613513c3Jason Sams } 777771bebb94054d06f97284379c93a2620613513c3Jason Sams 77827676fe24be7444a174c15df476e49adc5335d03Jason Sams 77927676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 78027676fe24be7444a174c15df476e49adc5335d03Jason Sams * Change the priority of the worker threads for this context. 78127676fe24be7444a174c15df476e49adc5335d03Jason Sams * 78227676fe24be7444a174c15df476e49adc5335d03Jason Sams * @param p New priority to be set. 78327676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 784bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setPriority(Priority p) { 7855dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 7867d787b4722eaeb79cab42c36060336e092b77b5fJason Sams nContextSetPriority(p.mID); 7877d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 7887d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 789bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static class MessageThread extends Thread { 790516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RenderScript mRS; 791516c31911578db8ce53529483c3ded918ac7dc6bJason Sams boolean mRun = true; 792bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int[] mAuxData = new int[2]; 7931c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 794bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_NONE = 0; 795bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_EXCEPTION = 1; 796bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_RESIZE = 2; 797bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_ERROR = 3; 798bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_USER = 4; 799516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 800bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_ERROR_FATAL_UNKNOWN = 0x1000; 801add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams 802516c31911578db8ce53529483c3ded918ac7dc6bJason Sams MessageThread(RenderScript rs) { 803516c31911578db8ce53529483c3ded918ac7dc6bJason Sams super("RSMessageThread"); 804516c31911578db8ce53529483c3ded918ac7dc6bJason Sams mRS = rs; 805516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 806516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 807516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 808516c31911578db8ce53529483c3ded918ac7dc6bJason Sams public void run() { 809516c31911578db8ce53529483c3ded918ac7dc6bJason Sams // This function is a temporary solution. The final solution will 810516c31911578db8ce53529483c3ded918ac7dc6bJason Sams // used typed allocations where the message id is the type indicator. 811516c31911578db8ce53529483c3ded918ac7dc6bJason Sams int[] rbuf = new int[16]; 8122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams mRS.nContextInitToClient(mRS.mContext); 813516c31911578db8ce53529483c3ded918ac7dc6bJason Sams while(mRun) { 8141d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams rbuf[0] = 0; 815edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData); 816bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int size = mAuxData[1]; 817bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int subID = mAuxData[0]; 8181c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 8191c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (msg == RS_MESSAGE_TO_CLIENT_USER) { 8201c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if ((size>>2) >= rbuf.length) { 8211c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams rbuf = new int[(size + 3) >> 2]; 8221c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 823edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams if (mRS.nContextGetUserMessage(mRS.mContext, rbuf) != 824edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams RS_MESSAGE_TO_CLIENT_USER) { 825edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams throw new RSDriverException("Error processing message from Renderscript."); 826edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams } 8271c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 8281c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if(mRS.mMessageCallback != null) { 8291c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mData = rbuf; 8301c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mID = subID; 8311c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mLength = size; 8321c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.run(); 8331d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams } else { 8341c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams throw new RSInvalidStateException("Received a message from the script with no message handler installed."); 835516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 836ab98bb6e8b95bef7415c1ad239be71f93322fbadStephen Hines continue; 837516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 8381c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 8391c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (msg == RS_MESSAGE_TO_CLIENT_ERROR) { 8401c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams String e = mRS.nContextGetErrorMessage(mRS.mContext); 8411c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 842add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams if (subID >= RS_ERROR_FATAL_UNKNOWN) { 843add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams throw new RSRuntimeException("Fatal error " + subID + ", details: " + e); 844add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams } 845add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams 8461c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if(mRS.mErrorCallback != null) { 8471c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.mErrorMessage = e; 8481c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.mErrorNum = subID; 8491c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.run(); 8501c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } else { 8511c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams //throw new RSRuntimeException("Received error num " + subID + ", details: " + e); 8521c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 8531c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams continue; 8541c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 8551c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 8561c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // 2: teardown. 8571c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // But we want to avoid starving other threads during 8581c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // teardown by yielding until the next line in the destructor 8591c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // can execute to set mRun = false 8601c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams try { 8611c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams sleep(1, 0); 8621c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } catch(InterruptedException e) { 863516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 864516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 8653bc47d438171dce294e816366d53bc9eca772c5bJason Sams Log.d(LOG_TAG, "MessageThread exiting."); 866516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 867516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 868516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 8696b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao RenderScript(Context ctx) { 8706b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao mApplicationContext = ctx.getApplicationContext(); 87160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 87260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 87327676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 8746b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * Gets the application context associated with the RenderScript context. 87527676fe24be7444a174c15df476e49adc5335d03Jason Sams * 8766b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * @return The application context. 8776b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao */ 8786b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao public final Context getApplicationContext() { 8796b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao return mApplicationContext; 8806b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao } 8816b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao 8824382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines static int getTargetSdkVersion(Context ctx) { 88385397d8dcbcbe098c805b90fe7779206125e2399Jason Sams return ctx.getApplicationInfo().targetSdkVersion; 8844382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines } 8854382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines 8866b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao /** 8876b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * Create a basic RenderScript context. 88827676fe24be7444a174c15df476e49adc5335d03Jason Sams * 8896b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * @param ctx The context. 89027676fe24be7444a174c15df476e49adc5335d03Jason Sams * @return RenderScript 89127676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 8926b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao public static RenderScript create(Context ctx) { 8936b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao RenderScript rs = new RenderScript(ctx); 894704ff64b099406bb328898a7443921f22dbffd6dJason Sams 8954382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines int sdkVersion = getTargetSdkVersion(ctx); 8964382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines 897704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mDev = rs.nDeviceCreate(); 8984382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines rs.mContext = rs.nContextCreate(rs.mDev, 0, sdkVersion); 8992698536b3ff60bfee85e47e4a8d4b25fdfdf4db5Jason Sams if (rs.mContext == 0) { 9002698536b3ff60bfee85e47e4a8d4b25fdfdf4db5Jason Sams throw new RSDriverException("Failed to create RS context."); 9012698536b3ff60bfee85e47e4a8d4b25fdfdf4db5Jason Sams } 902704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mMessageThread = new MessageThread(rs); 903704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mMessageThread.start(); 904704ff64b099406bb328898a7443921f22dbffd6dJason Sams return rs; 905efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 906efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 90727676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 90827676fe24be7444a174c15df476e49adc5335d03Jason Sams * Print the currently available debugging information about the state of 90927676fe24be7444a174c15df476e49adc5335d03Jason Sams * the RS context to the log. 91027676fe24be7444a174c15df476e49adc5335d03Jason Sams * 91127676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 912bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void contextDump() { 9135dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 914bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams nContextDump(0); 915715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams } 916715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams 91727676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 91827676fe24be7444a174c15df476e49adc5335d03Jason Sams * Wait for any commands in the fifo between the java bindings and native to 91927676fe24be7444a174c15df476e49adc5335d03Jason Sams * be processed. 92027676fe24be7444a174c15df476e49adc5335d03Jason Sams * 92127676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 92296ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams public void finish() { 92396ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams nContextFinish(); 92496ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams } 92596ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 92627676fe24be7444a174c15df476e49adc5335d03Jason Sams /** 92727676fe24be7444a174c15df476e49adc5335d03Jason Sams * Destroy this renderscript context. Once this function is called its no 92827676fe24be7444a174c15df476e49adc5335d03Jason Sams * longer legal to use this or any objects created by this context. 92927676fe24be7444a174c15df476e49adc5335d03Jason Sams * 93027676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 931f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams public void destroy() { 9325dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 9332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams nContextDeinitToClient(mContext); 934516c31911578db8ce53529483c3ded918ac7dc6bJason Sams mMessageThread.mRun = false; 935a8bf9429b29743b3489817feb21bde2416acc465Jason Sams try { 936a8bf9429b29743b3489817feb21bde2416acc465Jason Sams mMessageThread.join(); 937a8bf9429b29743b3489817feb21bde2416acc465Jason Sams } catch(InterruptedException e) { 938a8bf9429b29743b3489817feb21bde2416acc465Jason Sams } 939516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 9402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams nContextDestroy(); 941f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams mContext = 0; 942f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams 943f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams nDeviceDestroy(mDev); 944f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams mDev = 0; 945f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams } 94602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 947a9e7a05b84470257637c97d65f6562aa832c66efJason Sams boolean isAlive() { 948a9e7a05b84470257637c97d65f6562aa832c66efJason Sams return mContext != 0; 949a9e7a05b84470257637c97d65f6562aa832c66efJason Sams } 950a9e7a05b84470257637c97d65f6562aa832c66efJason Sams 951bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int safeID(BaseObj o) { 9526b9dec00afec359f091ed353f371f08ff150278aJason Sams if(o != null) { 95306d69de78845659e6904ae4964e606a7f1a6a4a8Jason Sams return o.getID(); 954d8e4161f114331343b897cbacea927e7e60e7b17Jason Sams } 9556b9dec00afec359f091ed353f371f08ff150278aJason Sams return 0; 95660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 95760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich} 958