RenderScript 和 V8 支持库的区别

Differences between RenderScript and V8 Support Library

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

例如,生成的图像存在细微差异,可能是因为某些内在函数的实现不同。

我还注意到支持库版本比原生版本 "more asynchronous"。本机版本需要一些时间来处理 "forEach()" 方法,而支持库会在 "forEach()" 调用后几乎立即 return 并在 "copyTo" 或 "finish()" 被调用。

我也注意到当“Allocation.createFromBitmap()" was called, the support library would use the bitmap memory and not allocate extra space outside the VM, while the native version would always allocate more space. I came to this conclusion using Qualcom's Trepn profiler.

是否在某处记录了差异?

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

虽然有几个不同之处:

  1. 某些依赖私有 Android APIs(非 NDK API)的功能在支持库中不存在。
  2. 内核 (.rs) 文件是为支持库预编译的,而本机 RenderScript 将在设备上进行 JIT 编译。
  3. 如果设备上的 Android 版本高于 "renderscriptTargetApi" 和 "targetSdkVersion".[=20,支持库也可以在本机 RenderScript 路径中执行=]

内存使用和其他行为的差异可能来自设备上的 GPU 驱动程序。 GPU 可能需要以指定的步幅/对齐方式将位图复制到 GPU 内存。