summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2010-02-09 16:05:07 -0800
committerJason Sams <rjsams@android.com>2010-02-09 16:05:07 -0800
commit704ff64b099406bb328898a7443921f22dbffd6d (patch)
treef5ec300c4d3bd6cdb6225909b4435d44a4a226dd /graphics
parent5bec3aa2c6bcde7f81ca77b0887296bf05a745c8 (diff)
downloadframeworks_base-704ff64b099406bb328898a7443921f22dbffd6d.zip
frameworks_base-704ff64b099406bb328898a7443921f22dbffd6d.tar.gz
frameworks_base-704ff64b099406bb328898a7443921f22dbffd6d.tar.bz2
Preview seperating RenderScript into RenderScript and RenderScriptGL
Diffstat (limited to 'graphics')
-rw-r--r--graphics/java/android/renderscript/RSSurfaceView.java8
-rw-r--r--graphics/java/android/renderscript/RenderScript.java114
-rw-r--r--graphics/java/android/renderscript/RenderScriptGL.java127
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp18
4 files changed, 165 insertions, 102 deletions
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java
index ad1bb54..1d3f82d 100644
--- a/graphics/java/android/renderscript/RSSurfaceView.java
+++ b/graphics/java/android/renderscript/RSSurfaceView.java
@@ -36,7 +36,7 @@ import android.view.SurfaceView;
**/
public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mSurfaceHolder;
- private RenderScript mRS;
+ private RenderScriptGL mRS;
/**
* Standard View constructor. In order to render something, you
@@ -146,13 +146,13 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback
// ----------------------------------------------------------------------
- public RenderScript createRenderScript(boolean useDepth, boolean forceSW) {
+ public RenderScriptGL createRenderScript(boolean useDepth, boolean forceSW) {
Log.v(RenderScript.LOG_TAG, "createRenderScript");
- mRS = new RenderScript(useDepth, forceSW);
+ mRS = new RenderScriptGL(useDepth, forceSW);
return mRS;
}
- public RenderScript createRenderScript(boolean useDepth) {
+ public RenderScriptGL createRenderScript(boolean useDepth) {
return createRenderScript(useDepth, false);
}
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 29361af..84b1a70 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -31,11 +31,9 @@ import android.view.Surface;
**/
public class RenderScript {
static final String LOG_TAG = "RenderScript_jni";
- private static final boolean DEBUG = false;
+ protected static final boolean DEBUG = false;
@SuppressWarnings({"UnusedDeclaration", "deprecation"})
- private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
- int mWidth;
- int mHeight;
+ protected static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
@@ -44,8 +42,8 @@ public class RenderScript {
* field offsets.
*/
@SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"})
- private static boolean sInitialized;
- native private static void _nInit();
+ protected static boolean sInitialized;
+ native protected static void _nInit();
static {
@@ -64,7 +62,8 @@ public class RenderScript {
native int nDeviceCreate();
native void nDeviceDestroy(int dev);
native void nDeviceSetConfig(int dev, int param, int value);
- native int nContextCreate(int dev, int ver, boolean useDepth);
+ native int nContextCreateGL(int dev, int ver, boolean useDepth);
+ native int nContextCreate(int dev, int ver);
native void nContextDestroy(int con);
native void nContextSetSurface(int w, int h, Surface sur);
native void nContextSetPriority(int p);
@@ -190,11 +189,10 @@ public class RenderScript {
native void nAnimationAdd(float time, float[] attribs);
native int nAnimationCreate();
- private int mDev;
- private int mContext;
+ protected int mDev;
+ protected int mContext;
@SuppressWarnings({"FieldCanBeLocal"})
- private Surface mSurface;
- private MessageThread mMessageThread;
+ protected MessageThread mMessageThread;
Element mElement_USER_U8;
Element mElement_USER_I8;
@@ -251,7 +249,7 @@ public class RenderScript {
nContextSetPriority(p.mID);
}
- private static class MessageThread extends Thread {
+ protected static class MessageThread extends Thread {
RenderScript mRS;
boolean mRun = true;
@@ -289,26 +287,18 @@ public class RenderScript {
}
}
- public RenderScript(boolean useDepth, boolean forceSW) {
- mSurface = null;
- mWidth = 0;
- mHeight = 0;
- mDev = nDeviceCreate();
- if(forceSW) {
- nDeviceSetConfig(mDev, 0, 1);
- }
- mContext = nContextCreate(mDev, 0, useDepth);
- mMessageThread = new MessageThread(this);
- mMessageThread.start();
- Element.initPredefined(this);
+ protected RenderScript() {
}
- public void contextSetSurface(int w, int h, Surface sur) {
- mSurface = sur;
- mWidth = w;
- mHeight = h;
- validate();
- nContextSetSurface(w, h, mSurface);
+ public static RenderScript create() {
+ RenderScript rs = new RenderScript();
+
+ rs.mDev = rs.nDeviceCreate();
+ rs.mContext = rs.nContextCreate(rs.mDev, 0);
+ rs.mMessageThread = new MessageThread(rs);
+ rs.mMessageThread.start();
+ Element.initPredefined(rs);
+ return rs;
}
public void contextDump(int bits) {
@@ -332,77 +322,15 @@ public class RenderScript {
return mContext != 0;
}
- void pause() {
- validate();
- nContextPause();
- }
-
- void resume() {
- validate();
- nContextResume();
- }
-
- //////////////////////////////////////////////////////////////////////////////////
- // File
-
- public class File extends BaseObj {
- File(int id) {
- super(RenderScript.this);
- mID = id;
- }
- }
-
- 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
- private int safeID(BaseObj o) {
+ protected int safeID(BaseObj o) {
if(o != null) {
return o.mID;
}
return 0;
}
-
- public void contextBindRootScript(Script s) {
- validate();
- nContextBindRootScript(safeID(s));
- }
-
- public void contextBindProgramFragmentStore(ProgramStore p) {
- validate();
- nContextBindProgramFragmentStore(safeID(p));
- }
-
- public void contextBindProgramFragment(ProgramFragment p) {
- validate();
- nContextBindProgramFragment(safeID(p));
- }
-
- public void contextBindProgramRaster(ProgramRaster p) {
- validate();
- nContextBindProgramRaster(safeID(p));
- }
-
- public void contextBindProgramVertex(ProgramVertex p) {
- validate();
- nContextBindProgramVertex(safeID(p));
- }
-
}
diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java
new file mode 100644
index 0000000..d1df23d
--- /dev/null
+++ b/graphics/java/android/renderscript/RenderScriptGL.java
@@ -0,0 +1,127 @@
+/*
+ * 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.lang.reflect.Field;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.util.Config;
+import android.util.Log;
+import android.view.Surface;
+
+
+/**
+ * @hide
+ *
+ **/
+public class RenderScriptGL extends RenderScript {
+ private Surface mSurface;
+ int mWidth;
+ int mHeight;
+
+
+ public RenderScriptGL(boolean useDepth, boolean forceSW) {
+ mSurface = null;
+ mWidth = 0;
+ mHeight = 0;
+ mDev = nDeviceCreate();
+ if(forceSW) {
+ nDeviceSetConfig(mDev, 0, 1);
+ }
+ mContext = nContextCreateGL(mDev, 0, useDepth);
+ mMessageThread = new MessageThread(this);
+ mMessageThread.start();
+ Element.initPredefined(this);
+ }
+
+ public void contextSetSurface(int w, int h, Surface sur) {
+ mSurface = sur;
+ mWidth = w;
+ mHeight = h;
+ validate();
+ nContextSetSurface(w, h, mSurface);
+ }
+
+
+ void pause() {
+ validate();
+ nContextPause();
+ }
+
+ void resume() {
+ validate();
+ nContextResume();
+ }
+
+
+ public void contextBindRootScript(Script s) {
+ validate();
+ nContextBindRootScript(safeID(s));
+ }
+
+ public void contextBindProgramFragmentStore(ProgramStore p) {
+ validate();
+ nContextBindProgramFragmentStore(safeID(p));
+ }
+
+ public void contextBindProgramFragment(ProgramFragment p) {
+ validate();
+ nContextBindProgramFragment(safeID(p));
+ }
+
+ public void contextBindProgramRaster(ProgramRaster p) {
+ validate();
+ nContextBindProgramRaster(safeID(p));
+ }
+
+ public void contextBindProgramVertex(ProgramVertex p) {
+ validate();
+ nContextBindProgramVertex(safeID(p));
+ }
+
+
+
+
+ //////////////////////////////////////////////////////////////////////////////////
+ // File
+
+ public class File extends BaseObj {
+ File(int id) {
+ super(RenderScriptGL.this);
+ mID = id;
+ }
+ }
+
+ 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);
+ }
+ }
+
+}
+
+
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 7ded133..4d35c37 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -151,10 +151,17 @@ nDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value)
}
static jint
-nContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver, jboolean useDepth)
+nContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver)
{
LOG_API("nContextCreate");
- return (jint)rsContextCreate((RsDevice)dev, ver, useDepth);
+ return (jint)rsContextCreate((RsDevice)dev, ver);
+}
+
+static jint
+nContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, jboolean useDepth)
+{
+ LOG_API("nContextCreateGL");
+ return (jint)rsContextCreateGL((RsDevice)dev, ver, useDepth);
}
static void
@@ -260,7 +267,7 @@ nElementCreate2(JNIEnv *_env, jobject _this, jintArray _ids, jobjectArray _names
{
int fieldCount = _env->GetArrayLength(_ids);
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
- LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size);
+ LOG_API("nElementCreate2, con(%p)", con);
jint *ids = _env->GetIntArrayElements(_ids, NULL);
const char ** nameArray = (const char **)calloc(fieldCount, sizeof(char *));
@@ -1089,7 +1096,7 @@ nProgramFragmentCreate(JNIEnv *_env, jobject _this, jintArray params)
jint *paramPtr = _env->GetIntArrayElements(params, NULL);
jint paramLen = _env->GetArrayLength(params);
- LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, shaderLen, paramLen);
+ LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, paramLen);
jint ret = (jint)rsProgramFragmentCreate(con, (uint32_t *)paramPtr, paramLen);
_env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT);
@@ -1332,7 +1339,8 @@ static JNINativeMethod methods[] = {
{"nDeviceCreate", "()I", (void*)nDeviceCreate },
{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy },
{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig },
-{"nContextCreate", "(IIZ)I", (void*)nContextCreate },
+{"nContextCreate", "(II)I", (void*)nContextCreate },
+{"nContextCreateGL", "(IIZ)I", (void*)nContextCreateGL },
{"nContextSetPriority", "(I)V", (void*)nContextSetPriority },
{"nContextSetSurface", "(IILandroid/view/Surface;)V", (void*)nContextSetSurface },
{"nContextDestroy", "(I)V", (void*)nContextDestroy },