問題タブ [mali]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android OpenGL ES がラスタライズされない - 行列乗算が切り替わる
新しい SGS3 (I9300 - LTEではない) を購入したばかりで、OpenGL ES (2) アプリケーションの開発を続けたいと思っていました。残念ながら、コンパイルすると何も表示されません。
次の LogCat エラー メッセージが表示されます。
カスタム ROM (cyanogenmod 11 - スナップショット M4) もインストールしましたが、同じ問題が発生します。
アプリを起動すると、頂点がラスタライズされていない空白の画面が表示されます。これまでのところ、クリア カラーは機能するので、OpenGL の基本機能は機能しています。
確かに、GLES 1 と GLES 2 を使用して、Google Developers ページの基本的なチュートリアルで試してみました。どちらも機能しません。スクリーンショットは次のとおりです。
http://developer.android.com/training/graphics/opengl/index.html
プロジェクト自体は私の古いGalaxy S1 (Cyanogenmod でも) で正常に動作しますが、SGS3 では空白の画面以外は何も表示されません。
Mali-400 MP4グラフィックス ドライバー/システムが GL コマンドを異なる方法で解釈する可能性はありますか? SGS1 からHummingbird GPUを使用する以外に呼び出す方法はありますか?
何をすべきか考えている人はいますか?これは私の電話または日食の問題ですか? それとも、これは正常ですか - 私の理解不足ですか?この問題を解決するにはどうすればよいですか?
------- 編集: 解決策が見つかりました -------
わかりました、エラーを見つけました。Google ドキュメントは、頂点シェーダーでの行列の乗算が「間違っている」ことを示しています。
これは私の古い Galaxy S1 にとっては問題ではないようですが、どういうわけか S3 (または Mali GPU) はこれについてうるさいです。乗算の順序を次のように変更しました。
そして、それは機能します(S1でも)。S1 が両方のバージョンで正常に動作する理由はまだわかりませんが、これで問題は解決しました。
ご協力いただきありがとうございます!
arm - ARM 上の Opencl - プラットフォーム ID を取得できません
リモートでARMプロセッサとMali GPUを搭載したLinuxマシンでopen clを実行しています。しかし、clGetPlatformIDs() で「不明なエラー: プラットフォーム ID を取得できません」のようなエラーが発生しています。
両方試してみました
と
しかし、両方について、同じエラーが発生しています。AMDグラフィックスを搭載した個人用のWindowsラップトップでも同じコードが機能しています。
このエラーの原因は何ですか?
opencl - ARM Mali - CPU と GPU 間で読み取り専用メモリ オブジェクトを同時に共有する方法は?
ARM Mali T604 GPU を使用しています。ALLOC_HOST_PTR を使用してメモリ オブジェクトを作成しました。次の手順が有効かどうかを知りたいですか? GPU のメモリ オブジェクトにアクセス (読み取り専用) し、CPU に同じメモリ オブジェクトを (読み取り専用として) 同時にマップすることはできますか?
手順 1: メモリ オブジェクトのマップを解除します (以前は CL_MAP_READ_WRITE としてマップされていました)。
ステップ 2: CL_MAP_READ (clEnqueueMapBuffer() への引数) を使用してメモリ オブジェクトをマップし直します。
ステップ 3: CPU と GPU で同時にデータを読み取り、処理します (ただし、このメモリ オブジェクトに対して書き込み操作は行いません)。
ステップ 4: メモリ オブジェクトのマップを解除する
ステップ 5: CL_MAP_READ_WRITE を使用してメモリ オブジェクトをホストにマップします。
言い換えれば、私の最終的な目標は、CPU と GPU が同時に読み取り可能なメモリ オブジェクトを用意することです。これは Mali OpenCL プラットフォームで可能ですか?
memory-management - clEnqueueMap には長い時間がかかり、clEnqueuwritebuffer とほぼ同じです。
Mali 600 gpu の OpenCL ガイドに基づいて、CL_MEM_ALLOC_HOST_PTR を使用してデータ コピーを削除し、パフォーマンスを向上させる必要があります。
今日、Mali 604 GPU を搭載した Arndale ボードで CL_MEM_ALLOC_HOST_PTR を使用してメモリ コピー時間をテストしていました。CL_MEM_ALLOC_HOST_PTR と clEnqueueWriteBuffer でテストしました。CL_MEM_ALLOC_HOST_PTR を使用すると、全体的にパフォーマンスがあまり向上しないことがわかりました。clEnqueueMap 関数は clEnqueueWriteBuffer とほぼ同じ時間がかかるためです。このテストは、ベクトルの追加で行われました。
テスト方法: malloc でポインターを作成してデバイスにデータを転送する代わりに、最初に CL_MEM_ALLOC_HOST_PTR を使用してバッファーを作成しました。次に、OpenCL API を使用してこのバッファーをマップしました。これはポインタを返し、このポインタが指すメモリをデータで埋めました。この場合のマッピング メカニズムには時間がかかります。マッピング時間は clENqueuewritebuffer とほぼ同じです。したがって、この例から、CL_MEM_ALLOC_HOST_PTR を使用しても大きな改善は得られませんでした。
私の質問は、CL_MEM_ALLOC_HOST_PTR を使用すると、マッピング時間がなぜそれほど長くなるのかということです。
パフォーマンス測定値は次のとおりです: 要素サイズ: 10000000、カーネル: ベクトル加算、すべての時間はマイクロ秒単位です
通常の読み取り書き込みバッファ時間 バッファ作成時間 20 エンキュー書き込みバッファ時間 108019
CL_MEM_ALLOC_HOST_PTR - 割り当てられたバッファー内で直接データをコピーする時間 clEnqueueMap によって返されたポインターをデータで満たす 208009 マッピング時間 81346 アンマッピング時間 269
CL_MEM_ALLOC_HOST_PTR-memcpy を使用した malloc ポインターからホスト alloc ポインターへのデータ コピー
あり
Host_alloc_ptr に使用したコード スニペットは次のとおりです。
gpu - Mali-400MP GPU からの非対称で不正確な出力
次の単純なフラグメント シェーダーがあります。
フレーム バッファ オブジェクトを使用してテクスチャにレンダリングしています。フレーム バッファから値を読み戻すと、次のようになります。
38、38、38、38、39、39、39、39、38、38、38、38、39など
0.15*255 = 38.25 したがって、デスクトップ GPU (intel 4000) と Tegra 3 で得られるすべてのピクセルで均一に 38 になると予想されます。誰かがこの問題に光を当てることができれば幸いです。Mali-400MP は Samsung Galaxi s2、s3、および s3 mini で使用されているため、モバイル デバイス用の GPGPU を使用するすべての人にとって重要です。
arm - Mali OpenCL SDK を使用して、ARM CPU (Cortex-a7) で OpenCL コードを実行することは可能ですか?
Mali OpenCL SDK を使用すると、Mali GPU で opencl コードを実行できます。
Mali OpenCL SDK を使用して、ARM CPU (Cortex-a7) で OpenCL コードを実行することは可能ですか?
arm - マリ SDK の Opencl
私は、ARM CPU と Mali GPU を搭載した Juno ARM 汎用ボードを持っています。このような異種プラットフォームで役立つ OpenCL を使用することを考えています。ARM 用の OpenCL SDK が必要だと思います。これにより、ホスト ARM CPU 用のプログラムを記述できるようになり、実際にカーネルを GPU で実行できるようになります。私のこの理解は正しいですか?ARM用のOpenCL SDK(ホストARM用のプログラムを作成するため)を探していましたが、何も見つかりませんでした。代わりに、ARMのWebサイト(http://malideveloper.arm.com/develop-for-mali/ )でMali GPU用のOpenCL SDKを見つけましたsdks/mali-opencl-sdk/ )。Mali GPU の OpenCL SDK for ARM も使用できますか? 誰かがこれに光を当てることができますか?
opengl-es - glCompileShader に関する問題
Windows 8 でシェーダーをコンパイルする際に問題が発生しました。アプリケーションが glCompileShader を呼び出してシェーダーをコンパイルすると、デバッガーは次のコンパイル エラーをスローします。
「malisc」は内部コマンドまたは外部コマンドとして認識されません。
どうやら、Mali オフライン コンパイラを呼び出しているようです。こんなことは初めてです。OpenGLES 2.0 マリ エミュレーターを使用しています。
私のグラフィック カードは GeForce GT 640 ですが、これが関連しているかどうかはわかりません。このコマンドが呼び出されるのはなぜですか? シェーダーをコンパイルできないのはなぜですか? どうすればこれを解決できますか?