add array launch support.

Change-Id: I66cd89b5b44eafa92f391708a06464cd7cdde3ed
diff --git a/cpu_ref/rsCpuScriptGroup.cpp b/cpu_ref/rsCpuScriptGroup.cpp
index 3d32a51..166c80d 100644
--- a/cpu_ref/rsCpuScriptGroup.cpp
+++ b/cpu_ref/rsCpuScriptGroup.cpp
@@ -223,13 +223,15 @@
                 ains  = const_cast<const Allocation**>(&ins[ct]);
             }
 
-            si->forEachMtlsSetup(ains, inLen, outs[ct], nullptr, 0, nullptr, &mtls);
+            bool launchOK = si->forEachMtlsSetup(ains, inLen, outs[ct], nullptr, 0, nullptr, &mtls);
 
             si->forEachKernelSetup(slot, &mtls);
             si->preLaunch(slot, ains, inLen, outs[ct], mtls.fep.usr,
                           mtls.fep.usrLen, nullptr);
 
-            mCtx->launchThreads(ains, inLen, outs[ct], nullptr, &mtls);
+            if (launchOK) {
+                mCtx->launchThreads(ains, inLen, outs[ct], nullptr, &mtls);
+            }
 
             si->postLaunch(slot, ains, inLen, outs[ct], nullptr, 0, nullptr);
         }
@@ -283,13 +285,14 @@
         Script *s = kernels[0]->mScript;
         RsdCpuScriptImpl *si = (RsdCpuScriptImpl *)mCtx->lookupScript(s);
 
-        si->forEachMtlsSetup(ains, inLen, outs[0], nullptr, 0, nullptr, &mtls);
+        if (si->forEachMtlsSetup(ains, inLen, outs[0], nullptr, 0, nullptr, &mtls)) {
 
-        mtls.script = nullptr;
-        mtls.kernel = (void (*)())&scriptGroupRoot;
-        mtls.fep.usr = &sl;
+            mtls.script = nullptr;
+            mtls.kernel = (void (*)())&scriptGroupRoot;
+            mtls.fep.usr = &sl;
 
-        mCtx->launchThreads(ains, inLen, outs[0], nullptr, &mtls);
+            mCtx->launchThreads(ains, inLen, outs[0], nullptr, &mtls);
+        }
 
         for (size_t ct=0; ct < kernels.size(); ct++) {
             Script *s = kernels[ct]->mScript;