AndroidでV8サポートライブラリとデフォルトのRenderScriptランタイムを使用しているときに、Javaレベルで同じRenderScriptコードが異なる結果を生成することがあることに気付きました。RenderScriptとV8のサポートライブラリの違い
たとえば、いくつかの組み込み関数の実装が異なるため、結果の画像に若干の違いがあります。
サポートライブラリのバージョンがネイティブのバージョンよりも「非同期」であることに気付きました。ネイティブバージョンは "forEach()"メソッドを処理するのに時間がかかり、 "forEach()"呼び出しの後すぐにサポートライブラリが戻り、 "copyTo"または "finish()"が呼び出されたときにすべての作業を行います。
"Allocation.createFromBitmap()"が呼び出されたとき、サポートライブラリはビットマップメモリを使用し、VMの外に余分なスペースを割り当てないことに気付きました。ネイティブバージョンは常により多くのスペースを割り当てます。私はQualcom's Trepn profilerを使ってこの結論に達しました。
違いはどこかに書かれていますか?
3番目のステートメントを少し良く説明できますか?デバイスのAndroidバージョンが "renderscriptTargetApi"に等しい場合はどうなりますか? 正しく理解すると、高い「targetSdkVersion」は、ネイティブRenderScriptパスの代わりにライブラリを使用する比較的新しいデバイスになります。 – Petrakeas
あなたは正しいです。 RenderScriptには、Allocation、IntrinsicsなどのフレームワークAPIとランタイムAPI(https://developer.android.com/guide/topics/renderscript/reference/overview.html)の両方があります。一般に、renderscriptTargetApiは、必要なすべてのRenderScriptランタイムAPIを提供する最小限のAPIです。 targetSdkVersionは、アプリケーションがターゲットとするAndroid Frameworks APIです。サポートlibは、ランタイムパートとフレームワークパートの両方がネイティブパスで実行できることを確認する必要があります。 –
サポートライブラリはGPUパスを使用していますか? – Petrakeas