I am a perfect noob of RenderScript
, I have just began to play with, I managed to parallel process some algo but I am really not using it properly.
Here's the java code :
Allocation input = Allocation.createSized(renderScript, Element.I32(renderScript), some_input_image.length); // where renderScript is an instance of RenderScript
input.copyFrom(some_input_image);
Allocation output = Allocation.createSized(renderScript, Element.I32(renderScript), image.length);
output.copyFrom(some_image);
scriptC_algo.bind_output(output);
scriptC_algo.invoke_process(input,output);
and the RenderScript
code
uint32_t *input;
uint32_t *output;
void RS_KERNEL algo(uint32_t in, uint32_t out) {
rsAtomicInc(&counter);
// some code
}
void process(rs_allocation input, rs_allocation output) {
rsForEach(algo, input, output);
}
The think is that I need inside the algo
function to get the index related the values of input
or output
that are read. But, I can't use counter
since I notice that the index of reading input
or output
are not the increasing order. Someone know how to do that ?
Your kernel should be like this:
Also, bad idea to have global/local versions of input/output variables and avoid the bind api. Use global rs_allocation object and rsGetElement_*/rsSetElementAt_* apis.