4.3. 配置 x11drv 驱动器

编写:Ove K鍁en

(提取自 wine/documentation/cdrom-labels)

多数 Wine 用户在一个叫做 X11 的窗口系统下运行 Wine。在 Wine 历史上的多数时期,这是唯一的可获得的显示驱动器,但是在近几年,已经重新组织了部分 Wine 来允许其他显示驱动器(当前只能获得一个可替代的显示驱动器是 Patrik Stridvall 的基于 ncurses 的 ttydrv,他声称用它来显示 calc.exe)。在~/.wine/config 的 [wine] 段中用 GraphicsDriver 选项来选择显示驱动器,但在本文中我只覆盖 x11drv 驱动器。

4.3.1. x11drv 操作模式

x11drv 驱动器由两个概念上的不同部分组成,图形驱动器(GDI 部分),和窗口驱动器(USER 部分)。但它们二者都被连接到 libx11drv.so 模块中(你用 GraphicsDriver 选项装载它)。在 Wine 中,运行在 X11 上,图形驱动器必须在窗口驱动器提供的 drawable (window interior)上绘图。这与 Windows 模型有一点区别, 在 X11 中,窗口系统建立和配置由图形驱动器控制的设备上下文,而允许应用程序在它们喜欢的任何地方用挂钩连接起(hook into)这个联系。所以,为了要在兼容性和可用性之间提供有道理的任何折中,x11drv 有三种不同的操作模式。

 

Unmanaged/Normal

缺省的。窗口管理器无关(完全忽略任何运行的窗口管理器)。 窗口装饰(decoration)(标题条,边界,等)由 Wine 绘制来使感观如同真实的 Windows。这兼容于依靠可以计算出这些装饰的精确大小的应用程序,或想自己画它们的程序。

Managed

使用 --managed 命令行选项或 Managed wine.conf 选项(见后)指定。普通的顶层框架窗口,有粗边界,标题条,和由你的窗口管理器管理的系统菜单。这允许这些应用可以与你的桌面的其余部分更好的集成,但可能不总是工作的很好。(非常需要一个重写的这种操作模式,使它更加健壮和更少瑕疵(patchy),并计划在 Wine 1.0 发行之前完成。)

Desktop-in-a-Box

使用 --desktop 命令行选项(加上一个几何,比如给一个 800x600 这么大的桌面 --desktop 800x600, 或者在显示器的左上角自动的定位桌面 --desktop 800x600+0+0 )。这是与 Windows 模型最兼容的模式。所有应用程序窗口都是在提供给 Wine 的桌面窗口内的 Wine 绘制的窗口(桌面窗口自身由你的窗口管理器来管理),而 Windows 应用可以随心所欲的在这个虚拟工作空间操作并认为完全拥有它,不受你的其他 X 应用程序的打扰。

4.3.2. [x11drv] 段

 

AllocSystemColors

只在你拥有一个基于调色板(palette)的显示器时使用,例如,如果你的 X 服务器被设置为 8bpp 的色深,并且你没有想要的一个私有颜色映射。它指定 Wine 所占有的共享颜色映射(colormap)单元(palette entries)的最大数目。这个值越高,其他应用程序可获得的颜色就越少。

PrivateColorMap

在你拥有一个基于调色板的显示器时使用,例如,如果你的 X 服务器被设置为 8bpp 的色深。它指定你不想使用共享的颜色映射,而是使用一个私有的颜色映射,这这里可以获得全部的 256 种颜色。不足是这个 Wine 的私有颜色映射只在鼠标指针在这个 Wine 窗口期间可以见到,所以如果你频繁使用鼠标就会经常见到迷幻的闪烁和滑稽的颜色。

PerfectGraphics

它确定在 blit 操作中对于特定的 ROP 代码使用快速 X11 例程还是严格的 Wine 例程。多数用户不能找出任何区别。

ScreenDepth

只在多色深显示器上使用。它指定 Wine 应当使用(并告诉 Windows 应用程序)那种可获得的色深。

Display

它指定使用那个 X11 显示器,并且如果被指定了,它将屏弃 DISPLAY 环境变量和 --display 命令行选项二者。

Managed

Wine 可以让框架窗口由你的窗口管理器来管理。这个选项指定你是否想使之成为缺省的。

UseDGA

它指定你是否想让 DirectDraw 使用 XFree86 的直接图形体系(Direct Graphics Architecture  -- DGA),这可以接管整个显示器并在全屏幕下以最大速度运行游戏。(使用 DGA1 (XFree86 3.x),你仍需要首先把 X 服务器配置成游戏所需的 bpp,而使用 DGA2 (XFree86 4.x),依赖于你的驱动器的能力,有可能使用运行时颜色选择。) 但要当心如果 Wine 在 DGA 模式下崩溃,要想收复对你的计算机的控制就只能重启动了。DGA 通常要求要么特权要么对 /dev/mem 的读/写访问权限。

UseXShm

如果你不希望 DirectX 使用 DGA,你至少可以使用 X 共享内存扩展(X Shared Memory extensions -- XShm)。它比 DGA 慢很多,原因是应用程序不直接访问物理的桢缓冲区,但是使用共享内存来绘制桢至少比使用标准 X11 套接口要快,即使通过 Wine 的 XShm 支持有时仍会崩溃。

DXGrab

如果你不使用 DGA,你可能想要一种替代的方式来确保鼠标光标滞留在游戏窗口中。这个选项就是干这个的。当然,象使用 DGA 一样,如果你的 Wine 崩溃了,你就有麻烦了(但不象 DGA 情况下那么糟,因为你仍然可以使用键盘来退出 X)。

DesktopDoubleBuffered

只在你使用了 --desktop 命令行选项来在一个桌面窗口中运行时使用。指定建立的桌面窗口是否有双缓冲区的 visual,是多数 OpenGL 游戏正确运行所需的东西。