RenderScript.java revision 36e612a488511940b61f09803b270aa1c61b68e0
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;
2136e612a488511940b61f09803b270aa1c61b68e0Jason Sams
2236e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.content.res.Resources;
2336e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.os.Bundle;
2436e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Config;
2536e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Log;
2636e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.view.Surface;
2743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
28dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Samsimport android.graphics.Bitmap;
29dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Samsimport android.graphics.BitmapFactory;
30dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Samsimport android.graphics.Color;
31dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams
3260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
33e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams/**
34e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams * @hide
35e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams *
36e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams **/
3760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichpublic class RenderScript {
38f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams    static final String LOG_TAG = "libRS_jni";
3960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static final boolean DEBUG  = false;
4060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
4160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams     /*
4560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     * We use a class initializer to allow the native code to cache some
4660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     * field offsets.
4760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     */
4860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static boolean sInitialized;
4960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private static void _nInit();
5060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
51dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams    private static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
52dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams
5360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    static {
5460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        sInitialized = false;
5560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        try {
56e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams            System.loadLibrary("rs_jni");
5760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            _nInit();
5860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            sInitialized = true;
5960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        } catch (UnsatisfiedLinkError e) {
6060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            Log.d(LOG_TAG, "RenderScript JNI library not found!");
6160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
62dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams        mBitmapOptions.inScaled = false;
6360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
6460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
6536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nDeviceCreate();
6636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nDeviceDestroy(int dev);
6736e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nContextCreate(int dev, Surface sur, int ver);
6836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nContextDestroy(int con);
6960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
7060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //void rsContextBindSampler (uint32_t slot, RsSampler sampler);
7160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //void rsContextBindRootScript (RsScript sampler);
7236e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nContextBindRootScript(int script);
7336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nContextBindSampler(int sampler, int slot);
7436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nContextBindProgramFragmentStore(int pfs);
7536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nContextBindProgramFragment(int pf);
7636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nContextBindProgramVertex(int pf);
7736e612a488511940b61f09803b270aa1c61b68e0Jason Sams
7836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAssignName(int obj, byte[] name);
7936e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nFileOpen(byte[] name);
8036e612a488511940b61f09803b270aa1c61b68e0Jason Sams
8136e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nElementBegin();
8236e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nElementAddPredefined(int predef);
8336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nElementAdd(int kind, int type, int norm, int bits);
8436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nElementCreate();
8536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nElementGetPredefined(int predef);
8636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nElementDestroy(int obj);
8736e612a488511940b61f09803b270aa1c61b68e0Jason Sams
8836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTypeBegin(int elementID);
8936e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTypeAdd(int dim, int val);
9036e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nTypeCreate();
9136e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTypeDestroy(int id);
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 nAllocationDestroy(int alloc);
10136e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAllocationData(int id, int[] d);
10236e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAllocationData(int id, float[] d);
10336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAllocationSubData1D(int id, int off, int count, int[] d);
10436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAllocationSubData1D(int id, int off, int count, float[] d);
10536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d);
10636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d);
10736e612a488511940b61f09803b270aa1c61b68e0Jason Sams
10836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTriangleMeshDestroy(int id);
10936e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTriangleMeshBegin(int vertex, int index);
11036e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTriangleMeshAddVertex_XY (float x, float y);
11136e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTriangleMeshAddVertex_XYZ (float x, float y, float z);
11236e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTriangleMeshAddVertex_XY_ST (float x, float y, float s, float t);
11336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTriangleMeshAddVertex_XYZ_ST (float x, float y, float z, float s, float t);
11436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTriangleMeshAddVertex_XYZ_ST_NORM (float x, float y, float z, float s, float t, float nx, float ny, float nz);
11536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nTriangleMeshAddTriangle(int i1, int i2, int i3);
11636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nTriangleMeshCreate();
11736e612a488511940b61f09803b270aa1c61b68e0Jason Sams
11836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAdapter1DDestroy(int id);
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 nAdapter1DSubData(int ad, int off, int count, int[] d);
12336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAdapter1DData(int ad, float[] d);
12436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nAdapter1DSubData(int ad, int off, int count, float[] d);
12536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nAdapter1DCreate();
12636e612a488511940b61f09803b270aa1c61b68e0Jason Sams
12736e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptDestroy(int script);
12836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptBindAllocation(int vtm, int alloc, int slot);
12936e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptCBegin();
13036e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptCSetClearColor(float r, float g, float b, float a);
13136e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptCSetClearDepth(float depth);
13236e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptCSetClearStencil(int stencil);
13336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptCSetTimeZone(byte[] timeZone);
13436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptCAddType(int type);
13536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptCSetRoot(boolean isRoot);
13636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nScriptCSetScript(byte[] script, int offset, int length);
13736e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nScriptCCreate();
13836e612a488511940b61f09803b270aa1c61b68e0Jason Sams
13936e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nSamplerDestroy(int sampler);
14036e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nSamplerBegin();
14136e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nSamplerSet(int param, int value);
14236e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nSamplerCreate();
14336e612a488511940b61f09803b270aa1c61b68e0Jason Sams
14436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentStoreBegin(int in, int out);
14536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentStoreDepthFunc(int func);
14636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentStoreDepthMask(boolean enable);
14736e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a);
14836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentStoreBlendFunc(int src, int dst);
14936e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentStoreDither(boolean enable);
15036e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nProgramFragmentStoreCreate();
15136e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentStoreDestroy(int pgm);
15236e612a488511940b61f09803b270aa1c61b68e0Jason Sams
15336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentBegin(int in, int out);
15436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentBindTexture(int vpf, int slot, int a);
15536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentBindSampler(int vpf, int slot, int s);
15636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentSetType(int slot, int vt);
15736e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentSetEnvMode(int slot, int env);
15836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentSetTexEnable(int slot, boolean enable);
15936e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nProgramFragmentCreate();
16036e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramFragmentDestroy(int pgm);
16136e612a488511940b61f09803b270aa1c61b68e0Jason Sams
16236e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramVertexDestroy(int pv);
16336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramVertexBindAllocation(int pv, int slot, int mID);
16436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramVertexBegin(int inID, int outID);
16536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramVertexSetType(int slot, int mID);
16636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramVertexSetTextureMatrixEnable(boolean enable);
16736e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nProgramVertexAddLight(int id);
16836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nProgramVertexCreate();
16936e612a488511940b61f09803b270aa1c61b68e0Jason Sams
17036e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nLightBegin();
17136e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nLightSetIsMono(boolean isMono);
17236e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nLightSetIsLocal(boolean isLocal);
17336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native int  nLightCreate();
17436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nLightDestroy(int l);
17536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nLightSetColor(int l, float r, float g, float b);
17636e612a488511940b61f09803b270aa1c61b68e0Jason Sams    native void nLightSetPosition(int l, float x, float y, float z);
177bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
17860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
17960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private int     mDev;
18060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private int     mContext;
18160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private Surface mSurface;
18260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
18336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    private static boolean mElementsInitialized = false;
18460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
18560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    ///////////////////////////////////////////////////////////////////////////////////
18643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    //
18760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
18860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RenderScript(Surface sur) {
18960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mSurface = sur;
19060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mDev = nDeviceCreate();
19160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mContext = nContextCreate(mDev, mSurface, 0);
19260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
19336e612a488511940b61f09803b270aa1c61b68e0Jason Sams        // TODO: This should be protected by a lock
19436e612a488511940b61f09803b270aa1c61b68e0Jason Sams        if(!mElementsInitialized) {
19536e612a488511940b61f09803b270aa1c61b68e0Jason Sams            Element.init(this);
19636e612a488511940b61f09803b270aa1c61b68e0Jason Sams            mElementsInitialized = true;
19760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
19860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
19960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
20060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
20160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Element
20260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
20336e612a488511940b61f09803b270aa1c61b68e0Jason Sams    Element.Builder mElementBuilder = new Element.Builder(this);
20436e612a488511940b61f09803b270aa1c61b68e0Jason Sams    public Element.Builder elementBuilderCreate() throws IllegalStateException {
20536e612a488511940b61f09803b270aa1c61b68e0Jason Sams        mElementBuilder.begin();
20636e612a488511940b61f09803b270aa1c61b68e0Jason Sams        return mElementBuilder;
20760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
20860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
20960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
21060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
21160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
21260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum DepthFunc {
21360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ALWAYS (0),
21460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LESS (1),
21560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LEQUAL (2),
21660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        GREATER (3),
21760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        GEQUAL (4),
21860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        EQUAL (5),
21960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NOTEQUAL (6);
22060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
22160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
22260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DepthFunc(int id) {
22360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
22460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
22560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
22660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
22760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum BlendSrcFunc {
22860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ZERO (0),
22960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE (1),
23060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_COLOR (2),
23160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_COLOR (3),
23260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA (4),
23360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_ALPHA (5),
23460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_ALPHA (6),
23560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_ALPA (7),
23660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA_SATURATE (8);
23760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
23860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
23960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BlendSrcFunc(int id) {
24060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
24160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
24260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
24360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
24460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum BlendDstFunc {
24560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ZERO (0),
24660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE (1),
24760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_COLOR (2),
24860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_COLOR (3),
24960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA (4),
25060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_ALPHA (5),
25160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_ALPHA (6),
25260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_ALPA (7);
25360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
25460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
25560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BlendDstFunc(int id) {
25660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
25760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
25860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
25960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
26060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum EnvMode {
26160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        REPLACE (0),
26260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        MODULATE (1),
26360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DECAL (2);
26460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
26560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
26660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        EnvMode(int id) {
26760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
26860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
26960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
27060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
27102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public enum SamplerParam {
27202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        FILTER_MIN (0),
27302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        FILTER_MAG (1),
27402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_S (2),
27502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_T (3),
27602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_R (4);
27702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
27802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int mID;
27902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        SamplerParam(int id) {
28002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
28102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
28202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
28302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
28402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public enum SamplerValue {
28502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        NEAREST (0),
28602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        LINEAR (1),
28702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        LINEAR_MIP_LINEAR (2),
28802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP (3),
28902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        CLAMP (4);
29002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
29102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int mID;
29202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        SamplerValue(int id) {
29302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
29402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
29502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
29602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
29760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
29860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Type
29960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
30060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum Dimension {
30160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        X (0),
30260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Y (1),
30360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Z (2),
30460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LOD (3),
30560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        FACE (4),
30660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ARRAY_0 (100);
30760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
30860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
30960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Dimension(int id) {
31060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
31160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
31260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
31360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
31460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Type extends BaseObj {
31560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Type(int id) {
31636e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
31760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
31860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
31960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
32060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
32160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nTypeDestroy(mID);
32260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
32360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
32460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
32560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
32660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void typeBegin(Element e) {
32760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTypeBegin(e.mID);
32860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
32960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
33060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void typeAdd(Dimension d, int value) {
33160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTypeAdd(d.mID, value);
33260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
33360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
33460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Type typeCreate() {
33560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nTypeCreate();
33660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Type(id);
33760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
33860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
33960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
34060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
34160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Allocation
34260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
34360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Allocation extends BaseObj {
34460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Allocation(int id) {
34536e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
34660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
34760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
34860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
34960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void uploadToTexture(int baseMipLevel) {
35060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationUploadToTexture(mID, baseMipLevel);
35160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
35260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
35360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
35460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationDestroy(mID);
35560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
35660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
35760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
35860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(int[] d) {
35960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationData(mID, d);
36060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
36160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
36260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(float[] d) {
36360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationData(mID, d);
36460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
36560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
36660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData1D(int off, int count, int[] d) {
36760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData1D(mID, off, count, d);
36860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
36960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
37060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData1D(int off, int count, float[] d) {
37160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData1D(mID, off, count, d);
37260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
37360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
37460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
37560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData2D(mID, xoff, yoff, w, h, d);
37660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
37760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
37860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
37960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData2D(mID, xoff, yoff, w, h, d);
38060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
38160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
38260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
38360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Allocation allocationCreateTyped(Type type) {
38460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAllocationCreateTyped(type.mID);
38560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Allocation(id);
38660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
38760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
38860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Allocation allocationCreateSized(Element e, int count) {
38936e612a488511940b61f09803b270aa1c61b68e0Jason Sams        int id;
39036e612a488511940b61f09803b270aa1c61b68e0Jason Sams        if(e.mIsPredefined) {
39136e612a488511940b61f09803b270aa1c61b68e0Jason Sams            id = nAllocationCreatePredefSized(e.mPredefinedID, count);
39236e612a488511940b61f09803b270aa1c61b68e0Jason Sams        } else {
39336e612a488511940b61f09803b270aa1c61b68e0Jason Sams            id = nAllocationCreateSized(e.mID, count);
39436e612a488511940b61f09803b270aa1c61b68e0Jason Sams        }
39560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Allocation(id);
39660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
39760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
39836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    public Allocation allocationCreateFromBitmap(Bitmap b, Element dstFmt, boolean genMips)
39936e612a488511940b61f09803b270aa1c61b68e0Jason Sams        throws IllegalArgumentException {
40036e612a488511940b61f09803b270aa1c61b68e0Jason Sams        if(!dstFmt.mIsPredefined) {
40136e612a488511940b61f09803b270aa1c61b68e0Jason Sams            throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
40236e612a488511940b61f09803b270aa1c61b68e0Jason Sams        }
40336e612a488511940b61f09803b270aa1c61b68e0Jason Sams
40436e612a488511940b61f09803b270aa1c61b68e0Jason Sams        int id = nAllocationCreateFromBitmap(dstFmt.mPredefinedID, genMips, b);
405b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams        return new Allocation(id);
406b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams    }
407b0ec1b46d6f5b5612e33fe43a828abea79b87a00Jason Sams
40836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    public Allocation allocationCreateFromBitmapBoxed(Bitmap b, Element dstFmt, boolean genMips)
40936e612a488511940b61f09803b270aa1c61b68e0Jason Sams        throws IllegalArgumentException {
41036e612a488511940b61f09803b270aa1c61b68e0Jason Sams        if(!dstFmt.mIsPredefined) {
41136e612a488511940b61f09803b270aa1c61b68e0Jason Sams            throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
41236e612a488511940b61f09803b270aa1c61b68e0Jason Sams        }
41336e612a488511940b61f09803b270aa1c61b68e0Jason Sams
41436e612a488511940b61f09803b270aa1c61b68e0Jason Sams        int id = nAllocationCreateFromBitmapBoxed(dstFmt.mPredefinedID, genMips, b);
415fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        return new Allocation(id);
416fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams    }
41760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
41836e612a488511940b61f09803b270aa1c61b68e0Jason Sams    public Allocation allocationCreateFromBitmapResource(Resources res, int id, Element dstFmt, boolean genMips)
41936e612a488511940b61f09803b270aa1c61b68e0Jason Sams        throws IllegalArgumentException {
42036e612a488511940b61f09803b270aa1c61b68e0Jason Sams
421dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams        Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
42236e612a488511940b61f09803b270aa1c61b68e0Jason Sams        return allocationCreateFromBitmap(b, dstFmt, genMips);
423dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams    }
424dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams
42536e612a488511940b61f09803b270aa1c61b68e0Jason Sams    public Allocation allocationCreateFromBitmapResourceBoxed(Resources res, int id, Element dstFmt, boolean genMips)
42636e612a488511940b61f09803b270aa1c61b68e0Jason Sams        throws IllegalArgumentException {
42736e612a488511940b61f09803b270aa1c61b68e0Jason Sams
428dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams        Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
42936e612a488511940b61f09803b270aa1c61b68e0Jason Sams        return allocationCreateFromBitmapBoxed(b, dstFmt, genMips);
430dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams    }
431dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams
432dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams
43360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
43460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Adapter1D
43560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
43660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Adapter1D extends BaseObj {
43760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Adapter1D(int id) {
43836e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
43960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
44060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
44160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
44260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
44360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DDestroy(mID);
44460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
44560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
44660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
44760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindAllocation(Allocation a) {
44860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DBindAllocation(mID, a.mID);
44960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
45060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
45160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void setConstraint(Dimension dim, int value) {
45260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSetConstraint(mID, dim.mID, value);
45360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
45460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
45560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(int[] d) {
45660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DData(mID, d);
45760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
45860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
45960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData(int off, int count, int[] d) {
46060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSubData(mID, off, count, d);
46160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
46260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
46360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(float[] d) {
46460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DData(mID, d);
46560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
46660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
46760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData(int off, int count, float[] d) {
46860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSubData(mID, off, count, d);
46960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
47060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
47160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
47260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Adapter1D adapter1DCreate() {
47360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAdapter1DCreate();
47460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Adapter1D(id);
47560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
47660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
47760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
47860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
47960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Triangle Mesh
48060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
48160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class TriangleMesh extends BaseObj {
48260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        TriangleMesh(int id) {
48336e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
48460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
48560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
48660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
48760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
48860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nTriangleMeshDestroy(mID);
48960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
49060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
49160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
49260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
49360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshBegin(Element vertex, Element index) {
49436e612a488511940b61f09803b270aa1c61b68e0Jason Sams        Log.e("rs", "vtx " + vertex.toString() + "  " + vertex.mID + "  " + vertex.mPredefinedID);
49560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshBegin(vertex.mID, index.mID);
49660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
49760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
49860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XY(float x, float y) {
49960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XY(x, y);
50060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
50160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
50260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XYZ(float x, float y, float z) {
50360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XYZ(x, y, z);
50460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
50560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
50660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XY_ST(float x, float y, float s, float t) {
50760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XY_ST(x, y, s, t);
50860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
50960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
51060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XYZ_ST(float x, float y, float z, float s, float t) {
51160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XYZ_ST(x, y, z, s, t);
51260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
51360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
5140826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    public void triangleMeshAddVertex_XYZ_ST_NORM(float x, float y, float z, float s, float t, float nx, float ny, float nz) {
5150826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        nTriangleMeshAddVertex_XYZ_ST_NORM(x, y, z, s, t, nx, ny, nz);
5160826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    }
5170826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams
51860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddTriangle(int i1, int i2, int i3) {
51960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddTriangle(i1, i2, i3);
52060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
52160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
52260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public TriangleMesh triangleMeshCreate() {
52360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nTriangleMeshCreate();
52460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new TriangleMesh(id);
52560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
52660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
52760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
52860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Script
52960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
53060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Script extends BaseObj {
53160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Script(int id) {
53236e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
53360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
53460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
53560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
53660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
53760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nScriptDestroy(mID);
53860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
53960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
54060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
54160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindAllocation(Allocation va, int slot) {
54260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nScriptBindAllocation(mID, va.mID, slot);
54360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
54460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
54560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
54660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCBegin() {
54760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCBegin();
54860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
54960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
550584a375df68ed7d62b38389078c6804edf228f9cRomain Guy    public void scriptCSetTimeZone(String timeZone) {
551584a375df68ed7d62b38389078c6804edf228f9cRomain Guy        try {
552584a375df68ed7d62b38389078c6804edf228f9cRomain Guy            byte[] bytes = timeZone.getBytes("UTF-8");
55336e612a488511940b61f09803b270aa1c61b68e0Jason Sams            nScriptCSetTimeZone(bytes);
554584a375df68ed7d62b38389078c6804edf228f9cRomain Guy        } catch (java.io.UnsupportedEncodingException e) {
555584a375df68ed7d62b38389078c6804edf228f9cRomain Guy            throw new RuntimeException(e);
556584a375df68ed7d62b38389078c6804edf228f9cRomain Guy        }
557584a375df68ed7d62b38389078c6804edf228f9cRomain Guy    }
55836e612a488511940b61f09803b270aa1c61b68e0Jason Sams
55960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearColor(float r, float g, float b, float a) {
56060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearColor(r, g, b, a);
56160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
56260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
56360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearDepth(float d) {
56460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearDepth(d);
56560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
56660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
56760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearStencil(int stencil) {
56860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearStencil(stencil);
56960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
57060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
57160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCAddType(Type t) {
57260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCAddType(t.mID);
57360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
57460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
57560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetRoot(boolean r) {
57660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetRoot(r);
57760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
57860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
57960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetScript(String s) {
58043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        try {
58163975dde40e4ee8fd08225741b31d54eff115104Jack Palevich            byte[] bytes = s.getBytes("UTF-8");
58263975dde40e4ee8fd08225741b31d54eff115104Jack Palevich            nScriptCSetScript(bytes, 0, bytes.length);
58343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        } catch (java.io.UnsupportedEncodingException e) {
58443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            throw new RuntimeException(e);
58543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
58643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    }
58743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
58843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    public void scriptCSetScript(Resources resources, int id) {
58943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        InputStream is = resources.openRawResource(id);
59043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        try {
59143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            try {
59243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                scriptCSetScript(is);
59343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            } finally {
59443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                is.close();
59543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
59643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        } catch(IOException e) {
59743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            throw new Resources.NotFoundException();
59843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
59943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    }
60043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
60143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    public void  scriptCSetScript(InputStream is) throws IOException {
60243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        byte[] buf = new byte[1024];
60343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        int currentPos = 0;
60443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        while(true) {
60543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            int bytesLeft = buf.length - currentPos;
60643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            if (bytesLeft == 0) {
60743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                byte[] buf2 = new byte[buf.length * 2];
60843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                System.arraycopy(buf, 0, buf2, 0, buf.length);
60943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                buf = buf2;
61043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                bytesLeft = buf.length - currentPos;
61143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
61243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            int bytesRead = is.read(buf, currentPos, bytesLeft);
61343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            if (bytesRead <= 0) {
61443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                break;
61543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
61643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            currentPos += bytesRead;
61743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
61843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        nScriptCSetScript(buf, 0, currentPos);
61960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
62060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
62160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Script scriptCCreate() {
62260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nScriptCCreate();
62360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Script(id);
62460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
62560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
62660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
6271fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    // ProgramVertex
6281fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
6291fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public class ProgramVertex extends BaseObj {
6301fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        ProgramVertex(int id) {
63136e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
6321fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            mID = id;
6331fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
6341fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
6351fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        public void destroy() {
6361fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            nProgramVertexDestroy(mID);
6371fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            mID = 0;
6381fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
6391fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
6401fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        public void bindAllocation(int slot, Allocation va) {
6411fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            nProgramVertexBindAllocation(mID, slot, va.mID);
6421fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
6431fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
6441fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
6451fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public void programVertexBegin(Element in, Element out) {
6461fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        int inID = 0;
6471fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        int outID = 0;
6481fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        if (in != null) {
6491fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            inID = in.mID;
6501fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
6511fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        if (out != null) {
6521fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            outID = out.mID;
6531fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
6541fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        nProgramVertexBegin(inID, outID);
6551fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
6561fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
6571fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public void programVertexSetType(int slot, Type t) {
6581fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        nProgramVertexSetType(slot, t.mID);
6591fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
6601fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
6611fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public void programVertexSetTextureMatrixEnable(boolean enable) {
6621fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        nProgramVertexSetTextureMatrixEnable(enable);
6631fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
6641fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
665ee41112e1539de95596600fd2c6dada5d275217fJason Sams    public void programVertexAddLight(Light l) {
666ee41112e1539de95596600fd2c6dada5d275217fJason Sams        nProgramVertexAddLight(l.mID);
667ee41112e1539de95596600fd2c6dada5d275217fJason Sams    }
668ee41112e1539de95596600fd2c6dada5d275217fJason Sams
6691fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public ProgramVertex programVertexCreate() {
6701fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        int id = nProgramVertexCreate();
6711fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        return new ProgramVertex(id);
6721fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
6731fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
6741fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
6751fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    //////////////////////////////////////////////////////////////////////////////////
67660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // ProgramFragmentStore
67760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
67860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class ProgramFragmentStore extends BaseObj {
67960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ProgramFragmentStore(int id) {
68036e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
68160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
68260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
68360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
68460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
6853eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            nProgramFragmentStoreDestroy(mID);
68660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
68760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
68860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
68960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
69060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreBegin(Element in, Element out) {
69160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int inID = 0;
69260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int outID = 0;
69360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (in != null) {
69460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            inID = in.mID;
69560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
69660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (out != null) {
69760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            outID = out.mID;
69860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
69960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreBegin(inID, outID);
70060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
70160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
70260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDepthFunc(DepthFunc func) {
70360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDepthFunc(func.mID);
70460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
70560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
70660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDepthMask(boolean enable) {
70760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDepthMask(enable);
70860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
70960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
71060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a) {
71160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreColorMask(r,g,b,a);
71260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
71360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
71460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreBlendFunc(BlendSrcFunc src, BlendDstFunc dst) {
71560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreBlendFunc(src.mID, dst.mID);
71660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
71760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
71860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDitherEnable(boolean enable) {
71960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDither(enable);
72060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
72160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
72260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public ProgramFragmentStore programFragmentStoreCreate() {
72360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nProgramFragmentStoreCreate();
72460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new ProgramFragmentStore(id);
72560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
72660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
72760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
72860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // ProgramFragment
72960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
73060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class ProgramFragment extends BaseObj {
73160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ProgramFragment(int id) {
73236e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
73360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
73460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
73560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
73660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
7373eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            nProgramFragmentDestroy(mID);
73860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
73960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
74060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
74160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindTexture(Allocation va, int slot) {
74260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nProgramFragmentBindTexture(mID, slot, va.mID);
74360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
74460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
74502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        public void bindSampler(Sampler vs, int slot) {
74602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            nProgramFragmentBindSampler(mID, slot, vs.mID);
74702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
74860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
74960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
75060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentBegin(Element in, Element out) {
75160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int inID = 0;
75260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int outID = 0;
75360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (in != null) {
75460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            inID = in.mID;
75560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
75660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (out != null) {
75760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            outID = out.mID;
75860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
75960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentBegin(inID, outID);
76060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
76160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
76260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetType(int slot, Type t) {
76360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetType(slot, t.mID);
76460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
76560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
76660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetType(int slot, EnvMode t) {
76760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetEnvMode(slot, t.mID);
76860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
76960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
77060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetTexEnable(int slot, boolean enable) {
77160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetTexEnable(slot, enable);
77260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
77360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
774e6c8e9b8c7a83381c7dfbf86ac34e0302d397beeJason Sams    public void programFragmentSetTexEnvMode(int slot, EnvMode env) {
775e6c8e9b8c7a83381c7dfbf86ac34e0302d397beeJason Sams        nProgramFragmentSetEnvMode(slot, env.mID);
776e6c8e9b8c7a83381c7dfbf86ac34e0302d397beeJason Sams    }
777e6c8e9b8c7a83381c7dfbf86ac34e0302d397beeJason Sams
77860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public ProgramFragment programFragmentCreate() {
77960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nProgramFragmentCreate();
78060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new ProgramFragment(id);
78160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
78260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
78302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    //////////////////////////////////////////////////////////////////////////////////
78402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    // Sampler
78502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
78602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public class Sampler extends BaseObj {
78702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        Sampler(int id) {
78836e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
78902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
79002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
79102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
79202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        public void destroy() {
79302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            nSamplerDestroy(mID);
79402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = 0;
79502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
79602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
79702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
79802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public void samplerBegin() {
79902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        nSamplerBegin();
80002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
80102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
80202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public void samplerSet(SamplerParam p, SamplerValue v) {
80302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        nSamplerSet(p.mID, v.mID);
80402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
80502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
80602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public Sampler samplerCreate() {
80702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int id = nSamplerCreate();
80802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        return new Sampler(id);
80902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
81002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
811bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    //////////////////////////////////////////////////////////////////////////////////
812bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    // Light
813bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
814bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public class Light extends BaseObj {
815bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        Light(int id) {
81636e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
817bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            mID = id;
818bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        }
819bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
820bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        public void destroy() {
821bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            nLightDestroy(mID);
822bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            mID = 0;
823bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        }
824bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
825bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        public void setColor(float r, float g, float b) {
826bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            nLightSetColor(mID, r, g, b);
827bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        }
828bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
829bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        public void setPosition(float x, float y, float z) {
830bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            nLightSetPosition(mID, x, y, z);
831bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        }
832bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
833bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
834bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public void lightBegin() {
835bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        nLightBegin();
836bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
837bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
838bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public void lightSetIsMono(boolean isMono) {
839bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        nLightSetIsMono(isMono);
840bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
841bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
842bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public void lightSetIsLocal(boolean isLocal) {
843bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        nLightSetIsLocal(isLocal);
844bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
845bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
846bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public Light lightCreate() {
847bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        int id = nLightCreate();
848bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        return new Light(id);
849bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
85060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
85164676f3c21a07d650069315572811570cbf8f728Jason Sams    //////////////////////////////////////////////////////////////////////////////////
85264676f3c21a07d650069315572811570cbf8f728Jason Sams    // File
85364676f3c21a07d650069315572811570cbf8f728Jason Sams
85464676f3c21a07d650069315572811570cbf8f728Jason Sams    public class File extends BaseObj {
85564676f3c21a07d650069315572811570cbf8f728Jason Sams        File(int id) {
85636e612a488511940b61f09803b270aa1c61b68e0Jason Sams            super(RenderScript.this);
85764676f3c21a07d650069315572811570cbf8f728Jason Sams            mID = id;
85864676f3c21a07d650069315572811570cbf8f728Jason Sams        }
85964676f3c21a07d650069315572811570cbf8f728Jason Sams
86064676f3c21a07d650069315572811570cbf8f728Jason Sams        public void destroy() {
86164676f3c21a07d650069315572811570cbf8f728Jason Sams            //nLightDestroy(mID);
86264676f3c21a07d650069315572811570cbf8f728Jason Sams            mID = 0;
86364676f3c21a07d650069315572811570cbf8f728Jason Sams        }
86464676f3c21a07d650069315572811570cbf8f728Jason Sams    }
86564676f3c21a07d650069315572811570cbf8f728Jason Sams
86664676f3c21a07d650069315572811570cbf8f728Jason Sams    public File fileOpen(String s) throws IllegalStateException, IllegalArgumentException
86764676f3c21a07d650069315572811570cbf8f728Jason Sams    {
86864676f3c21a07d650069315572811570cbf8f728Jason Sams        if(s.length() < 1) {
86964676f3c21a07d650069315572811570cbf8f728Jason Sams            throw new IllegalArgumentException("fileOpen does not accept a zero length string.");
87064676f3c21a07d650069315572811570cbf8f728Jason Sams        }
87164676f3c21a07d650069315572811570cbf8f728Jason Sams
87264676f3c21a07d650069315572811570cbf8f728Jason Sams        try {
87364676f3c21a07d650069315572811570cbf8f728Jason Sams            byte[] bytes = s.getBytes("UTF-8");
87464676f3c21a07d650069315572811570cbf8f728Jason Sams            int id = nFileOpen(bytes);
87564676f3c21a07d650069315572811570cbf8f728Jason Sams            return new File(id);
87664676f3c21a07d650069315572811570cbf8f728Jason Sams        } catch (java.io.UnsupportedEncodingException e) {
87764676f3c21a07d650069315572811570cbf8f728Jason Sams            throw new RuntimeException(e);
87864676f3c21a07d650069315572811570cbf8f728Jason Sams        }
87964676f3c21a07d650069315572811570cbf8f728Jason Sams    }
88064676f3c21a07d650069315572811570cbf8f728Jason Sams
88164676f3c21a07d650069315572811570cbf8f728Jason Sams
88260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    ///////////////////////////////////////////////////////////////////////////////////
88360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Root state
88460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
88560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindRootScript(Script s) {
88660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindRootScript(s.mID);
88760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
88860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
88960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //public void contextBindSampler(Sampler s, int slot) {
89060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        //nContextBindSampler(s.mID);
89160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //}
89260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
89360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindProgramFragmentStore(ProgramFragmentStore pfs) {
89460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindProgramFragmentStore(pfs.mID);
89560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
89660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
89760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindProgramFragment(ProgramFragment pf) {
89860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindProgramFragment(pf.mID);
89960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
90060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
9010826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    public void contextBindProgramVertex(ProgramVertex pf) {
9020826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        nContextBindProgramVertex(pf.mID);
9030826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    }
9040826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams
90560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/*
90660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RsAdapter2D rsAdapter2DCreate ();
90760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DBindAllocation (RsAdapter2D adapt, RsAllocation alloc);
90860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DDestroy (RsAdapter2D adapter);
90960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DSetConstraint (RsAdapter2D adapter, RsDimension dim, uint32_t value);
91060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DData (RsAdapter2D adapter, const void * data);
91160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DSubData (RsAdapter2D adapter, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void * data);
91260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerBegin ();
91360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerSet (RsSamplerParam p, RsSamplerValue value);
91460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RsSampler rsSamplerCreate ();
91560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerBind (RsSampler sampler, RsAllocation alloc);
91660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich*/
91760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
91860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich}
91960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
92036e612a488511940b61f09803b270aa1c61b68e0Jason Sams
921