Code Cleanup and better Sampler creation method

Change-Id: I9e35081ee6034cb619f43a47f8f22f38977f5d12
diff --git a/rs.spec b/rs.spec
index 0c4e1ed..5370e25 100644
--- a/rs.spec
+++ b/rs.spec
@@ -250,24 +250,15 @@
 	param uint32_t dimY
 	}
 
-SamplerBegin {
-	}
-
-SamplerSet {
-	param RsSamplerParam p
-	param RsSamplerValue value
-	}
-
-SamplerSet2 {
-	param RsSamplerParam p
-	param float value
-	}
-
 SamplerCreate {
-	ret RsSampler
-	}
-
-
+    param RsSamplerValue magFilter
+    param RsSamplerValue minFilter
+    param RsSamplerValue wrapS
+    param RsSamplerValue wrapT
+    param RsSamplerValue wrapR
+    param float mAniso
+    ret RsSampler
+}
 
 ScriptBindAllocation {
 	param RsScript vtm
@@ -275,13 +266,11 @@
 	param uint32_t slot
 	}
 
-
 ScriptSetTimeZone {
 	param RsScript s
 	param const char * timeZone
 	}
 
-
 ScriptInvoke {
 	param RsScript s
 	param uint32_t slot
@@ -293,7 +282,7 @@
 	param const void * data
 	}
 
-ScriptForEach { 
+ScriptForEach {
     param RsScript s
     param uint32_t slot
     param RsAllocation ain
diff --git a/rsProgram.cpp b/rsProgram.cpp
index 28fa061..c0fa95b 100644
--- a/rsProgram.cpp
+++ b/rsProgram.cpp
@@ -49,7 +49,6 @@
     mHal.state.constants = new ObjectBaseRef<Allocation>[mHal.state.constantsCount];
 
     uint32_t input = 0;
-    uint32_t output = 0;
     uint32_t constant = 0;
     uint32_t texture = 0;
     for (uint32_t ct=0; ct < paramLength; ct+=2) {
@@ -154,7 +153,6 @@
         return;
     }
 
-    //LOGE("bindtex %i %p", slot, a);
     mHal.state.textures[slot].set(a);
     mDirty = true;
 }
@@ -170,10 +168,6 @@
     mDirty = true;
 }
 
-void Program::setShader(const char *txt, uint32_t len) {
-    mUserShader.setTo(txt, len);
-}
-
 namespace android {
 namespace renderscript {
 
diff --git a/rsProgram.h b/rsProgram.h
index bcf5519..2922270 100644
--- a/rsProgram.h
+++ b/rsProgram.h
@@ -43,8 +43,6 @@
     void bindTexture(Context *, uint32_t slot, Allocation *);
     void bindSampler(Context *, uint32_t slot, Sampler *);
 
-    void setShader(const char *, uint32_t len);
-
     void forceDirty() const {mDirty = true;}
 
     struct Hal {
diff --git a/rsProgramFragment.cpp b/rsProgramFragment.cpp
index 39887ca..fcbfbc8 100644
--- a/rsProgramFragment.cpp
+++ b/rsProgramFragment.cpp
@@ -56,7 +56,6 @@
 }
 
 void ProgramFragment::setupGL2(Context *rsc, ProgramFragmentState *state) {
-    //LOGE("sgl2 frag1 %x", glGetError());
     if ((state->mLast.get() == this) && !mDirty) {
         return;
     }
diff --git a/rsProgramVertex.cpp b/rsProgramVertex.cpp
index dfd732f..b8b3c0b 100644
--- a/rsProgramVertex.cpp
+++ b/rsProgramVertex.cpp
@@ -37,8 +37,6 @@
         return;
     }
 
-    rsc->checkError("ProgramVertex::setupGL2 start");
-
     if (!isUserProgram()) {
         if (mHal.state.constants[0].get() == NULL) {
             rsc->setError(RS_ERROR_FATAL_UNKNOWN,
@@ -59,8 +57,6 @@
     state->mLast.set(this);
 
     rsc->mHal.funcs.vertex.setActive(rsc, this);
-
-    rsc->checkError("ProgramVertex::setupGL2");
 }
 
 void ProgramVertex::setProjectionMatrix(Context *rsc, const rsc_Matrix *m) const {
diff --git a/rsSampler.cpp b/rsSampler.cpp
index db2383a..670d07e 100644
--- a/rsSampler.cpp
+++ b/rsSampler.cpp
@@ -39,12 +39,12 @@
                  RsSamplerValue wrapT,
                  RsSamplerValue wrapR,
                  float aniso) : ObjectBase(rsc) {
-    mMagFilter = magFilter;
-    mMinFilter = minFilter;
-    mWrapS = wrapS;
-    mWrapT = wrapT;
-    mWrapR = wrapR;
-    mAniso = aniso;
+    mHal.state.magFilter = magFilter;
+    mHal.state.minFilter = minFilter;
+    mHal.state.wrapS = wrapS;
+    mHal.state.wrapT = wrapT;
+    mHal.state.wrapR = wrapR;
+    mHal.state.aniso = aniso;
 }
 
 Sampler::~Sampler() {
@@ -76,35 +76,35 @@
         if (tex->getHasGraphicsMipmaps() &&
             (rsc->ext_GL_NV_texture_npot_2D_mipmap() || rsc->ext_GL_IMG_texture_npot())) {
             if (rsc->ext_GL_NV_texture_npot_2D_mipmap()) {
-                glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mMinFilter]);
+                glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mHal.state.minFilter]);
             } else {
-                switch (trans[mMinFilter]) {
+                switch (trans[mHal.state.minFilter]) {
                 case GL_LINEAR_MIPMAP_LINEAR:
                     glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
                     break;
                 default:
-                    glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mMinFilter]);
+                    glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mHal.state.minFilter]);
                     break;
                 }
             }
         } else {
-            glTexParameteri(target, GL_TEXTURE_MIN_FILTER, transNP[mMinFilter]);
+            glTexParameteri(target, GL_TEXTURE_MIN_FILTER, transNP[mHal.state.minFilter]);
         }
-        glTexParameteri(target, GL_TEXTURE_MAG_FILTER, transNP[mMagFilter]);
-        glTexParameteri(target, GL_TEXTURE_WRAP_S, transNP[mWrapS]);
-        glTexParameteri(target, GL_TEXTURE_WRAP_T, transNP[mWrapT]);
+        glTexParameteri(target, GL_TEXTURE_MAG_FILTER, transNP[mHal.state.magFilter]);
+        glTexParameteri(target, GL_TEXTURE_WRAP_S, transNP[mHal.state.wrapS]);
+        glTexParameteri(target, GL_TEXTURE_WRAP_T, transNP[mHal.state.wrapT]);
     } else {
         if (tex->getHasGraphicsMipmaps()) {
-            glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mMinFilter]);
+            glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mHal.state.minFilter]);
         } else {
-            glTexParameteri(target, GL_TEXTURE_MIN_FILTER, transNP[mMinFilter]);
+            glTexParameteri(target, GL_TEXTURE_MIN_FILTER, transNP[mHal.state.minFilter]);
         }
-        glTexParameteri(target, GL_TEXTURE_MAG_FILTER, trans[mMagFilter]);
-        glTexParameteri(target, GL_TEXTURE_WRAP_S, trans[mWrapS]);
-        glTexParameteri(target, GL_TEXTURE_WRAP_T, trans[mWrapT]);
+        glTexParameteri(target, GL_TEXTURE_MAG_FILTER, trans[mHal.state.magFilter]);
+        glTexParameteri(target, GL_TEXTURE_WRAP_S, trans[mHal.state.wrapS]);
+        glTexParameteri(target, GL_TEXTURE_WRAP_T, trans[mHal.state.wrapT]);
     }
 
-    float anisoValue = rsMin(rsc->ext_texture_max_aniso(), mAniso);
+    float anisoValue = rsMin(rsc->ext_texture_max_aniso(), mHal.state.aniso);
     if (rsc->ext_texture_max_aniso() > 1.0f) {
         glTexParameterf(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, anisoValue);
     }
@@ -135,66 +135,14 @@
 namespace android {
 namespace renderscript {
 
-
-void rsi_SamplerBegin(Context *rsc) {
-    SamplerState * ss = &rsc->mStateSampler;
-
-    ss->mMagFilter = RS_SAMPLER_LINEAR;
-    ss->mMinFilter = RS_SAMPLER_LINEAR;
-    ss->mWrapS = RS_SAMPLER_WRAP;
-    ss->mWrapT = RS_SAMPLER_WRAP;
-    ss->mWrapR = RS_SAMPLER_WRAP;
-    ss->mAniso = 1.0f;
-}
-
-void rsi_SamplerSet(Context *rsc, RsSamplerParam param, RsSamplerValue value) {
-    SamplerState * ss = &rsc->mStateSampler;
-
-    switch (param) {
-    case RS_SAMPLER_MAG_FILTER:
-        ss->mMagFilter = value;
-        break;
-    case RS_SAMPLER_MIN_FILTER:
-        ss->mMinFilter = value;
-        break;
-    case RS_SAMPLER_WRAP_S:
-        ss->mWrapS = value;
-        break;
-    case RS_SAMPLER_WRAP_T:
-        ss->mWrapT = value;
-        break;
-    case RS_SAMPLER_WRAP_R:
-        ss->mWrapR = value;
-        break;
-    default:
-        LOGE("Attempting to set invalid value on sampler");
-        break;
-    }
-}
-
-void rsi_SamplerSet2(Context *rsc, RsSamplerParam param, float value) {
-    SamplerState * ss = &rsc->mStateSampler;
-
-    switch (param) {
-    case RS_SAMPLER_ANISO:
-        ss->mAniso = value;
-        break;
-    default:
-        LOGE("Attempting to set invalid value on sampler");
-        break;
-    }
-}
-
-RsSampler rsi_SamplerCreate(Context *rsc) {
-    SamplerState * ss = &rsc->mStateSampler;
-
-    Sampler * s = new Sampler(rsc,
-                              ss->mMagFilter,
-                              ss->mMinFilter,
-                              ss->mWrapS,
-                              ss->mWrapT,
-                              ss->mWrapR,
-                              ss->mAniso);
+RsSampler rsi_SamplerCreate(Context * rsc,
+                            RsSamplerValue magFilter,
+                            RsSamplerValue minFilter,
+                            RsSamplerValue wrapS,
+                            RsSamplerValue wrapT,
+                            RsSamplerValue wrapR,
+                            float aniso) {
+    Sampler * s = new Sampler(rsc, magFilter, minFilter, wrapS, wrapT, wrapR, aniso);
     s->incUserRef();
     return s;
 }
diff --git a/rsSampler.h b/rsSampler.h
index 737bb8b..192ee07 100644
--- a/rsSampler.h
+++ b/rsSampler.h
@@ -50,14 +50,22 @@
     virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_SAMPLER; }
     static Sampler *createFromStream(Context *rsc, IStream *stream);
 
-protected:
-    RsSamplerValue mMagFilter;
-    RsSamplerValue mMinFilter;
-    RsSamplerValue mWrapS;
-    RsSamplerValue mWrapT;
-    RsSamplerValue mWrapR;
-    float mAniso;
+    struct Hal {
+        mutable void *drv;
 
+        struct State {
+            RsSamplerValue magFilter;
+            RsSamplerValue minFilter;
+            RsSamplerValue wrapS;
+            RsSamplerValue wrapT;
+            RsSamplerValue wrapR;
+            float aniso;
+        };
+        State state;
+    };
+    Hal mHal;
+
+protected:
     int32_t mBoundSlot;
 
 private:
@@ -67,13 +75,6 @@
 
 class SamplerState {
 public:
-    RsSamplerValue mMagFilter;
-    RsSamplerValue mMinFilter;
-    RsSamplerValue mWrapS;
-    RsSamplerValue mWrapT;
-    RsSamplerValue mWrapR;
-    float mAniso;
-
     ObjectBaseRef<Sampler> mSamplers[RS_MAX_SAMPLER_SLOT];
 };