summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-08-20 16:10:36 -0700
committerJason Sams <rjsams@android.com>2009-08-20 16:11:03 -0700
commit25ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9fae (patch)
tree37bac4daba3c96307217faea840754cdbd9d5cba /graphics
parentac81c42971ddcd0726c4f2050fd82942914d0e1c (diff)
downloadframeworks_base-25ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9fae.zip
frameworks_base-25ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9fae.tar.gz
frameworks_base-25ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9fae.tar.bz2
Point Sprites
Diffstat (limited to 'graphics')
-rw-r--r--graphics/java/android/renderscript/Element.java10
-rw-r--r--graphics/java/android/renderscript/ProgramFragment.java16
-rw-r--r--graphics/java/android/renderscript/RenderScript.java6
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp34
4 files changed, 27 insertions, 39 deletions
diff --git a/graphics/java/android/renderscript/Element.java b/graphics/java/android/renderscript/Element.java
index 3f75069..aeec739 100644
--- a/graphics/java/android/renderscript/Element.java
+++ b/graphics/java/android/renderscript/Element.java
@@ -111,7 +111,8 @@ public class Element extends BaseObj {
NX (15),
NY (16),
NZ (17),
- INDEX (18);
+ INDEX (18),
+ POINT_SIZE(19);
int mID;
DataKind(int id) {
@@ -241,13 +242,18 @@ public class Element extends BaseObj {
add(DataType.FLOAT, DataKind.Z, false, 32, null);
return this;
}
-
+
public Builder addFloatST() {
add(DataType.FLOAT, DataKind.S, false, 32, null);
add(DataType.FLOAT, DataKind.T, false, 32, null);
return this;
}
+ public Builder addFloatPointSize() {
+ add(DataType.FLOAT, DataKind.POINT_SIZE, false, 32, null);
+ return this;
+ }
+
public Builder addFloatRGB() {
add(DataType.FLOAT, DataKind.RED, false, 32, null);
add(DataType.FLOAT, DataKind.GREEN, false, 32, null);
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java
index aad09f6..392d93d 100644
--- a/graphics/java/android/renderscript/ProgramFragment.java
+++ b/graphics/java/android/renderscript/ProgramFragment.java
@@ -68,6 +68,7 @@ public class ProgramFragment extends BaseObj {
RenderScript mRS;
Element mIn;
Element mOut;
+ boolean mPointSpriteEnable;
private class Slot {
Type mType;
@@ -85,6 +86,7 @@ public class ProgramFragment extends BaseObj {
mIn = in;
mOut = out;
mSlots = new Slot[MAX_SLOT];
+ mPointSpriteEnable = false;
for(int ct=0; ct < MAX_SLOT; ct++) {
mSlots[ct] = new Slot();
}
@@ -117,6 +119,9 @@ public class ProgramFragment extends BaseObj {
mSlots[slot].mEnv = env;
}
+ public void setPointSpriteTexCoordinateReplacement(boolean enable) {
+ mPointSpriteEnable = enable;
+ }
static synchronized ProgramFragment internalCreate(RenderScript rs, Builder b) {
int inID = 0;
@@ -127,21 +132,18 @@ public class ProgramFragment extends BaseObj {
if (b.mOut != null) {
outID = b.mOut.mID;
}
- rs.nProgramFragmentBegin(inID, outID);
+ rs.nProgramFragmentBegin(inID, outID, b.mPointSpriteEnable);
for(int ct=0; ct < MAX_SLOT; ct++) {
if(b.mSlots[ct].mTexEnable) {
Slot s = b.mSlots[ct];
+ int typeID = 0;
if(s.mType != null) {
- rs.nProgramFragmentSetType(ct, s.mType.mID);
- }
- rs.nProgramFragmentSetTexEnable(ct, true);
- if(s.mEnv != null) {
- rs.nProgramFragmentSetEnvMode(ct, s.mEnv.mID);
+ typeID = s.mType.mID;
}
+ rs.nProgramFragmentSetSlot(ct, true, s.mEnv.mID, typeID);
}
}
-
int id = rs.nProgramFragmentCreate();
return new ProgramFragment(id, rs);
}
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index fca1c7a..076a5d4 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -158,12 +158,10 @@ public class RenderScript {
native void nProgramFragmentStoreDither(boolean enable);
native int nProgramFragmentStoreCreate();
- native void nProgramFragmentBegin(int in, int out);
+ native void nProgramFragmentBegin(int in, int out, boolean pointSpriteEnable);
native void nProgramFragmentBindTexture(int vpf, int slot, int a);
native void nProgramFragmentBindSampler(int vpf, int slot, int s);
- native void nProgramFragmentSetType(int slot, int vt);
- native void nProgramFragmentSetEnvMode(int slot, int env);
- native void nProgramFragmentSetTexEnable(int slot, boolean enable);
+ native void nProgramFragmentSetSlot(int slot, boolean enable, int env, int vt);
native int nProgramFragmentCreate();
native void nProgramVertexBindAllocation(int pv, int mID);
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 001ecd0..fede0e5 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -952,11 +952,11 @@ nProgramFragmentStoreCreate(JNIEnv *_env, jobject _this)
// ---------------------------------------------------------------------------
static void
-nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out)
+nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out, jboolean pointSpriteEnable)
{
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
- LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out);
- rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out);
+ LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p) PointSprite(%i)", con, (RsElement)in, (RsElement)out, pointSpriteEnable);
+ rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out, pointSpriteEnable);
}
static void
@@ -976,27 +976,11 @@ nProgramFragmentBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, ji
}
static void
-nProgramFragmentSetType(JNIEnv *_env, jobject _this, jint slot, jint vt)
+nProgramFragmentSetSlot(JNIEnv *_env, jobject _this, jint slot, jboolean enable, jint env, jint vt)
{
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
- LOG_API("nProgramFragmentSetType, con(%p), slot(%i), vt(%p)", con, slot, (RsType)vt);
- rsProgramFragmentSetType(con, 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(con, 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(con, slot, enable);
+ LOG_API("nProgramFragmentSetType, con(%p), slot(%i), enable(%i), env(%i), vt(%p)", con, slot, enable, env, (RsType)vt);
+ rsProgramFragmentSetSlot(con, slot, enable, (RsTexEnvMode)env, (RsType)vt);
}
static jint
@@ -1305,12 +1289,10 @@ static JNINativeMethod methods[] = {
{"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither },
{"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate },
-{"nProgramFragmentBegin", "(II)V", (void*)nProgramFragmentBegin },
+{"nProgramFragmentBegin", "(IIZ)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 },
+{"nProgramFragmentSetSlot", "(IZII)V", (void*)nProgramFragmentSetSlot },
{"nProgramFragmentCreate", "()I", (void*)nProgramFragmentCreate },
{"nProgramVertexBindAllocation", "(II)V", (void*)nProgramVertexBindAllocation },