Update fall to new RS API
diff --git a/res/raw/fall.rs b/res/raw/fall.rs
index e04e1ff..af1ed85 100644
--- a/res/raw/fall.rs
+++ b/res/raw/fall.rs
@@ -162,7 +162,7 @@
 
     int* current = loadArrayI32(RSID_RIPPLE_MAP, index * rippleMapSize + origin);
     int *map = loadArrayI32(RSID_REFRACTION_MAP, 0);
-    float *vertices = loadTriangleMeshVerticesF(NAMED_WaterMesh);
+    float *vertices = loadSimpleMeshVerticesF(NAMED_WaterMesh, 0);
     struct vert_s *vert = (struct vert_s *)vertices;
 
     float fw = 1.f / width;
@@ -370,7 +370,7 @@
     float glWidth = State->glWidth;
     float glHeight = State->glHeight;
 
-    float *vertices = loadTriangleMeshVerticesF(NAMED_WaterMesh);
+    float *vertices = loadSimpleMeshVerticesF(NAMED_WaterMesh, 0);
 
     int i = 0;
     for ( ; i < count; i += LEAF_STRUCT_FIELDS_COUNT) {
@@ -385,7 +385,7 @@
 void drawRiverbed() {
     bindTexture(NAMED_PFBackground, 0, NAMED_TRiverbed);
 
-    drawTriangleMesh(NAMED_WaterMesh);
+    drawSimpleMesh(NAMED_WaterMesh);
 }
 
 void drawSky() {
@@ -409,7 +409,7 @@
     matrixLoadTranslate(matrix, x, y, 0.0f);
     vpLoadTextureMatrix(matrix);
 
-    drawTriangleMesh(NAMED_WaterMesh);
+    drawSimpleMesh(NAMED_WaterMesh);
 
     matrixLoadIdentity(matrix);
     vpLoadTextureMatrix(matrix);
@@ -425,14 +425,14 @@
     bindProgramFragment(NAMED_PFLighting);
     bindProgramVertex(NAMED_PVLight);
 
-    drawTriangleMesh(NAMED_WaterMesh);
+    drawSimpleMesh(NAMED_WaterMesh);
 }
 
 void drawNormals() {
     int width = State->meshWidth;
     int height = State->meshHeight;
 
-    float *vertices = loadTriangleMeshVerticesF(NAMED_WaterMesh);
+    float *vertices = loadSimpleMeshVerticesF(NAMED_WaterMesh, 0);
 
     bindProgramVertex(NAMED_PVSky);
     bindProgramFragment(NAMED_PFLighting);
@@ -466,7 +466,7 @@
 
     updateRipples();
     generateRipples();
-    updateTriangleMesh(NAMED_WaterMesh);
+    updateSimpleMesh(NAMED_WaterMesh);
 
     drawRiverbed();
     drawSky();
diff --git a/src/com/android/wallpaper/fall/FallRS.java b/src/com/android/wallpaper/fall/FallRS.java
index e39df3c..1109d0d 100644
--- a/src/com/android/wallpaper/fall/FallRS.java
+++ b/src/com/android/wallpaper/fall/FallRS.java
@@ -26,6 +26,7 @@
 import android.renderscript.Element;
 import android.renderscript.Light;
 import android.renderscript.Type;
+import android.renderscript.SimpleMesh;
 import static android.renderscript.Sampler.Value.LINEAR;
 import static android.renderscript.Sampler.Value.WRAP;
 import static android.renderscript.ProgramStore.DepthFunc.*;
@@ -119,8 +120,8 @@
 
     private int mMeshHeight;
     @SuppressWarnings({"FieldCanBeLocal"})
-    private RenderScript.TriangleMesh mMesh;
-    private WorldState mWorldState;    
+    private SimpleMesh mMesh;
+    private WorldState mWorldState;
 
     private Allocation mRippleMap;
     private Allocation mRefractionMap;
@@ -177,8 +178,7 @@
     }
 
     private void createMesh() {
-        final RenderScript rs = mRS;
-        rs.triangleMeshBegin(Element.NORM_ST_XYZ_F32, Element.INDEX_16);
+        SimpleMesh.TriangleMeshBuilder tmb = new SimpleMesh.TriangleMeshBuilder(mRS, 3, true, true);
 
         int wResolution;
         int hResolution;
@@ -209,12 +209,12 @@
             final float t = 1.0f - y / (float) hResolution;
             for (int x = 0; x <= wResolution; x++) {
                 if (shift) {
-                    rs.triangleMeshAddVertex_XYZ_ST_NORM(
+                    tmb.add_XYZ_ST_NORM(
                             -1.0f + x * quadWidth - quadWidth, yOffset, 0.0f,
                             x / (float) wResolution, t,
                             0.0f, 0.0f, -1.0f);
                 } else {
-                    rs.triangleMeshAddVertex_XYZ_ST_NORM(
+                    tmb.add_XYZ_ST_NORM(
                             -1.0f + x * quadWidth - quadWidth * 0.5f, yOffset, 0.0f,
                             x / (float) wResolution, t,
                             0.0f, 0.0f, -1.0f);
@@ -229,16 +229,16 @@
                 final int index = yOffset + x;
                 final int iWR1 = index + wResolution + 1;
                 if (shift) {
-                    rs.triangleMeshAddTriangle(index, index + 1, iWR1);
-                    rs.triangleMeshAddTriangle(index + 1, iWR1 + 1, iWR1);
+                    tmb.addTriangle(index, index + 1, iWR1);
+                    tmb.addTriangle(index + 1, iWR1 + 1, iWR1);
                 } else {
-                    rs.triangleMeshAddTriangle(index, iWR1 + 1, iWR1);
-                    rs.triangleMeshAddTriangle(index, index + 1, iWR1 + 1);
+                    tmb.addTriangle(index, iWR1 + 1, iWR1);
+                    tmb.addTriangle(index, index + 1, iWR1 + 1);
                 }
             }
         }
 
-        mMesh = rs.triangleMeshCreate();
+        mMesh = tmb.create();
         mMesh.setName("WaterMesh");
 
         mMeshWidth = wResolution + 1;