2006-04-11

Dual Display with IBM Thinkpad X31 and external LCD

** Upgraded from Proview 15" to BenQ FP92W 19" widescreen
MergeFB:
Merged Framebuffer mode allows you to use 3D acceleration on both heads of a dualheaded Radeon card. This is accomplished by creating a single large framebuffer with two viewports (CRTCs) looking into it. The current Radeon dualhead code creates two separate screens with separate framebuffers. they can be combined into a single logical screen using xinerama or used separately as separate X servers (host:0.0 and host:0.1). Merged Framebuffer mode can only be used to create a single logical screen. This is because a single framebuffer is shared between the two CRTCs. This is also the reason that HW accelerated 3D works on both heads. (freedesktop wiki)

also:
MergedFB mode is a special kind of Xinerama mode; it practically works like Xinerama, ie the two heads form a large screen which is transparent for applications. But this mode goes beyond Xinerama by even faking one screen to the X server itself. This provides the main advantage, namely that it is faster than Xinerama.-- www.winischhofer.net

also:
MergeFB is an XFree86 driver feature for video cards that have multiple heads. It is similar to Xinerama in that it also creates one big virtual desktop out of multiple screens.

The difference is in the implementation: Xinerama creates multiple screens with multiple framebuffers and MergedFB, like the name says, creates one big framebuffer with multiple 'viewports'. The main advantage of this method, is that it supports hardware 3D acceleration on all heads and it's generally faster. This is similar to 'TwinView' used in the nVidia drivers and the 'Big Desktop' in the ATI drivers.

Currently, this isn't supported in the drivers that come with the latest stable XFree86 release. Only in the MGA drivers from Matrox[1] and the experimental open source drivers for the SiS[2] and ATI Radeon[3] cards.

Framebuffer:
A framebuffer is a block of memory that holds one frame (one whole display or picture) of pixel data.

In the Linux kernel, there is a framebuffer device available. This device provides a hardware independent API for graphics devices. Applications see a framebuffer and can manipulate it though this API. It is accessed through a special device, normally /dev/fb* (e.g. /dev/fb0). It behaves much like other memory devices in linux, in that you can also read and write it with normal tools. For example copying the framebuffer to a file (effectively making a raw screenshot) can be done with:

cat /dev/fb0 > somefile

The main application of this in the Linux kernel is allowing the Tux logo at boot and a high resolution text console (a "Framebuffer console" -- the module for this is called fbcon). It's also for use on platforms which don't support a standard text mode. Other applications can also use it to get graphics without X or some other library, this is especially interesting for embedded devices.

Some screenshots:

2006-02-09

IMS 6Mbps download speed is near 445K/s

$ wget http://ftp.cuhk.edu.hk/pub/windows/nero/oem/Lite-On/{Nero-6.6.0.13,NVE-3.1.0.7,NMP-1.4.0.29,InCD-4.3.14.1,InCD4Reader}.exe
--01:41:48--
http://ftp.cuhk.edu.hk/pub/windows/nero/oem/Lite-On/Nero-6.6.0.13.exe
          => `Nero-6.6.0.13.exe'
Resolving ftp.cuhk.edu.hk... 137.189.4.14
Connecting to ftp.cuhk.edu.hk|137.189.4.14|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 33,831,292 (32M) [application/octet-stream]

100%[============================================>] 33,831,292 
445.53K/s    ETA 00:00

--01:43:34--
http://ftp.cuhk.edu.hk/pub/windows/nero/oem/Lite-On/NVE-3.1.0.7.exe
          => `NVE-3.1.0.7.exe'
Reusing existing connection to ftp.cuhk.edu.hk:80.
HTTP request sent, awaiting response... 200 OK
Length: 37,263,436 (36M) [application/octet-stream]

100%[============================================>] 37,263,436 
444.56K/s    ETA 00:00

01:44:58 (433.73 KB/s) - `NVE-3.1.0.7.exe' saved [37263436/37263436]

--01:44:58--
http://ftp.cuhk.edu.hk/pub/windows/nero/oem/Lite-On/NMP-1.4.0.29.exe
          => `NMP-1.4.0.29.exe'
Reusing existing connection to ftp.cuhk.edu.hk:80.
HTTP request sent, awaiting response... 200 OK
Length: 8,179,212 (7.8M) [application/octet-stream]

100%[============================================>] 8,179,212  
445.93K/s    ETA 00:00

01:45:16 (441.43 KB/s) - `NMP-1.4.0.29.exe' saved [8179212/8179212]

--01:46:02--
http://ftp.cuhk.edu.hk/pub/windows/nero/oem/Lite-On/InCD-4.3.14.1.exe
          => `InCD-4.3.14.1.exe'
Reusing existing connection to ftp.cuhk.edu.hk:80.
HTTP request sent, awaiting response... 200 OK
Length: 9,972,045 (9.5M) [application/octet-stream]
100%[============================================>] 9,972,045  
445.37K/s    ETA 00:00

01:46:25 (439.16 KB/s) - `InCD-4.3.14.1.exe' saved [9972045/9972045]

--01:46:25--
http://ftp.cuhk.edu.hk/pub/windows/nero/oem/Lite-On/InCD4Reader.exe
          => `InCD4Reader.exe'
Reusing existing connection to ftp.cuhk.edu.hk:80.
HTTP request sent, awaiting response... 200 OK
Length: 3,149,140 (3.0M) [application/octet-stream]

100%[============================================>] 3,149,140  
441.26K/s    ETA 00:00

01:46:32 (440.36 KB/s) - `InCD4Reader.exe' saved [3149140/3149140]

2006-02-04

方便的 E-Mail Icon Generator

For GMail, Hotmail, MSN, Yahoo!, AOL and many more!
http://services.nexodyne.com/email/

2006-01-30

Using Sparse File for Gentoo Portage

$ cd /usr/portage
$ mv distfiles /home/ftp/gentoo/distfiles
$ mv packages /home/ftp/gentoo/packages

$ dd if=/dev/null of=/.portage.sf bs=1048576 count=0 seek=600

$ mkfs.reiserfs -f /.portage.sf (or mkfs.reiser4)

$ mv /usr/portage /usr/portage.old

$ mount /.portage.sf /usr/portage -o loop,noatime,notail,nodev (reiser4 doesn't need notail)

$ cp -r --no-dereference --preserve=all -T \
    /usr/portage.old /usr/portage/
$ nano -w /etc/fstab
/.portage.sf  /usr/portage     reiserfs  loop,auto,noatime,notail,nodev  0 0
/.ccache.sf   /var/tmp/ccache  reiserfs  loop,auto,noatime,notail,nodev  0 0
$ df && du /.portage.sf
Filesystem           1K-blocks      Used Available Use% Mounted on
/.portage.sf            614376    178632    435744  30% /usr/portage
/.ccache.sf            2097084    498564   1598520  24% /var/tmp/ccache

179344  /.portage.sf
$ mount
/.portage.sf on /usr/portage type reiserfs (rw,nodev,noatime,loop=/dev/loop0,notail)
/.ccache.sf on /var/tmp/ccache type reiserfs (rw,nodev,noatime,loop=/dev/loop1,notail)
The sparse files:
-rw-r--r--  1 root    root    2147483648 2006-02-21 22:24 .ccache.sf
-rw-r--r--  1 root    root     629145600 2006-01-30 14:32 .portage.sf

2006-01-15

RAID0 / RAID1 under AMD Duron 600MHz

256MB PC133
ML810LR motherboard

CHOST=i686-pc-linux-gnu
CFLAGS="-Os -pipe -mtune=athlon-tbird -fomit-frame-pointer -fno-ident -mmmx -m3dnow"
Benchmark

$ hdparm -tT /dev/md0
 Timing cached reads:   608 MB in  2.01 seconds = 302.77 MB/sec
 Timing buffered disk reads:  162 MB in  3.00 seconds =  53.92 MB/sec

 Timing cached reads:   592 MB in  2.00 seconds = 295.39 MB/sec
 Timing buffered disk reads:  168 MB in  3.00 seconds =  56.00 MB/sec

 Timing cached reads:   600 MB in  2.00 seconds = 299.38 MB/sec
 Timing buffered disk reads:  156 MB in  3.02 seconds =  51.58 MB/sec

 Timing cached reads:   616 MB in  2.00 seconds = 307.98 MB/sec
 Timing buffered disk reads:  168 MB in  3.00 seconds =  55.92 MB/sec

 Timing cached reads:   620 MB in  2.01 seconds = 308.75 MB/sec
 Timing buffered disk reads:  156 MB in  3.02 seconds =  51.65 MB/sec

 Timing cached reads:   612 MB in  2.01 seconds = 304.16 MB/sec
 Timing buffered disk reads:  156 MB in  3.00 seconds =  51.93 MB/sec

$ hdparm -tT /dev/md1
 Timing cached reads:   600 MB in  2.01 seconds = 298.79 MB/sec
 Timing buffered disk reads:  146 MB in  3.01 seconds =  48.53 MB/sec

 Timing cached reads:   612 MB in  2.00 seconds = 305.98 MB/sec
 Timing buffered disk reads:  152 MB in  3.01 seconds =  50.46 MB/sec

 Timing cached reads:   628 MB in  2.01 seconds = 312.73 MB/sec
 Timing buffered disk reads:  146 MB in  3.02 seconds =  48.34 MB/sec

 Timing cached reads:   600 MB in  2.01 seconds = 298.79 MB/sec
 Timing buffered disk reads:  146 MB in  3.01 seconds =  48.53 MB/sec

 Timing cached reads:   612 MB in  2.00 seconds = 305.98 MB/sec
 Timing buffered disk reads:  152 MB in  3.01 seconds =  50.46 MB/sec

 Timing cached reads:   628 MB in  2.01 seconds = 312.73 MB/sec
 Timing buffered disk reads:  146 MB in  3.02 seconds =  48.34 MB/sec

4X DVD Recording under AMD Duron 600MHz

256MB PC133
ML810LR motherboard

$ time growisofs -speed=10 -Z /dev/hda=test4700m.iso
Executing 'builtin_dd if=test4700m.iso of=/dev/hda obs=32k seek=0'
/dev/hda: "Current Write Speed" is 4.1x1385KBps.
 19267584/4702013440 ( 0.4%) @3.8x, remaining 24:18
 37486592/4702013440 ( 0.8%) @3.8x, remaining 18:39
   ....
4674682880/4702013440 (99.4%) @3.9x, remaining 0:04
4693098496/4702013440 (99.8%) @3.9x, remaining 0:01
builtin_dd: 2295920*2KB out @ average 3.9x1385KBps
/dev/hda: flushing cache
/dev/hda: updating RMA
/dev/hda: closing session

real    15m11.160s
user    0m6.736s
sys     2m27.657s