龙芯小本siliconmotion驱动研究

一直听大家伙说,龙芯小本自身带有显卡 siliconmotion ,但是这款显卡的驱动存在问题,结果在实际使用时,并没有开启,而是使用了 xf86-video-fbdev ,完全放弃了 2D 加速功能。Maxiee 一直都很好奇,存在的是什么问题呢?借着这个问题,也是一个学习的好机会。

fbdev 是什么?

X.org 关于 fbdev 的手册页在这里

fbdev is an Xorg driver for framebuffer devices. This is a non-accelerated driver, the following framebuffer depths are supported: 8, 15, 16, 24. All visual types are supported for depth 8, and TrueColor visual is supported for the other depths. Multi-head configurations are supported.

fbdev 是一款针对帧缓冲设备的 Xorg 驱动。这是一个无加速的驱动,支持下列帧缓冲深度:8,15,16,24。所有可视类型都是支持深度值为8的,真彩色支持除了8以外的。支持多屏(Multi-head?)输出。

The fbdev driver supports all hardware where a framebuffer driver is available. fbdev uses the os-specific submodule fbdevhw(4) to talk to the kernel device driver. Currently a fbdevhw module is available for linux.

fbdev 驱动支持所有可以使用帧缓冲驱动的硬件。 fbdev 使用了与系统有关的子模块 fbdevhw 来与内核设备驱动通信。当前, linux 有一个可供使用的 fbdevhw 模块。

siliconmotion驱动

再看看 siliconmotion 驱动,手册页在这里

siliconmotion is an Xorg driver for Silicon Motion based video cards. The driver is fully accelerated, and provides support for the following framebuffer depths: 8, 16, and 24. All visual types are supported for depth 8, and TrueColor visuals are supported for the other depths.

siliconmotion 是一款针对基于 Silicon Motion 的显卡的 Xorg 驱动。这个驱动是全加速的,并且支持帧缓存深度:8,16,24。所有可视类型都是支持深度值为8的,真彩色支持除了8以外的。

支持的硬件:

Lynx  SM910、LynxE  SM810、Lynx3D SM820、LynxEM  SM710、LynxEM+  SM712、Lynx3DM  SM720、Cougar3DR  SM731、MSOC  SM501,SM502

那么 Maxiee 的这台龙芯 8089D 小本的显卡是哪一款呢?

找到了!是 SM712 ,也就是上面列出的 LynxEM+。

LynxEM+

这是一个 Silicon Motion 官网的一个介绍 pdf 文件

这个介绍 pdf 里牛轰轰地讲了这款显卡的好多特性,这里就不赘述了,毕竟我们只是想发现问题……

Pixman 是什么?

"Pixman is a low level compositing library for X and Cairo. The first release enabled most of the composite functions. The performance gain is not as big as I have expected. Most of the composite sees 20-30% in lowlevel-benchmark, some sees 100% boost or more. Overall performance depends on user scenario."

Pixman 是一个针对 X 和 Cairo 的底层合成库。首次发布就实现了大部分的合成函数。性能提高并没有我预期中的大。在底层测试中,大多数和获得了 20~30% 的加速,有些看到甚至多于 100% 的加速。总体的性能取决于用户的方案。

xf86-video-siliconmotion

Maxiee 在 Portage 数里搜索,找到了 xf86-video-siliconmotion 这个包,也就是说 Gentoo 里包含了 Silicon Motion 的驱动。

尝试着直接 merge 一下……结果出现错误:recipe for target 'all-recursive' failed

貌似是 USE 变量的问题。

相关网络资源

http://dev.lemote.com/code/linux-loongson-community

http://www.linux-mips.org/wiki/Main_Page

debian6下龙芯笔记本的显卡速度提升3倍

Bug#594684: xserver-xorg-video-siliconmotion: siliconmotion driver segfaults on a Lemote YeeLoong (SM712 LynxEM+)

Re: gNewS ense-MIPS and SiliconMotion video

http://cgit.freedesktop.org/xorg/driver/xf86-video-siliconmotion/

https://groups.google.com/forum/#!forum/loongson-dev

Optimizing pixman for Loongson: Process and Results

remove the buggy 2D acceleration support