summaryrefslogtreecommitdiff
path: root/libs/rs/java
diff options
context:
space:
mode:
author Jason Sams <rjsams@android.com> 2009-05-28 15:37:57 -0700
committer Jason Sams <rjsams@android.com> 2009-05-28 16:16:46 -0700
commit02fb2cb531035779a25dbf9595e0628ea40585b0 (patch)
treec8151779dd70e8242412a327add168a0e5444a4e /libs/rs/java
parent206b83190708738552be7760acfeefa1143555b5 (diff)
Add sampler support
Diffstat (limited to 'libs/rs/java')
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/FountainView.java8
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java69
2 files changed, 71 insertions, 6 deletions
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
index bc340800e9fc..338152598bd7 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
@@ -52,6 +52,7 @@ public class FountainView extends RSSurfaceView {
private RenderScript.ProgramFragment mPF;
private RenderScript.ProgramFragment mPF2;
private RenderScript.Allocation mTexture;
+ private RenderScript.Sampler mSampler;
private Bitmap mBackground;
@@ -83,6 +84,12 @@ public class FountainView extends RSSurfaceView {
mPFS = mRS.programFragmentStoreCreate();
mRS.contextBindProgramFragmentStore(mPFS);
+ mRS.samplerBegin();
+ mRS.samplerSet(RenderScript.SamplerParam.FILTER_MAG, RenderScript.SamplerValue.LINEAR);
+ mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN, RenderScript.SamplerValue.LINEAR);
+ mSampler = mRS.samplerCreate();
+
+
mRS.programFragmentBegin(null, null);
mPF = mRS.programFragmentCreate();
//mRS.contextBindProgramFragment(mPF);
@@ -92,6 +99,7 @@ public class FountainView extends RSSurfaceView {
mPF2 = mRS.programFragmentCreate();
mRS.contextBindProgramFragment(mPF2);
mPF2.bindTexture(mTexture, 0);
+ mPF2.bindSampler(mSampler, 0);
mParams[0] = 0;
mParams[1] = partCount;
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java b/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
index 739f9ae06533..cf16cec7c5a5 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
@@ -38,7 +38,7 @@ public class RenderScript {
- /*
+ /*
* We use a class initializer to allow the native code to cache some
* field offsets.
*/
@@ -49,9 +49,7 @@ public class RenderScript {
sInitialized = false;
try {
System.loadLibrary("RS_jni");
- Log.e(LOG_TAG, "*** Renderscript INIT");
_nInit();
- Log.e(LOG_TAG, "*** Renderscript INIT 3");
sInitialized = true;
} catch (UnsatisfiedLinkError e) {
Log.d(LOG_TAG, "RenderScript JNI library not found!");
@@ -126,6 +124,10 @@ public class RenderScript {
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);
@@ -307,6 +309,34 @@ public class RenderScript {
}
}
+ 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;
@@ -727,9 +757,9 @@ public class RenderScript {
nProgramFragmentBindTexture(mID, slot, va.mID);
}
- //public void bindSampler(Sampler vs, int slot) {
- //nProgramFragmentBindSampler(mID, slot, vs.mID);
- //}
+ public void bindSampler(Sampler vs, int slot) {
+ nProgramFragmentBindSampler(mID, slot, vs.mID);
+ }
}
public void programFragmentBegin(Element in, Element out) {
@@ -761,6 +791,33 @@ public class RenderScript {
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);
+ }
+
///////////////////////////////////////////////////////////////////////////////////
// Root state