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 基本相同。
虽然有几个不同之处:
- 某些依赖私有 Android APIs(非 NDK API)的功能在支持库中不存在。
- 内核 (.rs) 文件是为支持库预编译的,而本机 RenderScript 将在设备上进行 JIT 编译。
- 如果设备上的 Android 版本高于 "renderscriptTargetApi" 和 "targetSdkVersion".[=20,支持库也可以在本机 RenderScript 路径中执行=]
内存使用和其他行为的差异可能来自设备上的 GPU 驱动程序。 GPU 可能需要以指定的步幅/对齐方式将位图复制到 GPU 内存。
在 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 基本相同。
虽然有几个不同之处:
- 某些依赖私有 Android APIs(非 NDK API)的功能在支持库中不存在。
- 内核 (.rs) 文件是为支持库预编译的,而本机 RenderScript 将在设备上进行 JIT 编译。
- 如果设备上的 Android 版本高于 "renderscriptTargetApi" 和 "targetSdkVersion".[=20,支持库也可以在本机 RenderScript 路径中执行=]
内存使用和其他行为的差异可能来自设备上的 GPU 驱动程序。 GPU 可能需要以指定的步幅/对齐方式将位图复制到 GPU 内存。