基本的な画像操作を行う単純な Renderscript アプリケーションを開発しています。Nexus 5 では正常に動作しますが、Shield タブレットでは動作しません。SurfaceView と同じサイズの割り当て (RGB8888) があり、使用法は Allocation.USAGE_SCRIPT です。使用法が Allocation.USAGE_SCRIPT | であることを除いて、まったく同じ仕様の別の割り当てがあります。Allocation.USAGE_IO_OUTPUT. 私の Renderscript は最小限に抑えられています (パッケージ名は明らかな理由で削除されています)。
#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;
}
ご覧のとおり、1 つの Allocation から別の Allocation にデータをコピーするだけです。次に、Surface にバインドされている出力 Allocation で iosend() を呼び出します。これにより、Nexus 5 で画像が表示されますが、Shieldで画面が破損 ( Image ) します。腐敗の性質により、私はどういうわけか、私が入ってはいけない記憶に入り込んでいると信じるようになります.
本当に厄介なのは、入力割り当てをビットマップにコピーし、ビットマップを出力割り当てにコピーしてから、出力割り当てで iosend() を呼び出すことは、両方のプラットフォームで問題なく機能しますが、私が得た RS 速度の利点を完全に台無しにすることです。 Tegra K1 の GPU。