RenderScript.java revision 43702d8925c54360ad5f9f66b0d35d61d59f6910
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 4160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /* 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 Log.e(LOG_TAG, "*** Renderscript INIT"); 5360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich _nInit(); 5460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Log.e(LOG_TAG, "*** Renderscript INIT 3"); 5560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = true; 5660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } catch (UnsatisfiedLinkError e) { 5760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Log.d(LOG_TAG, "RenderScript JNI library not found!"); 5860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 5960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 6060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 6160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nDeviceCreate(); 6260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nDeviceDestroy(int dev); 6360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nContextCreate(int dev, Surface sur, int ver); 6460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nContextDestroy(int con); 6560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 6660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //void rsContextBindSampler (uint32_t slot, RsSampler sampler); 6760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //void rsContextBindRootScript (RsScript sampler); 6860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nContextBindRootScript(int script); 6960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nContextBindSampler(int sampler, int slot); 7060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nContextBindProgramFragmentStore(int pfs); 7160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nContextBindProgramFragment(int pf); 7260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 7360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nElementBegin(); 7460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nElementAddPredefined(int predef); 7560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nElementAdd(int kind, int type, int norm, int bits); 7660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nElementCreate(); 7760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nElementGetPredefined(int predef); 7860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nElementDestroy(int obj); 7960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 8060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTypeBegin(int elementID); 8160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTypeAdd(int dim, int val); 8260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nTypeCreate(); 8360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTypeDestroy(int id); 8460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 8560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nAllocationCreateTyped(int type); 8660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nAllocationCreatePredefSized(int predef, int count); 8760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nAllocationCreateSized(int elem, int count); 88fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams native private int nAllocationCreateFromBitmap(int w, int h, int dstFmt, int srcFmt, boolean genMips, int[] data); 89fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 9060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //native private int nAllocationCreateFromBitmap(type.mID); 9160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationUploadToTexture(int alloc, int baseMioLevel); 9260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationDestroy(int alloc); 9360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationData(int id, int[] d); 9460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationData(int id, float[] d); 9560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationSubData1D(int id, int off, int count, int[] d); 9660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationSubData1D(int id, int off, int count, float[] d); 9760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d); 9860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d); 9960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 10060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshDestroy(int id); 10160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshBegin(int vertex, int index); 10260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddVertex_XY (float x, float y); 10360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddVertex_XYZ (float x, float y, float z); 10460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddVertex_XY_ST (float x, float y, float s, float t); 10560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddVertex_XYZ_ST (float x, float y, float z, float s, float t); 10660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddTriangle(int i1, int i2, int i3); 10760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nTriangleMeshCreate(); 10860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 10960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DDestroy(int id); 11060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DBindAllocation(int ad, int alloc); 11160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DSetConstraint(int ad, int dim, int value); 11260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DData(int ad, int[] d); 11360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DSubData(int ad, int off, int count, int[] d); 11460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DData(int ad, float[] d); 11560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DSubData(int ad, int off, int count, float[] d); 11660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nAdapter1DCreate(); 11760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 11860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptDestroy(int script); 11960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptBindAllocation(int vtm, int alloc, int slot); 12060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCBegin(); 12160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCSetClearColor(float r, float g, float b, float a); 12260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCSetClearDepth(float depth); 12360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCSetClearStencil(int stencil); 12460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCAddType(int type); 12560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCSetRoot(boolean isRoot); 12643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich native private void nScriptCSetScript(byte[] script, int offset, int length); 12760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nScriptCCreate(); 12860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 12960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 13060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreBegin(int in, int out); 13160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreDepthFunc(int func); 13260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreDepthMask(boolean enable); 13360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a); 13460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreBlendFunc(int src, int dst); 13560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreDither(boolean enable); 13660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nProgramFragmentStoreCreate(); 13760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 13860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentBegin(int in, int out); 13960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentBindTexture(int vpf, int slot, int a); 14060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentBindSampler(int vpf, int slot, int s); 14160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentSetType(int slot, int vt); 14260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentSetEnvMode(int slot, int env); 14360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentSetTexEnable(int slot, boolean enable); 14460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nProgramFragmentCreate(); 14560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 14660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 14760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private int mDev; 14860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private int mContext; 14960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private Surface mSurface; 15060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 15160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 15260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 15360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 15443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich // 15560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 15660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RenderScript(Surface sur) { 15760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mSurface = sur; 15860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mDev = nDeviceCreate(); 15960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mContext = nContextCreate(mDev, mSurface, 0); 16060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 16160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 16260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private class BaseObj { 16360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich BaseObj() { 16460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 16560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 16660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 16760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 16860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich protected void finalize() throws Throwable 16960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich { 17060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (mID != 0) { 17143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich Log.v(LOG_TAG, 17260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich "Element finalized without having released the RS reference."); 17360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 17460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich super.finalize(); 17560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 17660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 17760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 17843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 17960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 18060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Element 18160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 18260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum ElementPredefined { 18360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_U8 (0), 18460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_I8 (1), 18560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_U16 (2), 18660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_I16 (3), 18760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_U32 (4), 18860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_I32 (5), 18960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_FLOAT (6), 19060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 191fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams A_8 (7), 192fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGB_565 (8), 193fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGBA_5551 (9), 194fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGBA_4444 (10), 195fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGB_888 (11), 196fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGBA_8888 (12), 197fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 198fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams INDEX_16 (13), 199fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams INDEX_32 (14), 200fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams XY_F32 (15), 201fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams XYZ_F32 (16), 202fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams ST_XY_F32 (17), 203fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams ST_XYZ_F32 (18), 204fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams NORM_XYZ_F32 (19), 205fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams NORM_ST_XYZ_F32 (20); 20660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 20760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 20860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ElementPredefined(int id) { 20960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 21060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 21160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 21260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 21360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum DataType { 21460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich FLOAT (0), 21560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich UNSIGNED (1), 21660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SIGNED (2); 21760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 21860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 21960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DataType(int id) { 22060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 22160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 22260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 22360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 22460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum DataKind { 22560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER (0), 22660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RED (1), 22760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich GREEN (2), 22860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich BLUE (3), 22960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ALPHA (4), 23060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich LUMINANCE (5), 23160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich INTENSITY (6), 23260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich X (7), 23360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Y (8), 23460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Z (9), 23560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich W (10), 23660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich S (11), 23760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich T (12), 23860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Q (13), 23960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich R (14), 24060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich NX (15), 24160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich NY (16), 24260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich NZ (17), 24360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich INDEX (18); 24460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 24560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 24660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DataKind(int id) { 24760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 24860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 24960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 25060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 25160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum DepthFunc { 25260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ALWAYS (0), 25360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich LESS (1), 25460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich LEQUAL (2), 25560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich GREATER (3), 25660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich GEQUAL (4), 25760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich EQUAL (5), 25860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich NOTEQUAL (6); 25960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 26060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 26160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DepthFunc(int id) { 26260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 26360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 26460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 26560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 26660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum BlendSrcFunc { 26760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ZERO (0), 26860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE (1), 26960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DST_COLOR (2), 27060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_DST_COLOR (3), 27160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SRC_ALPHA (4), 27260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_SRC_ALPHA (5), 27360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DST_ALPHA (6), 27460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_DST_ALPA (7), 27560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SRC_ALPHA_SATURATE (8); 27660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 27760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 27860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich BlendSrcFunc(int id) { 27960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 28060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 28160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 28260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 28360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum BlendDstFunc { 28460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ZERO (0), 28560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE (1), 28660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SRC_COLOR (2), 28760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_SRC_COLOR (3), 28860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SRC_ALPHA (4), 28960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_SRC_ALPHA (5), 29060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DST_ALPHA (6), 29160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_DST_ALPA (7); 29260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 29360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 29460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich BlendDstFunc(int id) { 29560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 29660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 29760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 29860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 29960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum EnvMode { 30060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich REPLACE (0), 30160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich MODULATE (1), 30260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DECAL (2); 30360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 30460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 30560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich EnvMode(int id) { 30660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 30760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 30860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 30960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 31060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Element extends BaseObj { 31160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Element(int id) { 31260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 31360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 31460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 31560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void estroy() { 31660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nElementDestroy(mID); 31760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 31860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 31960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 32060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 32160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void elementBegin() { 32260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nElementBegin(); 32360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 32460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 32560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void elementAddPredefined(ElementPredefined e) { 32660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nElementAddPredefined(e.mID); 32760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 32860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 32960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void elementAdd(DataType dt, DataKind dk, boolean isNormalized, int bits) { 33060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int norm = 0; 33160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (isNormalized) { 33260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich norm = 1; 33360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 33460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nElementAdd(dt.mID, dk.mID, norm, bits); 33560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 33660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 33760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Element elementCreate() { 33860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nElementCreate(); 33960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Element(id); 34060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 34160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 34260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Element elementGetPredefined(ElementPredefined predef) { 34360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nElementGetPredefined(predef.mID); 34460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Element(id); 34560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 34660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 34760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 34860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 34960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Type 35060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 35160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum Dimension { 35260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich X (0), 35360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Y (1), 35460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Z (2), 35560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich LOD (3), 35660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich FACE (4), 35760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ARRAY_0 (100); 35860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 35960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 36060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Dimension(int id) { 36160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 36260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 36360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 36460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 36560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Type extends BaseObj { 36660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Type(int id) { 36760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 36860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 36960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 37060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 37160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTypeDestroy(mID); 37260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 37360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 37460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 37560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 37660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void typeBegin(Element e) { 37760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTypeBegin(e.mID); 37860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 37960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 38060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void typeAdd(Dimension d, int value) { 38160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTypeAdd(d.mID, value); 38260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 38360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 38460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Type typeCreate() { 38560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nTypeCreate(); 38660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Type(id); 38760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 38860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 38960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 39060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 39160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Allocation 39260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 39360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Allocation extends BaseObj { 39460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Allocation(int id) { 39560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 39660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 39760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 39860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void uploadToTexture(int baseMipLevel) { 39960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationUploadToTexture(mID, baseMipLevel); 40060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 40160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 40260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 40360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationDestroy(mID); 40460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 40560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 40660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 40760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void data(int[] d) { 40860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationData(mID, d); 40960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 41060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 41160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void data(float[] d) { 41260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationData(mID, d); 41360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 41460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 41560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData1D(int off, int count, int[] d) { 41660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationSubData1D(mID, off, count, d); 41760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 41860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 41960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData1D(int off, int count, float[] d) { 42060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationSubData1D(mID, off, count, d); 42160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 42260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 42360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData2D(int xoff, int yoff, int w, int h, int[] d) { 42460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationSubData2D(mID, xoff, yoff, w, h, d); 42560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 42660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 42760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData2D(int xoff, int yoff, int w, int h, float[] d) { 42860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationSubData2D(mID, xoff, yoff, w, h, d); 42960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 43060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 43160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 43260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Allocation allocationCreateTyped(Type type) { 43360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nAllocationCreateTyped(type.mID); 43460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Allocation(id); 43560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 43660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 43760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Allocation allocationCreatePredefSized(ElementPredefined e, int count) { 43860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nAllocationCreatePredefSized(e.mID, count); 43960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Allocation(id); 44060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 44160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 44260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Allocation allocationCreateSized(Element e, int count) { 44360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nAllocationCreateSized(e.mID, count); 44460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Allocation(id); 44560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 44660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 447fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams public Allocation allocationCreateFromBitmap(Bitmap b, ElementPredefined dstFmt, boolean genMips) { 448fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int w = b.getWidth(); 449fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int h = b.getHeight(); 450fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int[] data = new int[w * h]; 451fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 452fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int outPtr = 0; 453fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams for(int y=0; y < h; y++) { 454fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams for(int x=0; x < w; x++) { 455fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams data[outPtr] = b.getPixel(x, y); 456fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams outPtr++; 457fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams } 458fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams } 459fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 460fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int srcFmt = 0; 461fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams /* 462fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams switch(b.getConfig()) { 463fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams case ALPHA_8: 464fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.A_8.mID; 465fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams break; 466fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams case ARGB_4444: 467fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.RGBA_4444.mID; 468fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams break; 469fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams case ARGB_8888: 470fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.RGBA_8888.mID; 471fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams break; 472fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams case RGB_565: 473fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.RGB_565.mID; 474fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams break; 475fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams default: 476fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams Log.e(LOG_TAG, "allocationCreateFromBitmap, unknown bitmap format"); 47743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 47843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich */ 479fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 480fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.RGBA_8888.mID; 481fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 482fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int id = nAllocationCreateFromBitmap(w, h, dstFmt.mID, srcFmt, genMips, data); 483fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams return new Allocation(id); 484fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams } 48560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 48660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 48760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Adapter1D 48860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 48960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Adapter1D extends BaseObj { 49060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Adapter1D(int id) { 49160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 49260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 49360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 49460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 49560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DDestroy(mID); 49660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 49760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 49860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 49960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void bindAllocation(Allocation a) { 50060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DBindAllocation(mID, a.mID); 50160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 50260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 50360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void setConstraint(Dimension dim, int value) { 50460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DSetConstraint(mID, dim.mID, value); 50560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 50660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 50760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void data(int[] d) { 50860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DData(mID, d); 50960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 51060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 51160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData(int off, int count, int[] d) { 51260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DSubData(mID, off, count, d); 51360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 51460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 51560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void data(float[] d) { 51660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DData(mID, d); 51760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 51860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 51960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData(int off, int count, float[] d) { 52060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DSubData(mID, off, count, d); 52160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 52260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 52360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 52460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Adapter1D adapter1DCreate() { 52560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nAdapter1DCreate(); 52660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Adapter1D(id); 52760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 52860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 52960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 53060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 53160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Triangle Mesh 53260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 53360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class TriangleMesh extends BaseObj { 53460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich TriangleMesh(int id) { 53560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 53660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 53760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 53860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 53960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshDestroy(mID); 54060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 54160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 54260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 54360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 54460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshBegin(Element vertex, Element index) { 54560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshBegin(vertex.mID, index.mID); 54660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 54760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 54860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XY(float x, float y) { 54960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XY(x, y); 55060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 55160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 55260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XYZ(float x, float y, float z) { 55360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XYZ(x, y, z); 55460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 55560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 55660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XY_ST(float x, float y, float s, float t) { 55760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XY_ST(x, y, s, t); 55860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 55960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 56060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XYZ_ST(float x, float y, float z, float s, float t) { 56160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XYZ_ST(x, y, z, s, t); 56260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 56360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 56460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddTriangle(int i1, int i2, int i3) { 56560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddTriangle(i1, i2, i3); 56660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 56760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 56860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public TriangleMesh triangleMeshCreate() { 56960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nTriangleMeshCreate(); 57060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new TriangleMesh(id); 57160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 57260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 57360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 57460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Script 57560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 57660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Script extends BaseObj { 57760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Script(int id) { 57860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 57960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 58060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 58160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 58260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptDestroy(mID); 58360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 58460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 58560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 58660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void bindAllocation(Allocation va, int slot) { 58760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptBindAllocation(mID, va.mID, slot); 58860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 58960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 59060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 59160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCBegin() { 59260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCBegin(); 59360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 59460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 59560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetClearColor(float r, float g, float b, float a) { 59660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCSetClearColor(r, g, b, a); 59760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 59860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 59960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetClearDepth(float d) { 60060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCSetClearDepth(d); 60160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 60260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 60360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetClearStencil(int stencil) { 60460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCSetClearStencil(stencil); 60560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 60660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 60760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCAddType(Type t) { 60860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCAddType(t.mID); 60960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 61060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 61160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetRoot(boolean r) { 61260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCSetRoot(r); 61360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 61460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 61560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetScript(String s) { 61643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich try { 61743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich scriptCSetScript(s.getBytes("UTF-8")); 61843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } catch (java.io.UnsupportedEncodingException e) { 61943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich throw new RuntimeException(e); 62043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 62143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 62243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 62343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich public void scriptCSetScript(byte[] utf8Bytes) { 62443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich scriptCSetScript(utf8Bytes, 0, utf8Bytes.length); 62543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 62643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 62743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich public void scriptCSetScript(byte[] utf8Bytes, int offset, int length) { 62843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich nScriptCSetScript(utf8Bytes, offset, length); 62943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 63043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 63143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich public void scriptCSetScript(Resources resources, int id) { 63243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich InputStream is = resources.openRawResource(id); 63343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich try { 63443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich try { 63543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich scriptCSetScript(is); 63643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } finally { 63743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich is.close(); 63843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 63943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } catch(IOException e) { 64043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich throw new Resources.NotFoundException(); 64143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 64243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 64343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 64443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich public void scriptCSetScript(InputStream is) throws IOException { 64543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich byte[] buf = new byte[1024]; 64643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich int currentPos = 0; 64743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich while(true) { 64843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich int bytesLeft = buf.length - currentPos; 64943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (bytesLeft == 0) { 65043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich byte[] buf2 = new byte[buf.length * 2]; 65143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich System.arraycopy(buf, 0, buf2, 0, buf.length); 65243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich buf = buf2; 65343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich bytesLeft = buf.length - currentPos; 65443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 65543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich int bytesRead = is.read(buf, currentPos, bytesLeft); 65643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (bytesRead <= 0) { 65743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich break; 65843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 65943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich currentPos += bytesRead; 66043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 66143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich nScriptCSetScript(buf, 0, currentPos); 66260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 66360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 66460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Script scriptCCreate() { 66560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nScriptCCreate(); 66660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Script(id); 66760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 66860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 66960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 67060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // ProgramFragmentStore 67160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 67260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class ProgramFragmentStore extends BaseObj { 67360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ProgramFragmentStore(int id) { 67460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 67560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 67660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 67760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 67860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptDestroy(mID); 67960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 68060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 68160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 68260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 68360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreBegin(Element in, Element out) { 68460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int inID = 0; 68560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int outID = 0; 68660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (in != null) { 68760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich inID = in.mID; 68860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 68960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (out != null) { 69060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich outID = out.mID; 69160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 69260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreBegin(inID, outID); 69360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 69460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 69560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreDepthFunc(DepthFunc func) { 69660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreDepthFunc(func.mID); 69760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 69860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 69960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreDepthMask(boolean enable) { 70060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreDepthMask(enable); 70160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 70260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 70360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a) { 70460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreColorMask(r,g,b,a); 70560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 70660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 70760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreBlendFunc(BlendSrcFunc src, BlendDstFunc dst) { 70860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreBlendFunc(src.mID, dst.mID); 70960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 71060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 71160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreDitherEnable(boolean enable) { 71260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreDither(enable); 71360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 71460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 71560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public ProgramFragmentStore programFragmentStoreCreate() { 71660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nProgramFragmentStoreCreate(); 71760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new ProgramFragmentStore(id); 71860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 71960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 72060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 72160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // ProgramFragment 72260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 72360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class ProgramFragment extends BaseObj { 72460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ProgramFragment(int id) { 72560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 72660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 72760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 72860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 72960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptDestroy(mID); 73060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 73160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 73260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 73360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void bindTexture(Allocation va, int slot) { 73460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentBindTexture(mID, slot, va.mID); 73560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 73660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 73760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //public void bindSampler(Sampler vs, int slot) { 73860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //nProgramFragmentBindSampler(mID, slot, vs.mID); 73960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //} 74060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 74160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 74260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentBegin(Element in, Element out) { 74360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int inID = 0; 74460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int outID = 0; 74560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (in != null) { 74660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich inID = in.mID; 74760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 74860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (out != null) { 74960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich outID = out.mID; 75060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 75160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentBegin(inID, outID); 75260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 75360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 75460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentSetType(int slot, Type t) { 75560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentSetType(slot, t.mID); 75660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 75760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 75860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentSetType(int slot, EnvMode t) { 75960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentSetEnvMode(slot, t.mID); 76060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 76160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 76260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentSetTexEnable(int slot, boolean enable) { 76360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentSetTexEnable(slot, enable); 76460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 76560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 76660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public ProgramFragment programFragmentCreate() { 76760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nProgramFragmentCreate(); 76860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new ProgramFragment(id); 76960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 77060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 77160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 77260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 77360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Root state 77460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 77560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindRootScript(Script s) { 77660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindRootScript(s.mID); 77760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 77860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 77960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //public void contextBindSampler(Sampler s, int slot) { 78060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //nContextBindSampler(s.mID); 78160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //} 78260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 78360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindProgramFragmentStore(ProgramFragmentStore pfs) { 78460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindProgramFragmentStore(pfs.mID); 78560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 78660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 78760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindProgramFragment(ProgramFragment pf) { 78860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindProgramFragment(pf.mID); 78960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 79060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 79160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/* 79260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RsAdapter2D rsAdapter2DCreate (); 79360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DBindAllocation (RsAdapter2D adapt, RsAllocation alloc); 79460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DDestroy (RsAdapter2D adapter); 79560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DSetConstraint (RsAdapter2D adapter, RsDimension dim, uint32_t value); 79660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DData (RsAdapter2D adapter, const void * data); 79760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DSubData (RsAdapter2D adapter, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void * data); 79860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsSamplerBegin (); 79960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsSamplerSet (RsSamplerParam p, RsSamplerValue value); 80060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RsSampler rsSamplerCreate (); 80160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsSamplerBind (RsSampler sampler, RsAllocation alloc); 80260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich*/ 80360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 80460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich} 80560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 806