【问题标题】:renderscript assertion failure !rsAssert failed: !"ScriptGroup:setInput kid not found"渲染脚本断言失败!rsAssert 失败:!“ScriptGroup:setInput Kid not found”
【发布时间】:2013-09-18 21:23:56
【问题描述】:

我不明白为什么会提出这个断言。我相信我有正确的代码序列来设置脚本组

ScriptGroup.Builder sBuilder = new ScriptGroup.Builder(mRS);
sBuilder.addKernel(K1.getKernelID_root());
sBuilder.addKernel(K2.getKernelID_root());
sBuilder.addConnection(inAlloc.getType(),
                        K1.getKernelID_root(),
                        K2.getKernelID_root());
ScriptGroup sGroup = sBuilder.create();
sGroup.setInput(K1.getKernelID_root(), inAlloc);
sGroup.setOutput(k2.getKernelID_root(), outAlloc);
sGroup.execute();

我问是因为我发现 K1 执行了,但是 K2 根本不执行。相反,这个断言被抛出。这个断言与这种行为有什么关系吗?

@杰森 我通过使用 attribute((kernel)) 限定内核解决了这个问题,然后脚本组执行正确触发。这避免了断言,我可以清楚地看到两个内核都按预期执行。但是,仅提供有关此断言发生时的场景的更多详细信息。我之前对内核的定义是void root(short3 *out, uint32_t out_x, uint32_t out_y)。因此,当内核被定义为这样(即定义为根)时,似乎抛出了断言。看起来 ScriptGroup.SetInput 和内核是否定义为 root 之间存在某种冲突。当我有机会时,我会尝试重现这个问题。目前,我已经解决了上面提到的这个问题。

【问题讨论】:

    标签: android renderscript


    【解决方案1】:

    我在源代码中没有看到任何明显的问题。您是否有机会发布更多关于 K1 和 K2 是什么的背景信息?

    您看到的断言确实表明存在问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-27
      • 2016-03-13
      • 2021-06-27
      • 1970-01-01
      • 2021-03-16
      • 2010-09-26
      • 2018-11-09
      相关资源
      最近更新 更多