RenderScript.java revision 02fb2cb531035779a25dbf9595e0628ea40585b0
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
17df98851d2fccc00d7bc9adfdf1088d34e007ae1aJack Palevichpackage com.android.fountain;
1860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
1943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichimport java.io.InputStream;
2043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichimport java.io.IOException;
2143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
2260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.os.Bundle;
2343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichimport android.content.res.Resources;
2460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.util.Log;
2560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.util.Config;
2660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.Menu;
2760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.MenuItem;
2860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.Window;
2960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.View;
3060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.Surface;
31fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsimport android.graphics.Bitmap;
32fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsimport android.graphics.Color;
3360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
3460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichpublic class RenderScript {
3560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static final String LOG_TAG = "libRS_jni";
3660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static final boolean DEBUG  = false;
3760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
3860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
3960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams     /*
4260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     * We use a class initializer to allow the native code to cache some
4360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     * field offsets.
4460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     */
4560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static boolean sInitialized;
4660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private static void _nInit();
4760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    static {
4960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        sInitialized = false;
5060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        try {
5160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            System.loadLibrary("RS_jni");
5260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            _nInit();
5360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            sInitialized = true;
5460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        } catch (UnsatisfiedLinkError e) {
5560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            Log.d(LOG_TAG, "RenderScript JNI library not found!");
5660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
5760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
5860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
5960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nDeviceCreate();
6060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nDeviceDestroy(int dev);
6160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nContextCreate(int dev, Surface sur, int ver);
6260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextDestroy(int con);
6360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
6460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //void rsContextBindSampler (uint32_t slot, RsSampler sampler);
6560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //void rsContextBindRootScript (RsScript sampler);
6660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextBindRootScript(int script);
6760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextBindSampler(int sampler, int slot);
6860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextBindProgramFragmentStore(int pfs);
6960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextBindProgramFragment(int pf);
7060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
7160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nElementBegin();
7260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nElementAddPredefined(int predef);
7360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nElementAdd(int kind, int type, int norm, int bits);
7460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nElementCreate();
7560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nElementGetPredefined(int predef);
7660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nElementDestroy(int obj);
7760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
7860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTypeBegin(int elementID);
7960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTypeAdd(int dim, int val);
8060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nTypeCreate();
8160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTypeDestroy(int id);
8260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
8360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nAllocationCreateTyped(int type);
8460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nAllocationCreatePredefSized(int predef, int count);
8560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nAllocationCreateSized(int elem, int count);
86fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams    native private int  nAllocationCreateFromBitmap(int w, int h, int dstFmt, int srcFmt, boolean genMips, int[] data);
87fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams
8860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //native private int  nAllocationCreateFromBitmap(type.mID);
8960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationUploadToTexture(int alloc, int baseMioLevel);
9060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationDestroy(int alloc);
9160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationData(int id, int[] d);
9260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationData(int id, float[] d);
9360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationSubData1D(int id, int off, int count, int[] d);
9460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationSubData1D(int id, int off, int count, float[] d);
9560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d);
9660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d);
9760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
9860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshDestroy(int id);
9960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshBegin(int vertex, int index);
10060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddVertex_XY (float x, float y);
10160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddVertex_XYZ (float x, float y, float z);
10260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddVertex_XY_ST (float x, float y, float s, float t);
10360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddVertex_XYZ_ST (float x, float y, float z, float s, float t);
10460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddTriangle(int i1, int i2, int i3);
10560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nTriangleMeshCreate();
10660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
10760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DDestroy(int id);
10860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DBindAllocation(int ad, int alloc);
10960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DSetConstraint(int ad, int dim, int value);
11060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DData(int ad, int[] d);
11160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DSubData(int ad, int off, int count, int[] d);
11260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DData(int ad, float[] d);
11360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DSubData(int ad, int off, int count, float[] d);
11460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nAdapter1DCreate();
11560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
11660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptDestroy(int script);
11760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptBindAllocation(int vtm, int alloc, int slot);
11860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCBegin();
11960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCSetClearColor(float r, float g, float b, float a);
12060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCSetClearDepth(float depth);
12160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCSetClearStencil(int stencil);
12260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCAddType(int type);
12360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCSetRoot(boolean isRoot);
12443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    native private void nScriptCSetScript(byte[] script, int offset, int length);
12560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nScriptCCreate();
12660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
12702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    native private void nSamplerDestroy(int sampler);
12802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    native private void nSamplerBegin();
12902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    native private void nSamplerSet(int param, int value);
13002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    native private int  nSamplerCreate();
13160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
13260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreBegin(int in, int out);
13360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreDepthFunc(int func);
13460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreDepthMask(boolean enable);
13560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a);
13660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreBlendFunc(int src, int dst);
13760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreDither(boolean enable);
13860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nProgramFragmentStoreCreate();
13960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
14060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentBegin(int in, int out);
14160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentBindTexture(int vpf, int slot, int a);
14260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentBindSampler(int vpf, int slot, int s);
14360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentSetType(int slot, int vt);
14460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentSetEnvMode(int slot, int env);
14560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentSetTexEnable(int slot, boolean enable);
14660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nProgramFragmentCreate();
14760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
14860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
14960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private int     mDev;
15060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private int     mContext;
15160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private Surface mSurface;
15260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
15360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
15460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
15560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    ///////////////////////////////////////////////////////////////////////////////////
15643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    //
15760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
15860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RenderScript(Surface sur) {
15960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mSurface = sur;
16060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mDev = nDeviceCreate();
16160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mContext = nContextCreate(mDev, mSurface, 0);
16260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
16360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
16460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private class BaseObj {
16560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BaseObj() {
16660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
16760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
16860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
16960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
17060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        protected void finalize() throws Throwable
17160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        {
17260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            if (mID != 0) {
17343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                Log.v(LOG_TAG,
17460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich                      "Element finalized without having released the RS reference.");
17560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            }
17660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            super.finalize();
17760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
17860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
17960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
18043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
18160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
18260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Element
18360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
18460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum ElementPredefined {
18560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_U8 (0),
18660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_I8 (1),
18760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_U16 (2),
18860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_I16 (3),
18960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_U32 (4),
19060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_I32 (5),
19160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_FLOAT (6),
19260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
193fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        A_8 (7),
194fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        RGB_565 (8),
195fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        RGBA_5551 (9),
196fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        RGBA_4444 (10),
197fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        RGB_888 (11),
198fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        RGBA_8888 (12),
199fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams
200fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        INDEX_16 (13),
201fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        INDEX_32 (14),
202fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        XY_F32 (15),
203fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        XYZ_F32 (16),
204fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        ST_XY_F32 (17),
205fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        ST_XYZ_F32 (18),
206fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        NORM_XYZ_F32 (19),
207fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        NORM_ST_XYZ_F32 (20);
20860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
20960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
21060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ElementPredefined(int id) {
21160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
21260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
21360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
21460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
21560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum DataType {
21660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        FLOAT (0),
21760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        UNSIGNED (1),
21860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SIGNED (2);
21960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
22060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
22160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DataType(int id) {
22260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
22360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
22460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
22560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
22660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum DataKind {
22760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER (0),
22860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        RED (1),
22960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        GREEN (2),
23060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BLUE (3),
23160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ALPHA (4),
23260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LUMINANCE (5),
23360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        INTENSITY (6),
23460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        X (7),
23560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Y (8),
23660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Z (9),
23760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        W (10),
23860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        S (11),
23960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        T (12),
24060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Q (13),
24160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        R (14),
24260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NX (15),
24360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NY (16),
24460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NZ (17),
24560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        INDEX (18);
24660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
24760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
24860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DataKind(int id) {
24960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
25060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
25160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
25260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
25360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum DepthFunc {
25460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ALWAYS (0),
25560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LESS (1),
25660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LEQUAL (2),
25760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        GREATER (3),
25860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        GEQUAL (4),
25960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        EQUAL (5),
26060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NOTEQUAL (6);
26160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
26260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
26360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DepthFunc(int id) {
26460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
26560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
26660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
26760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
26860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum BlendSrcFunc {
26960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ZERO (0),
27060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE (1),
27160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_COLOR (2),
27260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_COLOR (3),
27360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA (4),
27460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_ALPHA (5),
27560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_ALPHA (6),
27660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_ALPA (7),
27760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA_SATURATE (8);
27860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
27960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
28060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BlendSrcFunc(int id) {
28160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
28260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
28360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
28460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
28560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum BlendDstFunc {
28660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ZERO (0),
28760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE (1),
28860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_COLOR (2),
28960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_COLOR (3),
29060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA (4),
29160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_ALPHA (5),
29260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_ALPHA (6),
29360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_ALPA (7);
29460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
29560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
29660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BlendDstFunc(int id) {
29760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
29860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
29960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
30060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
30160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum EnvMode {
30260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        REPLACE (0),
30360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        MODULATE (1),
30460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DECAL (2);
30560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
30660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
30760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        EnvMode(int id) {
30860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
30960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
31060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
31160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
31202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public enum SamplerParam {
31302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        FILTER_MIN (0),
31402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        FILTER_MAG (1),
31502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_S (2),
31602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_T (3),
31702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_R (4);
31802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
31902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int mID;
32002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        SamplerParam(int id) {
32102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
32202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
32302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
32402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
32502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public enum SamplerValue {
32602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        NEAREST (0),
32702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        LINEAR (1),
32802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        LINEAR_MIP_LINEAR (2),
32902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP (3),
33002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        CLAMP (4);
33102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
33202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int mID;
33302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        SamplerValue(int id) {
33402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
33502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
33602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
33702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
33802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
33902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
34060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Element extends BaseObj {
34160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Element(int id) {
34260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
34360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
34460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
34560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void estroy() {
34660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nElementDestroy(mID);
34760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
34860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
34960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
35060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
35160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void elementBegin() {
35260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nElementBegin();
35360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
35460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
35560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void elementAddPredefined(ElementPredefined e) {
35660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nElementAddPredefined(e.mID);
35760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
35860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
35960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void elementAdd(DataType dt, DataKind dk, boolean isNormalized, int bits) {
36060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int norm = 0;
36160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (isNormalized) {
36260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            norm = 1;
36360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
36460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nElementAdd(dt.mID, dk.mID, norm, bits);
36560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
36660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
36760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Element elementCreate() {
36860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nElementCreate();
36960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Element(id);
37060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
37160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
37260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Element elementGetPredefined(ElementPredefined predef) {
37360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nElementGetPredefined(predef.mID);
37460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Element(id);
37560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
37660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
37760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
37860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
37960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Type
38060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
38160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum Dimension {
38260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        X (0),
38360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Y (1),
38460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Z (2),
38560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LOD (3),
38660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        FACE (4),
38760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ARRAY_0 (100);
38860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
38960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
39060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Dimension(int id) {
39160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
39260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
39360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
39460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
39560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Type extends BaseObj {
39660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Type(int id) {
39760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
39860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
39960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
40060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
40160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nTypeDestroy(mID);
40260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
40360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
40460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
40560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
40660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void typeBegin(Element e) {
40760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTypeBegin(e.mID);
40860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
40960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
41060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void typeAdd(Dimension d, int value) {
41160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTypeAdd(d.mID, value);
41260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
41360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
41460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Type typeCreate() {
41560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nTypeCreate();
41660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Type(id);
41760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
41860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
41960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
42060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
42160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Allocation
42260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
42360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Allocation extends BaseObj {
42460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Allocation(int id) {
42560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
42660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
42760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
42860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void uploadToTexture(int baseMipLevel) {
42960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationUploadToTexture(mID, baseMipLevel);
43060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
43160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
43260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
43360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationDestroy(mID);
43460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
43560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
43660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
43760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(int[] d) {
43860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationData(mID, d);
43960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
44060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
44160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(float[] d) {
44260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationData(mID, d);
44360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
44460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
44560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData1D(int off, int count, int[] d) {
44660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData1D(mID, off, count, d);
44760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
44860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
44960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData1D(int off, int count, float[] d) {
45060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData1D(mID, off, count, d);
45160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
45260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
45360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
45460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData2D(mID, xoff, yoff, w, h, d);
45560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
45660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
45760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
45860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData2D(mID, xoff, yoff, w, h, d);
45960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
46060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
46160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
46260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Allocation allocationCreateTyped(Type type) {
46360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAllocationCreateTyped(type.mID);
46460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Allocation(id);
46560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
46660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
46760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Allocation allocationCreatePredefSized(ElementPredefined e, int count) {
46860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAllocationCreatePredefSized(e.mID, count);
46960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Allocation(id);
47060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
47160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
47260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Allocation allocationCreateSized(Element e, int count) {
47360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAllocationCreateSized(e.mID, count);
47460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Allocation(id);
47560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
47660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
477fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams    public Allocation allocationCreateFromBitmap(Bitmap b, ElementPredefined dstFmt, boolean genMips) {
478fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        int w = b.getWidth();
479fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        int h = b.getHeight();
480fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        int[] data = new int[w * h];
481fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams
482fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        int outPtr = 0;
483fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        for(int y=0; y < h; y++) {
484fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            for(int x=0; x < w; x++) {
485fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams                data[outPtr] = b.getPixel(x, y);
486fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams                outPtr++;
487fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            }
488fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        }
489fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams
490fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        int srcFmt = 0;
491fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        /*
492fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        switch(b.getConfig()) {
493fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        case ALPHA_8:
494fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            srcFmt = ElementPredefined.A_8.mID;
495fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            break;
496fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        case ARGB_4444:
497fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            srcFmt = ElementPredefined.RGBA_4444.mID;
498fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            break;
499fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        case ARGB_8888:
500fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            srcFmt = ElementPredefined.RGBA_8888.mID;
501fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            break;
502fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        case RGB_565:
503fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            srcFmt = ElementPredefined.RGB_565.mID;
504fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            break;
505fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        default:
506fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams            Log.e(LOG_TAG, "allocationCreateFromBitmap, unknown bitmap format");
50743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
50843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        */
509fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams
510fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        srcFmt = ElementPredefined.RGBA_8888.mID;
511fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams
512fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        int id = nAllocationCreateFromBitmap(w, h, dstFmt.mID, srcFmt, genMips, data);
513fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        return new Allocation(id);
514fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams    }
51560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
51660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
51760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Adapter1D
51860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
51960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Adapter1D extends BaseObj {
52060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Adapter1D(int id) {
52160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
52260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
52360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
52460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
52560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DDestroy(mID);
52660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
52760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
52860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
52960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindAllocation(Allocation a) {
53060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DBindAllocation(mID, a.mID);
53160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
53260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
53360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void setConstraint(Dimension dim, int value) {
53460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSetConstraint(mID, dim.mID, value);
53560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
53660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
53760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(int[] d) {
53860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DData(mID, d);
53960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
54060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
54160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData(int off, int count, int[] d) {
54260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSubData(mID, off, count, d);
54360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
54460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
54560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(float[] d) {
54660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DData(mID, d);
54760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
54860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
54960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData(int off, int count, float[] d) {
55060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSubData(mID, off, count, d);
55160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
55260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
55360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
55460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Adapter1D adapter1DCreate() {
55560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAdapter1DCreate();
55660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Adapter1D(id);
55760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
55860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
55960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
56060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
56160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Triangle Mesh
56260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
56360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class TriangleMesh extends BaseObj {
56460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        TriangleMesh(int id) {
56560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
56660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
56760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
56860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
56960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nTriangleMeshDestroy(mID);
57060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
57160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
57260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
57360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
57460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshBegin(Element vertex, Element index) {
57560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshBegin(vertex.mID, index.mID);
57660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
57760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
57860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XY(float x, float y) {
57960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XY(x, y);
58060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
58160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
58260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XYZ(float x, float y, float z) {
58360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XYZ(x, y, z);
58460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
58560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
58660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XY_ST(float x, float y, float s, float t) {
58760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XY_ST(x, y, s, t);
58860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
58960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
59060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XYZ_ST(float x, float y, float z, float s, float t) {
59160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XYZ_ST(x, y, z, s, t);
59260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
59360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
59460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddTriangle(int i1, int i2, int i3) {
59560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddTriangle(i1, i2, i3);
59660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
59760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
59860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public TriangleMesh triangleMeshCreate() {
59960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nTriangleMeshCreate();
60060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new TriangleMesh(id);
60160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
60260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
60360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
60460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Script
60560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
60660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Script extends BaseObj {
60760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Script(int id) {
60860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
60960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
61060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
61160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
61260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nScriptDestroy(mID);
61360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
61460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
61560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
61660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindAllocation(Allocation va, int slot) {
61760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nScriptBindAllocation(mID, va.mID, slot);
61860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
61960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
62060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
62160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCBegin() {
62260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCBegin();
62360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
62460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
62560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearColor(float r, float g, float b, float a) {
62660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearColor(r, g, b, a);
62760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
62860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
62960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearDepth(float d) {
63060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearDepth(d);
63160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
63260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
63360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearStencil(int stencil) {
63460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearStencil(stencil);
63560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
63660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
63760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCAddType(Type t) {
63860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCAddType(t.mID);
63960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
64060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
64160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetRoot(boolean r) {
64260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetRoot(r);
64360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
64460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
64560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetScript(String s) {
64643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        try {
64763975dde40e4ee8fd08225741b31d54eff115104Jack Palevich            byte[] bytes = s.getBytes("UTF-8");
64863975dde40e4ee8fd08225741b31d54eff115104Jack Palevich            nScriptCSetScript(bytes, 0, bytes.length);
64943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        } catch (java.io.UnsupportedEncodingException e) {
65043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            throw new RuntimeException(e);
65143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
65243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    }
65343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
65443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    public void scriptCSetScript(Resources resources, int id) {
65543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        InputStream is = resources.openRawResource(id);
65643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        try {
65743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            try {
65843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                scriptCSetScript(is);
65943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            } finally {
66043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                is.close();
66143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
66243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        } catch(IOException e) {
66343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            throw new Resources.NotFoundException();
66443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
66543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    }
66643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
66743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    public void  scriptCSetScript(InputStream is) throws IOException {
66843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        byte[] buf = new byte[1024];
66943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        int currentPos = 0;
67043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        while(true) {
67143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            int bytesLeft = buf.length - currentPos;
67243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            if (bytesLeft == 0) {
67343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                byte[] buf2 = new byte[buf.length * 2];
67443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                System.arraycopy(buf, 0, buf2, 0, buf.length);
67543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                buf = buf2;
67643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                bytesLeft = buf.length - currentPos;
67743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
67843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            int bytesRead = is.read(buf, currentPos, bytesLeft);
67943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            if (bytesRead <= 0) {
68043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                break;
68143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
68243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            currentPos += bytesRead;
68343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
68443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        nScriptCSetScript(buf, 0, currentPos);
68560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
68660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
68760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Script scriptCCreate() {
68860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nScriptCCreate();
68960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Script(id);
69060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
69160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
69260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
69360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // ProgramFragmentStore
69460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
69560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class ProgramFragmentStore extends BaseObj {
69660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ProgramFragmentStore(int id) {
69760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
69860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
69960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
70060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
70160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nScriptDestroy(mID);
70260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
70360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
70460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
70560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
70660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreBegin(Element in, Element out) {
70760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int inID = 0;
70860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int outID = 0;
70960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (in != null) {
71060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            inID = in.mID;
71160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
71260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (out != null) {
71360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            outID = out.mID;
71460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
71560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreBegin(inID, outID);
71660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
71760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
71860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDepthFunc(DepthFunc func) {
71960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDepthFunc(func.mID);
72060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
72160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
72260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDepthMask(boolean enable) {
72360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDepthMask(enable);
72460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
72560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
72660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a) {
72760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreColorMask(r,g,b,a);
72860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
72960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
73060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreBlendFunc(BlendSrcFunc src, BlendDstFunc dst) {
73160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreBlendFunc(src.mID, dst.mID);
73260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
73360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
73460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDitherEnable(boolean enable) {
73560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDither(enable);
73660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
73760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
73860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public ProgramFragmentStore programFragmentStoreCreate() {
73960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nProgramFragmentStoreCreate();
74060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new ProgramFragmentStore(id);
74160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
74260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
74360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
74460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // ProgramFragment
74560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
74660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class ProgramFragment extends BaseObj {
74760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ProgramFragment(int id) {
74860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
74960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
75060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
75160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
75260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nScriptDestroy(mID);
75360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
75460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
75560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
75660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindTexture(Allocation va, int slot) {
75760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nProgramFragmentBindTexture(mID, slot, va.mID);
75860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
75960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
76002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        public void bindSampler(Sampler vs, int slot) {
76102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            nProgramFragmentBindSampler(mID, slot, vs.mID);
76202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
76360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
76460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
76560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentBegin(Element in, Element out) {
76660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int inID = 0;
76760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int outID = 0;
76860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (in != null) {
76960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            inID = in.mID;
77060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
77160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (out != null) {
77260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            outID = out.mID;
77360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
77460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentBegin(inID, outID);
77560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
77660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
77760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetType(int slot, Type t) {
77860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetType(slot, t.mID);
77960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
78060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
78160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetType(int slot, EnvMode t) {
78260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetEnvMode(slot, t.mID);
78360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
78460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
78560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetTexEnable(int slot, boolean enable) {
78660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetTexEnable(slot, enable);
78760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
78860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
78960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public ProgramFragment programFragmentCreate() {
79060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nProgramFragmentCreate();
79160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new ProgramFragment(id);
79260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
79360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
79402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    //////////////////////////////////////////////////////////////////////////////////
79502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    // Sampler
79602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
79702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public class Sampler extends BaseObj {
79802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        Sampler(int id) {
79902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
80002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
80102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
80202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        public void destroy() {
80302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            nSamplerDestroy(mID);
80402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = 0;
80502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
80602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
80702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
80802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public void samplerBegin() {
80902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        nSamplerBegin();
81002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
81102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
81202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public void samplerSet(SamplerParam p, SamplerValue v) {
81302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        nSamplerSet(p.mID, v.mID);
81402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
81502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
81602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public Sampler samplerCreate() {
81702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int id = nSamplerCreate();
81802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        return new Sampler(id);
81902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
82002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
82160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
82260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    ///////////////////////////////////////////////////////////////////////////////////
82360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Root state
82460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
82560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindRootScript(Script s) {
82660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindRootScript(s.mID);
82760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
82860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
82960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //public void contextBindSampler(Sampler s, int slot) {
83060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        //nContextBindSampler(s.mID);
83160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //}
83260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
83360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindProgramFragmentStore(ProgramFragmentStore pfs) {
83460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindProgramFragmentStore(pfs.mID);
83560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
83660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
83760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindProgramFragment(ProgramFragment pf) {
83860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindProgramFragment(pf.mID);
83960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
84060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
84160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/*
84260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RsAdapter2D rsAdapter2DCreate ();
84360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DBindAllocation (RsAdapter2D adapt, RsAllocation alloc);
84460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DDestroy (RsAdapter2D adapter);
84560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DSetConstraint (RsAdapter2D adapter, RsDimension dim, uint32_t value);
84660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DData (RsAdapter2D adapter, const void * data);
84760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DSubData (RsAdapter2D adapter, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void * data);
84860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerBegin ();
84960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerSet (RsSamplerParam p, RsSamplerValue value);
85060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RsSampler rsSamplerCreate ();
85160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerBind (RsSampler sampler, RsAllocation alloc);
85260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich*/
85360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
85460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich}
85560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
856