RenderScript ScriptGroups - 在第二个内核

时间:2016-02-27 16:49:48

标签: android scripting global renderscript

我想将两个Renderscript脚本合并到一个scriptGroup中。第一个是ScriptIntrinsicBlur。基于模糊的U8分配作为输入,第二个脚本计算两件事:梯度和梯度方向。后者是第二个内核的正式out-Allocation。第一个是通过rsSetElementAt_float()填充的全局分配。现在,我发现执行scriptGroup后第二次分配返回为空。

问题:我的假设是正确的,使用scriptGroup你不能使用脚本全局 - 或者至少不能通过rsSetElementAt _(...)更改它们吗?

更新:我意识到使用U8作为ScriptIntrinsicBlur的输出和作为专有内核的输入的性能增益已经令人满意,即使在两个脚本的简单顺序设置中也是如此。这主要是因为它避免了将ScriptIntrinsicBlur的out-Allocation首先复制到Java数组中,然后再将其作为单独的输入分配传递给第二个内核。

之前,我使用U8_4(即等效的Bitmap)作为ScriptIntrinsicBlur的输出,然后将其转换为一维灰度int []数组,然后将其作为in-Allocation传递给专有内核...现在我转换在进入ScriptIntrinsicBlur分配之前已经使用灰度字节[](即U8),并使用U8作为第二个内核的输入。

这是我在使用RS时一次又一次地意识到的:尽可能简化数据流是非常值得的,速度提升非常棒。 (也许我会在稍后阶段查看Scriptgroup问题,因为现在我对结果很满意。)

1 个答案:

答案 0 :(得分:0)

使用像这样的全局脚本应该没有问题。它不如输出分配有效,但是可能。你提到out分配是空的,你在脚本全局中看到了什么?