gpt4 book ai didi

android - 渲染脚本 rs.finish()、allocation.syncAll()、copyTo() : wait till kernel execution finishes

转载 作者:行者123 更新时间:2023-11-29 16:02:59 26 4
gpt4 key购买 nike

我正在编写需要背靠背内核调用的 android renderscript 代码(有时一个内核的输出成为另一个内核的输入)。我还有一些全局指针,绑定(bind)到 Java 层的内存。每个内核更新那些全局指针并输出一些东西。我必须确保 kernel1 的执行完成,然后 kernel2 开始执行。

我查看了 android renderscript 文档,但无法很好地理解 syncAll(Usage) 和 finish()。谁能阐明如何实现这种行为?

谢谢

mScript.forEach_kernel1(mColorImageAllocation, tempAlloc);

// make sure kernel1 finishes, from android rs doc, copyTo should block
tempAlloc.copyTo(testOutputBitmap);

for (short i = 0; i < NUM_DIST; i++) {
mScript.set_gCurrentDistanceIndex(i);
mScript.forEach_kernel2(tempAlloc);
mRS.finish(); // wait till kernel2 finishes
}

在上面的示例中,在 kernel1 的输出上使用不同的全局参数调用了同一个 kernel2。

最佳答案

对于此代码,您也不需要。 RS 是一种管道模型,因此任何可能影响后续命令结果的工作都必须首先由驱动程序完成。

syncAll() 用于同步内存空间而不是执行。例如,将更改从脚本内存传播到图形内存。

关于android - 渲染脚本 rs.finish()、allocation.syncAll()、copyTo() : wait till kernel execution finishes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com