¿Se puede usar rsForEach de RenderScript en un kernel no root?

¿Se puede invocar un kernel RenderScript no root usandorsForEach? Hay muchos ejemplos de usorsForEach para llamar al núcleo desde una función de RenderScript invocable:

Documentación para la llamada rsForEach avanzada de Androids Renderscript¿Cómo escribir una multiplicación de convolución en Android Renderscript?Pasando Array a rsForEach en Renderscript Compute

Estos enlazan el script a una variable en el contexto de RenderScript, luego invocan el núcleo raíz desde dentro de RenderScript. Por ejemplo, en elActivity clase:

...
mScript = new ScriptC_gradient(mRS);
// bind Allocations and mScript to variables in the RenderScript context:
mScript.set_gIn(mImageAllocation);
mScript.set_gOut(mGradientAllocation);
mScript.set_gScript(mScript);
// invoke gradient function:
mScript.invoke_gradient();
...

Y engradient.rs:

#pragma version(1)
#pragma rs java_package_name(com.example.android.rs.hellocompute)

rs_allocation gOut;
rs_allocation gIn;
rs_script gScript;

void gradient() {
  rsForEach(gScript, gIn, gOut);
}
void root(const uchar4 *v_in, uchar4 *v_out, ...

Pero si tengo otro núcleo.gray podria invocarlo despuesroot, dentrogradient?

// I thought it would look like this:
void gradient() {
  rsForEach(gScript, gIn, gOut);
  rsForEach(gScript, gIn, gOut, NULL, NULL, gExportForEachIdx_gray);
}
// Or:
void gradient() {
  rsForEach(gScript, gIn, gOut);
  rsSetMainKernel(&gScript, "gray");
  rsForEach(gScript, gIn, gOut);
}

Perola documentación pararsForEach Parece indicar que no soporta nada como esto. Tal vez se pueda lograr poniendo algo en unars_script_call_t, peroEl documento es bastante conciso acerca de ese tipo: (Consultado el 20 de septiembre de 2013)

typedef struct rs_script_call rs_script_call_t**

Estructura para proporcionar información adicional a una llamada rsForEach. Se utiliza principalmente para restringir la llamada a un subconjunto de celdas en la asignación.

Esta pregunta es en su mayoría por curiosidad, espero que el método preferido sea llamarlos desde Java:

...
mScript = new ScriptC_gradient(mRS);
// bind Allocations and mScript to variables in the RenderScript context:
mScript.forEach_root(mImageAllocation, mGradientAllocation);
mScript.forEach_gray(mGradientAllocation, mGrayGradientAllocation);
...

Estos parecen estar sincronizados. Si se defineroot ygray como sigue:

void root(...) { rsDebug("root", 0,0);  }
void gray(...) { rsDebug("gray", 1,1);  }

entonces llamandoforEach_root entoncesforEach_gray hace que "raíz, {0,0}" se registre NxM veces antes de que comience a registrarse "gris, {1,1}". Sin embargo, no he encontrado documentación que garantice eso. ¿Alguien sabe dónde está?

Respuestas a la pregunta(1)

Su respuesta a la pregunta