試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Sun VirtualBoxのゲストGNU/LinuxにおけるOpenGLの3Dアクセラレーションを試す(2009/4/13現在)

バージョン2.2系からGNU/Linux*1をゲストOSに使用した場合にGuest AdditionsをインストールするとOpenGLの3Dアクセラレーションが利用できるということで、x86_64版のUbuntu 8.10を新規にインストールして試してみた。
Guest Additionsのインストールについても、今ではメニューの「Guest Additions のインストール...」を選択後少し待ち(オートランにより自動的にインストーラが起動するので)ユーザのパスワードを入力し、処理が済むまで待ってから再起動するだけの簡単操作でインストールできている。

ゲストOSの要件

マニュアルによると、ゲストOSは

の要件を満たす必要があり、Ubuntu 8.10とFedora 10にて動作が確認されているらしい。

設定など

仮想マシンの設定で「3Dアクセラレーションを有効化」を有効にした上で要件を満たすゲストOSにGuest Additionsが入っていれば、特にゲストOS上で設定を行うことなくOpenGLの3Dアクセラレーションは利用可能となる。

展開プラグインなどはすぐに使用できる。
glxinfoで情報を見るとハードウェアアクセラレーションが利用可能であることが分かる。

以下は出力をコピペしたもの。

guest$ glxinfo
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: Chromium
server glx version string: 1.2 Chromium
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_texture_from_pixmap, GLX_SGIX_fbconfig
client glx vendor string: Chromium
client glx version string: 1.2 Chromium
client glx extensions:
    GLX_ARB_multisample, GLX_EXT_texture_from_pixmap, GLX_SGIX_fbconfig
GLX version: 1.3
GLX extensions:
    GLX_ARB_multisample, GLX_EXT_texture_from_pixmap, GLX_SGIX_fbconfig
OpenGL vendor string: Humper
OpenGL renderer string: Chromium
OpenGL version string: 1.5 Chromium 1.9
OpenGL extensions:
    GL_ARB_depth_texture, GL_ARB_fragment_program, GL_ARB_multisample, 
    GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_point_parameters, 
    GL_ARB_point_sprite, GL_ARB_shadow, GL_ARB_texture_border_clamp, 
    GL_ARB_texture_compression, GL_ARB_texture_cube_map, 
    GL_ARB_texture_env_add, GL_ARB_texture_env_combine, 
    GL_EXT_texture_env_combine, GL_ARB_texture_env_dot3, 
    GL_EXT_texture_env_dot3, GL_ARB_texture_mirrored_repeat, 
    GL_ARB_texture_non_power_of_two, GL_ARB_transpose_matrix, 
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_window_pos, 
    GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_func_separate, 
    GL_EXT_blend_subtract, GL_EXT_texture_env_add, GL_EXT_fog_coord, 
    GL_EXT_multi_draw_arrays, GL_EXT_secondary_color, GL_EXT_shadow_funcs, 
    GL_EXT_stencil_wrap, GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias, 
    GL_EXT_texture_object, GL_EXT_texture3D, GL_IBM_rasterpos_clip, 
    GL_NV_fog_distance, GL_NV_fragment_program, GL_NV_register_combiners, 
    GL_NV_register_combiners2, GL_NV_texgen_reflection, 
    GL_NV_texture_rectangle, GL_NV_vertex_program, GL_NV_vertex_program1_1, 
    GL_NV_vertex_program2, GL_SGIS_generate_mipmap, GL_CR_state_parameter, 
    GL_CR_cursor_position, GL_CR_bounding_box, GL_CR_print_string, 
    GL_CR_tilesort_info, GL_CR_synchronization, GL_CR_head_spu_name, 
    GL_CR_performance_info, GL_CR_window_size, GL_CR_tile_info, 
    GL_CR_saveframe, GL_CR_readback_barrier_size, GL_CR_server_id_sharing, 
    GL_CR_server_matrix

2 GLX Visuals
   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------
0x21 24 tc  0 32  0 r  y  y  8  8  8  8  0 16  8 16 16 16 16  0 0 None
0x3e 32 tc  0 32  0 r  y  y  8  8  8  8  0 16  8 16 16 16 16  0 0 None

2 GLXFBConfigs:
   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------
0x21  0 tc  0 24  0 r  y  .  8  8  8  0  0 16  8  0  0  0  0  1 1 None
0x3e  0 tc  0 32  0 r  y  .  8  8  8  8  0 16  8  0  0  0  0  1 1 None

マウスポインタが行方不明?

手元のMandriva Linux 2009.0上で試したところ、何故かマウスの統合機能は動作せず、また同時に、ゲストOS上のマウスポインタがログイン後に消えてしまった(仮想マシンアクセラレーション機能を無効にするとポインタが消えることはなかった)。
しかし、その後もう一度Guest Additionsを入れ直したところ、正常に動作するようになった。
うまくいかない場合は入れ直すのが良いかもしれない。

邪道(?)なマウスポインタ表示方法

以下はGuest Additionsの入れ直しをする前に書いたもの。必要はなくなったがせっかくなので残しておく。
もしマウスポインタが出なくても、Synapticapt-getコマンドでCCSM(パッケージ名「compizconfig-settings-manager」)をインストールし、「マウス表示」プラグインを有効にして幾つかの設定を行うことにより、無理やりマウスポインタの位置を表示させることはできるようだ。
以下、設定メモ。

  • 「一般」タブ
    • 回転速度: 0.5000(既定値)
    • 半径: 10(最小値)
    • 放出体: 3(3以上を推奨)
  • 「粒子のオプション」タブ
    • 粒子の数: 100(100-200ぐらいを推奨)
    • 粒子の大きさ: 2.0000(2-3ぐらいを推奨)
    • 粒子の減速: 1.0000(既定値)
    • 粒子の寿命: 0.1000(最小値)
    • 背景の暗さ: 0.9000(既定値)
    • 加色合成: チェック
    • 粒子の色: 既定値(ランダム色に設定しない場合のみ好みで設定)
    • ランダム色の粒子: チェック(好みで設定)


画像はデスクトップキューブ回転中。ポインタ位置は中央と右下隅の中間あたり。

動作について

当然ホストOS上の動作と比べると重いのだが、Athlon64 3500+とGeForce 7300 LEというハードウェア環境においてウィンドウマネージャのCompizやゲームのNeverballは快適に動いている。

使用したバージョン

*1:Solarisも同時にサポートされた

*2:X11R7.4に含まれるバージョンのXサーバ