2008/01/08

OpenGL 3D driver

最近在ubuntu上安装secondlife,结果程序视频窗口起不来,提示是3D direct rendering没有。

* DRI,全称 Direct Rendering Infrastructure,是 X 窗口系统里允许应用程序以一种安全有效的方式直接访问显示设备的框架。它包括对 X 服务器,某些X客户端库和内核的改动。DRI 的第一个主要应用是创建快速的 OpenGL 实现。

* DRI 是 XFree86 4.x 以及其后继者 X.org 的组成部分,也是 Mesa -一个 OpenGL API 的开源实现-的组成部分。有一些3D加速驱动是按照 DRI 标准写成的,包括 ATI,Matrox,3DFX 和 Intel。

* DRI 最初是由 Precision Insight, Inc. (PI) 公司在 Red Hat Inc. 和 SGI 的合作和部分资助下开发的。随着 PI 被 VA Linux 所收购,以及后来 VA Linux 退出 Linux 领域,DRI 现在由Tungsten Graphics Inc.公司继续维护。该公司由当初 PI 公司的一些 DRI 开发者所创建。Tungsten Graphics 是目前所有 DRI 开发的焦点,许多开源开发者通过 sourceforge 上的 DRI 项目继续为 DRI 贡献代码。

How to update OpenGL 3D driver

Identifying your card
ATI (fglrx) Driver
fglrx 是ATI提供的非公开驱动,ubuntu (>=6.10)对显卡使用开源的驱动,一般情况没必要换。

$lspci
reveals a card with "Radeon" in it, or you know you own a Radeon card

$ fglrxinfo
(install: sudo apt-get install xorg-driver-fglrx )

display: :0.0 screen: 0
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) 845G 20061017 x86/MMX/SSE2
OpenGL version string: 1.3 Mesa 6.5.2

说明已经启用了openGL。

$glxinfo |grep direct
outputs
direct rendering: No
, or it outputs
direct rendering: Yes, but performance in 3D applications such as games is unacceptable
说明没有direct rendering infrastrucutre(DRI)

$glxgears 评测工具

Make sure fglrx is not disabled: gksudo gedit /etc/default/linux-restricted-modules-common

Generate a new set of module dependencies so the fglrx driver starts properly.

sudo depmod -a

You now have to configure xorg to use your graphic card. The "aticonfig" tool, provided with the driver, will do that for you:

sudo aticonfig --initial
sudo aticonfig --overlay-type=Xv

ATI are well known not to be able to provide correct drivers for their hardware so you will have to deactivate the composite extension in /etc/X11/xorg.conf , otherwise you will get a jerky video display: gksudo gedit /etc/X11/xorg.conf and add the following lines at the end of the file:

Section "Extensions"
Option "Composite" "0"
EndSection

// After making all those modifications, your X server might not want to start again. Don't worry, you can still modify xorg.conf using vim sudo vim /etc/X11/xorg.conf. To enter edit mode press i, to escape press escape, to save type :w and to quit type :q . And to start X again, on the command line type startx. //

如果修改配置后重启无法进入图形界面,需要在ubuntu restricted mode下将 /etc/X11/xorg.conf 改回 xorg.conf.original-0 然后再重启。出错信息见 /var/log/xorg.log

Save and restart xorg by pressing Ctrl Alt and Backspace simultaneously.

Confirm it worked, by issuing the "fglrxinfo" command:

Troubleshooting

If fglrxinfo gives you the following, your installation is not completed correctly:

$ fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.2 (1.5 Mesa 6.4.1)

These two commands might fix your installation, try this, reboot, and run fglrxinfo again:

mkdir -p /usr/X11R6/lib/modules/dri
ln -s /usr/lib/dri/fglrx_dri.so /usr/X11R6/lib/modules/dri


xorg 工具: gtf 和 xdpyinfo

解决您的显示方面的问题,比如屏幕偏移,分辨率上不去等问题。我们可以用gtf 工具来尝试。

  1、gtf工具来自哪个软件包。

  gtf 是来自软件包 xorg-x11,一般的情况下,如果您安装了桌面环境,就有这个工具。系统大多是默认安装的。

  2、什么是gtf 。

  gtf - calculate VESA GTF mode lines 中文的意思是计算显示设备VESA驱动GTF模式命令行工具。

  什么是gtf?gtf(generalized timing formula),一般程序时间,定义了产生画面所需要的时间,包括了诸如画面刷新率等),另外gtf也是显示设备的一个工业标准。通过GTF则可以自动调节屏幕尺寸。

  我们通过gtf 工具计算显示器屏幕尺寸、分辨率,然后我们把计算出来的值插入到 xorg.conf配置文件中,就能达到自动调节屏幕的显示尺寸、位置 及分辨率。

  3、gtf的用法。

    gtf h-resolution v-resolution refresh

     [-v|--verbose] [-f|--fbmode] [-x|--xorgmode]

  举例:我的显示器支持1024x768 ,能达到85HZ,在X模式下。

    [beinan@localhost ~]# /usr/X11R6/bin/gtf 1024 768 85 -x

     # 1024x768 @ 85.00 Hz (GTF) hsync: 68.60 kHz; pclk: 94.39 MHz

     Modeline "1024x768_85.00"

     94.39 1024 1088 1200 1376 768 769 772 807 -HSync +Vsync

  把上面的输出的信息中Modeline一行,插入到/etc/X11/xorg.conf配置文件中的显示器(Monitor)配置那段中。加入后类似。

    Section "Monitor"

        Identifier "Monitor0"

        VendorName "Monitor Vendor"

        ModelName "LCD Panel 1280x1024"

        HorizSync 31.5 - 67.0

        VertRefresh 50.0 - 75.0

        Option "dpms"

        Modeline "1024x768_85.00"

        94.39 1024 1088 1200 1376 768 769 772 807

        -HSync +Vsync

        EndSection

  改动后,重启X。重新进入桌面模式。

  4、 xdpyinfo工具。

  我们通过gtf 工具调整了显示器的属性,我们通过观察一般就知道是不是可行了。比如屏幕不闪动的过于厉害。显示区域处于显示屏正中等。但我们还有一个测试工具xdpyinfo 来测试我们的调整 。

    xdpyinfo - display information utility for X (用于X的显示信息测试工具)。

    [beinan@localhost ~]$ /usr/X11R6/bin/xdpyinfo

  通过这个输出,我们能查看到很多信息,最重要的有如下一段。

    default screen number: 0

    number of screens: 1

    screen #0:

    dimensions: 1024x768 pixels (302x232 millimeters)

    resolution: 86x84 dots per inch

    depths (7): 24, 1, 4, 8, 15, 16, 32

    root window id: 0x3f

    depth of root window: 24 planes

  我们可以在 xorg.conf中定义多个显示屏幕,比如 1024x768;800x600等。显示屏的定义的标识符号序列从0开始,以此类推。其实定义好一个就足够用。默认的一般就行。如果我们自己调整,把 1024x768类似的加入到screen 中色深为24那段的 Modes 行中。然后把默认色深设置为24就好。

    Section "Screen"

        Identifier "Screen0"

        Device "Videocard0"

        Monitor "Monitor0"

        DefaultDepth 24

        SubSection "Display"

            Viewport 0 0

            Depth 16

            Modes "800x600" "640x480"

        EndSubSection

        SubSection "Display"

            Viewport 0 0

            Depth 24

            Modes "1280x1024" "1152x864" "1152x768"

            "1024x768" "800x600" "640x480"

         EndSubSection

         EndSection

  其实上面的一段,我们足可以把色深为16的那段删除或者下面的一段每行前面加#号注掉。因为我们用的是 24的。

    SubSection "Display"

         Viewport 0 0

         Depth 16

         Modes "800x600" "640x480"

         EndSubSection

  如果我们只有把 DefaultDepth 24 中的24改为16时,这段才起作用。


1. 本机显卡信息

Dell Optiplex 160L,具体为P4 2.4B、I845GL(集成显卡)、DDR 333 256M、40G硬盘。

00:02.0 VGA compatible controller: Intel Corporation 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (rev 01)

display: :0.0 screen: 0
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) 845G 20061017 x86/MMX/SSE2
OpenGL version string: 1.3 Mesa 6.5.2

2 显卡驱动安装

由于我的是Intel Corporation 82865G Integrated Graphics Controller,故我需要安装xserver-xorg-video-i810驱动:这个可以采用命令和synaptic来进行安装:

apt-get update
apt-get install xserver-xorg-video-i810 # 默认已识别,无须再装

如果你是nvidia的显卡,则需要安装nvidia-kernel-common驱动:方法是
apt-get install linux-restricted-modules nvidia-glx nvidia-glx-dev nvidia-kernel-common

如果是ati的显卡,则需要安装xorg-driver-fglrx fglrx-kernel-*

安装以上驱动后,需要手动重新配置显卡,选择你的显卡驱动类型,具体采用命令为

dpkg-reconfigure xserver-xorg #慎用该命令!

或修改/etc/X11/xorg.conf文档

如果你幸运的话,在安装ubuntu系统的开始时,已经能正确识别你的显卡了,那么就不需要进行上面的驱动安装和显卡配置了。

3 安装xgl相关软件

apt-get xserver-xgl compiz compiz-core compiz-gnome compiz-manager compiz-plugins csm cgwd cdwd-themes

4 怎样才能回到硬件检测 (prob/probing/re-probe)?

在第二阶段安装时,Ubuntu 检测了您的硬件和设定了X 。如果您改变了显卡、声卡甚至显示器, 您可能需要再做这。

apt-get --purge remove xserver-xorg

或改回最初的配置 /etc/X11/xorg.conf

没有评论: