Well, you're using rsGetElementAt_uchar(inp,x_,y_), but what is "inp"?
Also, can you show the code near
sc_ebab->forEach_ccl_initlabel(LAlloc); // call 1
sc_ebab->forEach_ccl_initlabel(RAlloc); // call 2
? Thank you
On Friday, 8 July 2016 11:52:41 UTC+2, Ruppesh Nalwaya wrote:
>
> Hi
> Actually that return 0; statement was commented. I made mistake while copy
> pasting .. the code exact code is this :
>
> int __attribute__((kernel)) ccl_initlabel(uint32_t x, uint32_t y) {
>
> int x_ = (int)x;
>
> int y_ = (int)y;
>
> int width = (int)rsAllocationGetDimX(inp);
>
> int height = (int)rsAllocationGetDimY(inp);
>
> int index = y_ * width + x_;
>
> int flag = (int)step(1.0f, (float)rsGetElementAt_uchar(inp,x_,y_));
>
> return (index*(1-flag) - flag);
>
> }
>
>
>
> Regards
>
> Ruppesh
>
> On Friday, 8 July 2016 14:00:59 UTC+5:30, Alberto Marchetti wrote:
>>
>> There can be a chance that, if the kernel has been written to return
>> always a constant, modifying the contents of the kernel does not let
>> RenderScript invalidate the cache (the code, being translated to bitcode,
>> gets highly optimized, so a constant is always a constant and, if the code
>> that comes earlier makes no changes to the "outer world", it can be just
>> stripped out).
>> Can you post the exact code you were using, without returning 0?
>>
>> On Thursday, 7 July 2016 14:25:31 UTC+2, Ruppesh Nalwaya wrote:
>>>
>>> Hi
>>> I wrote the following kernel to label a 2-D matrix/image with its 1-D
>>> index. In an earlier build I had written code for 1-indexing, which I
>>> updated later on to 0-indexing as follows.
>>>
>>> int __attribute__((kernel)) ccl_initlabel(uint32_t x, uint32_t y) {
>>>
>>> int x_ = (int)x;
>>>
>>> int y_ = (int)y;
>>>
>>> int width = (int)rsAllocationGetDimX(inp);
>>>
>>> int height = (int)rsAllocationGetDimY(inp);
>>>
>>> int index = y_ * width + x_; // in an earlier
>>> version, it was 1 indexed
>>>
>>> return 0;
>>>
>>> int flag = (int)step(1.0f, (float)rsGetElementAt_uchar(inp,x_,y_));
>>>
>>> return (index*(1-flag) - flag);
>>>
>>> }
>>>
>>>
>>> I call this kernel on 2 different allocations one after the other like
>>> this:
>>>
>>> sc_ebab->forEach_ccl_initlabel(LAlloc); // call 1
>>> sc_ebab->forEach_ccl_initlabel(RAlloc); // call 2
>>>
>>>
>>> When I updated the code from 1-indexing to 0-indexing, the behaviour of
>>> call 1 got updated but not of call 2. Interestingly this kind of sticky
>>> behaviour of 2nd call is visible only when the app reinstalled without
>>> uninstalling (If I uninstall manually and then install the updated build
>>> both calls' behaviour is updated). What could be the possible reason?
>>>
>>> *Note: I am working on Nexus 6*
>>>
>>> Regards
>>> Ruppesh
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/android-developers.
To view this discussion on the web visit
https://groups.google.com/d/msgid/android-developers/2ba35a13-c65e-4f7e-aa10-d49c26c37064%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.