RenderScript和V8支持库之间的差异

时间:2017-10-26 18:03:37

标签: android android-support-library renderscript

在Android中使用V8支持库和默认的RenderScript运行时,我注意到Java级别的相同RenderScript代码可以产生不同的结果。

例如,结果图像略有不同,可能是因为某些内在函数的实现不同。

我还注意到支持库版本是"更异步"比原生的。原生版本需要一些时间来处理" forEach()"方法,而支持库几乎立即返回" forEach()"当" copyTo"或者"完成()"被叫了。

我还注意到" Allocation.createFromBitmap()"被调用时,支持库将使用位图内存而不在VM外部分配额外空间,而本机版本将始终分配更多空间。我使用Qualcom's Trepn profiler得出了这个结论。

是否记录了差异?

1 个答案:

答案 0 :(得分:1)

RenderScript支持库与CPU路径中的本机RenderScript基本相同。

但有几个不同之处:

  1. 支持库中不存在依赖私有Android API(非NDK API)的某些功能。
  2. 内核(.rs)文件是为支持lib预编译的,而本机RenderScript将在设备上进行JIT编译。
  3. 如果设备上的Android版本高于“renderscriptTargetApi”和“targetSdkVersion”,则支持lib也可以在本机RenderScript路径中执行。
  4. 内存使用和其他行为的差异可能来自设备上的GPU驱动程序。 GPU可能需要使用指定的步幅/对齐将位图复制到GPU内存。