RenderScript.java revision add26dca07cc5a5c935bc68f57bee2c1cd96a79e
160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/* 2be74bdd2349095f203ae0fddcc4816bfbd56bc5dStephen Hines * Copyright (C) 2008-2012 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 19a6f338ca5f0c8359d1952167858851dd025e47e2Jason Samsimport java.io.File; 20fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Samsimport java.lang.reflect.Field; 2136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 226b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liaoimport android.content.Context; 234382467a80dd12c6362d57edca7f2367f7ae877cStephen Hinesimport android.content.pm.ApplicationInfo; 244382467a80dd12c6362d57edca7f2367f7ae877cStephen Hinesimport android.content.pm.PackageManager; 25b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchoukimport android.content.res.AssetManager; 26b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.graphics.Bitmap; 27650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guyimport android.graphics.BitmapFactory; 28faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Samsimport android.graphics.SurfaceTexture; 29260c77a4f741c3db76057cc4ea2ee54fe335ecf9Glenn Kastenimport android.os.Process; 3036e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Log; 3136e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.view.Surface; 3243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 3360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 344382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines 359c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 363aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * Renderscript base master class. An instance of this class creates native 3727676fe24be7444a174c15df476e49adc5335d03Jason Sams * worker threads for processing commands from this object. This base class 3827676fe24be7444a174c15df476e49adc5335d03Jason Sams * does not provide any extended capabilities beyond simple data processing. 3927676fe24be7444a174c15df476e49adc5335d03Jason Sams * For extended capabilities use derived classes such as RenderScriptGL. 4027676fe24be7444a174c15df476e49adc5335d03Jason Sams * 413aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <div class="special reference"> 423aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <h3>Developer Guides</h3> 433aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <p>For more information about creating an application that uses Renderscript, read the 44b47fa1699a02a96d5da8e175966e9584c6bd5565Scott Main * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p> 453aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * </div> 46e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams **/ 4760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichpublic class RenderScript { 483bc47d438171dce294e816366d53bc9eca772c5bJason Sams static final String LOG_TAG = "RenderScript_jni"; 49bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final boolean DEBUG = false; 50650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"UnusedDeclaration", "deprecation"}) 5143a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato static final boolean LOG_ENABLED = false; 5260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 536b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao private Context mApplicationContext; 5460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 556b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao /* 5660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * We use a class initializer to allow the native code to cache some 5760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * field offsets. 5860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich */ 59650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"}) 60bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static boolean sInitialized; 61bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams native static void _nInit(); 6260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 63dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams 6460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich static { 6560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = false; 6660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich try { 67e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams System.loadLibrary("rs_jni"); 6860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich _nInit(); 6960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = true; 7060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } catch (UnsatisfiedLinkError e) { 71fa445b9353972735d8d65e8a936786b1afe9886dJason Sams Log.e(LOG_TAG, "Error loading RS jni library: " + e); 72fa445b9353972735d8d65e8a936786b1afe9886dJason Sams throw new RSRuntimeException("Error loading RS jni library: " + e); 7360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 7460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 7560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // Non-threadsafe functions. 7736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nDeviceCreate(); 7836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nDeviceDestroy(int dev); 79ebfb436a49673693b98469683451bd9ede797557Jason Sams native void nDeviceSetConfig(int dev, int param, int value); 80edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams native int nContextGetUserMessage(int con, int[] data); 811c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams native String nContextGetErrorMessage(int con); 82edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams native int nContextPeekMessage(int con, int[] subID); 832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void nContextInitToClient(int con); 842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void nContextDeinitToClient(int con); 852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 86a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams /** 87a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams * Name of the file that holds the object cache. 88a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams */ 89a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams private static final String CACHE_PATH = "com.android.renderscript.cache"; 901a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams static String mCachePath; 91a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams 92a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams /** 93a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams * Sets the directory to use as a persistent storage for the 94a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams * renderscript object file cache. 95a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams * 96a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams * @hide 97a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams * @param cacheDir A directory the current process can write to 98a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams */ 99a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams public static void setupDiskCache(File cacheDir) { 100a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams File f = new File(cacheDir, CACHE_PATH); 101a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams mCachePath = f.getAbsolutePath(); 102a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams f.mkdirs(); 103a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams } 104a6f338ca5f0c8359d1952167858851dd025e47e2Jason Sams 105add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams public enum ContextType { 106add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams NORMAL (0), 107add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams DEBUG (1), 108add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams PROFILE (2); 109add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams 110add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams int mID; 111add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams ContextType(int id) { 112add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams mID = id; 113add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams } 114add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams } 1152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 1162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // Methods below are wrapped to protect the non-threadsafe 1172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams // lockless fifo. 1184382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines native int rsnContextCreateGL(int dev, int ver, int sdkVer, 11911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 12011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 12111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 12211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 1232c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int samplesMin, int samplesPref, float samplesQ, int dpi); 1244382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines synchronized int nContextCreateGL(int dev, int ver, int sdkVer, 12511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int colorMin, int colorPref, 12611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int alphaMin, int alphaPref, 12711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int depthMin, int depthPref, 12811c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams int stencilMin, int stencilPref, 1292c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int samplesMin, int samplesPref, float samplesQ, int dpi) { 1304382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines return rsnContextCreateGL(dev, ver, sdkVer, colorMin, colorPref, 13111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams alphaMin, alphaPref, depthMin, depthPref, 13211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams stencilMin, stencilPref, 1332c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk samplesMin, samplesPref, samplesQ, dpi); 1342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 135add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams native int rsnContextCreate(int dev, int ver, int sdkVer, int contextType); 136add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams synchronized int nContextCreate(int dev, int ver, int sdkVer, int contextType) { 137add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams return rsnContextCreate(dev, ver, sdkVer, contextType); 1382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextDestroy(int con); 1402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextDestroy() { 141d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextDestroy(mContext); 1432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextSetSurface(int con, int w, int h, Surface sur); 1452e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextSetSurface(int w, int h, Surface sur) { 146d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextSetSurface(mContext, w, h, sur); 1482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 149faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams native void rsnContextSetSurfaceTexture(int con, int w, int h, SurfaceTexture sur); 150faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams synchronized void nContextSetSurfaceTexture(int w, int h, SurfaceTexture sur) { 151faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams validate(); 152faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams rsnContextSetSurfaceTexture(mContext, w, h, sur); 153faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } 1542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextSetPriority(int con, int p); 1552e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextSetPriority(int p) { 156d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextSetPriority(mContext, p); 1582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextDump(int con, int bits); 1602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextDump(int bits) { 161d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1622e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextDump(mContext, bits); 1632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextFinish(int con); 1652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextFinish() { 166d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextFinish(mContext); 1682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 170455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams native void rsnContextSendMessage(int con, int id, int[] data); 171455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams synchronized void nContextSendMessage(int id, int[] data) { 172455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams validate(); 173455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams rsnContextSendMessage(mContext, id, data); 174455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams } 175455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams 1762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindRootScript(int con, int script); 1772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindRootScript(int script) { 178d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindRootScript(mContext, script); 1802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindSampler(int con, int sampler, int slot); 1822e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindSampler(int sampler, int slot) { 183d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindSampler(mContext, sampler, slot); 1852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramStore(int con, int pfs); 1872e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramStore(int pfs) { 188d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramStore(mContext, pfs); 1902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1912e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramFragment(int con, int pf); 1922e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramFragment(int pf) { 193d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramFragment(mContext, pf); 1952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 1962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramVertex(int con, int pv); 1972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramVertex(int pv) { 198d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 1992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramVertex(mContext, pv); 2002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextBindProgramRaster(int con, int pr); 2022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextBindProgramRaster(int pr) { 203d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextBindProgramRaster(mContext, pr); 2052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextPause(int con); 2072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextPause() { 208d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextPause(mContext); 2102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnContextResume(int con); 2122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nContextResume() { 213d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnContextResume(mContext); 2152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 2172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAssignName(int con, int obj, byte[] name); 2182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAssignName(int obj, byte[] name) { 219d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2202e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAssignName(mContext, obj, name); 2212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native String rsnGetName(int con, int obj); 2232e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized String nGetName(int obj) { 224d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2252e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnGetName(mContext, obj); 2262e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2272e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnObjDestroy(int con, int id); 2282e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nObjDestroy(int id) { 229d1ac98149737299513da1357e36f68cbb6d74425Jason Sams // There is a race condition here. The calling code may be run 230d1ac98149737299513da1357e36f68cbb6d74425Jason Sams // by the gc while teardown is occuring. This protects againts 231d1ac98149737299513da1357e36f68cbb6d74425Jason Sams // deleting dead objects. 232d1ac98149737299513da1357e36f68cbb6d74425Jason Sams if (mContext != 0) { 233d1ac98149737299513da1357e36f68cbb6d74425Jason Sams rsnObjDestroy(mContext, id); 234d1ac98149737299513da1357e36f68cbb6d74425Jason Sams } 2352e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 2372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnElementCreate(int con, int type, int kind, boolean norm, int vecSize); 2382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nElementCreate(int type, int kind, boolean norm, int vecSize) { 239d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2402e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnElementCreate(mContext, type, kind, norm, vecSize); 2412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 24270d4e5024298f71edb3b04867e05568f5495b4ceJason Sams native int rsnElementCreate2(int con, int[] elements, String[] names, int[] arraySizes); 24370d4e5024298f71edb3b04867e05568f5495b4ceJason Sams synchronized int nElementCreate2(int[] elements, String[] names, int[] arraySizes) { 244d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 24570d4e5024298f71edb3b04867e05568f5495b4ceJason Sams return rsnElementCreate2(mContext, elements, names, arraySizes); 2462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnElementGetNativeData(int con, int id, int[] elementData); 2482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nElementGetNativeData(int id, int[] elementData) { 249d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnElementGetNativeData(mContext, id, elementData); 2512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2527d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk native void rsnElementGetSubElements(int con, int id, 2537d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk int[] IDs, String[] names, int[] arraySizes); 2547d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk synchronized void nElementGetSubElements(int id, int[] IDs, String[] names, int[] arraySizes) { 255d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2567d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk rsnElementGetSubElements(mContext, id, IDs, names, arraySizes); 2572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 259b109cc78616abee7291eb42094cd156b5db3355dJason Sams native int rsnTypeCreate(int con, int eid, int x, int y, int z, boolean mips, boolean faces, int yuv); 260b109cc78616abee7291eb42094cd156b5db3355dJason Sams synchronized int nTypeCreate(int eid, int x, int y, int z, boolean mips, boolean faces, int yuv) { 261d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 262b109cc78616abee7291eb42094cd156b5db3355dJason Sams return rsnTypeCreate(mContext, eid, x, y, z, mips, faces, yuv); 2632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnTypeGetNativeData(int con, int id, int[] typeData); 2652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nTypeGetNativeData(int id, int[] typeData) { 266d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnTypeGetNativeData(mContext, id, typeData); 2682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 270857d0c7017da763a420e825fffa2f260eb982c97Jason Sams native int rsnAllocationCreateTyped(int con, int type, int mip, int usage, int pointer); 271857d0c7017da763a420e825fffa2f260eb982c97Jason Sams synchronized int nAllocationCreateTyped(int type, int mip, int usage, int pointer) { 272d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 273857d0c7017da763a420e825fffa2f260eb982c97Jason Sams return rsnAllocationCreateTyped(mContext, type, mip, usage, pointer); 2742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2755476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCreateFromBitmap(int con, int type, int mip, Bitmap bmp, int usage); 2765476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCreateFromBitmap(int type, int mip, Bitmap bmp, int usage) { 277d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2785476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCreateFromBitmap(mContext, type, mip, bmp, usage); 27926ae3904e8050eae655722caf93ee5d3f0ab195aAlex Sakhartchouk } 280a314551d69098537337c970da615a8f8af58e1f1Tim Murray 281a314551d69098537337c970da615a8f8af58e1f1Tim Murray native int rsnAllocationCreateBitmapBackedAllocation(int con, int type, int mip, Bitmap bmp, int usage); 282a314551d69098537337c970da615a8f8af58e1f1Tim Murray synchronized int nAllocationCreateBitmapBackedAllocation(int type, int mip, Bitmap bmp, int usage) { 283a314551d69098537337c970da615a8f8af58e1f1Tim Murray validate(); 284a314551d69098537337c970da615a8f8af58e1f1Tim Murray return rsnAllocationCreateBitmapBackedAllocation(mContext, type, mip, bmp, usage); 285a314551d69098537337c970da615a8f8af58e1f1Tim Murray } 286a314551d69098537337c970da615a8f8af58e1f1Tim Murray 287a314551d69098537337c970da615a8f8af58e1f1Tim Murray 2885476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCubeCreateFromBitmap(int con, int type, int mip, Bitmap bmp, int usage); 2895476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCubeCreateFromBitmap(int type, int mip, Bitmap bmp, int usage) { 290d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2915476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCubeCreateFromBitmap(mContext, type, mip, bmp, usage); 29267f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk } 2932e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnAllocationCreateBitmapRef(int con, int type, Bitmap bmp); 2942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nAllocationCreateBitmapRef(int type, Bitmap bmp) { 295d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 2962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnAllocationCreateBitmapRef(mContext, type, bmp); 2972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 2985476b450e50939940dcf3f15c92335cee2fc572dJason Sams native int rsnAllocationCreateFromAssetStream(int con, int mips, int assetStream, int usage); 2995476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized int nAllocationCreateFromAssetStream(int mips, int assetStream, int usage) { 300d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3015476b450e50939940dcf3f15c92335cee2fc572dJason Sams return rsnAllocationCreateFromAssetStream(mContext, mips, assetStream, usage); 3025476b450e50939940dcf3f15c92335cee2fc572dJason Sams } 3035476b450e50939940dcf3f15c92335cee2fc572dJason Sams 3044ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams native void rsnAllocationCopyToBitmap(int con, int alloc, Bitmap bmp); 3054ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams synchronized void nAllocationCopyToBitmap(int alloc, Bitmap bmp) { 306d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3074ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsnAllocationCopyToBitmap(mContext, alloc, bmp); 3084ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams } 3094ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 3104ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams 3115476b450e50939940dcf3f15c92335cee2fc572dJason Sams native void rsnAllocationSyncAll(int con, int alloc, int src); 3125476b450e50939940dcf3f15c92335cee2fc572dJason Sams synchronized void nAllocationSyncAll(int alloc, int src) { 313d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3145476b450e50939940dcf3f15c92335cee2fc572dJason Sams rsnAllocationSyncAll(mContext, alloc, src); 3155476b450e50939940dcf3f15c92335cee2fc572dJason Sams } 31672226e0543461133b9e177a3e78ae50b0c65e797Jason Sams native Surface rsnAllocationGetSurface(int con, int alloc); 31772226e0543461133b9e177a3e78ae50b0c65e797Jason Sams synchronized Surface nAllocationGetSurface(int alloc) { 318615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams validate(); 31972226e0543461133b9e177a3e78ae50b0c65e797Jason Sams return rsnAllocationGetSurface(mContext, alloc); 320fe1d5ffd1b6c4977a9f301997d2ad90e5b049a3bJason Sams } 321fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams native void rsnAllocationSetSurface(int con, int alloc, Surface sur); 322fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams synchronized void nAllocationSetSurface(int alloc, Surface sur) { 323163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams validate(); 324fb9aa9f3ef11878caaf6fcfb5ea49ffb9f7abf33Jason Sams rsnAllocationSetSurface(mContext, alloc, sur); 325163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams } 326163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams native void rsnAllocationIoSend(int con, int alloc); 327163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams synchronized void nAllocationIoSend(int alloc) { 328163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams validate(); 329163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams rsnAllocationIoSend(mContext, alloc); 330163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams } 331163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams native void rsnAllocationIoReceive(int con, int alloc); 332163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams synchronized void nAllocationIoReceive(int alloc) { 333163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams validate(); 334163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams rsnAllocationIoReceive(mContext, alloc); 335163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams } 336163766cbe798baf8e86eb8201bc6c3def931d59aJason Sams 337615e7cee03d1a53072b0369fa9f247811ac56845Jason Sams 338f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams native void rsnAllocationGenerateMipmaps(int con, int alloc); 339f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams synchronized void nAllocationGenerateMipmaps(int alloc) { 340d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 341f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams rsnAllocationGenerateMipmaps(mContext, alloc); 342f7086090cfc8d97b5bd3b4d7801a27af11f7c207Jason Sams } 3434ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams native void rsnAllocationCopyFromBitmap(int con, int alloc, Bitmap bmp); 3444ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams synchronized void nAllocationCopyFromBitmap(int alloc, Bitmap bmp) { 345d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 3464ef6650bd05a39a09958ea1db92f120ea4949cb1Jason Sams rsnAllocationCopyFromBitmap(mContext, alloc, bmp); 3472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 3492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 35049a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData1D(int con, int id, int off, int mip, int count, int[] d, int sizeBytes); 35149a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData1D(int id, int off, int mip, int count, int[] d, int sizeBytes) { 352d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 35349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes); 3542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 35549a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData1D(int con, int id, int off, int mip, int count, short[] d, int sizeBytes); 35649a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData1D(int id, int off, int mip, int count, short[] d, int sizeBytes) { 357d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 35849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes); 3592e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 36049a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData1D(int con, int id, int off, int mip, int count, byte[] d, int sizeBytes); 36149a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData1D(int id, int off, int mip, int count, byte[] d, int sizeBytes) { 362d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 36349a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes); 3642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 36549a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData1D(int con, int id, int off, int mip, int count, float[] d, int sizeBytes); 36649a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData1D(int id, int off, int mip, int count, float[] d, int sizeBytes) { 367d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 36849a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes); 36949bdaf0293408159df18a1d8540360f9623c40f7Jason Sams } 37049a05d7b82956009f03acbb92a064eed054eb031Jason Sams 37149a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationElementData1D(int con, int id, int xoff, int mip, int compIdx, byte[] d, int sizeBytes); 37249a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationElementData1D(int id, int xoff, int mip, int compIdx, byte[] d, int sizeBytes) { 373d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 37449a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationElementData1D(mContext, id, xoff, mip, compIdx, d, sizeBytes); 3752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 3762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 377304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk native void rsnAllocationData2D(int con, 378304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int dstAlloc, int dstXoff, int dstYoff, 379304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int dstMip, int dstFace, 380304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int width, int height, 381304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int srcAlloc, int srcXoff, int srcYoff, 382304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int srcMip, int srcFace); 383304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk synchronized void nAllocationData2D(int dstAlloc, int dstXoff, int dstYoff, 384304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int dstMip, int dstFace, 385304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int width, int height, 386304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int srcAlloc, int srcXoff, int srcYoff, 387304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk int srcMip, int srcFace) { 388304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk validate(); 389304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk rsnAllocationData2D(mContext, 390304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstAlloc, dstXoff, dstYoff, 391304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk dstMip, dstFace, 392304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk width, height, 393304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcAlloc, srcXoff, srcYoff, 394304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk srcMip, srcFace); 395304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk } 396304b1f5497155bcf91e7b855cfab7a675e80bf26Alex Sakhartchouk 397fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, int w, int h, byte[] d, int sizeBytes); 398fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, int w, int h, byte[] d, int sizeBytes) { 399d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 400fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes); 401fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 402fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, int w, int h, short[] d, int sizeBytes); 403fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, int w, int h, short[] d, int sizeBytes) { 404d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 405fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes); 406fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 40749a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, int w, int h, int[] d, int sizeBytes); 40849a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, int w, int h, int[] d, int sizeBytes) { 409d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 41049a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes); 4112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 41249a05d7b82956009f03acbb92a064eed054eb031Jason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, int w, int h, float[] d, int sizeBytes); 41349a05d7b82956009f03acbb92a064eed054eb031Jason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, int w, int h, float[] d, int sizeBytes) { 414d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 41549a05d7b82956009f03acbb92a064eed054eb031Jason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes); 4162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 417fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationData2D(int con, int id, int xoff, int yoff, int mip, int face, Bitmap b); 418fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationData2D(int id, int xoff, int yoff, int mip, int face, Bitmap b) { 419d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 420fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, b); 421fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 42249a05d7b82956009f03acbb92a064eed054eb031Jason Sams 423fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationRead(int con, int id, byte[] d); 424fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationRead(int id, byte[] d) { 425d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 426fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationRead(mContext, id, d); 427fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 428fa445b9353972735d8d65e8a936786b1afe9886dJason Sams native void rsnAllocationRead(int con, int id, short[] d); 429fa445b9353972735d8d65e8a936786b1afe9886dJason Sams synchronized void nAllocationRead(int id, short[] d) { 430d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 431fa445b9353972735d8d65e8a936786b1afe9886dJason Sams rsnAllocationRead(mContext, id, d); 432fa445b9353972735d8d65e8a936786b1afe9886dJason Sams } 4332e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationRead(int con, int id, int[] d); 4342e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationRead(int id, int[] d) { 435d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4362e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationRead(mContext, id, d); 4372e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4382e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnAllocationRead(int con, int id, float[] d); 4392e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nAllocationRead(int id, float[] d) { 440d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4412e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnAllocationRead(mContext, id, d); 4422e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4432e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnAllocationGetType(int con, int id); 4442e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nAllocationGetType(int id) { 445d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnAllocationGetType(mContext, id); 4472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 4495edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams native void rsnAllocationResize1D(int con, int id, int dimX); 4505edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams synchronized void nAllocationResize1D(int id, int dimX) { 451d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4525edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsnAllocationResize1D(mContext, id, dimX); 4535edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 4545edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams native void rsnAllocationResize2D(int con, int id, int dimX, int dimY); 4555edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams synchronized void nAllocationResize2D(int id, int dimX, int dimY) { 456d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4575edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams rsnAllocationResize2D(mContext, id, dimX, dimY); 4585edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams } 4595edc608a0749ed4b7074b5c1243043eb722c3c31Jason Sams 4602e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DCreateFromAssetStream(int con, int assetStream); 4612e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DCreateFromAssetStream(int assetStream) { 462d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DCreateFromAssetStream(mContext, assetStream); 4642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 465b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk native int rsnFileA3DCreateFromFile(int con, String path); 466b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk synchronized int nFileA3DCreateFromFile(String path) { 467d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 468b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return rsnFileA3DCreateFromFile(mContext, path); 469b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 470b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk native int rsnFileA3DCreateFromAsset(int con, AssetManager mgr, String path); 471b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk synchronized int nFileA3DCreateFromAsset(AssetManager mgr, String path) { 472d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 473b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return rsnFileA3DCreateFromAsset(mContext, mgr, path); 474b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 4752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DGetNumIndexEntries(int con, int fileA3D); 4762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DGetNumIndexEntries(int fileA3D) { 477d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DGetNumIndexEntries(mContext, fileA3D); 4792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4802e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnFileA3DGetIndexEntries(int con, int fileA3D, int numEntries, int[] IDs, String[] names); 4812e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nFileA3DGetIndexEntries(int fileA3D, int numEntries, int[] IDs, String[] names) { 482d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4832e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnFileA3DGetIndexEntries(mContext, fileA3D, numEntries, IDs, names); 4842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4852e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnFileA3DGetEntryByIndex(int con, int fileA3D, int index); 4862e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nFileA3DGetEntryByIndex(int fileA3D, int index) { 487d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4882e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFileA3DGetEntryByIndex(mContext, fileA3D, index); 4892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 4902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 491e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk native int rsnFontCreateFromFile(int con, String fileName, float size, int dpi); 492e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk synchronized int nFontCreateFromFile(String fileName, float size, int dpi) { 493d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 4942e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnFontCreateFromFile(mContext, fileName, size, dpi); 4952e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 496b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk native int rsnFontCreateFromAssetStream(int con, String name, float size, int dpi, int assetStream); 497b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk synchronized int nFontCreateFromAssetStream(String name, float size, int dpi, int assetStream) { 498d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 499b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return rsnFontCreateFromAssetStream(mContext, name, size, dpi, assetStream); 500b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 501b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk native int rsnFontCreateFromAsset(int con, AssetManager mgr, String path, float size, int dpi); 502b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk synchronized int nFontCreateFromAsset(AssetManager mgr, String path, float size, int dpi) { 503d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 504b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk return rsnFontCreateFromAsset(mContext, mgr, path, size, dpi); 505b0253ea6969bdd27bf574e0da7fa91aa6d09f44fAlex Sakhartchouk } 5062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 5072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 5082e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptBindAllocation(int con, int script, int alloc, int slot); 5092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptBindAllocation(int script, int alloc, int slot) { 510d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptBindAllocation(mContext, script, alloc, slot); 5122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5132e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetTimeZone(int con, int script, byte[] timeZone); 5142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetTimeZone(int script, byte[] timeZone) { 515d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetTimeZone(mContext, script, timeZone); 5172e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5182e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptInvoke(int con, int id, int slot); 5192e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptInvoke(int id, int slot) { 520d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5212e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptInvoke(mContext, id, slot); 5222e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5236e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams native void rsnScriptForEach(int con, int id, int slot, int ain, int aout, byte[] params); 5246e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams native void rsnScriptForEach(int con, int id, int slot, int ain, int aout); 525eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray native void rsnScriptForEachClipped(int con, int id, int slot, int ain, int aout, byte[] params, 526eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray int xstart, int xend, int ystart, int yend, int zstart, int zend); 527dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines native void rsnScriptForEachClipped(int con, int id, int slot, int ain, int aout, 528dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines int xstart, int xend, int ystart, int yend, int zstart, int zend); 5296e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams synchronized void nScriptForEach(int id, int slot, int ain, int aout, byte[] params) { 5306e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams validate(); 5316e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams if (params == null) { 5326e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsnScriptForEach(mContext, id, slot, ain, aout); 5336e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } else { 5346e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams rsnScriptForEach(mContext, id, slot, ain, aout, params); 5356e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 5366e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 537eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray 538eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray synchronized void nScriptForEachClipped(int id, int slot, int ain, int aout, byte[] params, 539eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray int xstart, int xend, int ystart, int yend, int zstart, int zend) { 540eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray validate(); 541dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines if (params == null) { 542dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines rsnScriptForEachClipped(mContext, id, slot, ain, aout, xstart, xend, ystart, yend, zstart, zend); 543dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines } else { 544dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines rsnScriptForEachClipped(mContext, id, slot, ain, aout, params, xstart, xend, ystart, yend, zstart, zend); 545dac6ed0b69b23ab25757085dd5ce68092516ee2fStephen Hines } 546eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 547eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray 5482e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptInvokeV(int con, int id, int slot, byte[] params); 5492e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptInvokeV(int id, int slot, byte[] params) { 550d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5512e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptInvokeV(mContext, id, slot, params); 5522e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5532e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarI(int con, int id, int slot, int val); 5542e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarI(int id, int slot, int val) { 555d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5562e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarI(mContext, id, slot, val); 5572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 558031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines native void rsnScriptSetVarJ(int con, int id, int slot, long val); 559031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines synchronized void nScriptSetVarJ(int id, int slot, long val) { 560d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 561031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines rsnScriptSetVarJ(mContext, id, slot, val); 562031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines } 5632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarF(int con, int id, int slot, float val); 5642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarF(int id, int slot, float val) { 565d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarF(mContext, id, slot, val); 5672e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 568ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines native void rsnScriptSetVarD(int con, int id, int slot, double val); 569ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines synchronized void nScriptSetVarD(int id, int slot, double val) { 570d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 571ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines rsnScriptSetVarD(mContext, id, slot, val); 572ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines } 5732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnScriptSetVarV(int con, int id, int slot, byte[] val); 5742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nScriptSetVarV(int id, int slot, byte[] val) { 575d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnScriptSetVarV(mContext, id, slot, val); 5772e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 578adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines native void rsnScriptSetVarVE(int con, int id, int slot, byte[] val, 579adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines int e, int[] dims); 580adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines synchronized void nScriptSetVarVE(int id, int slot, byte[] val, 581adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines int e, int[] dims) { 582adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines validate(); 583adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines rsnScriptSetVarVE(mContext, id, slot, val, e, dims); 584adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines } 5856f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams native void rsnScriptSetVarObj(int con, int id, int slot, int val); 5866f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams synchronized void nScriptSetVarObj(int id, int slot, int val) { 587d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 5886f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams rsnScriptSetVarObj(mContext, id, slot, val); 5896f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams } 5902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 591e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams native int rsnScriptCCreate(int con, String resName, String cacheDir, 592e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams byte[] script, int length); 593e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams synchronized int nScriptCCreate(String resName, String cacheDir, byte[] script, int length) { 594d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 595e4a06c5fc738bf219f2a495e12a637b2d0871651Jason Sams return rsnScriptCCreate(mContext, resName, cacheDir, script, length); 5962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 5972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 5986ab97682fd444586ee135912a4210417a1c8781bJason Sams native int rsnScriptIntrinsicCreate(int con, int id, int eid); 5996ab97682fd444586ee135912a4210417a1c8781bJason Sams synchronized int nScriptIntrinsicCreate(int id, int eid) { 6006ab97682fd444586ee135912a4210417a1c8781bJason Sams validate(); 6016ab97682fd444586ee135912a4210417a1c8781bJason Sams return rsnScriptIntrinsicCreate(mContext, id, eid); 6026ab97682fd444586ee135912a4210417a1c8781bJason Sams } 6036ab97682fd444586ee135912a4210417a1c8781bJason Sams 60408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams native int rsnScriptKernelIDCreate(int con, int sid, int slot, int sig); 60508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams synchronized int nScriptKernelIDCreate(int sid, int slot, int sig) { 60608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams validate(); 60708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams return rsnScriptKernelIDCreate(mContext, sid, slot, sig); 60808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 60908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 61008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams native int rsnScriptFieldIDCreate(int con, int sid, int slot); 61108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams synchronized int nScriptFieldIDCreate(int sid, int slot) { 61208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams validate(); 61308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams return rsnScriptFieldIDCreate(mContext, sid, slot); 61408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 61508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 61608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams native int rsnScriptGroupCreate(int con, int[] kernels, int[] src, int[] dstk, int[] dstf, int[] types); 61708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams synchronized int nScriptGroupCreate(int[] kernels, int[] src, int[] dstk, int[] dstf, int[] types) { 61808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams validate(); 61908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams return rsnScriptGroupCreate(mContext, kernels, src, dstk, dstf, types); 62008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 62108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 62208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams native void rsnScriptGroupSetInput(int con, int group, int kernel, int alloc); 62308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams synchronized void nScriptGroupSetInput(int group, int kernel, int alloc) { 62408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams validate(); 62508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams rsnScriptGroupSetInput(mContext, group, kernel, alloc); 62608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 62708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 62808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams native void rsnScriptGroupSetOutput(int con, int group, int kernel, int alloc); 62908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams synchronized void nScriptGroupSetOutput(int group, int kernel, int alloc) { 63008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams validate(); 63108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams rsnScriptGroupSetOutput(mContext, group, kernel, alloc); 63208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 63308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 63408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams native void rsnScriptGroupExecute(int con, int group); 63508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams synchronized void nScriptGroupExecute(int group) { 63608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams validate(); 63708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams rsnScriptGroupExecute(mContext, group); 63808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 63908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 640a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk native int rsnSamplerCreate(int con, int magFilter, int minFilter, 641a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk int wrapS, int wrapT, int wrapR, float aniso); 642a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk synchronized int nSamplerCreate(int magFilter, int minFilter, 643a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk int wrapS, int wrapT, int wrapR, float aniso) { 644d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 645a89094aa3bc059c6e03b20b4c5b1ede4582f3da9Alex Sakhartchouk return rsnSamplerCreate(mContext, magFilter, minFilter, wrapS, wrapT, wrapR, aniso); 6462e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 6472e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 648331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams native int rsnProgramStoreCreate(int con, boolean r, boolean g, boolean b, boolean a, 649331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams boolean depthMask, boolean dither, 650331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams int srcMode, int dstMode, int depthFunc); 651331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams synchronized int nProgramStoreCreate(boolean r, boolean g, boolean b, boolean a, 652331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams boolean depthMask, boolean dither, 653331bf9b14b1c5c1e88f5c4092b6e24fae887fb3bJason Sams int srcMode, int dstMode, int depthFunc) { 654d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 655bd184c55850997a5c5e285357998dadbe95b7b5dJason Sams return rsnProgramStoreCreate(mContext, r, g, b, a, depthMask, dither, srcMode, 656bd184c55850997a5c5e285357998dadbe95b7b5dJason Sams dstMode, depthFunc); 6572e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 6582e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 65994aaed38467c71a6c804f0e18b41346a4013c25bJason Sams native int rsnProgramRasterCreate(int con, boolean pointSprite, int cullMode); 66094aaed38467c71a6c804f0e18b41346a4013c25bJason Sams synchronized int nProgramRasterCreate(boolean pointSprite, int cullMode) { 661d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 66294aaed38467c71a6c804f0e18b41346a4013c25bJason Sams return rsnProgramRasterCreate(mContext, pointSprite, cullMode); 6632e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 6642e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 6652e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindConstants(int con, int pv, int slot, int mID); 6662e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindConstants(int pv, int slot, int mID) { 667d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 6682e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindConstants(mContext, pv, slot, mID); 6692e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 6702e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindTexture(int con, int vpf, int slot, int a); 6712e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindTexture(int vpf, int slot, int a) { 672d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 6732e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindTexture(mContext, vpf, slot, a); 6742e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 6752e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnProgramBindSampler(int con, int vpf, int slot, int s); 6762e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nProgramBindSampler(int vpf, int slot, int s) { 677d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 6782e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnProgramBindSampler(mContext, vpf, slot, s); 6792e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 6802123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk native int rsnProgramFragmentCreate(int con, String shader, String[] texNames, int[] params); 6812123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk synchronized int nProgramFragmentCreate(String shader, String[] texNames, int[] params) { 682d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 6832123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk return rsnProgramFragmentCreate(mContext, shader, texNames, params); 6842e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 6852123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk native int rsnProgramVertexCreate(int con, String shader, String[] texNames, int[] params); 6862123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk synchronized int nProgramVertexCreate(String shader, String[] texNames, int[] params) { 687d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 6882123b46ba85adb2cfb78068f8368e830640118d3Alex Sakhartchouk return rsnProgramVertexCreate(mContext, shader, texNames, params); 6892e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 6902e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 69125999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk native int rsnMeshCreate(int con, int[] vtx, int[] idx, int[] prim); 69225999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk synchronized int nMeshCreate(int[] vtx, int[] idx, int[] prim) { 693d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 69425999a08a6652ff5d7d0973f279f1e92e04b3506Alex Sakhartchouk return rsnMeshCreate(mContext, vtx, idx, prim); 6959d71e2180062931416092f26276a07e55b318f62Alex Sakhartchouk } 6962e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnMeshGetVertexBufferCount(int con, int id); 6972e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nMeshGetVertexBufferCount(int id) { 698d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 6992e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnMeshGetVertexBufferCount(mContext, id); 7002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 7012e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native int rsnMeshGetIndexCount(int con, int id); 7022e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized int nMeshGetIndexCount(int id) { 703d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 7042e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams return rsnMeshGetIndexCount(mContext, id); 7052e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 7062e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnMeshGetVertices(int con, int id, int[] vtxIds, int vtxIdCount); 7072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nMeshGetVertices(int id, int[] vtxIds, int vtxIdCount) { 708d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 7092e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnMeshGetVertices(mContext, id, vtxIds, vtxIdCount); 7102e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 7112e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams native void rsnMeshGetIndices(int con, int id, int[] idxIds, int[] primitives, int vtxIdCount); 7122e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams synchronized void nMeshGetIndices(int id, int[] idxIds, int[] primitives, int vtxIdCount) { 713d1ac98149737299513da1357e36f68cbb6d74425Jason Sams validate(); 7142e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams rsnMeshGetIndices(mContext, id, idxIds, primitives, vtxIdCount); 7152e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams } 7162e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams 717f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams native int rsnPathCreate(int con, int prim, boolean isStatic, int vtx, int loop, float q); 718f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams synchronized int nPathCreate(int prim, boolean isStatic, int vtx, int loop, float q) { 719f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams validate(); 720f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams return rsnPathCreate(mContext, prim, isStatic, vtx, loop, q); 721f15ed0124ea7f7f87e4188a1dd15cc4917a62ee9Jason Sams } 72260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 723bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int mDev; 724bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int mContext; 725650a3eb7d621dc8e81573142a4498bbd07bcde27Romain Guy @SuppressWarnings({"FieldCanBeLocal"}) 726bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams MessageThread mMessageThread; 72760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 7288cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U8; 7298cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I8; 7308cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U16; 7318cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I16; 7328cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_U32; 7338cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_I32; 73452d836332f6aae74ed97fda1b53681f36710af64Stephen Hines Element mElement_U64; 735ef1dac28d3bf98bd61cd9874fb3ccab42105e9b6Stephen Hines Element mElement_I64; 7368cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_F32; 73702f41705199336f808ece50d81585450e7f8f61fStephen Hines Element mElement_F64; 738f110d4b787b91dabe968a812e76e5c1f8d953487Jason Sams Element mElement_BOOLEAN; 7398cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams 7408cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_ELEMENT; 7418cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_TYPE; 7428cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_ALLOCATION; 7438cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_SAMPLER; 7448cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_SCRIPT; 7458cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_MESH; 7468cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_FRAGMENT; 7478cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_VERTEX; 7488cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_RASTER; 7498cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_PROGRAM_STORE; 7503a2914132146f340511425d7f78540098606b512Stephen Hines Element mElement_FONT; 751a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 7523c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_A_8; 7533c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGB_565; 7543c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGB_888; 7553c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_5551; 7563c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_4444; 7573c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element mElement_RGBA_8888; 7583c0dfbab807a459622aeade4940daddf482dec66Jason Sams 7598cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_2; 7608cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_3; 7618cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_FLOAT_4; 762836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 763836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_DOUBLE_2; 764836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_DOUBLE_3; 765836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_DOUBLE_4; 766836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 767836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UCHAR_2; 768836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UCHAR_3; 7698cb39de03aef6097a90033600d11a60ae000a6e4Jason Sams Element mElement_UCHAR_4; 7707d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 771836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_CHAR_2; 772836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_CHAR_3; 773836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_CHAR_4; 774836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 775836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_USHORT_2; 776836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_USHORT_3; 777836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_USHORT_4; 778836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 779836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_SHORT_2; 780836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_SHORT_3; 781836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_SHORT_4; 782836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 783836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UINT_2; 784836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UINT_3; 785836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_UINT_4; 786836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 787836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_INT_2; 788836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_INT_3; 789836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_INT_4; 790836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 791836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_ULONG_2; 792836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_ULONG_3; 793836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_ULONG_4; 794836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 795836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_LONG_2; 796836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_LONG_3; 797836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines Element mElement_LONG_4; 798836c4a58a7f03485ef433dcdb61837cbc0c39735Stephen Hines 7991d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_4X4; 8001d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_3X3; 8011d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams Element mElement_MATRIX_2X2; 8021d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams 8034d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_NEAREST; 8044d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_LINEAR; 8054d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR; 8064d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_NEAREST; 8074d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_LINEAR; 8084d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Sampler mSampler_WRAP_LINEAR_MIP_LINEAR; 8096b9b2caf2bf977508e223792bb5eba75091c232dTim Murray Sampler mSampler_MIRRORED_REPEAT_NEAREST; 8106b9b2caf2bf977508e223792bb5eba75091c232dTim Murray Sampler mSampler_MIRRORED_REPEAT_LINEAR; 8116b9b2caf2bf977508e223792bb5eba75091c232dTim Murray Sampler mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR; 8124d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 813d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_NONE_DEPTH_TEST; 814d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH; 815d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_TEST; 816d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH; 817d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 818d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_BACK; 819d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_FRONT; 820d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster mProgramRaster_CULL_NONE; 82132e09b5891da0174f161d99e2d3ebe67d6efa39cAlex Sakhartchouk 82260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 82343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich // 82460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 8259c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 82627676fe24be7444a174c15df476e49adc5335d03Jason Sams * Base class application should derive from for handling RS messages 8278cecbb5293f73e3f63f2601dda68016762c58a0cStephen Hines * coming from their scripts. When a script calls sendToClient the data 82827676fe24be7444a174c15df476e49adc5335d03Jason Sams * fields will be filled in and then the run method called by a message 82927676fe24be7444a174c15df476e49adc5335d03Jason Sams * handling thread. This will occur some time after sendToClient completes 83027676fe24be7444a174c15df476e49adc5335d03Jason Sams * in the script. 83127676fe24be7444a174c15df476e49adc5335d03Jason Sams * 83227676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 833bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public static class RSMessageHandler implements Runnable { 834516c31911578db8ce53529483c3ded918ac7dc6bJason Sams protected int[] mData; 835516c31911578db8ce53529483c3ded918ac7dc6bJason Sams protected int mID; 8361c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected int mLength; 837516c31911578db8ce53529483c3ded918ac7dc6bJason Sams public void run() { 838516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 839516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 8409c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 84127676fe24be7444a174c15df476e49adc5335d03Jason Sams * If an application is expecting messages it should set this field to an 84227676fe24be7444a174c15df476e49adc5335d03Jason Sams * instance of RSMessage. This instance will receive all the user messages 84327676fe24be7444a174c15df476e49adc5335d03Jason Sams * sent from sendToClient by scripts from this context. 84427676fe24be7444a174c15df476e49adc5335d03Jason Sams * 84527676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 846bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams RSMessageHandler mMessageCallback = null; 847bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 848bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setMessageHandler(RSMessageHandler msg) { 849bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mMessageCallback = msg; 850bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 851bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public RSMessageHandler getMessageHandler() { 852bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams return mMessageCallback; 853bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 854516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 8559c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 856455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams * @hide 857455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams * 858455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams * @param id 859455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams * @param data 860455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams */ 861455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams public void sendMessage(int id, int[] data) { 862455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams nContextSendMessage(id, data); 863455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams } 864455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams 865455d64426615e5d269a3bd05cd91b67c3811fcdfJason Sams /** 86627676fe24be7444a174c15df476e49adc5335d03Jason Sams * Runtime error base class. An application should derive from this class 86727676fe24be7444a174c15df476e49adc5335d03Jason Sams * if it wishes to install an error handler. When errors occur at runtime 86827676fe24be7444a174c15df476e49adc5335d03Jason Sams * the fields in this class will be filled and the run method called. 86927676fe24be7444a174c15df476e49adc5335d03Jason Sams * 87027676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 871bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public static class RSErrorHandler implements Runnable { 8721c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected String mErrorMessage; 8731c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams protected int mErrorNum; 8741c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams public void run() { 8751c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 8761c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 87727676fe24be7444a174c15df476e49adc5335d03Jason Sams 8789c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 87927676fe24be7444a174c15df476e49adc5335d03Jason Sams * Application Error handler. All runtime errors will be dispatched to the 88027676fe24be7444a174c15df476e49adc5335d03Jason Sams * instance of RSAsyncError set here. If this field is null a 88127676fe24be7444a174c15df476e49adc5335d03Jason Sams * RSRuntimeException will instead be thrown with details about the error. 88227676fe24be7444a174c15df476e49adc5335d03Jason Sams * This will cause program termaination. 88327676fe24be7444a174c15df476e49adc5335d03Jason Sams * 88427676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 885bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams RSErrorHandler mErrorCallback = null; 886bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 887bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setErrorHandler(RSErrorHandler msg) { 888bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mErrorCallback = msg; 889bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 890bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public RSErrorHandler getErrorHandler() { 891bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams return mErrorCallback; 892bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 8931c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 8949c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 89527676fe24be7444a174c15df476e49adc5335d03Jason Sams * RenderScript worker threads priority enumeration. The default value is 89627676fe24be7444a174c15df476e49adc5335d03Jason Sams * NORMAL. Applications wishing to do background processing such as 89727676fe24be7444a174c15df476e49adc5335d03Jason Sams * wallpapers should set their priority to LOW to avoid starving forground 89827676fe24be7444a174c15df476e49adc5335d03Jason Sams * processes. 89927676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 9007d787b4722eaeb79cab42c36060336e092b77b5fJason Sams public enum Priority { 901260c77a4f741c3db76057cc4ea2ee54fe335ecf9Glenn Kasten LOW (Process.THREAD_PRIORITY_BACKGROUND + (5 * Process.THREAD_PRIORITY_LESS_FAVORABLE)), 902260c77a4f741c3db76057cc4ea2ee54fe335ecf9Glenn Kasten NORMAL (Process.THREAD_PRIORITY_DISPLAY); 9037d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 9047d787b4722eaeb79cab42c36060336e092b77b5fJason Sams int mID; 9057d787b4722eaeb79cab42c36060336e092b77b5fJason Sams Priority(int id) { 9067d787b4722eaeb79cab42c36060336e092b77b5fJason Sams mID = id; 9077d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 9087d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 9097d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 910771bebb94054d06f97284379c93a2620613513c3Jason Sams void validate() { 911771bebb94054d06f97284379c93a2620613513c3Jason Sams if (mContext == 0) { 912c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSInvalidStateException("Calling RS with no Context active."); 913771bebb94054d06f97284379c93a2620613513c3Jason Sams } 914771bebb94054d06f97284379c93a2620613513c3Jason Sams } 915771bebb94054d06f97284379c93a2620613513c3Jason Sams 91627676fe24be7444a174c15df476e49adc5335d03Jason Sams 9179c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 91827676fe24be7444a174c15df476e49adc5335d03Jason Sams * Change the priority of the worker threads for this context. 91927676fe24be7444a174c15df476e49adc5335d03Jason Sams * 92027676fe24be7444a174c15df476e49adc5335d03Jason Sams * @param p New priority to be set. 92127676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 922bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setPriority(Priority p) { 9235dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 9247d787b4722eaeb79cab42c36060336e092b77b5fJason Sams nContextSetPriority(p.mID); 9257d787b4722eaeb79cab42c36060336e092b77b5fJason Sams } 9267d787b4722eaeb79cab42c36060336e092b77b5fJason Sams 927bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static class MessageThread extends Thread { 928516c31911578db8ce53529483c3ded918ac7dc6bJason Sams RenderScript mRS; 929516c31911578db8ce53529483c3ded918ac7dc6bJason Sams boolean mRun = true; 930bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int[] mAuxData = new int[2]; 9311c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 932bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_NONE = 0; 933bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_EXCEPTION = 1; 934bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_RESIZE = 2; 935bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_ERROR = 3; 936bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_MESSAGE_TO_CLIENT_USER = 4; 937516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 938bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams static final int RS_ERROR_FATAL_UNKNOWN = 0x1000; 939add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams 940516c31911578db8ce53529483c3ded918ac7dc6bJason Sams MessageThread(RenderScript rs) { 941516c31911578db8ce53529483c3ded918ac7dc6bJason Sams super("RSMessageThread"); 942516c31911578db8ce53529483c3ded918ac7dc6bJason Sams mRS = rs; 943516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 944516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 945516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 946516c31911578db8ce53529483c3ded918ac7dc6bJason Sams public void run() { 947516c31911578db8ce53529483c3ded918ac7dc6bJason Sams // This function is a temporary solution. The final solution will 948516c31911578db8ce53529483c3ded918ac7dc6bJason Sams // used typed allocations where the message id is the type indicator. 949516c31911578db8ce53529483c3ded918ac7dc6bJason Sams int[] rbuf = new int[16]; 9502e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams mRS.nContextInitToClient(mRS.mContext); 951516c31911578db8ce53529483c3ded918ac7dc6bJason Sams while(mRun) { 9521d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams rbuf[0] = 0; 953edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData); 954bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int size = mAuxData[1]; 955bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int subID = mAuxData[0]; 9561c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 9571c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (msg == RS_MESSAGE_TO_CLIENT_USER) { 9581c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if ((size>>2) >= rbuf.length) { 9591c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams rbuf = new int[(size + 3) >> 2]; 9601c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 961edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams if (mRS.nContextGetUserMessage(mRS.mContext, rbuf) != 962edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams RS_MESSAGE_TO_CLIENT_USER) { 963edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams throw new RSDriverException("Error processing message from Renderscript."); 964edbfabdb98a2974f973d6c042e6efd547dc02fc5Jason Sams } 9651c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 9661c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if(mRS.mMessageCallback != null) { 9671c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mData = rbuf; 9681c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mID = subID; 9691c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.mLength = size; 9701c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mMessageCallback.run(); 9711d45c47975ab2a8cef6db5a8976276de31e1e8d0Jason Sams } else { 9721c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams throw new RSInvalidStateException("Received a message from the script with no message handler installed."); 973516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 974ab98bb6e8b95bef7415c1ad239be71f93322fbadStephen Hines continue; 975516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 9761c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 9771c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if (msg == RS_MESSAGE_TO_CLIENT_ERROR) { 9781c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams String e = mRS.nContextGetErrorMessage(mRS.mContext); 9791c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 980add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams if (subID >= RS_ERROR_FATAL_UNKNOWN) { 981add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams throw new RSRuntimeException("Fatal error " + subID + ", details: " + e); 982add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams } 983add9d9633205f76cc34f04368b8482c2c369ba63Jason Sams 9841c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams if(mRS.mErrorCallback != null) { 9851c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.mErrorMessage = e; 9861c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.mErrorNum = subID; 9871c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams mRS.mErrorCallback.run(); 9881c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } else { 989a4b7bc97862e01d38b483524f1d1cf433d29e294Jason Sams android.util.Log.e(LOG_TAG, "non fatal RS error, " + e); 990be74bdd2349095f203ae0fddcc4816bfbd56bc5dStephen Hines // Do not throw here. In these cases, we do not have 991be74bdd2349095f203ae0fddcc4816bfbd56bc5dStephen Hines // a fatal error. 9921c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 9931c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams continue; 9941c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } 9951c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams 9961c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // 2: teardown. 9971c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // But we want to avoid starving other threads during 9981c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // teardown by yielding until the next line in the destructor 9991c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams // can execute to set mRun = false 10001c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams try { 10011c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams sleep(1, 0); 10021c41517124a90fcfdb95dc069fc492c6fcf1ff25Jason Sams } catch(InterruptedException e) { 1003516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 1004516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 10053bc47d438171dce294e816366d53bc9eca772c5bJason Sams Log.d(LOG_TAG, "MessageThread exiting."); 1006516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 1007516c31911578db8ce53529483c3ded918ac7dc6bJason Sams } 1008516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 10096b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao RenderScript(Context ctx) { 10101a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams if (ctx != null) { 10111a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams mApplicationContext = ctx.getApplicationContext(); 10121a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams } 101360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 101460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 10159c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 10166b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * Gets the application context associated with the RenderScript context. 101727676fe24be7444a174c15df476e49adc5335d03Jason Sams * 10186b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * @return The application context. 10196b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao */ 10206b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao public final Context getApplicationContext() { 10216b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao return mApplicationContext; 10226b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao } 10236b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao 10249c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 1025add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams * @hide 1026add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams */ 1027add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams public static RenderScript create(Context ctx, int sdkVersion) { 1028add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams return create(ctx, sdkVersion, ContextType.NORMAL); 1029add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams } 1030add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams 1031add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams /** 10326b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * Create a basic RenderScript context. 103327676fe24be7444a174c15df476e49adc5335d03Jason Sams * 10341a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams * @hide 10356b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * @param ctx The context. 103627676fe24be7444a174c15df476e49adc5335d03Jason Sams * @return RenderScript 103727676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 1038add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams public static RenderScript create(Context ctx, int sdkVersion, ContextType ct) { 10396b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao RenderScript rs = new RenderScript(ctx); 1040704ff64b099406bb328898a7443921f22dbffd6dJason Sams 1041704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mDev = rs.nDeviceCreate(); 1042add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams rs.mContext = rs.nContextCreate(rs.mDev, 0, sdkVersion, ct.mID); 10432698536b3ff60bfee85e47e4a8d4b25fdfdf4db5Jason Sams if (rs.mContext == 0) { 10442698536b3ff60bfee85e47e4a8d4b25fdfdf4db5Jason Sams throw new RSDriverException("Failed to create RS context."); 10452698536b3ff60bfee85e47e4a8d4b25fdfdf4db5Jason Sams } 1046704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mMessageThread = new MessageThread(rs); 1047704ff64b099406bb328898a7443921f22dbffd6dJason Sams rs.mMessageThread.start(); 1048704ff64b099406bb328898a7443921f22dbffd6dJason Sams return rs; 1049efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams } 1050efd9b6fb2e0f31b50db089352118e5daeb268879Jason Sams 10519c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 10521a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams * Create a basic RenderScript context. 10531a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams * 10541a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams * @param ctx The context. 10551a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams * @return RenderScript 10561a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams */ 10571a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams public static RenderScript create(Context ctx) { 1058add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams return create(ctx, ContextType.NORMAL); 1059add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams } 1060add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams 1061add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams /** 1062add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams * Create a basic RenderScript context. 1063add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams * 1064add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams * @hide 1065add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams * 1066add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams * @param ctx The context. 1067add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams * @return RenderScript 1068add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams */ 1069add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams public static RenderScript create(Context ctx, ContextType ct) { 10701a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams int v = ctx.getApplicationInfo().targetSdkVersion; 1071add26dca07cc5a5c935bc68f57bee2c1cd96a79eJason Sams return create(ctx, v, ct); 10721a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams } 10731a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams 10749c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 107527676fe24be7444a174c15df476e49adc5335d03Jason Sams * Print the currently available debugging information about the state of 107627676fe24be7444a174c15df476e49adc5335d03Jason Sams * the RS context to the log. 107727676fe24be7444a174c15df476e49adc5335d03Jason Sams * 107827676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 1079bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void contextDump() { 10805dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 1081bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams nContextDump(0); 1082715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams } 1083715333b832fb448c32165c7d97d408a3fa43f7cbJason Sams 10849c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 108527676fe24be7444a174c15df476e49adc5335d03Jason Sams * Wait for any commands in the fifo between the java bindings and native to 108627676fe24be7444a174c15df476e49adc5335d03Jason Sams * be processed. 108727676fe24be7444a174c15df476e49adc5335d03Jason Sams * 108827676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 108996ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams public void finish() { 109096ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams nContextFinish(); 109196ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams } 109296ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams 10939c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 109427676fe24be7444a174c15df476e49adc5335d03Jason Sams * Destroy this renderscript context. Once this function is called its no 109527676fe24be7444a174c15df476e49adc5335d03Jason Sams * longer legal to use this or any objects created by this context. 109627676fe24be7444a174c15df476e49adc5335d03Jason Sams * 109727676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 1098f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams public void destroy() { 10995dbfe93b3f15f3a837836d024958635fd8f9ad14Jason Sams validate(); 11002e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams nContextDeinitToClient(mContext); 1101516c31911578db8ce53529483c3ded918ac7dc6bJason Sams mMessageThread.mRun = false; 1102a8bf9429b29743b3489817feb21bde2416acc465Jason Sams try { 1103a8bf9429b29743b3489817feb21bde2416acc465Jason Sams mMessageThread.join(); 1104a8bf9429b29743b3489817feb21bde2416acc465Jason Sams } catch(InterruptedException e) { 1105a8bf9429b29743b3489817feb21bde2416acc465Jason Sams } 1106516c31911578db8ce53529483c3ded918ac7dc6bJason Sams 11072e1872fe07cf8952812a417985e6e1f61bdeab5dJason Sams nContextDestroy(); 1108f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams mContext = 0; 1109f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams 1110f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams nDeviceDestroy(mDev); 1111f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams mDev = 0; 1112f5b4596a383b6ab83f92edecfe054e80b555c2d0Jason Sams } 111302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 1114a9e7a05b84470257637c97d65f6562aa832c66efJason Sams boolean isAlive() { 1115a9e7a05b84470257637c97d65f6562aa832c66efJason Sams return mContext != 0; 1116a9e7a05b84470257637c97d65f6562aa832c66efJason Sams } 1117a9e7a05b84470257637c97d65f6562aa832c66efJason Sams 1118bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams int safeID(BaseObj o) { 11196b9dec00afec359f091ed353f371f08ff150278aJason Sams if(o != null) { 1120e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams return o.getID(this); 1121d8e4161f114331343b897cbacea927e7e60e7b17Jason Sams } 11226b9dec00afec359f091ed353f371f08ff150278aJason Sams return 0; 112360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 112460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich} 1125