2008-08-29

Vista 无法设置游戏控制器

症状:
系统Vista,几周前DMC4还玩得好好的,这几天突然发现不行了。不论是dx9还是dx10的,就一直黑屏。DMC4Launcher可以进入,但是一设置手柄就卡死。

分析:
起初认为是显卡驱动的问题,更新后无果。 后来想起了dxdiag,载入后发现每次到input那个tab就会卡死(好像中间有几次成功了),于是认为是手柄问题,但是在别的游戏(如smynes)中就工作正常。 后来进入控制面板设置游戏控制器,没有反应。

用VS调试DMC4Launcher以及主程序,前者断在dinput8.dll的一个类似EnumDevices的函数里,后者则是一个奇怪的死循环。后来又调式了游戏控制器选项的rundll32.exe, 跟DMC4Launcher情况一样。

于是去Device Manager,到Human Interfaces Devices中逐个删除,发现一个比较奇怪的设备 Root Enumerated Hid Device。删除之后需要重启,而后竟工作正常了。

想想这几天,更新过Tooya Pro绘图板的驱动,于是打开Painter一看,果然绘图板的压感没了。重装驱动后那个Root Enumerated Hid Device再度出现,而DMC4也随之再次不能进入了。

结论:
Tooya Pro的驱动会导致冲突,影响游戏控制器及有关程序(可能主要是dinput8.dll里的那个函数)。不知道哪里的bug,完全google不到。

临时解决办法就是禁掉Root Enumerated Hid Device,仅当需要用绘图板时才启用。不过老得重启还是很麻烦的。

2008-08-19

两款绘图软件比较 Gimp vs Krita

配好了绘图板之后,手一直痒痒的。 之前看着Photoshop绘图教程,在Painter上作画,感觉还不错。 但是一直是想转移到Linux下面来的,指示软件硬件一直都没有配好。现在硬件好了,还是看软件。

首先得说一下我的情况,这代表我的立场。我主要应用是徒手作画,图像处理方面则不怎么要求。 我常用的工具就是画笔,喷枪和涂抹。 另外我当然希望软件对绘图板能够很好得支持, 事实上我对Painter对绘图板的支持不是非常的满意,我的手写板最近才更新了一次Vista驱动,修正了若干bug,包括lag。

两个软件我都就自己的需要尝试了一下,版本为
Gimp 2.4.6
Krita 2.0a6

那么分别说一下各自的优缺点吧

Gimp:
优点:支持文件格式多,工具多
缺点:总觉得界面不够友好

Krita:
优点:绘图板响应虽然有点慢,但是出来的线条非常好看,比如Pixel Brush
缺点:适合手绘的工具较少,也没有我喜欢的三角形+环形的颜色拾取器。 使用RGB模板经常Crash

当然了也很有可能我对软件的挖掘还不够。 目前暂时考虑用Gimp画一幅试试看。

Linux 下绘图板配置

作为一个绘画爱好者,绘图板是必不可少的。 怎奈Linux下面绘图板时认时不认,压感也时支持时不支持。 今天终于下决心弄好它。

我的板子是Tooya Pro,USB版。 Linux下认成WALTOP International Corp. Slim Tablet
系统是Ubuntu 8.04

首先是要定位设备名,一种方法是找到绘图板是哪一个/dev/input/event*,这又有多种方法,一种是看dmesg,记住pci地址,然后去/dev/input/by-path找到对应的,再看其是哪个/dev/input/event*的symlink;另一种方法是用wacdump挨个测试/dev/input/event*。当然也可以二者结合使用。在我机器上绘图板是/dev/input/event2

由于我对/dev/input/event*命名不是很了解,所以担心改了配置后这个数值会变,于是再一个网页上学到了修改udev rules的方法,让它自动建立symlink。后来发现wacom就是这样做的。
具体方法是首先用lsusb等工具找到设备的idProduct和idVendor。 我的绘图板在lsusb下看是172f:0031
然后建立文件/etc/udev/rules.d/65-tablet.rules:
KERNEL=="event*", SYSFS{idProduct}=="0031", SYSFS{idVendor}=="172f", SYMLINK+="input/tablet"
这样以后会自动建立/dev/input/tablet到对应/dev/input/event*的symlink,很是方便。

下一步是需要确定板子的坐标范围(或许这步可以省略),主要是用wacdump看看板子左上角和右下角的坐标。后来我有参考了以下板子的说明书,得到坐标(0,0)-(10000,6250)

接着当然是修改xorg.conf (听说最新的Xorg对即插即用支持得很好,真希望不用老改这玩意儿了)
ServerLayout Section中加一句
InputDevice "stylus" "SendCoreEvents"
然后加一个InputDevice Section
Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/input/tablet"
Option "Mode" "Absolute"
Option "Type" "stylus"
Option "USB" "on"
Option "TopX" "0"
Option "TopY" "0"
Option "BottomX" "10000"
Option "BottomY" "6250"
Option "MaxX" "10000"
Option "MaxY" "6250"
EndSection

注意我只添加了一个stylus设备,eraser, pad之类的都不需要

最后,软件也得配置一下,比如Gimp。

按理说重启X就应该行了,可是我这里一定要重启系统,要不压感说什么都不认。

另外有个Gnome Graphics Tablet Apps,也有些帮助。

这样就完美了。


参考链接:
http://linuxwacom.sourceforge.net/index.php/howto/x11
http://littlethorpe.net/tptrn/article/72/aldis-low-cost-digitiser-tablet-in-linux
https://help.ubuntu.com/community/Wacom#fnref-ec6781974bf16fcc57d0d15e8186755fb5d1784c
https://help.ubuntu.com/community/WacomTroubleshooting
http://www.alexmac.cc/tablet-apps/

2008-08-07

nVidia 8000/9000 Series Performance Issues

nvidia 8000/9000的linux驱动的2D性能叫人不敢恭维。
标题链接的网页上给出了临时改善方案

1.首先要安装177beta驱动
2.运行nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1,如果有性能有改进,则放入.xinitrc
3. 在xorg.conf里Device Section中加入参数
Option "PixmapCacheSize" "300000"
Option "OnDemandVBlankInterrupts" "True"

我用的8400MG显卡,经过上面配置后似乎改进不大

以下是针对kde的配置
1. Right click on your title bar, and select, in KDE 4, "Configure window behavior".
2. In "Desktop Effects", select "Advanced options".
3. Select the following:
Composition type: OpenGL.
OpenGL Mode: Shared memory (ENABLE THIS AFTER YOU ENABLE DIRECT RENDERING, IF YOU DO OTHERWISE YOU WILL EXPERIENCE SCREEN CORRUPTION)
Direct rendering: Enabled
VSync: Enabled

按这个配置后,在我机器上效果明显。