Split RenderScript Type and Allocation into seperate classes.
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
new file mode 100644
index 0000000..1327328
--- /dev/null
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.renderscript.Type;
+import android.util.Config;
+import android.util.Log;
+
+/**
+ * @hide
+ *
+ **/
+public class Allocation extends BaseObj {
+    Allocation(int id, RenderScript rs) {
+        super(rs);
+        mID = id;
+    }
+
+    public void uploadToTexture(int baseMipLevel) {
+        mRS.nAllocationUploadToTexture(mID, baseMipLevel);
+    }
+
+    public void destroy() {
+        mRS.nAllocationDestroy(mID);
+        mID = 0;
+    }
+
+    public void data(int[] d) {
+        mRS.nAllocationData(mID, d);
+    }
+
+    public void data(float[] d) {
+        mRS.nAllocationData(mID, d);
+    }
+
+    public void subData1D(int off, int count, int[] d) {
+        mRS.nAllocationSubData1D(mID, off, count, d);
+    }
+
+    public void subData1D(int off, int count, float[] d) {
+        mRS.nAllocationSubData1D(mID, off, count, d);
+    }
+
+    public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
+        mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d);
+    }
+
+    public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
+        mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d);
+    }
+
+    public class Adapter1D extends BaseObj {
+        Adapter1D(int id, RenderScript rs) {
+            super(rs);
+            mID = id;
+        }
+
+        public void destroy() {
+            mRS.nAdapter1DDestroy(mID);
+            mID = 0;
+        }
+
+        public void setConstraint(Dimension dim, int value) {
+            mRS.nAdapter1DSetConstraint(mID, dim.mID, value);
+        }
+
+        public void data(int[] d) {
+            mRS.nAdapter1DData(mID, d);
+        }
+
+        public void subData(int off, int count, int[] d) {
+            mRS.nAdapter1DSubData(mID, off, count, d);
+        }
+
+        public void data(float[] d) {
+            mRS.nAdapter1DData(mID, d);
+        }
+
+        public void subData(int off, int count, float[] d) {
+            mRS.nAdapter1DSubData(mID, off, count, d);
+        }
+    }
+
+    public Adapter1D createAdapter1D() {
+        int id = mRS.nAdapter1DCreate();
+        if (id != 0) {
+            mRS.nAdapter1DBindAllocation(id, mID);
+        }
+        return new Adapter1D(id, mRS);
+    }
+
+
+
+    // creation
+
+    private static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
+    static {
+        mBitmapOptions.inScaled = false;
+    }
+
+    static public Allocation createTyped(RenderScript rs, Type type) {
+        int id = rs.nAllocationCreateTyped(type.mID);
+        return new Allocation(id, rs);
+    }
+
+    static public Allocation createSized(RenderScript rs, Element e, int count) {
+        int id;
+        if(e.mIsPredefined) {
+            id = rs.nAllocationCreatePredefSized(e.mPredefinedID, count);
+        } else {
+            id = rs.nAllocationCreateSized(e.mID, count);
+        }
+        return new Allocation(id, rs);
+    }
+
+    static public Allocation createFromBitmap(RenderScript rs, Bitmap b, Element dstFmt, boolean genMips)
+        throws IllegalArgumentException {
+        if(!dstFmt.mIsPredefined) {
+            throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
+        }
+
+        int id = rs.nAllocationCreateFromBitmap(dstFmt.mPredefinedID, genMips, b);
+        return new Allocation(id, rs);
+    }
+
+    static public Allocation createFromBitmapBoxed(RenderScript rs, Bitmap b, Element dstFmt, boolean genMips)
+        throws IllegalArgumentException {
+        if(!dstFmt.mIsPredefined) {
+            throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
+        }
+
+        int id = rs.nAllocationCreateFromBitmapBoxed(dstFmt.mPredefinedID, genMips, b);
+        return new Allocation(id, rs);
+    }
+
+    static public Allocation createFromBitmapResource(RenderScript rs, Resources res, int id, Element dstFmt, boolean genMips)
+        throws IllegalArgumentException {
+
+        Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
+        return createFromBitmap(rs, b, dstFmt, genMips);
+    }
+
+    static public Allocation createFromBitmapResourceBoxed(RenderScript rs, Resources res, int id, Element dstFmt, boolean genMips)
+        throws IllegalArgumentException {
+
+        Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
+        return createFromBitmapBoxed(rs, b, dstFmt, genMips);
+    }
+
+
+}
+
+
diff --git a/graphics/java/android/renderscript/Dimension.java b/graphics/java/android/renderscript/Dimension.java
new file mode 100644
index 0000000..f29057d
--- /dev/null
+++ b/graphics/java/android/renderscript/Dimension.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript;
+
+/**
+ * @hide
+ **/
+public enum Dimension {
+    X (0),
+    Y (1),
+    Z (2),
+    LOD (3),
+    FACE (4),
+    ARRAY_0 (100);
+
+    int mID;
+    Dimension(int id) {
+        mID = id;
+    }
+}
+
diff --git a/graphics/java/android/renderscript/ProgramVertexAlloc.java b/graphics/java/android/renderscript/ProgramVertexAlloc.java
index 424e0ad..37b037c 100644
--- a/graphics/java/android/renderscript/ProgramVertexAlloc.java
+++ b/graphics/java/android/renderscript/ProgramVertexAlloc.java
@@ -17,6 +17,8 @@
 package android.renderscript;
 
 import java.lang.Math;
+
+import android.renderscript.Element;
 import android.util.Log;
 
 
@@ -33,14 +35,14 @@
     Matrix mProjection;
     Matrix mTexture;
 
-    public RenderScript.Allocation mAlloc;
+    public Allocation mAlloc;
 
     public ProgramVertexAlloc(RenderScript rs) {
         mModel = new Matrix();
         mProjection = new Matrix();
         mTexture = new Matrix();
 
-        mAlloc = rs.allocationCreateSized(Element.USER_FLOAT, 48);
+        mAlloc = Allocation.createSized(rs, Element.USER_FLOAT, 48);
         mAlloc.subData1D(MODELVIEW_OFFSET, 16, mModel.mMat);
         mAlloc.subData1D(PROJECTION_OFFSET, 16, mProjection.mMat);
         mAlloc.subData1D(TEXTURE_OFFSET, 16, mTexture.mMat);
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 3d4f333..dc87b6a 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -20,15 +20,11 @@
 import java.io.InputStream;
 
 import android.content.res.Resources;
-import android.os.Bundle;
+import android.graphics.Bitmap;
 import android.util.Config;
 import android.util.Log;
 import android.view.Surface;
 
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Color;
-
 
 /**
  * @hide
@@ -48,7 +44,6 @@
     private static boolean sInitialized;
     native private static void _nInit();
 
-    private static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
 
     static {
         sInitialized = false;
@@ -59,7 +54,6 @@
         } catch (UnsatisfiedLinkError e) {
             Log.d(LOG_TAG, "RenderScript JNI library not found!");
         }
-        mBitmapOptions.inScaled = false;
     }
 
     native int  nDeviceCreate();
@@ -206,6 +200,11 @@
         return mElementBuilder;
     }
 
+    Type.Builder mTypeBuilder = new Type.Builder(this);
+    public Type.Builder typeBuilderCreate(Element e) throws IllegalStateException {
+        mTypeBuilder.begin(e);
+        return mTypeBuilder;
+    }
 
 
 
@@ -295,187 +294,6 @@
     }
 
     //////////////////////////////////////////////////////////////////////////////////
-    // Type
-
-    public enum Dimension {
-        X (0),
-        Y (1),
-        Z (2),
-        LOD (3),
-        FACE (4),
-        ARRAY_0 (100);
-
-        int mID;
-        Dimension(int id) {
-            mID = id;
-        }
-    }
-
-    public class Type extends BaseObj {
-        Type(int id) {
-            super(RenderScript.this);
-            mID = id;
-        }
-
-        public void destroy() {
-            nTypeDestroy(mID);
-            mID = 0;
-        }
-    }
-
-    public void typeBegin(Element e) {
-        nTypeBegin(e.mID);
-    }
-
-    public void typeAdd(Dimension d, int value) {
-        nTypeAdd(d.mID, value);
-    }
-
-    public Type typeCreate() {
-        int id = nTypeCreate();
-        return new Type(id);
-    }
-
-
-    //////////////////////////////////////////////////////////////////////////////////
-    // Allocation
-
-    public class Allocation extends BaseObj {
-        Allocation(int id) {
-            super(RenderScript.this);
-            mID = id;
-        }
-
-        public void uploadToTexture(int baseMipLevel) {
-            nAllocationUploadToTexture(mID, baseMipLevel);
-        }
-
-        public void destroy() {
-            nAllocationDestroy(mID);
-            mID = 0;
-        }
-
-        public void data(int[] d) {
-            nAllocationData(mID, d);
-        }
-
-        public void data(float[] d) {
-            nAllocationData(mID, d);
-        }
-
-        public void subData1D(int off, int count, int[] d) {
-            nAllocationSubData1D(mID, off, count, d);
-        }
-
-        public void subData1D(int off, int count, float[] d) {
-            nAllocationSubData1D(mID, off, count, d);
-        }
-
-        public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
-            nAllocationSubData2D(mID, xoff, yoff, w, h, d);
-        }
-
-        public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
-            nAllocationSubData2D(mID, xoff, yoff, w, h, d);
-        }
-    }
-
-    public Allocation allocationCreateTyped(Type type) {
-        int id = nAllocationCreateTyped(type.mID);
-        return new Allocation(id);
-    }
-
-    public Allocation allocationCreateSized(Element e, int count) {
-        int id;
-        if(e.mIsPredefined) {
-            id = nAllocationCreatePredefSized(e.mPredefinedID, count);
-        } else {
-            id = nAllocationCreateSized(e.mID, count);
-        }
-        return new Allocation(id);
-    }
-
-    public Allocation allocationCreateFromBitmap(Bitmap b, Element dstFmt, boolean genMips)
-        throws IllegalArgumentException {
-        if(!dstFmt.mIsPredefined) {
-            throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
-        }
-
-        int id = nAllocationCreateFromBitmap(dstFmt.mPredefinedID, genMips, b);
-        return new Allocation(id);
-    }
-
-    public Allocation allocationCreateFromBitmapBoxed(Bitmap b, Element dstFmt, boolean genMips)
-        throws IllegalArgumentException {
-        if(!dstFmt.mIsPredefined) {
-            throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
-        }
-
-        int id = nAllocationCreateFromBitmapBoxed(dstFmt.mPredefinedID, genMips, b);
-        return new Allocation(id);
-    }
-
-    public Allocation allocationCreateFromBitmapResource(Resources res, int id, Element dstFmt, boolean genMips)
-        throws IllegalArgumentException {
-
-        Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
-        return allocationCreateFromBitmap(b, dstFmt, genMips);
-    }
-
-    public Allocation allocationCreateFromBitmapResourceBoxed(Resources res, int id, Element dstFmt, boolean genMips)
-        throws IllegalArgumentException {
-
-        Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
-        return allocationCreateFromBitmapBoxed(b, dstFmt, genMips);
-    }
-
-
-    //////////////////////////////////////////////////////////////////////////////////
-    // Adapter1D
-
-    public class Adapter1D extends BaseObj {
-        Adapter1D(int id) {
-            super(RenderScript.this);
-            mID = id;
-        }
-
-        public void destroy() {
-            nAdapter1DDestroy(mID);
-            mID = 0;
-        }
-
-        public void bindAllocation(Allocation a) {
-            nAdapter1DBindAllocation(mID, a.mID);
-        }
-
-        public void setConstraint(Dimension dim, int value) {
-            nAdapter1DSetConstraint(mID, dim.mID, value);
-        }
-
-        public void data(int[] d) {
-            nAdapter1DData(mID, d);
-        }
-
-        public void subData(int off, int count, int[] d) {
-            nAdapter1DSubData(mID, off, count, d);
-        }
-
-        public void data(float[] d) {
-            nAdapter1DData(mID, d);
-        }
-
-        public void subData(int off, int count, float[] d) {
-            nAdapter1DSubData(mID, off, count, d);
-        }
-    }
-
-    public Adapter1D adapter1DCreate() {
-        int id = nAdapter1DCreate();
-        return new Adapter1D(id);
-    }
-
-
-    //////////////////////////////////////////////////////////////////////////////////
     // Triangle Mesh
 
     public class TriangleMesh extends BaseObj {
diff --git a/graphics/java/android/renderscript/Type.java b/graphics/java/android/renderscript/Type.java
new file mode 100644
index 0000000..86932c4
--- /dev/null
+++ b/graphics/java/android/renderscript/Type.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.util.Config;
+import android.util.Log;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+/**
+ * @hide
+ *
+ **/
+public class Type extends BaseObj {
+    Type(int id, RenderScript rs) {
+        super(rs);
+        mID = id;
+    }
+
+    public void destroy() {
+        mRS.nTypeDestroy(mID);
+        mID = 0;
+    }
+
+    public static class Builder {
+        RenderScript mRS;
+        boolean mActive = true;
+
+        Builder(RenderScript rs) {
+            mRS = rs;
+        }
+
+        public void begin(Element e) {
+            mRS.nTypeBegin(e.mID);
+        }
+
+        public void add(Dimension d, int value) {
+            mRS.nTypeAdd(d.mID, value);
+        }
+
+        public Type create() {
+            int id = mRS.nTypeCreate();
+            return new Type(id, mRS);
+        }
+    }
+
+}
diff --git a/libs/rs/java/Film/src/com/android/film/FilmRS.java b/libs/rs/java/Film/src/com/android/film/FilmRS.java
index 0e5b1bd..777a7cf 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmRS.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmRS.java
@@ -27,6 +27,7 @@
 import android.renderscript.ProgramVertexAlloc;
 import android.renderscript.RenderScript;
 import android.renderscript.Element;
+import android.renderscript.Allocation;
 
 public class FilmRS {
     private final int POS_TRANSLATE = 0;
@@ -77,13 +78,13 @@
     private RenderScript.ProgramVertex mPVImages;
     private ProgramVertexAlloc mPVA;
 
-    private RenderScript.Allocation mImages[];
-    private RenderScript.Allocation mAllocIDs;
-    private RenderScript.Allocation mAllocPos;
-    private RenderScript.Allocation mAllocState;
-    private RenderScript.Allocation mAllocPV;
-    private RenderScript.Allocation mAllocOffsetsTex;
-    private RenderScript.Allocation mAllocOffsets;
+    private Allocation mImages[];
+    private Allocation mAllocIDs;
+    private Allocation mAllocPos;
+    private Allocation mAllocState;
+    private Allocation mAllocPV;
+    private Allocation mAllocOffsetsTex;
+    private Allocation mAllocOffsets;
 
     private RenderScript.TriangleMesh mMesh;
     private RenderScript.Light mLight;
@@ -155,24 +156,24 @@
 
     private void loadImages() {
         mBufferIDs = new int[13];
-        mImages = new RenderScript.Allocation[13];
-        mAllocIDs = mRS.allocationCreateSized(
+        mImages = new Allocation[13];
+        mAllocIDs = Allocation.createSized(mRS,
             Element.USER_FLOAT, mBufferIDs.length);
 
         Element ie = Element.RGB_565;
-        mImages[0] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p01, ie, true);
-        mImages[1] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p02, ie, true);
-        mImages[2] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p03, ie, true);
-        mImages[3] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p04, ie, true);
-        mImages[4] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p05, ie, true);
-        mImages[5] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p06, ie, true);
-        mImages[6] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p07, ie, true);
-        mImages[7] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p08, ie, true);
-        mImages[8] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p09, ie, true);
-        mImages[9] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p10, ie, true);
-        mImages[10] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p11, ie, true);
-        mImages[11] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p12, ie, true);
-        mImages[12] = mRS.allocationCreateFromBitmapResourceBoxed(mRes, R.drawable.p13, ie, true);
+        mImages[0] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p01, ie, true);
+        mImages[1] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p02, ie, true);
+        mImages[2] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p03, ie, true);
+        mImages[3] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p04, ie, true);
+        mImages[4] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p05, ie, true);
+        mImages[5] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p06, ie, true);
+        mImages[6] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p07, ie, true);
+        mImages[7] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p08, ie, true);
+        mImages[8] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p09, ie, true);
+        mImages[9] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p10, ie, true);
+        mImages[10] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p11, ie, true);
+        mImages[11] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p12, ie, true);
+        mImages[12] = Allocation.createFromBitmapResourceBoxed(mRS, mRes, R.drawable.p13, ie, true);
 
         for(int ct=0; ct < mImages.length; ct++) {
             mImages[ct].uploadToTexture(1);
@@ -184,7 +185,7 @@
     private void initState()
     {
         mBufferState = new int[10];
-        mAllocState = mRS.allocationCreateSized(
+        mAllocState = Allocation.createSized(mRS,
             Element.USER_FLOAT, mBufferState.length);
 
         mBufferState[STATE_TRIANGLE_OFFSET_COUNT] = mFSM.mTriangleOffsetsCount;
@@ -215,7 +216,7 @@
         mRS.scriptCSetRoot(true);
         mScriptStrip = mRS.scriptCCreate();
 
-        mAllocPos = mRS.allocationCreateSized(
+        mAllocPos = Allocation.createSized(mRS,
             Element.USER_FLOAT, mBufferPos.length);
 
         loadImages();
@@ -233,12 +234,12 @@
         mScriptStrip.bindAllocation(mPVA.mAlloc, 3);
 
 
-        mAllocOffsets = mRS.allocationCreateSized(
+        mAllocOffsets = Allocation.createSized(mRS,
             Element.USER_I32, mFSM.mTriangleOffsets.length);
         mAllocOffsets.data(mFSM.mTriangleOffsets);
         mScriptStrip.bindAllocation(mAllocOffsets, 4);
 
-        mAllocOffsetsTex = mRS.allocationCreateSized(
+        mAllocOffsetsTex = Allocation.createSized(mRS,
             Element.USER_FLOAT, mFSM.mTriangleOffsetsTex.length);
         mAllocOffsetsTex.data(mFSM.mTriangleOffsetsTex);
         mScriptStrip.bindAllocation(mAllocOffsetsTex, 5);
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java
index 654d6cf..7123bf7 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java
@@ -28,6 +28,7 @@
 import android.renderscript.RenderScript;
 import android.renderscript.ProgramVertexAlloc;
 import android.renderscript.Element;
+import android.renderscript.Allocation;
 
 public class FountainRS {
 
@@ -53,9 +54,9 @@
     private Resources mRes;
 
     private RenderScript mRS;
-    private RenderScript.Allocation mIntAlloc;
-    private RenderScript.Allocation mPartAlloc;
-    private RenderScript.Allocation mVertAlloc;
+    private Allocation mIntAlloc;
+    private Allocation mPartAlloc;
+    private Allocation mVertAlloc;
     private RenderScript.Script mScript;
     private RenderScript.ProgramFragmentStore mPFS;
     private RenderScript.ProgramFragment mPF;
@@ -67,10 +68,10 @@
     private void initRS() {
         int partCount = 1024;
 
-        mIntAlloc = mRS.allocationCreateSized(Element.USER_I32, 10);
-        mPartAlloc = mRS.allocationCreateSized(Element.USER_I32, partCount * 3 * 3);
+        mIntAlloc = Allocation.createSized(mRS, Element.USER_I32, 10);
+        mPartAlloc = Allocation.createSized(mRS, Element.USER_I32, partCount * 3 * 3);
         mPartAlloc.setName("PartBuffer");
-        mVertAlloc = mRS.allocationCreateSized(Element.USER_I32, partCount * 5 + 1);
+        mVertAlloc = Allocation.createSized(mRS, Element.USER_I32, partCount * 5 + 1);
 
         mRS.programFragmentStoreBegin(null, null);
         mRS.programFragmentStoreBlendFunc(RenderScript.BlendSrcFunc.SRC_ALPHA, RenderScript.BlendDstFunc.ONE);
diff --git a/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java b/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java
index f5737da..70cb012 100644
--- a/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java
+++ b/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java
@@ -26,6 +26,7 @@
 
 import android.renderscript.RenderScript;
 import android.renderscript.Element;
+import android.renderscript.Allocation;
 
 import java.util.TimeZone;
 
@@ -47,13 +48,13 @@
     private RenderScript.ProgramFragmentStore mPfsBackground;
 
     @SuppressWarnings({"FieldCanBeLocal"})
-    private RenderScript.Allocation mSkyTexturesIDs;
+    private Allocation mSkyTexturesIDs;
     @SuppressWarnings({"FieldCanBeLocal"})
-    private RenderScript.Allocation[] mSkyTextures;
+    private Allocation[] mSkyTextures;
     @SuppressWarnings({"FieldCanBeLocal"})
     private int[] mSkyBufferIDs;
     @SuppressWarnings({"FieldCanBeLocal"})
-    private RenderScript.Allocation mState;
+    private Allocation mState;
 
     public GrassRS() {
     }
@@ -69,7 +70,7 @@
         createProgramFragmentStore();
         createProgramFragment();
         createScriptStructures();
-        
+
         mRS.scriptCBegin();
         mRS.scriptCSetClearColor(0.0f, 0.0f, 0.0f, 1.0f);
         mRS.scriptCSetScript(mResources, R.raw.grass);
@@ -78,25 +79,25 @@
 
         mScript = mRS.scriptCCreate();
 
-        loadSkyTextures();        
+        loadSkyTextures();
         mScript.bindAllocation(mState, RSID_STATE);
         mScript.bindAllocation(mSkyTexturesIDs, RSID_SKY_TEXTURES);
 
-        mRS.contextBindRootScript(mScript);        
+        mRS.contextBindRootScript(mScript);
     }
 
     private void createScriptStructures() {
-        mState = mRS.allocationCreateSized(Element.USER_I32, 1);    
+        mState = Allocation.createSized(mRS, Element.USER_I32, 1);
         mState.data(new int[1]);
     }
 
     private void loadSkyTextures() {
         mSkyBufferIDs = new int[SKY_TEXTURES_COUNT];
-        mSkyTextures = new RenderScript.Allocation[SKY_TEXTURES_COUNT];
-        mSkyTexturesIDs = mRS.allocationCreateSized(
-                Element.USER_FLOAT, SKY_TEXTURES_COUNT);
+        mSkyTextures = new Allocation[SKY_TEXTURES_COUNT];
+        mSkyTexturesIDs = Allocation.createSized(
+                mRS, Element.USER_FLOAT, SKY_TEXTURES_COUNT);
 
-        final RenderScript.Allocation[] textures = mSkyTextures;
+        final Allocation[] textures = mSkyTextures;
         textures[0] = loadTexture(R.drawable.night, "night");
         textures[1] = loadTexture(R.drawable.sunrise, "sunrise");
         textures[2] = loadTexture(R.drawable.sky, "sky");
@@ -106,7 +107,7 @@
         final int count = textures.length;
 
         for (int i = 0; i < count; i++) {
-            final RenderScript.Allocation texture = textures[i];
+            final Allocation texture = textures[i];
             texture.uploadToTexture(0);
             bufferIds[i] = texture.getID();
         }
@@ -114,8 +115,8 @@
         mSkyTexturesIDs.data(bufferIds);
     }
 
-    private RenderScript.Allocation loadTexture(int id, String name) {
-        RenderScript.Allocation allocation = mRS.allocationCreateFromBitmapResource(mResources, id,
+    private Allocation loadTexture(int id, String name) {
+        Allocation allocation = Allocation.createFromBitmapResource(mRS, mResources, id,
                 Element.RGB_565, false);
         allocation.setName(name);
         return allocation;
diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
index 7f9727c..cb3dd51 100644
--- a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
+++ b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
@@ -21,6 +21,7 @@
 import android.renderscript.RenderScript;
 import android.renderscript.ProgramVertexAlloc;
 import android.renderscript.Element;
+import android.renderscript.Allocation;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -100,20 +101,20 @@
     private ProgramVertexAlloc mPVAlloc;
     private RenderScript.ProgramVertex mPVOrtho;
     private ProgramVertexAlloc mPVOrthoAlloc;
-    private RenderScript.Allocation[] mIcons;
-    private RenderScript.Allocation[] mLabels;
+    private Allocation[] mIcons;
+    private Allocation[] mLabels;
 
     private int[] mAllocStateBuf;
-    private RenderScript.Allocation mAllocState;
+    private Allocation mAllocState;
 
     private int[] mAllocIconIDBuf;
-    private RenderScript.Allocation mAllocIconID;
+    private Allocation mAllocIconID;
 
     private int[] mAllocLabelIDBuf;
-    private RenderScript.Allocation mAllocLabelID;
+    private Allocation mAllocLabelID;
 
     private int[] mAllocScratchBuf;
-    private RenderScript.Allocation mAllocScratch;
+    private Allocation mAllocScratch;
 
     private void initNamed() {
         mRS.samplerBegin();
@@ -190,7 +191,7 @@
         mRS.contextBindProgramVertex(mPV);
 
         mAllocScratchBuf = new int[32];
-        mAllocScratch = mRS.allocationCreateSized(
+        mAllocScratch = Allocation.createSized(mRS,
             Element.USER_I32, mAllocScratchBuf.length);
         mAllocScratch.data(mAllocScratchBuf);
 
@@ -199,37 +200,37 @@
 
 
         {
-            mIcons = new RenderScript.Allocation[29];
+            mIcons = new Allocation[29];
             mAllocIconIDBuf = new int[mIcons.length];
-            mAllocIconID = mRS.allocationCreateSized(
+            mAllocIconID = Allocation.createSized(mRS,
                 Element.USER_I32, mAllocIconIDBuf.length);
 
-            mLabels = new RenderScript.Allocation[29];
+            mLabels = new Allocation[29];
             mAllocLabelIDBuf = new int[mLabels.length];
-            mAllocLabelID = mRS.allocationCreateSized(
+            mAllocLabelID = Allocation.createSized(mRS,
                 Element.USER_I32, mLabels.length);
 
             Element ie8888 = Element.RGBA_8888;
 
-            mIcons[0] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.browser, ie8888, true);
-            mIcons[1] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.market, ie8888, true);
-            mIcons[2] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.photos, ie8888, true);
-            mIcons[3] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.settings, ie8888, true);
-            mIcons[4] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.calendar, ie8888, true);
-            mIcons[5] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.g1155, ie8888, true);
-            mIcons[6] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.g2140, ie8888, true);
-            mIcons[7] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.maps, ie8888, true);
-            mIcons[8] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path431, ie8888, true);
-            mIcons[9] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path676, ie8888, true);
-            mIcons[10] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path754, ie8888, true);
-            mIcons[11] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path815, ie8888, true);
-            mIcons[12] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path1920, ie8888, true);
-            mIcons[13] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path1927, ie8888, true);
-            mIcons[14] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path3099, ie8888, true);
-            mIcons[15] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path3950, ie8888, true);
-            mIcons[16] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path4481, ie8888, true);
-            mIcons[17] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.path5168, ie8888, true);
-            mIcons[18] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.polygon2408, ie8888, true);
+            mIcons[0] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.browser, ie8888, true);
+            mIcons[1] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.market, ie8888, true);
+            mIcons[2] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.photos, ie8888, true);
+            mIcons[3] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.settings, ie8888, true);
+            mIcons[4] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.calendar, ie8888, true);
+            mIcons[5] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.g1155, ie8888, true);
+            mIcons[6] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.g2140, ie8888, true);
+            mIcons[7] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.maps, ie8888, true);
+            mIcons[8] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path431, ie8888, true);
+            mIcons[9] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path676, ie8888, true);
+            mIcons[10] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path754, ie8888, true);
+            mIcons[11] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path815, ie8888, true);
+            mIcons[12] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path1920, ie8888, true);
+            mIcons[13] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path1927, ie8888, true);
+            mIcons[14] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path3099, ie8888, true);
+            mIcons[15] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path3950, ie8888, true);
+            mIcons[16] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path4481, ie8888, true);
+            mIcons[17] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path5168, ie8888, true);
+            mIcons[18] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.polygon2408, ie8888, true);
 
             mLabels[0] = makeTextBitmap("browser");
             mLabels[1] = makeTextBitmap("market");
@@ -274,16 +275,16 @@
             mLabels[28] = mLabels[9];
 
 /*
-            mIcons[19] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.solitaire, ie8888, true);
-            mIcons[20] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.sudoku, ie8888, true);
-            mIcons[21] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.taptaprevenge, ie8888, true);
-            mIcons[22] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.tetris, ie8888, true);
-            mIcons[23] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.tictactoe, ie8888, true);
-            mIcons[24] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.tweetie, ie8888, true);
-            mIcons[25] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.urbanspoon, ie8888, true);
-            mIcons[26] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.waterslide_extreme, ie8888, true);
-            mIcons[27] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.weather_channel, ie8888, true);
-            mIcons[28] = mRS.allocationCreateFromBitmapResource(mRes, R.raw.zippo, ie8888, true);
+            mIcons[19] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.solitaire, ie8888, true);
+            mIcons[20] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.sudoku, ie8888, true);
+            mIcons[21] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.taptaprevenge, ie8888, true);
+            mIcons[22] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.tetris, ie8888, true);
+            mIcons[23] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.tictactoe, ie8888, true);
+            mIcons[24] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.tweetie, ie8888, true);
+            mIcons[25] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.urbanspoon, ie8888, true);
+            mIcons[26] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.waterslide_extreme, ie8888, true);
+            mIcons[27] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.weather_channel, ie8888, true);
+            mIcons[28] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.zippo, ie8888, true);
 */
 
 
@@ -299,7 +300,7 @@
 
     }
 
-    RenderScript.Allocation makeTextBitmap(String t) {
+    Allocation makeTextBitmap(String t) {
         Bitmap b = Bitmap.createBitmap(128, 32, Bitmap.Config.ARGB_8888);
         Canvas c = new Canvas(b);
         Paint p = new Paint();
@@ -307,7 +308,7 @@
         p.setTextSize(20);
         p.setColor(0xffffffff);
         c.drawText(t, 2, 26, p);
-        return mRS.allocationCreateFromBitmap(b, Element.RGBA_8888, true);
+        return Allocation.createFromBitmap(mRS, b, Element.RGBA_8888, true);
     }
 
 
@@ -320,7 +321,7 @@
         mScript = mRS.scriptCCreate();
 
         mAllocStateBuf = new int[] {0, 0, 0, 8, 0, 0, -1, 0, mAllocIconIDBuf.length, 0, 0};
-        mAllocState = mRS.allocationCreateSized(
+        mAllocState = Allocation.createSized(mRS,
             Element.USER_I32, mAllocStateBuf.length);
         mScript.bindAllocation(mAllocState, 0);
         mScript.bindAllocation(mAllocIconID, 1);