Android Renderscript显示损坏的缓冲区

Android Renderscript显示损坏的缓冲区,android,renderscript,tegra,Android,Renderscript,Tegra,我正在开发一个简单的Renderscript应用程序,它可以进行基本的图像处理。它在我的Nexus5上运行良好,但在我的Shield平板电脑上运行不好。我有一个与SurfaceView大小相同的分配(RGB8888),用法是Allocation.usage\u脚本。我有另一个完全相同规格的分配,除了用法是Allocation.usage_SCRIPT | Allocation.usage_IO_输出。我的Renderscript已缩减到最低限度(出于明显的原因删除了包名): 如您所见,它所做的只

我正在开发一个简单的Renderscript应用程序,它可以进行基本的图像处理。它在我的Nexus5上运行良好,但在我的Shield平板电脑上运行不好。我有一个与SurfaceView大小相同的分配(RGB8888),用法是Allocation.usage\u脚本。我有另一个完全相同规格的分配,除了用法是Allocation.usage_SCRIPT | Allocation.usage_IO_输出。我的Renderscript已缩减到最低限度(出于明显的原因删除了包名):

如您所见,它所做的只是将数据从一个分配复制到另一个分配。然后对绑定到曲面的输出分配调用iosend()。这会在我的Nexus 5上显示图像,但会导致屏幕损坏()。腐败的本质让我相信,不知何故,我进入了我不该进入的记忆


真正令人不安的是,将输入分配复制到位图,将位图复制到输出分配,然后在输出分配上调用iosend()在两种平台上都可以正常工作,但完全破坏了我在Tegra K1的GPU上获得的任何RS速度优势。

你能试试“adb shell setprop debug.RS.default-CPU-driver 1”吗看看这是否解决了问题?这确实有效,但是,我购买了Shield专门用于利用Kepler GPU for RenderScript。有没有办法让它在GPU上运行而不出现缓冲区损坏?谢谢,我们已经复制了这个,并向NVIDIA提交了一个bug
#pragma version(1)
#pragma rs java_package_name()
#pragma rs_fp_relaxed

#include "rs_allocation.rsh"
#include "rs_core.rsh"

void root(const uchar4 *inVal, uchar4 *outVal){
    outVal -> rgba = inVal -> rgba;
}