Split ProgramFragment and ProgramStore from RenderScript.java.  Update Element and Type to new cached builder for easier app developement.
diff --git a/graphics/java/android/renderscript/ProgramStore.java b/graphics/java/android/renderscript/ProgramStore.java
new file mode 100644
index 0000000..9039621
--- /dev/null
+++ b/graphics/java/android/renderscript/ProgramStore.java
@@ -0,0 +1,178 @@
+/*
+ * 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 android.util.Config;
+import android.util.Log;
+
+
+/**
+ * @hide
+ *
+ **/
+public class ProgramStore extends BaseObj {
+        public enum DepthFunc {
+        ALWAYS (0),
+        LESS (1),
+        LEQUAL (2),
+        GREATER (3),
+        GEQUAL (4),
+        EQUAL (5),
+        NOTEQUAL (6);
+
+        int mID;
+        DepthFunc(int id) {
+            mID = id;
+        }
+    }
+
+    public enum BlendSrcFunc {
+        ZERO (0),
+        ONE (1),
+        DST_COLOR (2),
+        ONE_MINUS_DST_COLOR (3),
+        SRC_ALPHA (4),
+        ONE_MINUS_SRC_ALPHA (5),
+        DST_ALPHA (6),
+        ONE_MINUS_DST_ALPA (7),
+        SRC_ALPHA_SATURATE (8);
+
+        int mID;
+        BlendSrcFunc(int id) {
+            mID = id;
+        }
+    }
+
+    public enum BlendDstFunc {
+        ZERO (0),
+        ONE (1),
+        SRC_COLOR (2),
+        ONE_MINUS_SRC_COLOR (3),
+        SRC_ALPHA (4),
+        ONE_MINUS_SRC_ALPHA (5),
+        DST_ALPHA (6),
+        ONE_MINUS_DST_ALPA (7);
+
+        int mID;
+        BlendDstFunc(int id) {
+            mID = id;
+        }
+    }
+
+
+    ProgramStore(int id, RenderScript rs) {
+        super(rs);
+        mID = id;
+    }
+
+    public void destroy() {
+        mRS.nProgramFragmentStoreDestroy(mID);
+        mID = 0;
+    }
+
+
+
+    public static class Builder {
+        RenderScript mRS;
+        Element mIn;
+        Element mOut;
+        DepthFunc mDepthFunc;
+        boolean mDepthMask;
+        boolean mColorMaskR;
+        boolean mColorMaskG;
+        boolean mColorMaskB;
+        boolean mColorMaskA;
+        BlendSrcFunc mBlendSrc;
+        BlendDstFunc mBlendDst;
+        boolean mDither;
+
+
+
+        public Builder(RenderScript rs, Element in, Element out) {
+            mRS = rs;
+            mIn = in;
+            mOut = out;
+            mDepthFunc = DepthFunc.ALWAYS;
+            mDepthMask = false;
+            mColorMaskR = true;
+            mColorMaskG = true;
+            mColorMaskB = true;
+            mColorMaskA = true;
+            mBlendSrc = BlendSrcFunc.ONE;
+            mBlendDst = BlendDstFunc.ZERO;
+
+
+        }
+
+        public void setDepthFunc(DepthFunc func) {
+            mDepthFunc = func;
+        }
+
+        public void setDepthMask(boolean enable) {
+            mDepthMask = enable;
+        }
+
+        public void setColorMask(boolean r, boolean g, boolean b, boolean a) {
+            mColorMaskR = r;
+            mColorMaskG = g;
+            mColorMaskB = b;
+            mColorMaskA = a;
+        }
+
+        public void setBlendFunc(BlendSrcFunc src, BlendDstFunc dst) {
+            mBlendSrc = src;
+            mBlendDst = dst;
+        }
+
+        public void setDitherEnable(boolean enable) {
+            mDither = enable;
+        }
+
+        static synchronized ProgramStore internalCreate(RenderScript rs, Builder b) {
+            int inID = 0;
+            int outID = 0;
+            if (b.mIn != null) {
+                inID = b.mIn.mID;
+            }
+            if (b.mOut != null) {
+                outID = b.mOut.mID;
+            }
+            rs.nProgramFragmentStoreBegin(inID, outID);
+            rs.nProgramFragmentStoreDepthFunc(b.mDepthFunc.mID);
+            rs.nProgramFragmentStoreDepthMask(b.mDepthMask);
+            rs.nProgramFragmentStoreColorMask(b.mColorMaskR,
+                                              b.mColorMaskG,
+                                              b.mColorMaskB,
+                                              b.mColorMaskA);
+            rs.nProgramFragmentStoreBlendFunc(b.mBlendSrc.mID, b.mBlendDst.mID);
+            rs.nProgramFragmentStoreDither(b.mDither);
+
+            int id = rs.nProgramFragmentStoreCreate();
+            return new ProgramStore(id, rs);
+        }
+
+        public ProgramStore create() {
+            return internalCreate(mRS, this);
+        }
+    }
+
+}
+
+
+
+