2

現在、オープンソースの OpenGL ゲームを OpenGL ES に移植しています。ターゲット デバイスは Linux を実行し、比較的弱い CPU (FPU を備えた ARM11 ファミリ) を備えています。OpenGL ES アクセラレータはありますが、OpenGL アクセラレータはありません。

最初に、Radeon X1650 Pro を搭載した Athlon X2 など、別の Linux マシンで高速化された OpenGL インスタンスを使用して、既存の OpenGL-GLX-X11 実装を実行したいと考えています。これは、高レベルで整理する必要がある重大な CPU ボトルネックがないことを確認するのに役立ちます。

X11接続のSSH転送を設定できました。glxinfo および glxgears プログラムは実行されますが、ローカルで実行されている glxgears (vsync で 60 fps) と比較して、後者のパフォーマンス (8 fps) は非常に貧弱です。glxinfo レポートには、ダイレクト レンダリングが使用されていると記載されており、ローカル (ARM デバイスに対して) ソフトウェア レンダラーが使用されていることがわかります。

私が望んでいるのは、OpenGL コマンドが Athlon X2 マシンに送信され、Radeon を使用して高速化されることです。これには間接レンダリングを有効にする必要があると思います。ただし、LIBGL_ALWAYS_INDIRECT=1 を設定しても何も変わりません。例えば:

arm$ LIBGL_ALWAYS_INDIRECT=1 glxinfo | fgrep rendering
direct rendering: Yes
arm$

ARM デバイスは Gentoo Linux を実行しています。私がやりたいことを強制する最良の方法は何ですか?

4

1 に答える 1

1

glxinfoおよびglxgearsプログラムは実行されますが、後者はローカルで実行されているglxgears(vsyncで60fps)と比較してパフォーマンスが非常に低くなります(8fps)。glxinfoレポートには、ダイレクトレンダリングが使用されていると記載されており、ローカル(ARMデバイスに対して)のソフトウェアレンダラーが使用されていることがわかります。

私はこれに少し戸惑っています。リモートディスプレイにOpenGL出力が表示されている場合、これは、GLXコマンドの代わりに画像が送信されることを意味します。ただし、これは、ホストデバイス上のlibGL.soがその出力をX11で認識しているが、GLXを使用しないことを意味します。

ARMデバイスでlibGL.soに寄与するパッケージを特定してください。GLXコマンドの生成とLD_PRELOADのみを使用して別のlibGL.soをインストールすることをお勧めします。

Mesa3Dは、GLXコマンドストリームジェネレータライブラリを構築するように設定できます。

于 2012-07-04T20:04:32.430 に答える