Add support for selecting the color bit depth and if the application used a depth buffer.
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java
index a4be171..792b98d 100644
--- a/graphics/java/android/renderscript/RSSurfaceView.java
+++ b/graphics/java/android/renderscript/RSSurfaceView.java
@@ -141,15 +141,12 @@
 
     // ----------------------------------------------------------------------
 
-    public RenderScript createRenderScript() {
-        Log.v(RenderScript.LOG_TAG, "createRenderScript 1");
+    public RenderScript createRenderScript(boolean useDepth) {
         Surface sur = null;
         while ((sur == null) || (mSurfaceHolder == null)) {
             sur = getHolder().getSurface();
         }
-        Log.v(RenderScript.LOG_TAG, "createRenderScript 2");
-        RenderScript rs = new RenderScript(sur);
-        Log.v(RenderScript.LOG_TAG, "createRenderScript 3 rs");
+        RenderScript rs = new RenderScript(sur, useDepth);
         return rs;
     }
 
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 1bdabe7..01926e9 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -60,7 +60,7 @@
 
     native int  nDeviceCreate();
     native void nDeviceDestroy(int dev);
-    native int  nContextCreate(int dev, Surface sur, int ver);
+    native int  nContextCreate(int dev, Surface sur, int ver, boolean useDepth);
     native void nContextDestroy(int con);
 
     //void rsContextBindSampler (uint32_t slot, RsSampler sampler);
@@ -194,10 +194,10 @@
     ///////////////////////////////////////////////////////////////////////////////////
     //
 
-    public RenderScript(Surface sur) {
+    public RenderScript(Surface sur, boolean useDepth) {
         mSurface = sur;
         mDev = nDeviceCreate();
-        mContext = nContextCreate(mDev, mSurface, 0);
+        mContext = nContextCreate(mDev, mSurface, 0, useDepth);
 
         // TODO: This should be protected by a lock
         if(!mElementsInitialized) {
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index fede0e50..2393f74 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -126,7 +126,7 @@
 }
 
 static jint
-nContextCreate(JNIEnv *_env, jobject _this, jint dev, jobject wnd, jint ver)
+nContextCreate(JNIEnv *_env, jobject _this, jint dev, jobject wnd, jint ver, jboolean useDepth)
 {
     LOG_API("nContextCreate");
 
@@ -142,7 +142,7 @@
     if (window == NULL)
         goto not_valid_surface;
 
-    return (jint)rsContextCreate((RsDevice)dev, window, ver);
+    return (jint)rsContextCreate((RsDevice)dev, window, ver, useDepth);
 }
 
 static void
@@ -1206,7 +1206,7 @@
 {"_nInit",                         "()V",                                  (void*)_nInit },
 {"nDeviceCreate",                  "()I",                                  (void*)nDeviceCreate },
 {"nDeviceDestroy",                 "(I)V",                                 (void*)nDeviceDestroy },
-{"nContextCreate",                 "(ILandroid/view/Surface;I)I",          (void*)nContextCreate },
+{"nContextCreate",                 "(ILandroid/view/Surface;IZ)I",         (void*)nContextCreate },
 {"nContextDestroy",                "(I)V",                                 (void*)nContextDestroy },
 {"nAssignName",                    "(I[B)V",                               (void*)nAssignName },
 {"nObjDestroy",                    "(I)V",                                 (void*)nObjDestroy },
diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h
index 2f60c9f..1e24cd2 100644
--- a/libs/rs/RenderScript.h
+++ b/libs/rs/RenderScript.h
@@ -49,7 +49,7 @@
 RsDevice rsDeviceCreate();
 void rsDeviceDestroy(RsDevice);
 
-RsContext rsContextCreate(RsDevice, void *, uint32_t version);
+RsContext rsContextCreate(RsDevice, void *, uint32_t version, bool useDepth);
 void rsContextDestroy(RsContext);
 void rsObjDestroyOOB(RsContext, void *);
 
diff --git a/libs/rs/java/Fall/src/com/android/fall/rs/FallView.java b/libs/rs/java/Fall/src/com/android/fall/rs/FallView.java
index fa2caa7..7468d2b 100644
--- a/libs/rs/java/Fall/src/com/android/fall/rs/FallView.java
+++ b/libs/rs/java/Fall/src/com/android/fall/rs/FallView.java
@@ -36,7 +36,7 @@
     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
         super.surfaceChanged(holder, format, w, h);
 
-        RenderScript RS = createRenderScript();
+        RenderScript RS = createRenderScript(false);
         mRender = new FallRS(w, h);
         mRender.init(RS, getResources());
     }
diff --git a/libs/rs/java/Film/src/com/android/film/FilmView.java b/libs/rs/java/Film/src/com/android/film/FilmView.java
index 73b7414..1c5b2bc 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmView.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmView.java
@@ -52,7 +52,7 @@
     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
         super.surfaceChanged(holder, format, w, h);
 
-        mRS = createRenderScript();
+        mRS = createRenderScript(true);
         mRender = new FilmRS();
         mRender.init(mRS, getResources(), w, h);
     }
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 2768e2c..7826161 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
@@ -52,7 +52,7 @@
     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
         super.surfaceChanged(holder, format, w, h);
 
-        mRS = createRenderScript();
+        mRS = createRenderScript(false);
         mRender = new FountainRS();
         mRender.init(mRS, getResources(), w, h);
     }
diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java
index 3e1c54d..7524a0e 100644
--- a/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java
+++ b/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java
@@ -54,7 +54,7 @@
     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
         super.surfaceChanged(holder, format, w, h);
 
-        mRS = createRenderScript();
+        mRS = createRenderScript(false);
         mRender = new RolloRS();
         mRender.init(mRS, getResources(), w, h);
     }
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index 413caab..c8c69a8 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -18,6 +18,7 @@
 #include "rsContext.h"
 #include "rsThreadIO.h"
 #include <ui/FramebufferNativeWindow.h>
+#include <ui/EGLUtils.h>
 
 #include <GLES/gl.h>
 #include <GLES/glext.h>
@@ -29,41 +30,64 @@
 
 void Context::initEGL()
 {
-    mNumConfigs = -1;
+    mEGL.mNumConfigs = -1;
+    EGLint configAttribs[128];
+    EGLint *configAttribsPtr = configAttribs;
 
-    EGLint s_configAttribs[] = {
-         EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
-#if 1
-         EGL_RED_SIZE,       8,
-         EGL_GREEN_SIZE,     8,
-         EGL_BLUE_SIZE,      8,
-         EGL_ALPHA_SIZE,     8,
-#else
-         EGL_RED_SIZE,       5,
-         EGL_GREEN_SIZE,     6,
-         EGL_BLUE_SIZE,      5,
-#endif
-         EGL_DEPTH_SIZE,     16,
-         EGL_NONE
-     };
+    memset(configAttribs, 0, sizeof(configAttribs));
 
-     mDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-     eglInitialize(mDisplay, &mMajorVersion, &mMinorVersion);
-     eglChooseConfig(mDisplay, s_configAttribs, &mConfig, 1, &mNumConfigs);
+    configAttribsPtr[0] = EGL_SURFACE_TYPE;
+    configAttribsPtr[1] = EGL_WINDOW_BIT;
+    configAttribsPtr += 2;
 
-     if (mWndSurface) {
-         mSurface = eglCreateWindowSurface(mDisplay, mConfig, mWndSurface,
-                 NULL);
-     } else {
-         mSurface = eglCreateWindowSurface(mDisplay, mConfig,
-                 android_createDisplaySurface(),
-                 NULL);
-     }
+    if (mUseDepth) {
+        configAttribsPtr[0] = EGL_DEPTH_SIZE;
+        configAttribsPtr[1] = 16;
+        configAttribsPtr += 2;
+    }
+    configAttribsPtr[0] = EGL_NONE;
+    rsAssert(configAttribsPtr < (configAttribs + (sizeof(configAttribs) / sizeof(EGLint))));
 
-     mContext = eglCreateContext(mDisplay, mConfig, NULL, NULL);
-     eglMakeCurrent(mDisplay, mSurface, mSurface, mContext);
-     eglQuerySurface(mDisplay, mSurface, EGL_WIDTH, &mWidth);
-     eglQuerySurface(mDisplay, mSurface, EGL_HEIGHT, &mHeight);
+    mEGL.mDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+    eglInitialize(mEGL.mDisplay, &mEGL.mMajorVersion, &mEGL.mMinorVersion);
+
+    status_t err = EGLUtils::selectConfigForNativeWindow(mEGL.mDisplay, configAttribs, mWndSurface, &mEGL.mConfig);
+    if (err) {
+     LOGE("couldn't find an EGLConfig matching the screen format\n");
+    }
+    //eglChooseConfig(mEGL.mDisplay, configAttribs, &mEGL.mConfig, 1, &mEGL.mNumConfigs);
+
+    if (mWndSurface) {
+        mEGL.mSurface = eglCreateWindowSurface(mEGL.mDisplay, mEGL.mConfig, mWndSurface, NULL);
+    } else {
+        mEGL.mSurface = eglCreateWindowSurface(mEGL.mDisplay, mEGL.mConfig,
+             android_createDisplaySurface(),
+             NULL);
+    }
+
+    mEGL.mContext = eglCreateContext(mEGL.mDisplay, mEGL.mConfig, NULL, NULL);
+    eglMakeCurrent(mEGL.mDisplay, mEGL.mSurface, mEGL.mSurface, mEGL.mContext);
+    eglQuerySurface(mEGL.mDisplay, mEGL.mSurface, EGL_WIDTH, &mEGL.mWidth);
+    eglQuerySurface(mEGL.mDisplay, mEGL.mSurface, EGL_HEIGHT, &mEGL.mHeight);
+
+
+    mGL.mVersion = glGetString(GL_VERSION);
+    mGL.mVendor = glGetString(GL_VENDOR);
+    mGL.mRenderer = glGetString(GL_RENDERER);
+    mGL.mExtensions = glGetString(GL_EXTENSIONS);
+
+    LOGV("EGL Version %i %i", mEGL.mMajorVersion, mEGL.mMinorVersion);
+    LOGV("GL Version %s", mGL.mVersion);
+    LOGV("GL Vendor %s", mGL.mVendor);
+    LOGV("GL Renderer %s", mGL.mRenderer);
+    LOGV("GL Extensions %s", mGL.mExtensions);
+
+    if (memcmp(mGL.mVersion, "OpenGL ES-CM", 12)) {
+        LOGE("Error, OpenGL ES Lite not supported");
+    }
+    sscanf((const char *)mGL.mVersion + 13, "%i.%i", &mGL.mMajorVersion, &mGL.mMinorVersion);
+
+
 }
 
 bool Context::runScript(Script *s, uint32_t launchID)
@@ -90,19 +114,22 @@
 
     //glColor4f(1,1,1,1);
     //glEnable(GL_LIGHT0);
-    glViewport(0, 0, mWidth, mHeight);
-
-    glDepthMask(GL_TRUE);
+    glViewport(0, 0, mEGL.mWidth, mEGL.mHeight);
+#if 1
     glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
 
     glClearColor(mRootScript->mEnviroment.mClearColor[0],
                  mRootScript->mEnviroment.mClearColor[1],
                  mRootScript->mEnviroment.mClearColor[2],
                  mRootScript->mEnviroment.mClearColor[3]);
-    glClearDepthf(mRootScript->mEnviroment.mClearDepth);
-    glClear(GL_COLOR_BUFFER_BIT);
-    glClear(GL_DEPTH_BUFFER_BIT);
-
+    if (mUseDepth) {
+        glDepthMask(GL_TRUE);
+        glClearDepthf(mRootScript->mEnviroment.mClearDepth);
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    } else {
+        glClear(GL_COLOR_BUFFER_BIT);
+    }
+#endif
 #if RS_LOG_TIMES
     timerSet(RS_TIMER_SCRIPT);
 #endif
@@ -156,13 +183,13 @@
 void Context::setupCheck()
 {
     if (mFragmentStore.get()) {
-        mFragmentStore->setupGL(&mStateFragmentStore);
+        mFragmentStore->setupGL(this, &mStateFragmentStore);
     }
     if (mFragment.get()) {
-        mFragment->setupGL(&mStateFragment);
+        mFragment->setupGL(this, &mStateFragment);
     }
     if (mVertex.get()) {
-        mVertex->setupGL(&mStateVertex);
+        mVertex->setupGL(this, &mStateVertex);
     }
 
 }
@@ -186,11 +213,11 @@
          LOGE("pthread_setspecific %i", status);
      }
 
-     rsc->mStateVertex.init(rsc, rsc->mWidth, rsc->mHeight);
+     rsc->mStateVertex.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
      rsc->setVertex(NULL);
-     rsc->mStateFragment.init(rsc, rsc->mWidth, rsc->mHeight);
+     rsc->mStateFragment.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
      rsc->setFragment(NULL);
-     rsc->mStateFragmentStore.init(rsc, rsc->mWidth, rsc->mHeight);
+     rsc->mStateFragmentStore.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
      rsc->setFragmentStore(NULL);
 
      rsc->mRunning = true;
@@ -204,7 +231,7 @@
 #if RS_LOG_TIMES
              rsc->timerSet(RS_TIMER_CLEAR_SWAP);
 #endif
-             eglSwapBuffers(rsc->mDisplay, rsc->mSurface);
+             eglSwapBuffers(rsc->mEGL.mDisplay, rsc->mEGL.mSurface);
 #if RS_LOG_TIMES
              rsc->timerSet(RS_TIMER_INTERNAL);
              rsc->timerPrint();
@@ -218,18 +245,19 @@
 
      glClearColor(0,0,0,0);
      glClear(GL_COLOR_BUFFER_BIT);
-     eglSwapBuffers(rsc->mDisplay, rsc->mSurface);
-     eglTerminate(rsc->mDisplay);
+     eglSwapBuffers(rsc->mEGL.mDisplay, rsc->mEGL.mSurface);
+     eglTerminate(rsc->mEGL.mDisplay);
      rsc->objDestroyOOBRun();
      return NULL;
 }
 
-Context::Context(Device *dev, Surface *sur)
+Context::Context(Device *dev, Surface *sur, bool useDepth)
 {
     dev->addContext(this);
     mDev = dev;
     mRunning = false;
     mExit = false;
+    mUseDepth = useDepth;
 
     int status;
     pthread_attr_t threadAttr;
@@ -284,17 +312,6 @@
     objDestroyOOBDestroy();
 }
 
-void Context::swapBuffers()
-{
-    eglSwapBuffers(mDisplay, mSurface);
-}
-
-void rsContextSwap(RsContext vrsc)
-{
-    Context *rsc = static_cast<Context *>(vrsc);
-    rsc->swapBuffers();
-}
-
 void Context::setRootScript(Script *s)
 {
     mRootScript.set(s);
@@ -520,10 +537,10 @@
 }
 
 
-RsContext rsContextCreate(RsDevice vdev, void *sur, uint32_t version)
+RsContext rsContextCreate(RsDevice vdev, void *sur, uint32_t version, bool useDepth)
 {
     Device * dev = static_cast<Device *>(vdev);
-    Context *rsc = new Context(dev, (Surface *)sur);
+    Context *rsc = new Context(dev, (Surface *)sur, useDepth);
     return rsc;
 }
 
diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h
index ca67e40..c58a88c 100644
--- a/libs/rs/rsContext.h
+++ b/libs/rs/rsContext.h
@@ -49,7 +49,7 @@
 class Context
 {
 public:
-    Context(Device *, Surface *);
+    Context(Device *, Surface *, bool useDepth);
     ~Context();
 
     static pthread_key_t gThreadTLSKey;
@@ -111,8 +111,8 @@
         mFloatDefines.add(String8(name), value);
     }
 
-    uint32_t getWidth() const {return mWidth;}
-    uint32_t getHeight() const {return mHeight;}
+    uint32_t getWidth() const {return mEGL.mWidth;}
+    uint32_t getHeight() const {return mEGL.mHeight;}
 
 
     ThreadIO mIO;
@@ -132,21 +132,38 @@
     void timerSet(Timers);
     void timerPrint();
 
+    bool checkVersion1_1() const {return (mGL.mMajorVersion > 1) || (mGL.mMinorVersion >= 1); }
+    bool checkVersion2_0() const {return mGL.mMajorVersion >= 2; }
+
 protected:
     Device *mDev;
 
-    EGLint mNumConfigs;
-    EGLint mMajorVersion;
-    EGLint mMinorVersion;
-    EGLConfig mConfig;
-    EGLContext mContext;
-    EGLSurface mSurface;
-    EGLint mWidth;
-    EGLint mHeight;
-    EGLDisplay mDisplay;
+    struct {
+        EGLint mNumConfigs;
+        EGLint mMajorVersion;
+        EGLint mMinorVersion;
+        EGLConfig mConfig;
+        EGLContext mContext;
+        EGLSurface mSurface;
+        EGLint mWidth;
+        EGLint mHeight;
+        EGLDisplay mDisplay;
+    } mEGL;
+
+    struct {
+        const uint8_t * mVendor;
+        const uint8_t * mRenderer;
+        const uint8_t * mVersion;
+        const uint8_t * mExtensions;
+
+        uint32_t mMajorVersion;
+        uint32_t mMinorVersion;
+
+    } mGL;
 
     bool mRunning;
     bool mExit;
+    bool mUseDepth;
 
     pthread_t mThreadId;
 
diff --git a/libs/rs/rsObjectBase.cpp b/libs/rs/rsObjectBase.cpp
index 6a5b7d8..07bbc1e 100644
--- a/libs/rs/rsObjectBase.cpp
+++ b/libs/rs/rsObjectBase.cpp
@@ -43,6 +43,11 @@
     mRefCount --;
     //LOGV("ObjectBase %p dec ref %i", this, mRefCount);
     if (!mRefCount) {
+        if (mName) {
+            LOGV("Deleting RS object %p, name %s", this, mName);
+        } else {
+            LOGV("Deleting RS object %p, no name", this);
+        }
         delete this;
     }
 }
diff --git a/libs/rs/rsProgram.cpp b/libs/rs/rsProgram.cpp
index 6606daa..18eacfb 100644
--- a/libs/rs/rsProgram.cpp
+++ b/libs/rs/rsProgram.cpp
@@ -47,9 +47,3 @@
     }
 }
 
-void Program::setupGL()
-{
-
-}
-
-
diff --git a/libs/rs/rsProgram.h b/libs/rs/rsProgram.h
index 251072fb..bb3d9ac 100644
--- a/libs/rs/rsProgram.h
+++ b/libs/rs/rsProgram.h
@@ -32,11 +32,7 @@
     Program(Element *in, Element *out);
     virtual ~Program();
 
-
     void bindAllocation(Allocation *);
-
-    virtual void setupGL();
-
     void checkUpdatedAllocation(const Allocation *);
 
 protected:
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp
index 4ef6835..654974f 100644
--- a/libs/rs/rsProgramFragment.cpp
+++ b/libs/rs/rsProgramFragment.cpp
@@ -40,7 +40,7 @@
 {
 }
 
-void ProgramFragment::setupGL(ProgramFragmentState *state)
+void ProgramFragment::setupGL(const Context *rsc, ProgramFragmentState *state)
 {
     if ((state->mLast.get() == this) && !mDirty) {
         return;
@@ -55,7 +55,9 @@
         }
 
         glEnable(GL_TEXTURE_2D);
-        //glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, mPointSpriteEnable);
+        if (rsc->checkVersion1_1()) {
+            glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, mPointSpriteEnable);
+        }
         glBindTexture(GL_TEXTURE_2D, mTextures[ct]->getTextureID());
 
         switch(mEnvModes[ct]) {
diff --git a/libs/rs/rsProgramFragment.h b/libs/rs/rsProgramFragment.h
index bd45342..51117eb 100644
--- a/libs/rs/rsProgramFragment.h
+++ b/libs/rs/rsProgramFragment.h
@@ -35,7 +35,7 @@
     ProgramFragment(Element *in, Element *out, bool pointSpriteEnable);
     virtual ~ProgramFragment();
 
-    virtual void setupGL(ProgramFragmentState *);
+    virtual void setupGL(const Context *, ProgramFragmentState *);
 
 
 
diff --git a/libs/rs/rsProgramFragmentStore.cpp b/libs/rs/rsProgramFragmentStore.cpp
index 99eed16..36ec615 100644
--- a/libs/rs/rsProgramFragmentStore.cpp
+++ b/libs/rs/rsProgramFragmentStore.cpp
@@ -48,7 +48,7 @@
 {
 }
 
-void ProgramFragmentStore::setupGL(ProgramFragmentStoreState *state)
+void ProgramFragmentStore::setupGL(const Context *rsc, ProgramFragmentStoreState *state)
 {
     if (state->mLast.get() == this) {
         return;
diff --git a/libs/rs/rsProgramFragmentStore.h b/libs/rs/rsProgramFragmentStore.h
index 0de5c3a..e646e03 100644
--- a/libs/rs/rsProgramFragmentStore.h
+++ b/libs/rs/rsProgramFragmentStore.h
@@ -31,7 +31,7 @@
     ProgramFragmentStore(Element *in, Element *out);
     virtual ~ProgramFragmentStore();
 
-    virtual void setupGL(ProgramFragmentStoreState *);
+    virtual void setupGL(const Context *, ProgramFragmentStoreState *);
 
     void setDepthFunc(RsDepthFunc);
     void setDepthMask(bool);
diff --git a/libs/rs/rsProgramVertex.cpp b/libs/rs/rsProgramVertex.cpp
index 6ef5456..dc57d34 100644
--- a/libs/rs/rsProgramVertex.cpp
+++ b/libs/rs/rsProgramVertex.cpp
@@ -44,7 +44,7 @@
     LOGV("%6.2f, %6.2f, %6.2f, %6.2f", f[3], f[7], f[11], f[15]);
 }
 
-void ProgramVertex::setupGL(ProgramVertexState *state)
+void ProgramVertex::setupGL(const Context *rsc, ProgramVertexState *state)
 {
     if ((state->mLast.get() == this) && !mDirty) {
         return;
diff --git a/libs/rs/rsProgramVertex.h b/libs/rs/rsProgramVertex.h
index c9ce7aa..523c3ed 100644
--- a/libs/rs/rsProgramVertex.h
+++ b/libs/rs/rsProgramVertex.h
@@ -33,7 +33,7 @@
     ProgramVertex(Element *in, Element *out);
     virtual ~ProgramVertex();
 
-    virtual void setupGL(ProgramVertexState *state);
+    virtual void setupGL(const Context *rsc, ProgramVertexState *state);
 
 
     void setTextureMatrixEnable(bool e) {mTextureMatrixEnable = e;}