diff options
| author | 2009-05-28 15:37:57 -0700 | |
|---|---|---|
| committer | 2009-05-28 16:16:46 -0700 | |
| commit | 02fb2cb531035779a25dbf9595e0628ea40585b0 (patch) | |
| tree | c8151779dd70e8242412a327add168a0e5444a4e /libs/rs/java | |
| parent | 206b83190708738552be7760acfeefa1143555b5 (diff) | |
Add sampler support
Diffstat (limited to 'libs/rs/java')
| -rw-r--r-- | libs/rs/java/Fountain/src/com/android/fountain/FountainView.java | 8 | ||||
| -rw-r--r-- | libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java | 69 |
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 |