Merge change 24058 into eclair

* changes:
  Minor perf improvement to fall and expand use of struct.
diff --git a/libs/rs/java/Fall/res/raw/fall.c b/libs/rs/java/Fall/res/raw/fall.c
index b3e2f92..e04e1ff 100644
--- a/libs/rs/java/Fall/res/raw/fall.c
+++ b/libs/rs/java/Fall/res/raw/fall.c
@@ -163,6 +163,7 @@
     int* current = loadArrayI32(RSID_RIPPLE_MAP, index * rippleMapSize + origin);
     int *map = loadArrayI32(RSID_REFRACTION_MAP, 0);
     float *vertices = loadTriangleMeshVerticesF(NAMED_WaterMesh);
+    struct vert_s *vert = (struct vert_s *)vertices;
 
     float fw = 1.f / width;
     float fh = 1.f / height;
@@ -173,6 +174,8 @@
         int w = width - 1;
         int wave = *current;
         int offset = h * width;
+        struct vert_s *vtx = vert + offset + w;
+
         while (w >= 0) {
             int nextWave = current[1];
             int dx = nextWave - wave;
@@ -188,12 +191,10 @@
             v &= ~(v >> 31);
             if (v >= height) v = height - 1;
 
-            int index = (offset + w) << 3;
-            vertices[index + 3] = u * fw;
-            vertices[index + 4] = v * fh;
-
-            // Update Z coordinate of the vertex
-            vertices[index + 7] = dy * fy;
+            vtx->s = u * fw;
+            vtx->t = v * fh;
+            vtx->z = dy * fy;
+            vtx --;
 
             w -= 1;
             current += 1;
@@ -205,17 +206,12 @@
 
     // Compute the normals for lighting
     int y = 0;
-    int w8 = width << 3;
     for ( ; y < height; y += 1) {
         int x = 0;
         int yOffset = y * width;
-        for ( ; x < width; x += 1) {
-            struct vert_s *v = (struct vec3_s *)(vertices + x);
-            //int o = ((yOffset + x) << 3);
-            //int o1 = o + 8 + 5;
-            //int ow = o + w8 + 5;
-            //int ow1 = ow + 8;
+        struct vert_s *v = vert;
 
+        for ( ; x < width; x += 1) {
             struct vec3_s n1, n2, n3;
             vec3Sub(&n1, (struct vec3_s *)&(v+1)->x, (struct vec3_s *)&v->x);
             vec3Sub(&n2, (struct vec3_s *)&(v+width)->x, (struct vec3_s *)&v->x);
@@ -231,6 +227,7 @@
             v->nx = n3.x;
             v->ny = n3.y;
             v->nz = -n3.z;
+            v += 1;
 
             // reset Z
             //vertices[(yOffset + x) << 3 + 7] = 0.0f;
@@ -474,7 +471,7 @@
     drawRiverbed();
     drawSky();
     drawLighting();
-    //drawLeaves();
+    drawLeaves();
     //drawNormals();
 
     return 1;