Czy można użyć rsForEach RenderScript na jądrze innym niż root?

Czy można wywołać jądro inne niż root RenderScript używającrsForEach? Istnieje wiele przykładów użyciarsForEach wywołać jądro root z wewnątrz wywołanej funkcji RenderScript:

Dokumentacja dla androidów Renderscript zaawansowany rsForEachJak napisać mnożenie splotu w Androidzie Renderscript?Przekazywanie tablicy do rsForEach w Compute Renderscript

Łączą one sam skrypt ze zmienną w kontekście RenderScript, a następnie wywołują jądro root z poziomu RenderScript. Na przykład wActivity klasa:

...
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();
...

I wgradient.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, ...

Ale jeśli mam inne jądrogray czy mogę to odwołać po tymroot, wewnątrzgradient?

// 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);
}

Aledokumentacja dlarsForEach wydaje się wskazywać, że nie obsługuje niczego takiego. Być może można to osiągnąć, ustawiając coś wrs_script_call_t, aledoc jest raczej zwięzły na temat tego typu: (Źródło: 20 września 2013 r.)

typedef struct rs_script_call rs_script_call_t**

Struktura zapewniająca dodatkowe informacje do wywołania rsForEach. Służy przede wszystkim do ograniczenia połączenia do podzbioru komórek w alokacji.

To pytanie jest głównie z ciekawości - oczekuję, że preferowaną metodą jest wywołanie ich z Javy:

...
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);
...

Te wydają się być zsynchronizowane. Jeśli się definiujeroot igray następująco:

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

potem dzwonięforEach_root następnieforEach_gray powoduje, że „root, {0,0}” jest rejestrowany razy NxM zanim zacznie rejestrować „szary, {1,1}” - nie znalazłem jednak dokumentacji, która to gwarantuje. Ktoś wie, gdzie to jest?

questionAnswers(1)

yourAnswerToTheQuestion