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: