MATLABのハードウェアOpenGLレンダリング

MATLABのハードウェアOpenGLレンダリング

MATLAB R2015a または R2014b では、ハードウェアベースの OpenGL レンダリングは使用できません。 R2014b以前は、MATLABグラフィックスタックを再構築する前に、すべてがうまく機能していました。 MATLABから

>> opengl info
                          Version: '3.0 Mesa 10.6.5'
                           Vendor: 'Intel Open Source Technology Center'
                         Renderer: 'Mesa DRI Intel(R) Sandybridge Mobile '
                   MaxTextureSize: 8192
                           Visual: 'Visual 0xac, (RGBA 32 bits (8 8 8 8), Z depth 16 bits, Hardware acceleration, Double buffer, Antialias 4 samples)'
                         Software: 'true'
        SupportsGraphicsSmoothing: 1
    SupportsDepthPeelTransparency: 1
       SupportsAlignVertexCenters: 1
                       Extensions: {199x1 cell}
               MaxFrameBufferSize: 8192

私は「ソフトウェア」が偽物であると予想/希望します。

$ ldd /opt/tmw/matlab/bin/glnxa64/glren.so | grep libGL
    libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f0a3b871000)
    libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00007f0a3b5ef000)

MATLABはシステムライブラリ(TMWが望むもの)を探していることを示し、TMWはライブラリバージョンlibGL.so.1.2.0とlibGLU.so.1.3.1が互換性があることを確認します。

$ LIBGL_DEBUG=verbose matlab
libGL: OpenDriver: trying /usr/lib/xorg/modules/dri/tls/i965_dri.so
libGL: OpenDriver: trying /usr/lib/xorg/modules/dri/i965_dri.so
libGL: Using DRI2 for screen 0

有用な情報を提供しません。 TMWテクニカルサポートチームに連絡しましたが、彼らはこれがMATLABの問題だとは思いません。

$ glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile

ハードウェアベースのOpenGLは、MATLABの外部で動作することをお勧めします。私はIntelグラフィックを使用してArch Linuxでほとんどのテストを実行しましたが、ATIとNvidiaグラフィックも試しましたが、成功しませんでした。正式にサポートされているOSなので、最近Debian 7 chrootを作成しましたが、まだIntelカードを使用していません。

すべての作業は、デフォルトのArchカーネルを使用して行われました。これが問題の原因になりますか?問題をデバッグ/追跡する方法は?

答え1

私には次のような効果がありました(R2017a(試用版)がインストールされたArchLinux、Intelグラフィックがインストールされているノートブックのみ):

export LD_PRELOAD=/usr/lib/libstdc++.so
export LD_LIBRARY_PATH=/usr/lib/xorg/modules/dri/
/net/sw/MATLAB/R2017a/bin/glnxa64/MATLAB

最後の手順では、(一部のLD_ *操作を実行するヘルパースクリプトの代わりに)MATLAB実行可能ファイルを直接呼び出します。

>> opengl info
                          Version: '3.0 Mesa 17.0.0'
                           Vendor: 'Intel Open Source Technology Center'
                         Renderer: 'Mesa DRI Intel(R) Haswell Mobile '
                   MaxTextureSize: 16384
                           Visual: 'Visual 0xcb, (RGBA 32 bits (8 8 8 8), Z depth 16 bits, Hardware acceleration, Double buffer, Antialias 8 samples)'
                         Software: 'false'
             HardwareSupportLevel: 'full'
        SupportsGraphicsSmoothing: 1
    SupportsDepthPeelTransparency: 1
       SupportsAlignVertexCenters: 1
                       Extensions: {230×1 cell}
               MaxFrameBufferSize: 16384

答え2

MATLABのインストールパスにlibstdc ++.so.6 *ライブラリがありますか? MATLABには、古いバージョンのC ++標準ライブラリが付属しています。最新バージョンのGCCディストリビューションでMesaをコンパイルすると、実際のハードウェアアクセラレーションバックエンドをロードできなくなり、ソフトウェアレンダリングが強制されます。あなたはできます努力するMATLABインストールからこのファイルを削除します(ディストリビューションのインストールから削除しないでください。削除すると完全に中断されます。)、これは役に立ちます。インストール中にこれを行いますが、不要なアイテムを削除しないように注意したくありません。

あなたのコマンドopengl infoから少し違うメッセージが出ると予想しているので、これが役に立つかどうかはわかりませんが、試してみる価値はあります。

関連情報