diff options
author | Jason Sams <rjsams@android.com> | 2009-07-23 15:19:03 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2009-07-23 15:19:03 -0700 |
commit | e29d471e5ca9781d8772d445ec7832e94856fd14 (patch) | |
tree | 512cea998a80925d09b25f1e5da26df2f3341c45 /libs/rs | |
parent | ee41112e1539de95596600fd2c6dada5d275217f (diff) | |
download | frameworks_base-e29d471e5ca9781d8772d445ec7832e94856fd14.zip frameworks_base-e29d471e5ca9781d8772d445ec7832e94856fd14.tar.gz frameworks_base-e29d471e5ca9781d8772d445ec7832e94856fd14.tar.bz2 |
Move the java and jni renderscript files to the proper location.
Diffstat (limited to 'libs/rs')
-rw-r--r-- | libs/rs/Android.mk | 9 | ||||
-rw-r--r-- | libs/rs/java/Film/Android.mk | 2 | ||||
-rw-r--r-- | libs/rs/java/Fountain/Android.mk | 2 | ||||
-rw-r--r-- | libs/rs/java/RenderScript/Android.mk | 28 | ||||
-rw-r--r-- | libs/rs/java/RenderScript/android/renderscript/Matrix.java | 188 | ||||
-rw-r--r-- | libs/rs/java/RenderScript/android/renderscript/ProgramVertexAlloc.java | 112 | ||||
-rw-r--r-- | libs/rs/java/RenderScript/android/renderscript/RSSurfaceView.java | 154 | ||||
-rw-r--r-- | libs/rs/java/RenderScript/android/renderscript/RenderScript.java | 995 | ||||
-rw-r--r-- | libs/rs/java/Rollo/Android.mk | 2 | ||||
-rw-r--r-- | libs/rs/jni/Android.mk | 36 | ||||
-rw-r--r-- | libs/rs/jni/RenderScript_jni.cpp | 1111 |
11 files changed, 6 insertions, 2633 deletions
diff --git a/libs/rs/Android.mk b/libs/rs/Android.mk index 0091e32..d24a92c 100644 --- a/libs/rs/Android.mk +++ b/libs/rs/Android.mk @@ -1,6 +1,3 @@ -# Only build if BUILD_RENDERSCRIPT is defined to true in the environment. -ifeq ($(BUILD_RENDERSCRIPT),true) - LOCAL_PATH:=$(call my-dir) @@ -106,16 +103,16 @@ LOCAL_SRC_FILES:= \ LOCAL_SHARED_LIBRARIES += libcutils libutils libEGL libGLESv1_CM libui libacc LOCAL_LDLIBS := -lpthread -ldl LOCAL_MODULE:= libRS -LOCAL_PRELINK_MODULE := false LOCAL_MODULE_TAGS := optional include $(BUILD_SHARED_LIBRARY) +ifeq ($(BUILD_RENDERSCRIPT),true) + # Include the subdirectories ==================== include $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk,\ - jni \ java \ )) -endif # BUILD_RENDERSCRIPT +endif
\ No newline at end of file diff --git a/libs/rs/java/Film/Android.mk b/libs/rs/java/Film/Android.mk index 2e9c243..b7f98fc 100644 --- a/libs/rs/java/Film/Android.mk +++ b/libs/rs/java/Film/Android.mk @@ -18,7 +18,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript +#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript LOCAL_PACKAGE_NAME := Film diff --git a/libs/rs/java/Fountain/Android.mk b/libs/rs/java/Fountain/Android.mk index af3d5fc..b6a9f10 100644 --- a/libs/rs/java/Fountain/Android.mk +++ b/libs/rs/java/Fountain/Android.mk @@ -18,7 +18,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript +#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript LOCAL_PACKAGE_NAME := Fountain diff --git a/libs/rs/java/RenderScript/Android.mk b/libs/rs/java/RenderScript/Android.mk deleted file mode 100644 index 616fbd2..0000000 --- a/libs/rs/java/RenderScript/Android.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# Copyright (C) 2008 Esmertec AG. -# Copyright (C) 2008 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -LOCAL_PATH := $(call my-dir) - -# the library -# ============================================================ -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - $(call all-subdir-java-files) - -LOCAL_MODULE:= android.renderscript - -include $(BUILD_STATIC_JAVA_LIBRARY) diff --git a/libs/rs/java/RenderScript/android/renderscript/Matrix.java b/libs/rs/java/RenderScript/android/renderscript/Matrix.java deleted file mode 100644 index 79b60d0..0000000 --- a/libs/rs/java/RenderScript/android/renderscript/Matrix.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.renderscript; - -import java.lang.Math; -import android.util.Log; - - -public class Matrix { - - public Matrix() { - mMat = new float[16]; - loadIdentity(); - } - - public float get(int i, int j) { - return mMat[i*4 + j]; - } - - public void set(int i, int j, float v) { - mMat[i*4 + j] = v; - } - - public void loadIdentity() { - mMat[0] = 1; - mMat[1] = 0; - mMat[2] = 0; - mMat[3] = 0; - - mMat[4] = 0; - mMat[5] = 1; - mMat[6] = 0; - mMat[7] = 0; - - mMat[8] = 0; - mMat[9] = 0; - mMat[10] = 1; - mMat[11] = 0; - - mMat[12] = 0; - mMat[13] = 0; - mMat[14] = 0; - mMat[15] = 1; - } - - public void load(Matrix src) { - mMat = src.mMat; - } - - public void loadRotate(float rot, float x, float y, float z) { - float c, s; - mMat[3] = 0; - mMat[7] = 0; - mMat[11]= 0; - mMat[12]= 0; - mMat[13]= 0; - mMat[14]= 0; - mMat[15]= 1; - rot *= (float)(java.lang.Math.PI / 180.0f); - c = (float)java.lang.Math.cos(rot); - s = (float)java.lang.Math.sin(rot); - - float len = (float)java.lang.Math.sqrt(x*x + y*y + z*z); - if (!(len != 1)) { - float recipLen = 1.f / len; - x *= recipLen; - y *= recipLen; - z *= recipLen; - } - float nc = 1.0f - c; - float xy = x * y; - float yz = y * z; - float zx = z * x; - float xs = x * s; - float ys = y * s; - float zs = z * s; - mMat[ 0] = x*x*nc + c; - mMat[ 4] = xy*nc - zs; - mMat[ 8] = zx*nc + ys; - mMat[ 1] = xy*nc + zs; - mMat[ 5] = y*y*nc + c; - mMat[ 9] = yz*nc - xs; - mMat[ 2] = zx*nc - ys; - mMat[ 6] = yz*nc + xs; - mMat[10] = z*z*nc + c; - } - - public void loadScale(float x, float y, float z) { - loadIdentity(); - mMat[0] = x; - mMat[5] = y; - mMat[10] = z; - } - - public void loadTranslate(float x, float y, float z) { - loadIdentity(); - mMat[12] = x; - mMat[13] = y; - mMat[14] = z; - } - - public void loadMultiply(Matrix lhs, Matrix rhs) { - for (int i=0 ; i<4 ; i++) { - float ri0 = 0; - float ri1 = 0; - float ri2 = 0; - float ri3 = 0; - for (int j=0 ; j<4 ; j++) { - float rhs_ij = rhs.get(i,j); - ri0 += lhs.get(j,0) * rhs_ij; - ri1 += lhs.get(j,1) * rhs_ij; - ri2 += lhs.get(j,2) * rhs_ij; - ri3 += lhs.get(j,3) * rhs_ij; - } - set(i,0, ri0); - set(i,1, ri1); - set(i,2, ri2); - set(i,3, ri3); - } - } - - public void loadOrtho(float l, float r, float b, float t, float n, float f) { - loadIdentity(); - mMat[0] = 2 / (r - l); - mMat[5] = 2 / (t - b); - mMat[10]= -2 / (f - n); - mMat[12]= -(r + l) / (r - l); - mMat[13]= -(t + b) / (t - b); - mMat[14]= -(f + n) / (f - n); - } - - public void loadFrustum(float l, float r, float b, float t, float n, float f) { - loadIdentity(); - mMat[0] = 2 * n / (r - l); - mMat[5] = 2 * n / (t - b); - mMat[8] = (r + l) / (r - l); - mMat[9] = (t + b) / (t - b); - mMat[10]= -(f + n) / (f - n); - mMat[11]= -1; - mMat[14]= -2*f*n / (f - n); - mMat[15]= 0; - } - - public void multiply(Matrix rhs) { - Matrix tmp = new Matrix(); - tmp.loadMultiply(this, rhs); - load(tmp); - } - public void rotate(float rot, float x, float y, float z) { - Matrix tmp = new Matrix(); - tmp.loadRotate(rot, x, y, z); - multiply(tmp); - } - public void scale(float x, float y, float z) { - Matrix tmp = new Matrix(); - tmp.loadScale(x, y, z); - multiply(tmp); - } - public void translate(float x, float y, float z) { - Matrix tmp = new Matrix(); - tmp.loadTranslate(x, y, z); - multiply(tmp); - } - - - - float[] mMat; - -} - - - - - diff --git a/libs/rs/java/RenderScript/android/renderscript/ProgramVertexAlloc.java b/libs/rs/java/RenderScript/android/renderscript/ProgramVertexAlloc.java deleted file mode 100644 index 020ddb2..0000000 --- a/libs/rs/java/RenderScript/android/renderscript/ProgramVertexAlloc.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.renderscript; - -import java.lang.Math; -import android.util.Log; - - -public class ProgramVertexAlloc { - public static final int MODELVIEW_OFFSET = 0; - public static final int PROJECTION_OFFSET = 16; - public static final int TEXTURE_OFFSET = 32; - - Matrix mModel; - Matrix mProjection; - Matrix mTexture; - - public RenderScript.Allocation mAlloc; - - public ProgramVertexAlloc(RenderScript rs) { - mModel = new Matrix(); - mProjection = new Matrix(); - mTexture = new Matrix(); - - mAlloc = rs.allocationCreatePredefSized( - RenderScript.ElementPredefined.USER_FLOAT, - 48); - - mAlloc.subData1D(MODELVIEW_OFFSET, 16, mModel.mMat); - mAlloc.subData1D(PROJECTION_OFFSET, 16, mProjection.mMat); - mAlloc.subData1D(TEXTURE_OFFSET, 16, mTexture.mMat); - } - - public void loadModelview(Matrix m) { - mModel = m; - mAlloc.subData1D(MODELVIEW_OFFSET, 16, m.mMat); - } - - public void loadProjection(Matrix m) { - mProjection = m; - mAlloc.subData1D(PROJECTION_OFFSET, 16, m.mMat); - } - - public void loadTexture(Matrix m) { - mTexture = m; - mAlloc.subData1D(TEXTURE_OFFSET, 16, m.mMat); - } - - public void setupOrthoWindow(int w, int h) { - mProjection.loadOrtho(0,w, h,0, -1,1); - mAlloc.subData1D(PROJECTION_OFFSET, 16, mProjection.mMat); - } - - public void setupOrthoNormalized(int w, int h) { - // range -1,1 in the narrow axis. - if(w > h) { - float aspect = ((float)w) / h; - mProjection.loadOrtho(-aspect,aspect, -1,1, -1,1); - } else { - float aspect = ((float)h) / w; - mProjection.loadOrtho(-1,1, -aspect,aspect, -1,1); - } - mAlloc.subData1D(PROJECTION_OFFSET, 16, mProjection.mMat); - } - - public void setupProjectionNormalized(int w, int h) { - // range -1,1 in the narrow axis at z = 0. - Matrix m1 = new Matrix(); - Matrix m2 = new Matrix(); - - if(w > h) { - float aspect = ((float)w) / h; - m1.loadFrustum(-aspect,aspect, -1,1, 1,100); - } else { - float aspect = ((float)h) / w; - m1.loadFrustum(-1,1, -aspect,aspect, 1,100); - } - - m2.loadRotate(180, 0, 1, 0); - m1.loadMultiply(m1, m2); - - m2.loadScale(-2, 2, 1); - m1.loadMultiply(m1, m2); - - m2.loadTranslate(0, 0, 2); - m1.loadMultiply(m1, m2); - - mProjection = m1; - mAlloc.subData1D(PROJECTION_OFFSET, 16, mProjection.mMat); - } - -} - - - - - - diff --git a/libs/rs/java/RenderScript/android/renderscript/RSSurfaceView.java b/libs/rs/java/RenderScript/android/renderscript/RSSurfaceView.java deleted file mode 100644 index 3835793..0000000 --- a/libs/rs/java/RenderScript/android/renderscript/RSSurfaceView.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.renderscript; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.concurrent.Semaphore; - -import android.content.Context; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; -import android.util.Log; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; - -public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback { - private SurfaceHolder mSurfaceHolder; - - /** - * Standard View constructor. In order to render something, you - * must call {@link #setRenderer} to register a renderer. - */ - public RSSurfaceView(Context context) { - super(context); - init(); - Log.v(RenderScript.LOG_TAG, "RSSurfaceView"); - } - - /** - * Standard View constructor. In order to render something, you - * must call {@link #setRenderer} to register a renderer. - */ - public RSSurfaceView(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - Log.v(RenderScript.LOG_TAG, "RSSurfaceView"); - } - - private void init() { - // Install a SurfaceHolder.Callback so we get notified when the - // underlying surface is created and destroyed - SurfaceHolder holder = getHolder(); - holder.addCallback(this); - holder.setType(SurfaceHolder.SURFACE_TYPE_GPU); - } - - /** - * This method is part of the SurfaceHolder.Callback interface, and is - * not normally called or subclassed by clients of RSSurfaceView. - */ - public void surfaceCreated(SurfaceHolder holder) { - Log.v(RenderScript.LOG_TAG, "surfaceCreated"); - mSurfaceHolder = holder; - //mGLThread.surfaceCreated(); - } - - /** - * This method is part of the SurfaceHolder.Callback interface, and is - * not normally called or subclassed by clients of RSSurfaceView. - */ - public void surfaceDestroyed(SurfaceHolder holder) { - // Surface will be destroyed when we return - Log.v(RenderScript.LOG_TAG, "surfaceDestroyed"); - //mGLThread.surfaceDestroyed(); - } - - /** - * This method is part of the SurfaceHolder.Callback interface, and is - * not normally called or subclassed by clients of RSSurfaceView. - */ - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - Log.v(RenderScript.LOG_TAG, "surfaceChanged"); - - //mGLThread.onWindowResize(w, h); - } - - /** - * Inform the view that the activity is paused. The owner of this view must - * call this method when the activity is paused. Calling this method will - * pause the rendering thread. - * Must not be called before a renderer has been set. - */ - public void onPause() { - Log.v(RenderScript.LOG_TAG, "onPause"); - //mGLThread.onPause(); - } - - /** - * Inform the view that the activity is resumed. The owner of this view must - * call this method when the activity is resumed. Calling this method will - * recreate the OpenGL display and resume the rendering - * thread. - * Must not be called before a renderer has been set. - */ - public void onResume() { - Log.v(RenderScript.LOG_TAG, "onResume"); - //mGLThread.onResume(); - } - - /** - * Queue a runnable to be run on the GL rendering thread. This can be used - * to communicate with the Renderer on the rendering thread. - * Must not be called before a renderer has been set. - * @param r the runnable to be run on the GL rendering thread. - */ - public void queueEvent(Runnable r) { - Log.v(RenderScript.LOG_TAG, "queueEvent"); - //mGLThread.queueEvent(r); - } - - /** - * This method is used as part of the View class and is not normally - * called or subclassed by clients of RSSurfaceView. - * Must not be called before a renderer has been set. - */ - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - //mGLThread.requestExitAndWait(); - } - - // ---------------------------------------------------------------------- - - public RenderScript createRenderScript() { - Log.v(RenderScript.LOG_TAG, "createRenderScript 1"); - Surface sur = null; - while ((sur == null) || (mSurfaceHolder == null)) { - sur = getHolder().getSurface(); - } - Log.v(RenderScript.LOG_TAG, "createRenderScript 2"); - RenderScript rs = new RenderScript(sur); - Log.v(RenderScript.LOG_TAG, "createRenderScript 3 rs"); - return rs; - } - -} - diff --git a/libs/rs/java/RenderScript/android/renderscript/RenderScript.java b/libs/rs/java/RenderScript/android/renderscript/RenderScript.java deleted file mode 100644 index e355635..0000000 --- a/libs/rs/java/RenderScript/android/renderscript/RenderScript.java +++ /dev/null @@ -1,995 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.renderscript; - -import java.io.InputStream; -import java.io.IOException; - -import android.os.Bundle; -import android.content.res.Resources; -import android.util.Log; -import android.util.Config; -import android.view.Menu; -import android.view.MenuItem; -import android.view.Window; -import android.view.View; -import android.view.Surface; -import android.graphics.Bitmap; -import android.graphics.Color; - -public class RenderScript { - static final String LOG_TAG = "libRS_jni"; - private static final boolean DEBUG = false; - private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV; - - - - /* - * We use a class initializer to allow the native code to cache some - * field offsets. - */ - private static boolean sInitialized; - native private static void _nInit(); - - static { - sInitialized = false; - try { - System.loadLibrary("RS_jni"); - _nInit(); - sInitialized = true; - } catch (UnsatisfiedLinkError e) { - Log.d(LOG_TAG, "RenderScript JNI library not found!"); - } - } - - native private int nDeviceCreate(); - native private void nDeviceDestroy(int dev); - native private int nContextCreate(int dev, Surface sur, int ver); - native private void nContextDestroy(int con); - - //void rsContextBindSampler (uint32_t slot, RsSampler sampler); - //void rsContextBindRootScript (RsScript sampler); - native private void nContextBindRootScript(int script); - native private void nContextBindSampler(int sampler, int slot); - native private void nContextBindProgramFragmentStore(int pfs); - native private void nContextBindProgramFragment(int pf); - native private void nContextBindProgramVertex(int pf); - - native private void nAssignName(int obj, byte[] name); - native private int nFileOpen(byte[] name); - - native private void nElementBegin(); - native private void nElementAddPredefined(int predef); - native private void nElementAdd(int kind, int type, int norm, int bits); - native private int nElementCreate(); - native private int nElementGetPredefined(int predef); - native private void nElementDestroy(int obj); - - native private void nTypeBegin(int elementID); - native private void nTypeAdd(int dim, int val); - native private int nTypeCreate(); - native private void nTypeDestroy(int id); - - native private int nAllocationCreateTyped(int type); - native private int nAllocationCreatePredefSized(int predef, int count); - native private int nAllocationCreateSized(int elem, int count); - native private int nAllocationCreateFromBitmap(int dstFmt, boolean genMips, Bitmap bmp); - - native private void nAllocationUploadToTexture(int alloc, int baseMioLevel); - native private void nAllocationDestroy(int alloc); - native private void nAllocationData(int id, int[] d); - native private void nAllocationData(int id, float[] d); - native private void nAllocationSubData1D(int id, int off, int count, int[] d); - native private void nAllocationSubData1D(int id, int off, int count, float[] d); - native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d); - native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d); - - native private void nTriangleMeshDestroy(int id); - native private void nTriangleMeshBegin(int vertex, int index); - native private void nTriangleMeshAddVertex_XY (float x, float y); - native private void nTriangleMeshAddVertex_XYZ (float x, float y, float z); - native private void nTriangleMeshAddVertex_XY_ST (float x, float y, float s, float t); - native private void nTriangleMeshAddVertex_XYZ_ST (float x, float y, float z, float s, float t); - native private void nTriangleMeshAddVertex_XYZ_ST_NORM (float x, float y, float z, float s, float t, float nx, float ny, float nz); - native private void nTriangleMeshAddTriangle(int i1, int i2, int i3); - native private int nTriangleMeshCreate(); - - native private void nAdapter1DDestroy(int id); - native private void nAdapter1DBindAllocation(int ad, int alloc); - native private void nAdapter1DSetConstraint(int ad, int dim, int value); - native private void nAdapter1DData(int ad, int[] d); - native private void nAdapter1DSubData(int ad, int off, int count, int[] d); - native private void nAdapter1DData(int ad, float[] d); - native private void nAdapter1DSubData(int ad, int off, int count, float[] d); - native private int nAdapter1DCreate(); - - native private void nScriptDestroy(int script); - native private void nScriptBindAllocation(int vtm, int alloc, int slot); - native private void nScriptCBegin(); - native private void nScriptCSetClearColor(float r, float g, float b, float a); - native private void nScriptCSetClearDepth(float depth); - native private void nScriptCSetClearStencil(int stencil); - native private void nScriptCAddType(int type); - native private void nScriptCSetRoot(boolean isRoot); - native private void nScriptCSetScript(byte[] script, int offset, int length); - native private int nScriptCCreate(); - - native private void nSamplerDestroy(int sampler); - native private void nSamplerBegin(); - native private void nSamplerSet(int param, int value); - native private int nSamplerCreate(); - - native private void nProgramFragmentStoreBegin(int in, int out); - native private void nProgramFragmentStoreDepthFunc(int func); - native private void nProgramFragmentStoreDepthMask(boolean enable); - native private void nProgramFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a); - native private void nProgramFragmentStoreBlendFunc(int src, int dst); - native private void nProgramFragmentStoreDither(boolean enable); - native private int nProgramFragmentStoreCreate(); - native private void nProgramFragmentStoreDestroy(int pgm); - - native private void nProgramFragmentBegin(int in, int out); - native private void nProgramFragmentBindTexture(int vpf, int slot, int a); - native private void nProgramFragmentBindSampler(int vpf, int slot, int s); - native private void nProgramFragmentSetType(int slot, int vt); - native private void nProgramFragmentSetEnvMode(int slot, int env); - native private void nProgramFragmentSetTexEnable(int slot, boolean enable); - native private int nProgramFragmentCreate(); - native private void nProgramFragmentDestroy(int pgm); - - native private void nProgramVertexDestroy(int pv); - native private void nProgramVertexBindAllocation(int pv, int slot, int mID); - native private void nProgramVertexBegin(int inID, int outID); - native private void nProgramVertexSetType(int slot, int mID); - native private void nProgramVertexSetTextureMatrixEnable(boolean enable); - native private void nProgramVertexAddLight(int id); - native private int nProgramVertexCreate(); - - native private void nLightBegin(); - native private void nLightSetIsMono(boolean isMono); - native private void nLightSetIsLocal(boolean isLocal); - native private int nLightCreate(); - native private void nLightDestroy(int l); - native private void nLightSetColor(int l, float r, float g, float b); - native private void nLightSetPosition(int l, float x, float y, float z); - - - private int mDev; - private int mContext; - private Surface mSurface; - - - - /////////////////////////////////////////////////////////////////////////////////// - // - - RenderScript(Surface sur) { - mSurface = sur; - mDev = nDeviceCreate(); - mContext = nContextCreate(mDev, mSurface, 0); - } - - private class BaseObj { - BaseObj() { - mID = 0; - } - - public int getID() { - return mID; - } - - int mID; - String mName; - - public void setName(String s) throws IllegalStateException, IllegalArgumentException - { - if(s.length() < 1) { - throw new IllegalArgumentException("setName does not accept a zero length string."); - } - if(mName != null) { - throw new IllegalArgumentException("setName object already has a name."); - } - - try { - byte[] bytes = s.getBytes("UTF-8"); - nAssignName(mID, bytes); - mName = s; - } catch (java.io.UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - - protected void finalize() throws Throwable - { - if (mID != 0) { - Log.v(LOG_TAG, - "Element finalized without having released the RS reference."); - } - super.finalize(); - } - } - - - ////////////////////////////////////////////////////////////////////////////////// - // Element - - public enum ElementPredefined { - USER_U8 (0), - USER_I8 (1), - USER_U16 (2), - USER_I16 (3), - USER_U32 (4), - USER_I32 (5), - USER_FLOAT (6), - - A_8 (7), - RGB_565 (8), - RGB_888 (11), - RGBA_5551 (9), - RGBA_4444 (10), - RGBA_8888 (12), - - INDEX_16 (13), - INDEX_32 (14), - XY_F32 (15), - XYZ_F32 (16), - ST_XY_F32 (17), - ST_XYZ_F32 (18), - NORM_XYZ_F32 (19), - NORM_ST_XYZ_F32 (20); - - int mID; - ElementPredefined(int id) { - mID = id; - } - } - - public enum DataType { - FLOAT (0), - UNSIGNED (1), - SIGNED (2); - - int mID; - DataType(int id) { - mID = id; - } - } - - public enum DataKind { - USER (0), - RED (1), - GREEN (2), - BLUE (3), - ALPHA (4), - LUMINANCE (5), - INTENSITY (6), - X (7), - Y (8), - Z (9), - W (10), - S (11), - T (12), - Q (13), - R (14), - NX (15), - NY (16), - NZ (17), - INDEX (18); - - int mID; - DataKind(int id) { - mID = id; - } - } - - public enum DepthFunc { - ALWAYS (0), - LESS (1), - LEQUAL (2), - GREATER (3), - GEQUAL (4), - EQUAL (5), - NOTEQUAL (6); - - int mID; - DepthFunc(int id) { - mID = id; - } - } - - public enum BlendSrcFunc { - ZERO (0), - ONE (1), - DST_COLOR (2), - ONE_MINUS_DST_COLOR (3), - SRC_ALPHA (4), - ONE_MINUS_SRC_ALPHA (5), - DST_ALPHA (6), - ONE_MINUS_DST_ALPA (7), - SRC_ALPHA_SATURATE (8); - - int mID; - BlendSrcFunc(int id) { - mID = id; - } - } - - public enum BlendDstFunc { - ZERO (0), - ONE (1), - SRC_COLOR (2), - ONE_MINUS_SRC_COLOR (3), - SRC_ALPHA (4), - ONE_MINUS_SRC_ALPHA (5), - DST_ALPHA (6), - ONE_MINUS_DST_ALPA (7); - - int mID; - BlendDstFunc(int id) { - mID = id; - } - } - - public enum EnvMode { - REPLACE (0), - MODULATE (1), - DECAL (2); - - int mID; - EnvMode(int id) { - mID = id; - } - } - - public enum SamplerParam { - FILTER_MIN (0), - FILTER_MAG (1), - WRAP_MODE_S (2), - WRAP_MODE_T (3), - WRAP_MODE_R (4); - - int mID; - SamplerParam(int id) { - mID = id; - } - } - - public enum SamplerValue { - NEAREST (0), - LINEAR (1), - LINEAR_MIP_LINEAR (2), - WRAP (3), - CLAMP (4); - - int mID; - SamplerValue(int id) { - mID = id; - } - } - - - - public class Element extends BaseObj { - Element(int id) { - mID = id; - } - - public void estroy() { - nElementDestroy(mID); - mID = 0; - } - } - - public void elementBegin() { - nElementBegin(); - } - - public void elementAddPredefined(ElementPredefined e) { - nElementAddPredefined(e.mID); - } - - public void elementAdd(DataType dt, DataKind dk, boolean isNormalized, int bits) { - int norm = 0; - if (isNormalized) { - norm = 1; - } - nElementAdd(dt.mID, dk.mID, norm, bits); - } - - public Element elementCreate() { - int id = nElementCreate(); - return new Element(id); - } - - public Element elementGetPredefined(ElementPredefined predef) { - int id = nElementGetPredefined(predef.mID); - return new Element(id); - } - - - ////////////////////////////////////////////////////////////////////////////////// - // Type - - public enum Dimension { - X (0), - Y (1), - Z (2), - LOD (3), - FACE (4), - ARRAY_0 (100); - - int mID; - Dimension(int id) { - mID = id; - } - } - - public class Type extends BaseObj { - Type(int id) { - mID = id; - } - - public void destroy() { - nTypeDestroy(mID); - mID = 0; - } - } - - public void typeBegin(Element e) { - nTypeBegin(e.mID); - } - - public void typeAdd(Dimension d, int value) { - nTypeAdd(d.mID, value); - } - - public Type typeCreate() { - int id = nTypeCreate(); - return new Type(id); - } - - - ////////////////////////////////////////////////////////////////////////////////// - // Allocation - - public class Allocation extends BaseObj { - Allocation(int id) { - mID = id; - } - - public void uploadToTexture(int baseMipLevel) { - nAllocationUploadToTexture(mID, baseMipLevel); - } - - public void destroy() { - nAllocationDestroy(mID); - mID = 0; - } - - public void data(int[] d) { - nAllocationData(mID, d); - } - - public void data(float[] d) { - nAllocationData(mID, d); - } - - public void subData1D(int off, int count, int[] d) { - nAllocationSubData1D(mID, off, count, d); - } - - public void subData1D(int off, int count, float[] d) { - nAllocationSubData1D(mID, off, count, d); - } - - public void subData2D(int xoff, int yoff, int w, int h, int[] d) { - nAllocationSubData2D(mID, xoff, yoff, w, h, d); - } - - public void subData2D(int xoff, int yoff, int w, int h, float[] d) { - nAllocationSubData2D(mID, xoff, yoff, w, h, d); - } - } - - public Allocation allocationCreateTyped(Type type) { - int id = nAllocationCreateTyped(type.mID); - return new Allocation(id); - } - - public Allocation allocationCreatePredefSized(ElementPredefined e, int count) { - int id = nAllocationCreatePredefSized(e.mID, count); - return new Allocation(id); - } - - public Allocation allocationCreateSized(Element e, int count) { - int id = nAllocationCreateSized(e.mID, count); - return new Allocation(id); - } - - public Allocation allocationCreateFromBitmap(Bitmap b, ElementPredefined dstFmt, boolean genMips) { - int id = nAllocationCreateFromBitmap(dstFmt.mID, genMips, b); - return new Allocation(id); - } - - ////////////////////////////////////////////////////////////////////////////////// - // Adapter1D - - public class Adapter1D extends BaseObj { - Adapter1D(int id) { - mID = id; - } - - public void destroy() { - nAdapter1DDestroy(mID); - mID = 0; - } - - public void bindAllocation(Allocation a) { - nAdapter1DBindAllocation(mID, a.mID); - } - - public void setConstraint(Dimension dim, int value) { - nAdapter1DSetConstraint(mID, dim.mID, value); - } - - public void data(int[] d) { - nAdapter1DData(mID, d); - } - - public void subData(int off, int count, int[] d) { - nAdapter1DSubData(mID, off, count, d); - } - - public void data(float[] d) { - nAdapter1DData(mID, d); - } - - public void subData(int off, int count, float[] d) { - nAdapter1DSubData(mID, off, count, d); - } - } - - public Adapter1D adapter1DCreate() { - int id = nAdapter1DCreate(); - return new Adapter1D(id); - } - - - ////////////////////////////////////////////////////////////////////////////////// - // Triangle Mesh - - public class TriangleMesh extends BaseObj { - TriangleMesh(int id) { - mID = id; - } - - public void destroy() { - nTriangleMeshDestroy(mID); - mID = 0; - } - } - - public void triangleMeshBegin(Element vertex, Element index) { - nTriangleMeshBegin(vertex.mID, index.mID); - } - - public void triangleMeshAddVertex_XY(float x, float y) { - nTriangleMeshAddVertex_XY(x, y); - } - - public void triangleMeshAddVertex_XYZ(float x, float y, float z) { - nTriangleMeshAddVertex_XYZ(x, y, z); - } - - public void triangleMeshAddVertex_XY_ST(float x, float y, float s, float t) { - nTriangleMeshAddVertex_XY_ST(x, y, s, t); - } - - public void triangleMeshAddVertex_XYZ_ST(float x, float y, float z, float s, float t) { - nTriangleMeshAddVertex_XYZ_ST(x, y, z, s, t); - } - - public void triangleMeshAddVertex_XYZ_ST_NORM(float x, float y, float z, float s, float t, float nx, float ny, float nz) { - nTriangleMeshAddVertex_XYZ_ST_NORM(x, y, z, s, t, nx, ny, nz); - } - - public void triangleMeshAddTriangle(int i1, int i2, int i3) { - nTriangleMeshAddTriangle(i1, i2, i3); - } - - public TriangleMesh triangleMeshCreate() { - int id = nTriangleMeshCreate(); - return new TriangleMesh(id); - } - - ////////////////////////////////////////////////////////////////////////////////// - // Script - - public class Script extends BaseObj { - Script(int id) { - mID = id; - } - - public void destroy() { - nScriptDestroy(mID); - mID = 0; - } - - public void bindAllocation(Allocation va, int slot) { - nScriptBindAllocation(mID, va.mID, slot); - } - } - - public void scriptCBegin() { - nScriptCBegin(); - } - - public void scriptCSetClearColor(float r, float g, float b, float a) { - nScriptCSetClearColor(r, g, b, a); - } - - public void scriptCSetClearDepth(float d) { - nScriptCSetClearDepth(d); - } - - public void scriptCSetClearStencil(int stencil) { - nScriptCSetClearStencil(stencil); - } - - public void scriptCAddType(Type t) { - nScriptCAddType(t.mID); - } - - public void scriptCSetRoot(boolean r) { - nScriptCSetRoot(r); - } - - public void scriptCSetScript(String s) { - try { - byte[] bytes = s.getBytes("UTF-8"); - nScriptCSetScript(bytes, 0, bytes.length); - } catch (java.io.UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - - public void scriptCSetScript(Resources resources, int id) { - InputStream is = resources.openRawResource(id); - try { - try { - scriptCSetScript(is); - } finally { - is.close(); - } - } catch(IOException e) { - throw new Resources.NotFoundException(); - } - } - - public void scriptCSetScript(InputStream is) throws IOException { - byte[] buf = new byte[1024]; - int currentPos = 0; - while(true) { - int bytesLeft = buf.length - currentPos; - if (bytesLeft == 0) { - byte[] buf2 = new byte[buf.length * 2]; - System.arraycopy(buf, 0, buf2, 0, buf.length); - buf = buf2; - bytesLeft = buf.length - currentPos; - } - int bytesRead = is.read(buf, currentPos, bytesLeft); - if (bytesRead <= 0) { - break; - } - currentPos += bytesRead; - } - nScriptCSetScript(buf, 0, currentPos); - } - - public Script scriptCCreate() { - int id = nScriptCCreate(); - return new Script(id); - } - - ////////////////////////////////////////////////////////////////////////////////// - // ProgramVertex - - public class ProgramVertex extends BaseObj { - ProgramVertex(int id) { - mID = id; - } - - public void destroy() { - nProgramVertexDestroy(mID); - mID = 0; - } - - public void bindAllocation(int slot, Allocation va) { - nProgramVertexBindAllocation(mID, slot, va.mID); - } - } - - public void programVertexBegin(Element in, Element out) { - int inID = 0; - int outID = 0; - if (in != null) { - inID = in.mID; - } - if (out != null) { - outID = out.mID; - } - nProgramVertexBegin(inID, outID); - } - - public void programVertexSetType(int slot, Type t) { - nProgramVertexSetType(slot, t.mID); - } - - public void programVertexSetTextureMatrixEnable(boolean enable) { - nProgramVertexSetTextureMatrixEnable(enable); - } - - public void programVertexAddLight(Light l) { - nProgramVertexAddLight(l.mID); - } - - public ProgramVertex programVertexCreate() { - int id = nProgramVertexCreate(); - return new ProgramVertex(id); - } - - - ////////////////////////////////////////////////////////////////////////////////// - // ProgramFragmentStore - - public class ProgramFragmentStore extends BaseObj { - ProgramFragmentStore(int id) { - mID = id; - } - - public void destroy() { - nProgramFragmentStoreDestroy(mID); - mID = 0; - } - } - - public void programFragmentStoreBegin(Element in, Element out) { - int inID = 0; - int outID = 0; - if (in != null) { - inID = in.mID; - } - if (out != null) { - outID = out.mID; - } - nProgramFragmentStoreBegin(inID, outID); - } - - public void programFragmentStoreDepthFunc(DepthFunc func) { - nProgramFragmentStoreDepthFunc(func.mID); - } - - public void programFragmentStoreDepthMask(boolean enable) { - nProgramFragmentStoreDepthMask(enable); - } - - public void programFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a) { - nProgramFragmentStoreColorMask(r,g,b,a); - } - - public void programFragmentStoreBlendFunc(BlendSrcFunc src, BlendDstFunc dst) { - nProgramFragmentStoreBlendFunc(src.mID, dst.mID); - } - - public void programFragmentStoreDitherEnable(boolean enable) { - nProgramFragmentStoreDither(enable); - } - - public ProgramFragmentStore programFragmentStoreCreate() { - int id = nProgramFragmentStoreCreate(); - return new ProgramFragmentStore(id); - } - - ////////////////////////////////////////////////////////////////////////////////// - // ProgramFragment - - public class ProgramFragment extends BaseObj { - ProgramFragment(int id) { - mID = id; - } - - public void destroy() { - nProgramFragmentDestroy(mID); - mID = 0; - } - - public void bindTexture(Allocation va, int slot) { - nProgramFragmentBindTexture(mID, slot, va.mID); - } - - public void bindSampler(Sampler vs, int slot) { - nProgramFragmentBindSampler(mID, slot, vs.mID); - } - } - - public void programFragmentBegin(Element in, Element out) { - int inID = 0; - int outID = 0; - if (in != null) { - inID = in.mID; - } - if (out != null) { - outID = out.mID; - } - nProgramFragmentBegin(inID, outID); - } - - public void programFragmentSetType(int slot, Type t) { - nProgramFragmentSetType(slot, t.mID); - } - - public void programFragmentSetType(int slot, EnvMode t) { - nProgramFragmentSetEnvMode(slot, t.mID); - } - - public void programFragmentSetTexEnable(int slot, boolean enable) { - nProgramFragmentSetTexEnable(slot, enable); - } - - public void programFragmentSetTexEnvMode(int slot, EnvMode env) { - nProgramFragmentSetEnvMode(slot, env.mID); - } - - public ProgramFragment programFragmentCreate() { - int id = nProgramFragmentCreate(); - return new ProgramFragment(id); - } - - ////////////////////////////////////////////////////////////////////////////////// - // Sampler - - public class Sampler extends BaseObj { - Sampler(int id) { - mID = id; - } - - public void destroy() { - nSamplerDestroy(mID); - mID = 0; - } - } - - public void samplerBegin() { - nSamplerBegin(); - } - - public void samplerSet(SamplerParam p, SamplerValue v) { - nSamplerSet(p.mID, v.mID); - } - - public Sampler samplerCreate() { - int id = nSamplerCreate(); - return new Sampler(id); - } - - ////////////////////////////////////////////////////////////////////////////////// - // Light - - public class Light extends BaseObj { - Light(int id) { - mID = id; - } - - public void destroy() { - nLightDestroy(mID); - mID = 0; - } - - public void setColor(float r, float g, float b) { - nLightSetColor(mID, r, g, b); - } - - public void setPosition(float x, float y, float z) { - nLightSetPosition(mID, x, y, z); - } - } - - public void lightBegin() { - nLightBegin(); - } - - public void lightSetIsMono(boolean isMono) { - nLightSetIsMono(isMono); - } - - public void lightSetIsLocal(boolean isLocal) { - nLightSetIsLocal(isLocal); - } - - public Light lightCreate() { - int id = nLightCreate(); - return new Light(id); - } - - ////////////////////////////////////////////////////////////////////////////////// - // File - - public class File extends BaseObj { - File(int id) { - mID = id; - } - - public void destroy() { - //nLightDestroy(mID); - mID = 0; - } - } - - public File fileOpen(String s) throws IllegalStateException, IllegalArgumentException - { - if(s.length() < 1) { - throw new IllegalArgumentException("fileOpen does not accept a zero length string."); - } - - try { - byte[] bytes = s.getBytes("UTF-8"); - int id = nFileOpen(bytes); - return new File(id); - } catch (java.io.UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - - - /////////////////////////////////////////////////////////////////////////////////// - // Root state - - public void contextBindRootScript(Script s) { - nContextBindRootScript(s.mID); - } - - //public void contextBindSampler(Sampler s, int slot) { - //nContextBindSampler(s.mID); - //} - - public void contextBindProgramFragmentStore(ProgramFragmentStore pfs) { - nContextBindProgramFragmentStore(pfs.mID); - } - - public void contextBindProgramFragment(ProgramFragment pf) { - nContextBindProgramFragment(pf.mID); - } - - public void contextBindProgramVertex(ProgramVertex pf) { - nContextBindProgramVertex(pf.mID); - } - -/* - RsAdapter2D rsAdapter2DCreate (); - void rsAdapter2DBindAllocation (RsAdapter2D adapt, RsAllocation alloc); - void rsAdapter2DDestroy (RsAdapter2D adapter); - void rsAdapter2DSetConstraint (RsAdapter2D adapter, RsDimension dim, uint32_t value); - void rsAdapter2DData (RsAdapter2D adapter, const void * data); - void rsAdapter2DSubData (RsAdapter2D adapter, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void * data); - void rsSamplerBegin (); - void rsSamplerSet (RsSamplerParam p, RsSamplerValue value); - RsSampler rsSamplerCreate (); - void rsSamplerBind (RsSampler sampler, RsAllocation alloc); -*/ - -} - diff --git a/libs/rs/java/Rollo/Android.mk b/libs/rs/java/Rollo/Android.mk index 1c6dfdf..5a4957c 100644 --- a/libs/rs/java/Rollo/Android.mk +++ b/libs/rs/java/Rollo/Android.mk @@ -18,7 +18,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript +#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript LOCAL_PACKAGE_NAME := Rollo diff --git a/libs/rs/jni/Android.mk b/libs/rs/jni/Android.mk deleted file mode 100644 index f669065..0000000 --- a/libs/rs/jni/Android.mk +++ /dev/null @@ -1,36 +0,0 @@ -LOCAL_PATH:=$(call my-dir) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - RenderScript_jni.cpp - -LOCAL_SHARED_LIBRARIES := \ - libandroid_runtime \ - libacc \ - libnativehelper \ - libRS \ - libcutils \ - libskia \ - libutils \ - libui - -LOCAL_STATIC_LIBRARIES := - -rs_generated_include_dir := $(call intermediates-dir-for,SHARED_LIBRARIES,libRS,,) - -LOCAL_C_INCLUDES += \ - $(JNI_H_INCLUDE) \ - $(rs_generated_include_dir) \ - $(call include-path-for, corecg graphics) - -LOCAL_CFLAGS += - -LOCAL_LDLIBS := -lpthread - -LOCAL_MODULE:= libRS_jni -LOCAL_PRELINK_MODULE := false - -LOCAL_ADDITIONAL_DEPENDENCIES += $(rs_generated_source) - -include $(BUILD_SHARED_LIBRARY) - diff --git a/libs/rs/jni/RenderScript_jni.cpp b/libs/rs/jni/RenderScript_jni.cpp deleted file mode 100644 index 1747673..0000000 --- a/libs/rs/jni/RenderScript_jni.cpp +++ /dev/null @@ -1,1111 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define LOG_TAG "libRS_jni" - -#include <stdlib.h> -#include <stdio.h> -#include <fcntl.h> -#include <unistd.h> -#include <math.h> -#include <utils/misc.h> - -#include <ui/Surface.h> - -#include <core/SkBitmap.h> - - -#include "jni.h" -#include "JNIHelp.h" -#include "android_runtime/AndroidRuntime.h" - -#include "../RenderScript.h" -#include "../RenderScriptEnv.h" - -//#define LOG_API LOGE -#define LOG_API(...) - -using namespace android; - -// --------------------------------------------------------------------------- - -static void doThrow(JNIEnv* env, const char* exc, const char* msg = NULL) -{ - jclass npeClazz = env->FindClass(exc); - env->ThrowNew(npeClazz, msg); -} - -static jfieldID gContextId = 0; -static jfieldID gNativeBitmapID = 0; - -static void _nInit(JNIEnv *_env, jclass _this) -{ - gContextId = _env->GetFieldID(_this, "mContext", "I"); - - jclass bitmapClass = _env->FindClass("android/graphics/Bitmap"); - gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I"); -} - - -// --------------------------------------------------------------------------- - -static void -nAssignName(JNIEnv *_env, jobject _this, jint obj, jbyteArray str) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAssignName, con(%p), obj(%p)", con, obj); - - jint len = _env->GetArrayLength(str); - jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); - rsAssignName((void *)obj, (const char *)cptr, len); - _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); -} - - -static jint -nFileOpen(JNIEnv *_env, jobject _this, jbyteArray str) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nFileOpen, con(%p)", con); - - jint len = _env->GetArrayLength(str); - jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0); - jint ret = (jint)rsFileOpen((const char *)cptr, len); - _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT); - return ret; -} - -// --------------------------------------------------------------------------- - -static jint -nDeviceCreate(JNIEnv *_env, jobject _this) -{ - LOG_API("nDeviceCreate"); - return (jint)rsDeviceCreate(); -} - -static void -nDeviceDestroy(JNIEnv *_env, jobject _this, jint dev) -{ - LOG_API("nDeviceDestroy"); - return rsDeviceDestroy((RsDevice)dev); -} - -static jint -nContextCreate(JNIEnv *_env, jobject _this, jint dev, jobject wnd, jint ver) -{ - LOG_API("nContextCreate"); - - if (wnd == NULL) { - not_valid_surface: - doThrow(_env, "java/lang/IllegalArgumentException", - "Make sure the SurfaceView or associated SurfaceHolder has a valid Surface"); - return 0; - } - jclass surface_class = _env->FindClass("android/view/Surface"); - jfieldID surfaceFieldID = _env->GetFieldID(surface_class, "mSurface", "I"); - Surface * window = (Surface*)_env->GetIntField(wnd, surfaceFieldID); - if (window == NULL) - goto not_valid_surface; - - return (jint)rsContextCreate((RsDevice)dev, window, ver); -} - -static void -nContextDestroy(JNIEnv *_env, jobject _this, jint con) -{ - LOG_API("nContextDestroy, con(%p)", (RsContext)con); - return rsContextDestroy((RsContext)con); -} - - -static void -nElementBegin(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nElementBegin, con(%p)", con); - rsElementBegin(); -} - -static void -nElementAddPredefined(JNIEnv *_env, jobject _this, jint predef) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nElementAddPredefined, con(%p), predef(%i)", con, predef); - rsElementAddPredefined((RsElementPredefined)predef); -} - -static void -nElementAdd(JNIEnv *_env, jobject _this, jint kind, jint type, jint norm, jint bits) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nElementAdd, con(%p), kind(%i), type(%i), norm(%i), bits(%i)", con, kind, type, norm, bits); - rsElementAdd((RsDataKind)kind, (RsDataType)type, norm != 0, (size_t)bits); -} - -static jint -nElementCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nElementCreate, con(%p)", con); - return (jint)rsElementCreate(); -} - -static jint -nElementGetPredefined(JNIEnv *_env, jobject _this, jint predef) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nElementGetPredefined, con(%p) predef(%i)", con, predef); - return (jint)rsElementGetPredefined((RsElementPredefined)predef); -} - -static void -nElementDestroy(JNIEnv *_env, jobject _this, jint e) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nElementDestroy, con(%p) e(%p)", con, (RsElement)e); - rsElementDestroy((RsElement)e); -} - -// ----------------------------------- - -static void -nTypeBegin(JNIEnv *_env, jobject _this, jint eID) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTypeBegin, con(%p) e(%p)", con, (RsElement)eID); - rsTypeBegin((RsElement)eID); -} - -static void -nTypeAdd(JNIEnv *_env, jobject _this, jint dim, jint val) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTypeAdd, con(%p) dim(%i), val(%i)", con, dim, val); - rsTypeAdd((RsDimension)dim, val); -} - -static jint -nTypeCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTypeCreate, con(%p)", con); - return (jint)rsTypeCreate(); -} - -static void -nTypeDestroy(JNIEnv *_env, jobject _this, jint eID) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTypeDestroy, con(%p), t(%p)", con, (RsType)eID); - rsTypeDestroy((RsType)eID); -} - -// ----------------------------------- - -static jint -nAllocationCreateTyped(JNIEnv *_env, jobject _this, jint e) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAllocationCreateTyped, con(%p), e(%p)", con, (RsElement)e); - return (jint) rsAllocationCreateTyped((RsElement)e); -} - -static jint -nAllocationCreatePredefSized(JNIEnv *_env, jobject _this, jint predef, jint count) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAllocationCreatePredefSized, con(%p), predef(%i), count(%i)", con, predef, count); - return (jint) rsAllocationCreatePredefSized((RsElementPredefined)predef, count); -} - -static jint -nAllocationCreateSized(JNIEnv *_env, jobject _this, jint e, jint count) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAllocationCreateSized, con(%p), e(%p), count(%i)", con, (RsElement)e, count); - return (jint) rsAllocationCreateSized((RsElement)e, count); -} - -static void -nAllocationUploadToTexture(JNIEnv *_env, jobject _this, jint a, jint mip) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAllocationUploadToTexture, con(%p), a(%p), mip(%i)", con, (RsAllocation)a, mip); - rsAllocationUploadToTexture((RsAllocation)a, mip); -} - -static RsElementPredefined SkBitmapToPredefined(SkBitmap::Config cfg) -{ - switch (cfg) { - case SkBitmap::kA8_Config: - return RS_ELEMENT_A_8; - case SkBitmap::kARGB_4444_Config: - return RS_ELEMENT_RGBA_4444; - case SkBitmap::kARGB_8888_Config: - return RS_ELEMENT_RGBA_8888; - case SkBitmap::kRGB_565_Config: - return RS_ELEMENT_RGB_565; - - default: - break; - } - // If we don't have a conversion mark it as a user type. - LOGE("Unsupported bitmap type"); - return RS_ELEMENT_USER_U8; -} - -static int -nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - SkBitmap const * nativeBitmap = - (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); - const SkBitmap& bitmap(*nativeBitmap); - SkBitmap::Config config = bitmap.getConfig(); - - RsElementPredefined e = SkBitmapToPredefined(config); - - if (e != RS_ELEMENT_USER_U8) { - bitmap.lockPixels(); - const int w = bitmap.width(); - const int h = bitmap.height(); - const void* ptr = bitmap.getPixels(); - jint id = (jint)rsAllocationCreateFromBitmap(w, h, (RsElementPredefined)dstFmt, e, genMips, ptr); - bitmap.unlockPixels(); - return id; - } - return 0; -} - - -static void -nAllocationDestroy(JNIEnv *_env, jobject _this, jint a) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAllocationDestroy, con(%p), a(%p)", con, (RsAllocation)a); - rsAllocationDestroy((RsAllocation)a); -} - -static void -nAllocationData_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAllocationData_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); - jint *ptr = _env->GetIntArrayElements(data, NULL); - rsAllocationData((RsAllocation)alloc, ptr); - _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); -} - -static void -nAllocationData_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAllocationData_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len); - jfloat *ptr = _env->GetFloatArrayElements(data, NULL); - rsAllocationData((RsAllocation)alloc, ptr); - _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); -} - -static void -nAllocationSubData1D_i(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jintArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAllocation)alloc, offset, count, len); - jint *ptr = _env->GetIntArrayElements(data, NULL); - rsAllocation1DSubData((RsAllocation)alloc, offset, count, ptr); - _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); -} - -static void -nAllocationSubData1D_f(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jfloatArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAllocation)alloc, offset, count, len); - jfloat *ptr = _env->GetFloatArrayElements(data, NULL); - rsAllocation1DSubData((RsAllocation)alloc, offset, count, ptr); - _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); -} - -static void -nAllocationSubData2D_i(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAllocation2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); - jint *ptr = _env->GetIntArrayElements(data, NULL); - rsAllocation2DSubData((RsAllocation)alloc, xoff, yoff, w, h, ptr); - _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT); -} - -static void -nAllocationSubData2D_f(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAllocation2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len); - jfloat *ptr = _env->GetFloatArrayElements(data, NULL); - rsAllocation2DSubData((RsAllocation)alloc, xoff, yoff, w, h, ptr); - _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT); -} - - - -// ----------------------------------- - -static void -nTriangleMeshDestroy(JNIEnv *_env, jobject _this, jint tm) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshDestroy, con(%p), tm(%p)", con, (RsAllocation)tm); - rsTriangleMeshDestroy((RsTriangleMesh)tm); -} - -static void -nTriangleMeshBegin(JNIEnv *_env, jobject _this, jint v, jint i) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshBegin, con(%p), vertex(%p), index(%p)", con, (RsElement)v, (RsElement)i); - rsTriangleMeshBegin((RsElement)v, (RsElement)i); -} - -static void -nTriangleMeshAddVertex_XY(JNIEnv *_env, jobject _this, jfloat x, jfloat y) -{ - float v[] = {x, y}; - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshAddVertex_XY, con(%p), x(%f), y(%f)", con, x, y); - rsTriangleMeshAddVertex(v); -} - -static void -nTriangleMeshAddVertex_XYZ(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) -{ - float v[] = {x, y, z}; - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshAddVertex_XYZ, con(%p), x(%f), y(%f), z(%f)", con, x, y, z); - rsTriangleMeshAddVertex(v); -} - -static void -nTriangleMeshAddVertex_XY_ST(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat s, jfloat t) -{ - float v[] = {s, t, x, y}; - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshAddVertex_XY_ST, con(%p), x(%f), y(%f), s(%f), t(%f)", con, x, y, s, t); - rsTriangleMeshAddVertex(v); -} - -static void -nTriangleMeshAddVertex_XYZ_ST(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z, jfloat s, jfloat t) -{ - float v[] = {s, t, x, y, z}; - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshAddVertex_XYZ_ST, con(%p), x(%f), y(%f), z(%f), s(%f), t(%f)", con, x, y, z, s, t); - rsTriangleMeshAddVertex(v); -} - -static void -nTriangleMeshAddVertex_XYZ_ST_NORM(JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z, jfloat s, jfloat t, jfloat nx, jfloat ny, jfloat nz) -{ - float v[] = {nx, ny, nz, s, t, x, y, z}; - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshAddVertex_XYZ_ST, con(%p), x(%f), y(%f), z(%f), s(%f), t(%f)", con, x, y, z, s, t); - rsTriangleMeshAddVertex(v); -} - -static void -nTriangleMeshAddTriangle(JNIEnv *_env, jobject _this, jint i1, jint i2, jint i3) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshAddTriangle, con(%p), i1(%i), i2(%i), i3(%i)", con, i1, i2, i3); - rsTriangleMeshAddTriangle(i1, i2, i3); -} - -static jint -nTriangleMeshCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nTriangleMeshCreate, con(%p)", con); - return (jint) rsTriangleMeshCreate(); -} - -// ----------------------------------- - -static void -nAdapter1DDestroy(JNIEnv *_env, jobject _this, jint adapter) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAdapter1DDestroy, con(%p), adapter(%p)", con, (RsAdapter1D)adapter); - rsAdapter1DDestroy((RsAdapter1D)adapter); -} - -static void -nAdapter1DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAdapter1DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter1D)adapter, (RsAllocation)alloc); - rsAdapter1DBindAllocation((RsAdapter1D)adapter, (RsAllocation)alloc); -} - -static void -nAdapter1DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAdapter1DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter1D)adapter, dim, value); - rsAdapter1DSetConstraint((RsAdapter1D)adapter, (RsDimension)dim, value); -} - -static void -nAdapter1DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAdapter1DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); - jint *ptr = _env->GetIntArrayElements(data, NULL); - rsAdapter1DData((RsAdapter1D)adapter, ptr); - _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); -} - -static void -nAdapter1DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jintArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAdapter1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); - jint *ptr = _env->GetIntArrayElements(data, NULL); - rsAdapter1DSubData((RsAdapter1D)adapter, offset, count, ptr); - _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); -} - -static void -nAdapter1DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAdapter1DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter1D)adapter, len); - jfloat *ptr = _env->GetFloatArrayElements(data, NULL); - rsAdapter1DData((RsAdapter1D)adapter, ptr); - _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); -} - -static void -nAdapter1DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint offset, jint count, jfloatArray data) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - jint len = _env->GetArrayLength(data); - LOG_API("nAdapter1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAdapter1D)adapter, offset, count, len); - jfloat *ptr = _env->GetFloatArrayElements(data, NULL); - rsAdapter1DSubData((RsAdapter1D)adapter, offset, count, ptr); - _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); -} - -static jint -nAdapter1DCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nAdapter1DCreate, con(%p)", con); - return (jint)rsAdapter1DCreate(); -} - -// ----------------------------------- - -static void -nScriptDestroy(JNIEnv *_env, jobject _this, jint script) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptDestroy, con(%p), script(%p)", con, (RsScript)script); - rsScriptDestroy((RsScript)script); -} - -static void -nScriptBindAllocation(JNIEnv *_env, jobject _this, jint script, jint alloc, jint slot) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot); - rsScriptBindAllocation((RsScript)script, (RsAllocation)alloc, slot); -} - -static void -nScriptCBegin(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptCBegin, con(%p)", con); - rsScriptCBegin(); -} - -static void -nScriptCSetClearColor(JNIEnv *_env, jobject _this, jfloat r, jfloat g, jfloat b, jfloat a) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptCSetClearColor, con(%p), r(%f), g(%f), b(%f), a(%f)", con, r, g, b, a); - rsScriptCSetClearColor(r, g, b, a); -} - -static void -nScriptCSetClearDepth(JNIEnv *_env, jobject _this, jfloat d) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptCSetClearColor, con(%p), depth(%f)", con, d); - rsScriptCSetClearDepth(d); -} - -static void -nScriptCSetClearStencil(JNIEnv *_env, jobject _this, jint stencil) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptCSetClearStencil, con(%p), stencil(%i)", con, stencil); - rsScriptCSetClearStencil(stencil); -} - -static void -nScriptCAddType(JNIEnv *_env, jobject _this, jint type) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptCAddType, con(%p), type(%p)", con, (RsType)type); - rsScriptCAddType((RsType)type); -} - -static void -nScriptCSetRoot(JNIEnv *_env, jobject _this, jboolean isRoot) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptCSetRoot, con(%p), isRoot(%i)", con, isRoot); - rsScriptCSetRoot(isRoot); -} - -static void -nScriptCSetScript(JNIEnv *_env, jobject _this, jbyteArray scriptRef, - jint offset, jint length) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("!!! nScriptCSetScript, con(%p)", con); - jint _exception = 0; - jint remaining; - jbyte* script_base = 0; - jbyte* script_ptr; - if (!scriptRef) { - _exception = 1; - //_env->ThrowNew(IAEClass, "script == null"); - goto exit; - } - if (offset < 0) { - _exception = 1; - //_env->ThrowNew(IAEClass, "offset < 0"); - goto exit; - } - if (length < 0) { - _exception = 1; - //_env->ThrowNew(IAEClass, "length < 0"); - goto exit; - } - remaining = _env->GetArrayLength(scriptRef) - offset; - if (remaining < length) { - _exception = 1; - //_env->ThrowNew(IAEClass, "length > script.length - offset"); - goto exit; - } - script_base = (jbyte *) - _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0); - script_ptr = script_base + offset; - - rsScriptCSetText((const char *)script_ptr, length); - -exit: - if (script_base) { - _env->ReleasePrimitiveArrayCritical(scriptRef, script_base, - _exception ? JNI_ABORT: 0); - } -} - -static jint -nScriptCCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptCCreate, con(%p)", con); - return (jint)rsScriptCCreate(); -} - -// --------------------------------------------------------------------------- - -static void -nProgramFragmentStoreBegin(JNIEnv *_env, jobject _this, jint in, jint out) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentStoreBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); - rsProgramFragmentStoreBegin((RsElement)in, (RsElement)out); -} - -static void -nProgramFragmentStoreDepthFunc(JNIEnv *_env, jobject _this, jint func) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentStoreDepthFunc, con(%p), func(%i)", con, func); - rsProgramFragmentStoreDepthFunc((RsDepthFunc)func); -} - -static void -nProgramFragmentStoreDepthMask(JNIEnv *_env, jobject _this, jboolean enable) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentStoreDepthMask, con(%p), enable(%i)", con, enable); - rsProgramFragmentStoreDepthMask(enable); -} - -static void -nProgramFragmentStoreColorMask(JNIEnv *_env, jobject _this, jboolean r, jboolean g, jboolean b, jboolean a) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentStoreColorMask, con(%p), r(%i), g(%i), b(%i), a(%i)", con, r, g, b, a); - rsProgramFragmentStoreColorMask(r, g, b, a); -} - -static void -nProgramFragmentStoreBlendFunc(JNIEnv *_env, jobject _this, int src, int dst) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentStoreBlendFunc, con(%p), src(%i), dst(%i)", con, src, dst); - rsProgramFragmentStoreBlendFunc((RsBlendSrcFunc)src, (RsBlendDstFunc)dst); -} - -static void -nProgramFragmentStoreDither(JNIEnv *_env, jobject _this, jboolean enable) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentStoreDither, con(%p), enable(%i)", con, enable); - rsProgramFragmentStoreDither(enable); -} - -static jint -nProgramFragmentStoreCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentStoreCreate, con(%p)", con); - - return (jint)rsProgramFragmentStoreCreate(); -} - -static void -nProgramFragmentStoreDestroy(JNIEnv *_env, jobject _this, jint pgm) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentStoreDestroy, con(%p), pgm(%i)", con, pgm); - rsProgramFragmentStoreDestroy((RsProgramFragmentStore)pgm); -} - -// --------------------------------------------------------------------------- - -static void -nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); - rsProgramFragmentBegin((RsElement)in, (RsElement)out); -} - -static void -nProgramFragmentBindTexture(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a); - rsProgramFragmentBindTexture((RsProgramFragment)vpf, slot, (RsAllocation)a); -} - -static void -nProgramFragmentBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a); - rsProgramFragmentBindSampler((RsProgramFragment)vpf, slot, (RsSampler)a); -} - -static void -nProgramFragmentSetType(JNIEnv *_env, jobject _this, jint slot, jint vt) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentSetType, con(%p), slot(%i), vt(%p)", con, slot, (RsType)vt); - rsProgramFragmentSetType(slot, (RsType)vt); -} - -static void -nProgramFragmentSetEnvMode(JNIEnv *_env, jobject _this, jint slot, jint env) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentSetEnvMode, con(%p), slot(%i), vt(%i)", con, slot, env); - rsProgramFragmentSetEnvMode(slot, (RsTexEnvMode)env); -} - -static void -nProgramFragmentSetTexEnable(JNIEnv *_env, jobject _this, jint slot, jboolean enable) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentSetTexEnable, con(%p), slot(%i), enable(%i)", con, slot, enable); - rsProgramFragmentSetTexEnable(slot, enable); -} - -static jint -nProgramFragmentCreate(JNIEnv *_env, jobject _this, jint slot, jboolean enable) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentCreate, con(%p)", con); - return (jint)rsProgramFragmentCreate(); -} - -static void -nProgramFragmentDestroy(JNIEnv *_env, jobject _this, jint pgm) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentDestroy, con(%p), pgm(%i)", con, pgm); - rsProgramFragmentDestroy((RsProgramFragment)pgm); -} - -// --------------------------------------------------------------------------- - -static void -nProgramVertexBegin(JNIEnv *_env, jobject _this, jint in, jint out) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramVertexBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); - rsProgramVertexBegin((RsElement)in, (RsElement)out); -} - -static void -nProgramVertexBindAllocation(JNIEnv *_env, jobject _this, jint vpv, jint slot, jint a) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramVertexBindAllocation, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a); - rsProgramVertexBindAllocation((RsProgramFragment)vpv, slot, (RsAllocation)a); -} - -static void -nProgramVertexSetType(JNIEnv *_env, jobject _this, jint slot, jint t) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramVertexSetType, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsType)t); - rsProgramVertexSetType(slot, (RsType)t); -} - -static void -nProgramVertexSetTextureMatrixEnable(JNIEnv *_env, jobject _this, jboolean enable) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramVertexSetTextureMatrixEnable, con(%p), enable(%i)", con, enable); - rsProgramVertexSetTextureMatrixEnable(enable); -} - -static void -nProgramVertexAddLight(JNIEnv *_env, jobject _this, jint light) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramVertexAddLight, con(%p), light(%p)", con, (RsLight)light); - rsProgramVertexAddLight((RsLight)light); -} - -static jint -nProgramVertexCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramVertexCreate, con(%p)", con); - return (jint)rsProgramVertexCreate(); -} - -static void -nProgramVertexDestroy(JNIEnv *_env, jobject _this, jint pgm) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentDestroy, con(%p), pgm(%i)", con, pgm); - rsProgramFragmentDestroy((RsProgramFragment)pgm); -} - - - - -// --------------------------------------------------------------------------- - -static void -nContextBindRootScript(JNIEnv *_env, jobject _this, jint script) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script); - rsContextBindRootScript((RsScript)script); -} - -static void -nContextBindProgramFragmentStore(JNIEnv *_env, jobject _this, jint pfs) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nContextBindProgramFragmentStore, con(%p), pfs(%p)", con, (RsProgramFragmentStore)pfs); - rsContextBindProgramFragmentStore((RsProgramFragmentStore)pfs); -} - -static void -nContextBindProgramFragment(JNIEnv *_env, jobject _this, jint pf) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf); - rsContextBindProgramFragment((RsProgramFragment)pf); -} - -static void -nContextBindProgramVertex(JNIEnv *_env, jobject _this, jint pf) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf); - rsContextBindProgramVertex((RsProgramVertex)pf); -} - -// --------------------------------------------------------------------------- - -static void -nSamplerDestroy(JNIEnv *_env, jobject _this, jint s) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nSamplerDestroy, con(%p), sampler(%p)", con, (RsSampler)s); - rsSamplerDestroy((RsSampler)s); -} - -static void -nSamplerBegin(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nSamplerBegin, con(%p)", con); - rsSamplerBegin(); -} - -static void -nSamplerSet(JNIEnv *_env, jobject _this, jint p, jint v) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nSamplerSet, con(%p), param(%i), value(%i)", con, p, v); - rsSamplerSet((RsSamplerParam)p, (RsSamplerValue)v); -} - -static jint -nSamplerCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nSamplerCreate, con(%p)", con); - return (jint)rsSamplerCreate(); -} - -// --------------------------------------------------------------------------- - -static void -nLightBegin(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nLightBegin, con(%p)", con); - rsLightBegin(); -} - -static void -nLightSetIsMono(JNIEnv *_env, jobject _this, jboolean isMono) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nLightSetIsMono, con(%p), isMono(%i)", con, isMono); - rsLightSetMonochromatic(isMono); -} - -static void -nLightSetIsLocal(JNIEnv *_env, jobject _this, jboolean isLocal) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nLightSetIsLocal, con(%p), isLocal(%i)", con, isLocal); - rsLightSetLocal(isLocal); -} - -static jint -nLightCreate(JNIEnv *_env, jobject _this) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nLightCreate, con(%p)", con); - return (jint)rsLightCreate(); -} - -static void -nLightDestroy(JNIEnv *_env, jobject _this, jint light) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nLightDestroy, con(%p), light(%p)", con, (RsLight)light); - rsLightDestroy((RsLight)light); -} - -static void -nLightSetColor(JNIEnv *_env, jobject _this, jint light, float r, float g, float b) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nLightSetColor, con(%p), light(%p), r(%f), g(%f), b(%f)", con, (RsLight)light, r, g, b); - rsLightSetColor((RsLight)light, r, g, b); -} - -static void -nLightSetPosition(JNIEnv *_env, jobject _this, jint light, float x, float y, float z) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nLightSetPosition, con(%p), light(%p), x(%f), y(%f), z(%f)", con, (RsLight)light, x, y, z); - rsLightSetPosition((RsLight)light, x, y, z); -} - -// --------------------------------------------------------------------------- - - -static const char *classPathName = "android/renderscript/RenderScript"; - -static JNINativeMethod methods[] = { -{"_nInit", "()V", (void*)_nInit }, -{"nDeviceCreate", "()I", (void*)nDeviceCreate }, -{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, -{"nContextCreate", "(ILandroid/view/Surface;I)I", (void*)nContextCreate }, -{"nContextDestroy", "(I)V", (void*)nContextDestroy }, -{"nAssignName", "(I[B)V", (void*)nAssignName }, - -{"nFileOpen", "([B)I", (void*)nFileOpen }, - -{"nElementBegin", "()V", (void*)nElementBegin }, -{"nElementAddPredefined", "(I)V", (void*)nElementAddPredefined }, -{"nElementAdd", "(IIII)V", (void*)nElementAdd }, -{"nElementCreate", "()I", (void*)nElementCreate }, -{"nElementGetPredefined", "(I)I", (void*)nElementGetPredefined }, -{"nElementDestroy", "(I)V", (void*)nElementDestroy }, - -{"nTypeBegin", "(I)V", (void*)nTypeBegin }, -{"nTypeAdd", "(II)V", (void*)nTypeAdd }, -{"nTypeCreate", "()I", (void*)nTypeCreate }, -{"nTypeDestroy", "(I)V", (void*)nTypeDestroy }, - -{"nAllocationCreateTyped", "(I)I", (void*)nAllocationCreateTyped }, -{"nAllocationCreatePredefSized", "(II)I", (void*)nAllocationCreatePredefSized }, -{"nAllocationCreateSized", "(II)I", (void*)nAllocationCreateSized }, -{"nAllocationCreateFromBitmap", "(IZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, -{"nAllocationUploadToTexture", "(II)V", (void*)nAllocationUploadToTexture }, -{"nAllocationDestroy", "(I)V", (void*)nAllocationDestroy }, -{"nAllocationData", "(I[I)V", (void*)nAllocationData_i }, -{"nAllocationData", "(I[F)V", (void*)nAllocationData_f }, -{"nAllocationSubData1D", "(III[I)V", (void*)nAllocationSubData1D_i }, -{"nAllocationSubData1D", "(III[F)V", (void*)nAllocationSubData1D_f }, -{"nAllocationSubData2D", "(IIIII[I)V", (void*)nAllocationSubData2D_i }, -{"nAllocationSubData2D", "(IIIII[F)V", (void*)nAllocationSubData2D_f }, - -{"nTriangleMeshDestroy", "(I)V", (void*)nTriangleMeshDestroy }, -{"nTriangleMeshBegin", "(II)V", (void*)nTriangleMeshBegin }, -{"nTriangleMeshAddVertex_XY", "(FF)V", (void*)nTriangleMeshAddVertex_XY }, -{"nTriangleMeshAddVertex_XYZ", "(FFF)V", (void*)nTriangleMeshAddVertex_XYZ }, -{"nTriangleMeshAddVertex_XY_ST", "(FFFF)V", (void*)nTriangleMeshAddVertex_XY_ST }, -{"nTriangleMeshAddVertex_XYZ_ST", "(FFFFF)V", (void*)nTriangleMeshAddVertex_XYZ_ST }, -{"nTriangleMeshAddVertex_XYZ_ST_NORM", "(FFFFFFFF)V", (void*)nTriangleMeshAddVertex_XYZ_ST_NORM }, -{"nTriangleMeshAddTriangle", "(III)V", (void*)nTriangleMeshAddTriangle }, -{"nTriangleMeshCreate", "()I", (void*)nTriangleMeshCreate }, - -{"nAdapter1DDestroy", "(I)V", (void*)nAdapter1DDestroy }, -{"nAdapter1DBindAllocation", "(II)V", (void*)nAdapter1DBindAllocation }, -{"nAdapter1DSetConstraint", "(III)V", (void*)nAdapter1DSetConstraint }, -{"nAdapter1DData", "(I[I)V", (void*)nAdapter1DData_i }, -{"nAdapter1DSubData", "(III[I)V", (void*)nAdapter1DSubData_i }, -{"nAdapter1DData", "(I[F)V", (void*)nAdapter1DData_f }, -{"nAdapter1DSubData", "(III[F)V", (void*)nAdapter1DSubData_f }, -{"nAdapter1DCreate", "()I", (void*)nAdapter1DCreate }, - -{"nScriptDestroy", "(I)V", (void*)nScriptDestroy }, -{"nScriptBindAllocation", "(III)V", (void*)nScriptBindAllocation }, -{"nScriptCBegin", "()V", (void*)nScriptCBegin }, -{"nScriptCSetClearColor", "(FFFF)V", (void*)nScriptCSetClearColor }, -{"nScriptCSetClearDepth", "(F)V", (void*)nScriptCSetClearDepth }, -{"nScriptCSetClearStencil", "(I)V", (void*)nScriptCSetClearStencil }, -{"nScriptCAddType", "(I)V", (void*)nScriptCAddType }, -{"nScriptCSetRoot", "(Z)V", (void*)nScriptCSetRoot }, -{"nScriptCSetScript", "([BII)V", (void*)nScriptCSetScript }, -{"nScriptCCreate", "()I", (void*)nScriptCCreate }, - -{"nProgramFragmentStoreBegin", "(II)V", (void*)nProgramFragmentStoreBegin }, -{"nProgramFragmentStoreDepthFunc", "(I)V", (void*)nProgramFragmentStoreDepthFunc }, -{"nProgramFragmentStoreDepthMask", "(Z)V", (void*)nProgramFragmentStoreDepthMask }, -{"nProgramFragmentStoreColorMask", "(ZZZZ)V", (void*)nProgramFragmentStoreColorMask }, -{"nProgramFragmentStoreBlendFunc", "(II)V", (void*)nProgramFragmentStoreBlendFunc }, -{"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither }, -{"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate }, -{"nProgramFragmentStoreDestroy", "(I)V", (void*)nProgramFragmentStoreDestroy }, - -{"nProgramFragmentBegin", "(II)V", (void*)nProgramFragmentBegin }, -{"nProgramFragmentBindTexture", "(III)V", (void*)nProgramFragmentBindTexture }, -{"nProgramFragmentBindSampler", "(III)V", (void*)nProgramFragmentBindSampler }, -{"nProgramFragmentSetType", "(II)V", (void*)nProgramFragmentSetType }, -{"nProgramFragmentSetEnvMode", "(II)V", (void*)nProgramFragmentSetEnvMode }, -{"nProgramFragmentSetTexEnable", "(IZ)V", (void*)nProgramFragmentSetTexEnable }, -{"nProgramFragmentCreate", "()I", (void*)nProgramFragmentCreate }, -{"nProgramFragmentDestroy", "(I)V", (void*)nProgramFragmentDestroy }, - -{"nProgramVertexDestroy", "(I)V", (void*)nProgramVertexDestroy }, -{"nProgramVertexBindAllocation", "(III)V", (void*)nProgramVertexBindAllocation }, -{"nProgramVertexBegin", "(II)V", (void*)nProgramVertexBegin }, -{"nProgramVertexSetType", "(II)V", (void*)nProgramVertexSetType }, -{"nProgramVertexSetTextureMatrixEnable", "(Z)V", (void*)nProgramVertexSetTextureMatrixEnable }, -{"nProgramVertexAddLight", "(I)V", (void*)nProgramVertexAddLight }, -{"nProgramVertexCreate", "()I", (void*)nProgramVertexCreate }, - -{"nLightBegin", "()V", (void*)nLightBegin }, -{"nLightSetIsMono", "(Z)V", (void*)nLightSetIsMono }, -{"nLightSetIsLocal", "(Z)V", (void*)nLightSetIsLocal }, -{"nLightCreate", "()I", (void*)nLightCreate }, -{"nLightDestroy", "(I)V", (void*)nLightDestroy }, -{"nLightSetColor", "(IFFF)V", (void*)nLightSetColor }, -{"nLightSetPosition", "(IFFF)V", (void*)nLightSetPosition }, - -{"nContextBindRootScript", "(I)V", (void*)nContextBindRootScript }, -{"nContextBindProgramFragmentStore","(I)V", (void*)nContextBindProgramFragmentStore }, -{"nContextBindProgramFragment", "(I)V", (void*)nContextBindProgramFragment }, -{"nContextBindProgramVertex", "(I)V", (void*)nContextBindProgramVertex }, - -{"nSamplerDestroy", "(I)V", (void*)nSamplerDestroy }, -{"nSamplerBegin", "()V", (void*)nSamplerBegin }, -{"nSamplerSet", "(II)V", (void*)nSamplerSet }, -{"nSamplerCreate", "()I", (void*)nSamplerCreate }, - -}; - -static int registerFuncs(JNIEnv *_env) -{ - return android::AndroidRuntime::registerNativeMethods( - _env, classPathName, methods, NELEM(methods)); -} - -// --------------------------------------------------------------------------- - -jint JNI_OnLoad(JavaVM* vm, void* reserved) -{ - JNIEnv* env = NULL; - jint result = -1; - - if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { - LOGE("ERROR: GetEnv failed\n"); - goto bail; - } - assert(env != NULL); - - if (registerFuncs(env) < 0) { - LOGE("ERROR: MediaPlayer native registration failed\n"); - goto bail; - } - - /* success -- return valid version number */ - result = JNI_VERSION_1_4; - -bail: - return result; -} |