Entry

nvidia ドライバと DRI

2004年12月28日

前回 nvidia ドライバを入れてみたので,グラフィックス関連の設定をちょっと調整しました。今回入れ換えたビデオカードは,OpenGL に対応しているということなので,これに対応させるのが目標です。

とりあえず,OpenGL の前に,この前導入したスケスケウィンドウ環境を,もう少し使いやすくしておきます。transset をいちいちコマンドラインから起動するのも面倒ですしね。マウスでカチカチやって,透過の具合を調整できるようにします。

blackbox で TransSet のメニュー

具体的には,上のように blackbox のメニューに組み込むわけです。透過の程度を指定すると,transset が起動してカーソルが + になるから,あとは透過度を設定したいウィンドウの上でクリックします。我ながらグッドアイデア!あ,みんな思いつきますか……?

blackbox のメニューは,~/.blackbox/menu で設定できるので,これをいぢって作ります。どうな風に作ってもいいけれど,うちでは以下のような設定を加えてみました。表示した様子は,冒頭の図を参照してください。

	[submenu] (TransSet) {}
		[exec] (0.0) {transset 0}
		[exec] (0.1) {transset 0.1}
		[exec] (0.2) {transset 0.2}
		[exec] (0.3) {transset 0.3}
		[exec] (0.4) {transset 0.4}
		[exec] (0.5) {transset 0.5}
		[exec] (0.6) {transset 0.6}
		[exec] (0.7) {transset 0.7}
		[exec] (0.8) {transset 0.8}
		[exec] (0.9) {transset 0.9}
		[exec] (1.0) {transset 1.0}
	[end]

さてさて,ここから本題の OpenGL 大作戦です。使ったビデオチップは,nVIDIA GeForce FX5900,FreeBSD 5.3R,X.org 6.8.1 で試してみました。

どうも,dmesg や nvidia ドライバREADME.txt を見る限り,nvidia ドライバには AGP ドライバが含まれているようで,FreeBSD ネイティブの AGP ドライバと干渉するようです。うちのカーネルには,AGP ドライバが組み込まれていたので,作り直すことにします。

うちにはなかったんですけれど,/boot/loader.conf に,

load_agp="YES"

みたいな文句(カーネルモジュールのロードオプション)が入っていたら,取り除くことにします。

次に,nvidia ドライバです。ドライバは昨日入れたばかりだったんですけれど,今日の ports tree に 5.x 用に libm.so.2 を読み込む修正がありました。またまた cvsup で portupgrade -a ……トホホ。

導入したら,例によって /boot/loader.conf で nvidia カーネルモジュールをロードするようになっているか,/dev/nvidia* があるか等々を見ておきます。無事にインストールできたら,/etc/X11/xorg.conf を設定します。一応,以下のような感じでうまく動いているみたいです。

Section "ServerLayout"
        Identifier     "Layout0"
        Screen      0  "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        ModulePath   "/usr/X11R6/lib/modules"
        ModulePath   "/usr/X11R6/lib/modules/extensions"
        FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
#       FontPath     "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath     "/usr/X11R6/lib/X11/fonts/local:unscaled/"
        FontPath     "/usr/X11R6/lib/X11/fonts/local/"
        FontPath     "/usr/X11R6/lib/X11/fonts/latin2/"
        FontPath     "/usr/X11R6/lib/X11/fonts/CID/"
        FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/CID/"
        FontPath     "/usr/X11R6/lib/X11/fonts/PEX/"
        FontPath     "/usr/X11R6/lib/X11/fonts/TTF/"
        FontPath     "/usr/X11R6/lib/X11/fonts/TrueType/"
        FontPath     "/usr/X11R6/lib/X11/fonts/truetype/"
        FontPath     "/usr/X11R6/lib/X11/fonts/dynafont/"
EndSection

Section "Module"
        SubSection  "extmod"
                Option  "omit xfree86-dga"
        EndSubSection
        Load  "freetype"
#       Load  "xtt"
        Load  "glx"
#       Load  "dri"
        Load  "dbe"
        Load  "record"
        Load  "xtrap"
        Load  "type1"
EndSection

Section "DRI"
        Mode    0666
EndSection

Section "Extensions"
        Option "Composite" "Enable"
        Option "RENDER"    "Enable"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "Auto"
        Option      "Device" "/dev/sysmouse"
        Option      "Resolution" "High"
        Option      "Buttons" "5"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "keyboard"
        Option      "XkbModel" "pc101"
        Option      "XkbLayout" "us"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        HorizSync    30.0 - 70.0
        VertRefresh  50.0 - 120.0
EndSection

#Section "Device"
#       Identifier  "Card0"
#       Driver      "mga"
#       ChipSet     "mgag400"
#       Card        "mga400 Millenium G400"
#       Option      "AGPMode"           "4"
#       Option      "NoHal"             "true"
#       Option      "MGASDRAM"          "true"
#       Option      "NoAccel"           "false"
#       Option      "TexturedVideo"     "true"
#EndSection

Section "Device"
        Identifier  "Card0"
        Driver      "nvidia"
        VendorName  "NVIDIA"
        BoardName   "Albatron FX 5900 XT"
        Option      "NvAGP"        "1"
        Option      "RenderAccel"  "true"
        Option      "CursorShadow" "true"
EndSection

#Section "Device"
#       Identifier  "Card0"
#       Driver      "nv"
#       VendorName  "NVIDIA"
#       BoardName   "Albatron FX 5900 XT"
#       Option      "AGPMode"      "8"
#       Option      "RenderAccel"  "true"
#       Option      "CursorShadow" "true"
#       Option      "AllowGLXWithComposite" "true"
#EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Depth     24
                Modes    "1024x768"
        EndSubSection
EndSection

dri モジュールを組み込むとどうもうまくいかないので,外してみました。組み込まなくてもいいのかなぁ……それなりに動いているみたいなんだけど,動く根拠が分かりません……。何はともあれ,動いているようなので,glxinfo してみます。ちょっと長いですけど引用。

% glxinfo 
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.3
server glx extensions:
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, 
    GLX_ARB_multisample, GLX_NV_float_buffer
client glx vendor string: NVIDIA Corporation
client glx version string: 1.3
client glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_EXT_import_context, GLX_SGI_video_sync, 
    GLX_NV_swap_group, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGI_swap_control, GLX_NV_float_buffer
GLX extensions:
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, 
    GLX_ARB_multisample, GLX_NV_float_buffer, GLX_ARB_get_proc_address
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce FX 5900XT/AGP/SSE2
OpenGL version string: 1.5.1 NVIDIA 61.13
OpenGL extensions:
    GL_ARB_depth_texture, GL_ARB_fragment_program, 
    GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, GL_ARB_imaging, 
    GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query, 
    GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shadow, 
    GL_ARB_shader_objects, GL_ARB_shading_language_100, 
    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_ARB_texture_env_dot3, 
    GL_ARB_texture_mirrored_repeat, GL_ARB_transpose_matrix, 
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader, 
    GL_ARB_window_pos, GL_S3_s3tc, GL_EXT_texture_env_add, GL_EXT_abgr, 
    GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_func_separate, 
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array, 
    GL_EXT_Cg_shader, GL_EXT_depth_bounds_test, GL_EXT_draw_range_elements, 
    GL_EXT_fog_coord, GL_EXT_multi_draw_arrays, GL_EXT_packed_pixels, 
    GL_EXT_paletted_texture, GL_EXT_pixel_buffer_object, 
    GL_EXT_point_parameters, GL_EXT_rescale_normal, GL_EXT_secondary_color, 
    GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, 
    GL_EXT_shared_texture_palette, GL_EXT_stencil_two_side, 
    GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_compression_s3tc, 
    GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod, 
    GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_vertex_array, 
    GL_HP_occlusion_test, GL_IBM_rasterpos_clip, 
    GL_IBM_texture_mirrored_repeat, GL_KTX_buffer_region, GL_NV_blend_square, 
    GL_NV_copy_depth_to_color, GL_NV_depth_clamp, GL_NV_fence, 
    GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragment_program, 
    GL_NV_fragment_program_option, GL_NV_half_float, GL_NV_light_max_exponent, 
    GL_NV_multisample_filter_hint, GL_NV_occlusion_query, 
    GL_NV_packed_depth_stencil, GL_NV_pixel_data_range, GL_NV_point_sprite, 
    GL_NV_primitive_restart, GL_NV_register_combiners, 
    GL_NV_register_combiners2, GL_NV_texgen_reflection, 
    GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4, 
    GL_NV_texture_expand_normal, GL_NV_texture_rectangle, 
    GL_NV_texture_shader, GL_NV_texture_shader2, GL_NV_texture_shader3, 
    GL_NV_vertex_array_range, GL_NV_vertex_array_range2, GL_NV_vertex_program, 
    GL_NV_vertex_program1_1, GL_NV_vertex_program2, 
    GL_NV_vertex_program2_option, GL_SGIS_generate_mipmap, 
    GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow, 
    GL_SUN_slice_accum
glu version: 1.3
glu extensions:
    GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
(snip)

"direct rendering:" が "Yes" になっているから,DRI は動いているみたいです。気をよくして,glclock を動かしてみたところ,

Fatal server error:
Caught signal 11.  Server aborting


Please consult the The X.Org Foundation support
         at http://wiki.X.Org
 for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional informati
on.

xinit:  connection to X server lost.

なメッセージを吐いて逝ってしまいました。なんでだろー……。時々起動したりするけれど,圧倒的に死ぬ可能性が高いです。再現性が乏しいだけに,ちょっと困ったことになっています。

当面のところ,3D なゲームをグリグリやる予定は無いので,もう少し研究してみます。というこで,今回は失敗(残念っ)。

一応,参照にしたページをいくつか挙げておきます。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN