Dynabook SS 2010 + Ubuntu で全画面表示を高速化

2010/12/17 (金)

前回の記事で、VESAドライバを使えば
Dynabook SS 2010で全画面表示ができるところまでは検証した。

1024×768で表示されるのはうれしいけれど、VESAドライバじゃ、やっぱ遅い。
もうちょっと何とかならんか?

lspci で調べてみると、ビデオチップは、

Trident CyberBlade XP Ai1

らしい。これ、Xorgのサポート対象に入っている模様。

ということで、早速、ドライバを “trident" としてみるが、
800×600の表示になってしまう。うーむ、、、

調べてみたら、FreeBSDな方の記事が見つかった。

dynabook C7/212CMENにFreeBSDをインストール
http://www10.plala.or.jp/dsuke3/bsdinstall.html

これによると、どうやら、水平・垂直の同期周波数
(HorizSync, VertRefresh)を指定するのがキモらしい。

ということで、xorg.confのビデオ周りを

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    28.0-50.0
        VertRefresh  60.0-60.0
EndSection

Section "Device"
        Driver      "trident"
        BusID       "PCI:1:0:0"
EndSection

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

としてみたら、見事に、tridentのドライバで1024×768の表示ができた。
ありがたや。

体感的にはちょっと早いような気がするけれど、よくわからない。
ということで、ベンチマークテスト。

VESAドライバ

$ x11perf -repeat 5 -rect500 -f14text16 -copypixwin500 -putimage5 -shmput500 
x11perf - X11 performance program, version 1.2
The X.Org Foundation server version 10900000 on :0.0
from SS2010
Mon Dec 13 16:57:22 2010

Sync time adjustment is 0.2602 msecs.

    400 reps @  13.8726 msec (    72.1/sec): 500x500 rectangle
    400 reps @  14.4083 msec (    69.4/sec): 500x500 rectangle
    400 reps @  14.5451 msec (    68.8/sec): 500x500 rectangle
    400 reps @  14.1982 msec (    70.4/sec): 500x500 rectangle
    400 reps @  14.3660 msec (    69.6/sec): 500x500 rectangle
   2000 trep @  14.2780 msec (    70.0/sec): 500x500 rectangle

 320000 reps @   0.0161 msec ( 62100.0/sec): Char16 in 40-char line (k14)
 320000 reps @   0.0168 msec ( 59400.0/sec): Char16 in 40-char line (k14)
 320000 reps @   0.0179 msec ( 55800.0/sec): Char16 in 40-char line (k14)
 320000 reps @   0.0164 msec ( 60800.0/sec): Char16 in 40-char line (k14)
 320000 reps @   0.0160 msec ( 62400.0/sec): Char16 in 40-char line (k14)
1600000 trep @   0.0167 msec ( 60000.0/sec): Char16 in 40-char line (k14)

    240 reps @  20.3307 msec (    49.2/sec): Copy 500x500 from pixmap to window
    240 reps @  21.3674 msec (    46.8/sec): Copy 500x500 from pixmap to window
    240 reps @  19.8000 msec (    50.5/sec): Copy 500x500 from pixmap to window
    240 reps @  20.0092 msec (    50.0/sec): Copy 500x500 from pixmap to window
    240 reps @  20.5047 msec (    48.8/sec): Copy 500x500 from pixmap to window
   1200 trep @  20.4024 msec (    49.0/sec): Copy 500x500 from pixmap to window

    120 reps @  57.0882 msec (    17.5/sec): PutImage 500x500 square
    120 reps @  58.2510 msec (    17.2/sec): PutImage 500x500 square
    120 reps @  59.0308 msec (    16.9/sec): PutImage 500x500 square
    120 reps @  56.4416 msec (    17.7/sec): PutImage 500x500 square
    120 reps @  58.2720 msec (    17.2/sec): PutImage 500x500 square
    600 trep @  57.8167 msec (    17.3/sec): PutImage 500x500 square

    240 reps @  20.3060 msec (    49.2/sec): ShmPutImage 500x500 square
    240 reps @  20.2828 msec (    49.3/sec): ShmPutImage 500x500 square
    240 reps @  20.3171 msec (    49.2/sec): ShmPutImage 500x500 square
    240 reps @  21.3308 msec (    46.9/sec): ShmPutImage 500x500 square
    240 reps @  21.0902 msec (    47.4/sec): ShmPutImage 500x500 square
   1200 trep @  20.6654 msec (    48.4/sec): ShmPutImage 500x500 square

Tridentドライバ

$ x11perf -repeat 5 -rect500 -f14text16 -copypixwin500 -putimage500 -shmput500 
x11perf - X11 performance program, version 1.2
The X.Org Foundation server version 10900000 on :0.0
from SS2010
Mon Dec 13 16:48:26 2010

Sync time adjustment is 0.1498 msecs.

   3000 reps @   1.7165 msec (   583.0/sec): 500x500 rectangle
   3000 reps @   1.7319 msec (   577.0/sec): 500x500 rectangle
   3000 reps @   1.7562 msec (   569.0/sec): 500x500 rectangle
   3000 reps @   1.8596 msec (   538.0/sec): 500x500 rectangle
   3000 reps @   1.9149 msec (   522.0/sec): 500x500 rectangle
  15000 trep @   1.7958 msec (   557.0/sec): 500x500 rectangle

 800000 reps @   0.0103 msec ( 97600.0/sec): Char16 in 40-char line (k14)
 800000 reps @   0.0092 msec (109000.0/sec): Char16 in 40-char line (k14)
 800000 reps @   0.0086 msec (116000.0/sec): Char16 in 40-char line (k14)
 800000 reps @   0.0083 msec (120000.0/sec): Char16 in 40-char line (k14)
 800000 reps @   0.0084 msec (119000.0/sec): Char16 in 40-char line (k14)
4000000 trep @   0.0090 msec (112000.0/sec): Char16 in 40-char line (k14)

    800 reps @  11.0048 msec (    90.9/sec): Copy 500x500 from pixmap to window
    800 reps @  11.1224 msec (    89.9/sec): Copy 500x500 from pixmap to window
    800 reps @  11.1548 msec (    89.6/sec): Copy 500x500 from pixmap to window
    800 reps @  11.0363 msec (    90.6/sec): Copy 500x500 from pixmap to window
    800 reps @  11.2267 msec (    89.1/sec): Copy 500x500 from pixmap to window
   4000 trep @  11.1090 msec (    90.0/sec): Copy 500x500 from pixmap to window

    160 reps @  31.4123 msec (    31.8/sec): PutImage 500x500 square
    160 reps @  31.7406 msec (    31.5/sec): PutImage 500x500 square
    160 reps @  37.9607 msec (    26.3/sec): PutImage 500x500 square
    160 reps @  34.8917 msec (    28.7/sec): PutImage 500x500 square
    160 reps @  31.4348 msec (    31.8/sec): PutImage 500x500 square
    800 trep @  33.4880 msec (    29.9/sec): PutImage 500x500 square

    800 reps @  11.0811 msec (    90.2/sec): ShmPutImage 500x500 square
    800 reps @  11.4720 msec (    87.2/sec): ShmPutImage 500x500 square
    800 reps @  11.1483 msec (    89.7/sec): ShmPutImage 500x500 square
    800 reps @  11.2621 msec (    88.8/sec): ShmPutImage 500x500 square
    800 reps @  11.1443 msec (    89.7/sec): ShmPutImage 500x500 square
   4000 trep @  11.2216 msec (    89.1/sec): ShmPutImage 500x500 square

数字で見るとかなり改善していることが分かる。

これで終了、のつもりだったけど、やっぱり続く