Add backed for script groups.

Change-Id: If2fdbde7381fcdaeb54d41a913b855fd83d4f186
diff --git a/rsScript.cpp b/rsScript.cpp
index 25ee1a0..9bbc2ba 100644
--- a/rsScript.cpp
+++ b/rsScript.cpp
@@ -86,9 +86,56 @@
     return decSysRef();
 }
 
+ScriptKernelID::ScriptKernelID(Context *rsc, Script *s, int slot, int sig)
+        : ObjectBase(rsc) {
+
+    mScript = s;
+    mSlot = slot;
+    mHasKernelInput = (sig & 1) != 0;
+    mHasKernelOutput = (sig & 2) != 0;
+}
+
+ScriptKernelID::~ScriptKernelID() {
+
+}
+
+void ScriptKernelID::serialize(Context *rsc, OStream *stream) const {
+
+}
+
+RsA3DClassID ScriptKernelID::getClassId() const {
+    return RS_A3D_CLASS_ID_SCRIPT_KERNEL_ID;
+}
+
+ScriptFieldID::ScriptFieldID(Context *rsc, Script *s, int slot) : ObjectBase(rsc) {
+    mScript = s;
+    mSlot = slot;
+}
+
+ScriptFieldID::~ScriptFieldID() {
+
+}
+
+void ScriptFieldID::serialize(Context *rsc, OStream *stream) const {
+
+}
+
+RsA3DClassID ScriptFieldID::getClassId() const {
+    return RS_A3D_CLASS_ID_SCRIPT_FIELD_ID;
+}
+
+
 namespace android {
 namespace renderscript {
 
+RsScriptKernelID rsi_ScriptKernelIDCreate(Context *rsc, RsScript vs, int slot, int sig) {
+    return new ScriptKernelID(rsc, (Script *)vs, slot, sig);
+}
+
+RsScriptFieldID rsi_ScriptFieldIDCreate(Context *rsc, RsScript vs, int slot) {
+    return new ScriptFieldID(rsc, (Script *)vs, slot);
+}
+
 void rsi_ScriptBindAllocation(Context * rsc, RsScript vs, RsAllocation va, uint32_t slot) {
     Script *s = static_cast<Script *>(vs);
     Allocation *a = static_cast<Allocation *>(va);