web-dev-qa-db-ja.com

Intelチップセットを使用してUnity 3DをBumblebeeと連携させる方法

恐ろしいオプティマスを搭載したSony VAIO Sラップトップを持っているのですが、最終的にBumblebeeをUbuntu 12.04で完全に動作させることができました-設定。

ただし、デスクトップ効果は機能しません。しかし、彼らは、私がBumblebeeをインストールする前にしばらく働いていたことを漠然と覚えています。

これはサポートテストで得られるものです。

:~$ /usr/lib/nux/unity_support_test -p
Xlib:  extension "NV-GLX" missing on display ":0".
OpenGL vendor string:   Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile 
OpenGL version string:  1.4 (2.1 Mesa 8.0.2)

Not software rendered:    yes
Not blacklisted:          yes
GLX fbconfig:             yes
GLX texture from pixmap:  yes
GL npot or rect textures: yes
GL vertex program:        yes
GL fragment program:      yes
GL vertex buffer object:  no
GL framebuffer object:    yes
GL version is 1.4+:       yes

Unity 3D supported:       no

まず、チップセットがVBO(本質的にはGLの標準機能)をサポートしていないことを疑っています。

Xorg.0.logもXorg.8.logも特定のエラーを表示しません。

Nvidiaドライバーについて:動作させるには、304.22ドライバーをインストールする必要がありました(古いドライバーは動作しません)。彼らはlibglx.soを破壊したので、xserver-xorg-core libglx.soを元の場所に戻し、Nvidiaのlibglx.soをnvidia固有のフォルダーに移動し、そのフォルダーをbumblebee.configで指定しました。それはうまくいくようで、私がここで見る問題を引き起こさないはずです。

楽しみのために、UnityにNvidiaチップセットを使用しようとしましたが、それでもうまくいきませんでした。

~$ optirun /usr/lib/nux/unity_support_test -p
OpenGL vendor string:   NVIDIA Corporation
OpenGL renderer string: GeForce GT 640M LE/PCIe/SSE2
OpenGL version string:  4.2.0 NVIDIA 304.22

Not software rendered:    yes
Not blacklisted:          yes
GLX fbconfig:             yes
GLX texture from pixmap:  no
GL npot or rect textures: yes
GL vertex program:        yes
GL fragment program:      yes
GL vertex buffer object:  yes
GL framebuffer object:    yes
GL version is 1.4+:       yes

Unity 3D supported:       no
3
EboMike

問題はlibGL.so.1にありました-どうやら、Nvidiaインストーラーも削除済み Intelのもので、独自のものに置き換えました。

それでlibgl1-mesa-glxからそれを取得し、/ usr/libのシンボリックリンクを変更してそれを指すようにしました。

Bumblebeeのセットアップ方法の詳細については説明しませんが、実際には文書化されていないいくつかの重要な部分が欠落しています。

  1. Nvidiaドライバーインストーラーは、既存のlibglx.so(/ usr/lib/xorg/modules/extensions内)およびlibGL.so(/ usr/lib内)を破壊する可能性があります。ドライバをインストールする前にそれらをバックアップしてください。すでにそれらを紛失している場合、xserver-xorg-coreとlibgl1-mesa-glxをresintallingすることでそれらを取り戻すことができますが、私が最初にそれを試みたとき、それは私のラップトップを悪い状態のままにしました(ログイン後の黒い画面、リカバリに進みます)、dpkg-deb経由で手動で取得することをお勧めします。

  2. Nvidiaドライバーをインストールすると、Nvidiaが上記の2つのファイルをNvidiaライブラリへのシンボリックリンクに置き換えたことに気付くでしょう。私の場合、たとえば、libglx.soはlibglx.so.304.22へのシンボリックリンクです。

  3. Bumblebeeは両方のドライバーを必要とし、ディレクトリによってのみ区別できるため、各グラフィックアダプターのドライバーを別のディレクトリに移動させます。私が使用したNvidiaインストーラーは、いくつかのドライバーを/ usr/lib/nvidia-currentにインストールしました。それを使用しましょう。ライブラリとXorgモジュールを分離する必要があることに注意してください。関連するファイルを配置する場所は次のとおりです。

/ usr/lib内:

libGL.so.304.22   -- Nvidia's driver (unchanged where the installer put it)
libGL.so          -- symlink to libGL.so.1
libGL.so.1        -- symlink to /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1,
                     i.e. the libgl1-mesa-glx driver

/ usr/lib/x86_64-linux-gnu/mesa:

libGL.so.1   -- symlink to libGL.so.1.2
libGL.so.1.2 -- The normal driver from libgl1-mesa-glx 

/ usr/lib/nvidia-current内:

libGL.so   -- symlink to libGL.so.1
libGL.so.1 -- symlink to /usr/lib/libGL.so.304.22 (i.e. Nvidia's driver)

/ usr/lib/nvidia-current/xorg:

libglx.so -- symlink to /usr/lib/xorg/modules/extensions/libglx.so.304.22

/ usr/lib/xorg/modules/extensions内:

libglx.so.1       -- symlink to libglx.so.xserver
libglx.so.304.22  -- Nvidia's driver (unchanged from where the installer put it)
libglx.so.xserver -- I renamed the original libglx.so to that and put it here

最後に、/ etc/bumblebee/bumbleebee.confを変更して、Nvidiaドライバーの場所をシステムに指示する必要があります。 (nouveauではなく)nvidiaドライバーを使用しているので、nvidiaセクションではこれを使用しています。

KernelDriver=nvidia
Module=nvidia
PMMethod=auto
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/nvidia-current:/usr/lib32/nvidia-current
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia-current/xorg,/usr/lib/xorg/modules

LibraryPathとXorgModulePathがNvidiaドライバーを指す方法に注意してください。したがって、Bumblebeeがそれらを探している場合、それらを見つけます。 Unityがそれらを探している場合、/ usr/libおよび/ usr/lib/xorg/modules/extensionsを調べ、それらが非Nvidiaへのシンボリックリンクであることを確認しました。

これは場所によっては少し不器用かもしれませんが、何と言えますか?それは完全に動作します:

Unity 3Dは完全なデスクトップ効果を発揮し、非常に高速ですが、省エネの遅いIntelチップセットを使用しています。 VirtualBoxなどのアプリでは、通常の3Dアクセラレーションを利用できます。 optirunは動作し、「glxspheres」(〜60 fps)または「optirun glxspheres」(〜120 fps)を実行することを選択できます。

2
EboMike