WebGLをVirtualBox上のWebブラウザで動作させるのは難しいようだ

WebGLをVirtualBox上のWebブラウザで動作させるのは難しいようですね。いろいろと調べてみましたが、なかなかうまい方法がありません。いまのところ手元のマシンでは成功できていません。

WebGLチェックには http://webglreport.com/ へアクセスします。使えないブラウザだとそのメッセージが表示され、使えるブラウザだと図形が表示されます。

ホスト側のWebブラウザではWebGLを動かせているのですが、ゲスト側ではできていません。WebGLに対応したビデオドライバになっていないということなので、そこを何とかすれば良いのですが…

ホスト側ではMacBook Pro 13-inch, Mid 2012 Intel HD Graphics 4000を使っています。

VirtualBox
設定でディスプレイのビデオで「3Dアクセラレーションを有効」にチェックをいれてあります。

Ubuntu
Ubuntuで下記コマンドを実行すると、OpenGLなどには対応できているように見えます。

$ /usr/lib/nux/unity_support_test -p
OpenGL vendor string:   Humper
OpenGL renderer string: Chromium
OpenGL version string:  2.1 Chromium 1.9

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:  yes
GL framebuffer object:    yes
GL version is 1.4+:       yes

Unity 3D supported:       yes

下記のパッケージが必要です。

$ sudo apt-get install mesa-utils

下記も入れてみています。

$ sudo apt-get install libosmesa6
$ sudo apt-get install mesa-utils-extra

Chrome
ChromeでWebGLを動作させるためには「chrome://flags」を開いて、「Override software rendering list」をEnableとします。実際のGPUチェックには「chrome://gpu/」を開きます。

Chrome on Linux with WebGL and all the hardware acceleration stuff | Born in bronx, mastro’s blog: http://borninbronx.wordpress.com/2012/11/08/chrome-on-linux-with-webgl-and-all-the-hardware-acceleration-stuff/ とか、Issue 174176 – chromium – WebGL doesn’t work under Intel HD 4000 on Ubuntu 12.04 – An open-source project to help move the web forward. – Google Project Hosting: http://code.google.com/p/chromium/issues/detail?id=174176とか見ていろいろ設定してみましたが、ダメで動きませんでした。

Pass-throughを使う
VirtualBoxのマニュアルのChapter 9. Advanced topics に記載があります。http://www.virtualbox.org/manual/ch09.html#pcipassthrough

VirtualBoxの拡張パックを導入するとパススルーという機能が使えるようになるので、これでいけないか調べてみました。個人が評価用に使う分には無償で利用可能です。VirtualBoxへ拡張パックを導入するだけでなく、ゲストOSの方でも設定が必要です。

Ubuntuでは/etc/default/grubを編集して下記を追加。

GRUB_CMDLINE_LINUX="intel_iommu=on,pass-through"

よく調べていませんが、統合環境のビデオカードを無効とするにはigfx_offを指定するのが良いようです。ビデオカードを別途つけているデスクトップマシンとかはこの指定が必要なのかもしれません。

GRUB_CMDLINE_LINUX="intel_iommu=on,igfx_off,pass-through"

GRUBの設定変更は update-grub2 で更新できるので、このコマンドを実行してから再起動します。起動すると、下記コマンドで情報が取得できます。

$ lspci
略
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
略

VGA互換コントローラでInnoTex Systemberatung GmbHが見えています。これを、Intel HD Graphics 4000のコントローラにしたいのですが…

下記でも何らかの情報がでるらしいです。

$ dmesg|grep -i mmu
$ dmesg|grep -i PCI-DMA
$ dmesg|grep -i DMAR

と、いろいろ調べたのですが、ダメだったのであきらめました。ちなみに、Firefoxも動かなかったですね。about:configでlibosmesa6のライブラリへのパスを指定した変数を追加すれば動くという情報もあったのですが、手元では動きませんでした。

同じタグの記事: Chrome
同じタグの記事: Firefox
同じタグの記事: VirtualBox
同じカテゴリの記事: Linux
関連書籍: VirtualBox