RenderScript.java revision 730ee65d4ddb307898053b623120bad1655fadad
160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/* 260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Copyright (C) 2008 The Android Open Source Project 360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * 460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License"); 560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * you may not use this file except in compliance with the License. 660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * You may obtain a copy of the License at 760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * 860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * http://www.apache.org/licenses/LICENSE-2.0 960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * 1060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Unless required by applicable law or agreed to in writing, software 1160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS, 1260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * See the License for the specific language governing permissions and 1460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * limitations under the License. 1560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich */ 1660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 1794d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samspackage android.renderscript; 1860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 1943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichimport java.io.IOException; 2036e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport java.io.InputStream; 2143ee06857bb7f99446d1d84f8789016c5d105558Jason Samsimport java.lang.reflect.Field; 2236e612a488511940b61f09803b270aa1c61b68e0Jason Sams 2336e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.content.res.Resources; 24b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.graphics.Bitmap; 2543ee06857bb7f99446d1d84f8789016c5d105558Jason Samsimport android.renderscript.Type; 2636e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Config; 2736e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Log; 2836e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.view.Surface; 2943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 3060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 31e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams/** 32e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams * @hide 33e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams * 34e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams **/ 3560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichpublic class RenderScript { 36f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams static final String LOG_TAG = "libRS_jni"; 3760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private static final boolean DEBUG = false; 3860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV; 3960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 4060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 4160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 4202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams /* 4360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * We use a class initializer to allow the native code to cache some 4460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * field offsets. 4560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich */ 4660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private static boolean sInitialized; 4760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private static void _nInit(); 4860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 49dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams 5060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich static { 5160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = false; 5260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich try { 53e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams System.loadLibrary("rs_jni"); 5460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich _nInit(); 5560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = true; 5660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } catch (UnsatisfiedLinkError e) { 5760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Log.d(LOG_TAG, "RenderScript JNI library not found!"); 5860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 5960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 6060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 6136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nDeviceCreate(); 6236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nDeviceDestroy(int dev); 6336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nContextCreate(int dev, Surface sur, int ver); 6436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextDestroy(int con); 6560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 6660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //void rsContextBindSampler (uint32_t slot, RsSampler sampler); 6760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //void rsContextBindRootScript (RsScript sampler); 6836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindRootScript(int script); 6936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindSampler(int sampler, int slot); 7036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindProgramFragmentStore(int pfs); 7136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindProgramFragment(int pf); 7236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindProgramVertex(int pf); 73d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato native void nContextAddDefineI32(String name, int value); 74d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato native void nContextAddDefineF(String name, float value); 7536e612a488511940b61f09803b270aa1c61b68e0Jason Sams 7636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAssignName(int obj, byte[] name); 777ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams native void nObjDestroy(int id); 78730ee65d4ddb307898053b623120bad1655fadadJason Sams native void nObjDestroyOOB(int id); 7936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nFileOpen(byte[] name); 8036e612a488511940b61f09803b270aa1c61b68e0Jason Sams 8136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nElementBegin(); 8236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nElementAddPredefined(int predef); 8343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams native void nElementAdd(int kind, int type, int norm, int bits, String s); 8436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nElementCreate(); 8536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nElementGetPredefined(int predef); 8636e612a488511940b61f09803b270aa1c61b68e0Jason Sams 8736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTypeBegin(int elementID); 8836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTypeAdd(int dim, int val); 8936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nTypeCreate(); 9043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams native void nTypeFinalDestroy(Type t); 9143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams native void nTypeSetupFields(Type t, int[] types, int[] bits, Field[] IDs); 9236e612a488511940b61f09803b270aa1c61b68e0Jason Sams 9336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreateTyped(int type); 9436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreatePredefSized(int predef, int count); 9536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreateSized(int elem, int count); 9636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreateFromBitmap(int dstFmt, boolean genMips, Bitmap bmp); 9736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreateFromBitmapBoxed(int dstFmt, boolean genMips, Bitmap bmp); 9836e612a488511940b61f09803b270aa1c61b68e0Jason Sams 9936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationUploadToTexture(int alloc, int baseMioLevel); 10036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationData(int id, int[] d); 10136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationData(int id, float[] d); 10236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationSubData1D(int id, int off, int count, int[] d); 10336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationSubData1D(int id, int off, int count, float[] d); 10436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d); 10536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d); 10640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams native void nAllocationRead(int id, int[] d); 10740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams native void nAllocationRead(int id, float[] d); 10843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams native void nAllocationDataFromObject(int id, Type t, Object o); 10936e612a488511940b61f09803b270aa1c61b68e0Jason Sams 11036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshBegin(int vertex, int index); 11136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XY (float x, float y); 11236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XYZ (float x, float y, float z); 11336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XY_ST (float x, float y, float s, float t); 11436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XYZ_ST (float x, float y, float z, float s, float t); 11536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XYZ_ST_NORM (float x, float y, float z, float s, float t, float nx, float ny, float nz); 11636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddTriangle(int i1, int i2, int i3); 11736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nTriangleMeshCreate(); 11836e612a488511940b61f09803b270aa1c61b68e0Jason Sams 11936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DBindAllocation(int ad, int alloc); 12036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DSetConstraint(int ad, int dim, int value); 12136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DData(int ad, int[] d); 12236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DData(int ad, float[] d); 123bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter1DSubData(int ad, int off, int count, int[] d); 12436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DSubData(int ad, int off, int count, float[] d); 12536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAdapter1DCreate(); 12636e612a488511940b61f09803b270aa1c61b68e0Jason Sams 127bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DBindAllocation(int ad, int alloc); 128bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DSetConstraint(int ad, int dim, int value); 129bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DData(int ad, int[] d); 130bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DData(int ad, float[] d); 131bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DSubData(int ad, int xoff, int yoff, int w, int h, int[] d); 132bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DSubData(int ad, int xoff, int yoff, int w, int h, float[] d); 133bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native int nAdapter2DCreate(); 134bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 13522534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptBindAllocation(int script, int alloc, int slot); 13622534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptSetClearColor(int script, float r, float g, float b, float a); 13722534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptSetClearDepth(int script, float depth); 13822534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptSetClearStencil(int script, int stencil); 13922534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptSetTimeZone(int script, byte[] timeZone); 140334ea0c98f051b5a6b85bc616c93304651854298Jason Sams native void nScriptSetType(int type, boolean writable, String name, int slot); 141fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams native void nScriptSetRoot(boolean isRoot); 14222534176fb5c1257130ef4ee589739ca42766a32Jason Sams 14336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nScriptCBegin(); 14436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nScriptCSetScript(byte[] script, int offset, int length); 14536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nScriptCCreate(); 146d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato native void nScriptCAddDefineI32(String name, int value); 147d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato native void nScriptCAddDefineF(String name, float value); 14836e612a488511940b61f09803b270aa1c61b68e0Jason Sams 14936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nSamplerBegin(); 15036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nSamplerSet(int param, int value); 15136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nSamplerCreate(); 15236e612a488511940b61f09803b270aa1c61b68e0Jason Sams 15336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreBegin(int in, int out); 15436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreDepthFunc(int func); 15536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreDepthMask(boolean enable); 15636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a); 15736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreBlendFunc(int src, int dst); 15836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreDither(boolean enable); 15936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nProgramFragmentStoreCreate(); 16036e612a488511940b61f09803b270aa1c61b68e0Jason Sams 16136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentBegin(int in, int out); 16236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentBindTexture(int vpf, int slot, int a); 16336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentBindSampler(int vpf, int slot, int s); 16436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentSetType(int slot, int vt); 16536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentSetEnvMode(int slot, int env); 16636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentSetTexEnable(int slot, boolean enable); 16736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nProgramFragmentCreate(); 16836e612a488511940b61f09803b270aa1c61b68e0Jason Sams 1699bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason Sams native void nProgramVertexBindAllocation(int pv, int mID); 17036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexBegin(int inID, int outID); 17136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexSetTextureMatrixEnable(boolean enable); 17236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexAddLight(int id); 17336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nProgramVertexCreate(); 17436e612a488511940b61f09803b270aa1c61b68e0Jason Sams 17536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightBegin(); 17636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightSetIsMono(boolean isMono); 17736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightSetIsLocal(boolean isLocal); 17836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nLightCreate(); 17936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightSetColor(int l, float r, float g, float b); 18036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightSetPosition(int l, float x, float y, float z); 181bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 1821bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams native int nSimpleMeshCreate(int batchID, int idxID, int[] vtxID, int prim); 1831bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams native void nSimpleMeshBindVertex(int id, int alloc, int slot); 1841bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams native void nSimpleMeshBindIndex(int id, int alloc); 1851bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams 18640a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams native void nAnimationBegin(int attribCount, int keyframeCount); 18740a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams native void nAnimationAdd(float time, float[] attribs); 18840a29e8e28772b37ab0f9fe9708ecdcba24abb84Jason Sams native int nAnimationCreate(); 18960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 19060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private int mDev; 19160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private int mContext; 19260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private Surface mSurface; 19360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 19436e612a488511940b61f09803b270aa1c61b68e0Jason Sams private static boolean mElementsInitialized = false; 19560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 19660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 19743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich // 19860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 199b3c61e7decf4b9fb00ac18937c756208d9ffb717Romain Guy public RenderScript(Surface sur) { 20060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mSurface = sur; 20160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mDev = nDeviceCreate(); 20260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mContext = nContextCreate(mDev, mSurface, 0); 20360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 20436e612a488511940b61f09803b270aa1c61b68e0Jason Sams // TODO: This should be protected by a lock 20536e612a488511940b61f09803b270aa1c61b68e0Jason Sams if(!mElementsInitialized) { 20636e612a488511940b61f09803b270aa1c61b68e0Jason Sams Element.init(this); 20736e612a488511940b61f09803b270aa1c61b68e0Jason Sams mElementsInitialized = true; 20860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 20960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 21060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 21102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 21260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 21360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Triangle Mesh 21460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 21560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class TriangleMesh extends BaseObj { 21660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich TriangleMesh(int id) { 21736e612a488511940b61f09803b270aa1c61b68e0Jason Sams super(RenderScript.this); 21860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 21960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 22060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 22160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 22260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshBegin(Element vertex, Element index) { 22336e612a488511940b61f09803b270aa1c61b68e0Jason Sams Log.e("rs", "vtx " + vertex.toString() + " " + vertex.mID + " " + vertex.mPredefinedID); 22460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshBegin(vertex.mID, index.mID); 22560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 22660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 22760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XY(float x, float y) { 22860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XY(x, y); 22960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 23060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 23160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XYZ(float x, float y, float z) { 23260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XYZ(x, y, z); 23360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 23460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 23560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XY_ST(float x, float y, float s, float t) { 23660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XY_ST(x, y, s, t); 23760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 23860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 23960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XYZ_ST(float x, float y, float z, float s, float t) { 24060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XYZ_ST(x, y, z, s, t); 24160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 24260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 2430826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams public void triangleMeshAddVertex_XYZ_ST_NORM(float x, float y, float z, float s, float t, float nx, float ny, float nz) { 2440826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams nTriangleMeshAddVertex_XYZ_ST_NORM(x, y, z, s, t, nx, ny, nz); 2450826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams } 2460826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 24760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddTriangle(int i1, int i2, int i3) { 24860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddTriangle(i1, i2, i3); 24960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 25060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 25160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public TriangleMesh triangleMeshCreate() { 25260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nTriangleMeshCreate(); 25360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new TriangleMesh(id); 25460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 25560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 25660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 25764676f3c21a07d650069315572811570cbf8f728Jason Sams // File 25864676f3c21a07d650069315572811570cbf8f728Jason Sams 25964676f3c21a07d650069315572811570cbf8f728Jason Sams public class File extends BaseObj { 26064676f3c21a07d650069315572811570cbf8f728Jason Sams File(int id) { 26136e612a488511940b61f09803b270aa1c61b68e0Jason Sams super(RenderScript.this); 26264676f3c21a07d650069315572811570cbf8f728Jason Sams mID = id; 26364676f3c21a07d650069315572811570cbf8f728Jason Sams } 26464676f3c21a07d650069315572811570cbf8f728Jason Sams } 26564676f3c21a07d650069315572811570cbf8f728Jason Sams 26664676f3c21a07d650069315572811570cbf8f728Jason Sams public File fileOpen(String s) throws IllegalStateException, IllegalArgumentException 26764676f3c21a07d650069315572811570cbf8f728Jason Sams { 26864676f3c21a07d650069315572811570cbf8f728Jason Sams if(s.length() < 1) { 26964676f3c21a07d650069315572811570cbf8f728Jason Sams throw new IllegalArgumentException("fileOpen does not accept a zero length string."); 27064676f3c21a07d650069315572811570cbf8f728Jason Sams } 27164676f3c21a07d650069315572811570cbf8f728Jason Sams 27264676f3c21a07d650069315572811570cbf8f728Jason Sams try { 27364676f3c21a07d650069315572811570cbf8f728Jason Sams byte[] bytes = s.getBytes("UTF-8"); 27464676f3c21a07d650069315572811570cbf8f728Jason Sams int id = nFileOpen(bytes); 27564676f3c21a07d650069315572811570cbf8f728Jason Sams return new File(id); 27664676f3c21a07d650069315572811570cbf8f728Jason Sams } catch (java.io.UnsupportedEncodingException e) { 27764676f3c21a07d650069315572811570cbf8f728Jason Sams throw new RuntimeException(e); 27864676f3c21a07d650069315572811570cbf8f728Jason Sams } 27964676f3c21a07d650069315572811570cbf8f728Jason Sams } 28064676f3c21a07d650069315572811570cbf8f728Jason Sams 28164676f3c21a07d650069315572811570cbf8f728Jason Sams 28260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 28360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Root state 28460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 28560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindRootScript(Script s) { 28660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindRootScript(s.mID); 28760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 28860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 28960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //public void contextBindSampler(Sampler s, int slot) { 29060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //nContextBindSampler(s.mID); 29160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //} 29260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 29322534176fb5c1257130ef4ee589739ca42766a32Jason Sams public void contextBindProgramFragmentStore(ProgramStore pfs) { 29460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindProgramFragmentStore(pfs.mID); 29560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 29660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 29760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindProgramFragment(ProgramFragment pf) { 29860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindProgramFragment(pf.mID); 29960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 30060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 3010826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams public void contextBindProgramVertex(ProgramVertex pf) { 3020826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams nContextBindProgramVertex(pf.mID); 3030826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams } 3040826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 30560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich} 30660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 30736e612a488511940b61f09803b270aa1c61b68e0Jason Sams 308