The 22 Megapixel Laptop
Daniel Stødle, John Markus Bjørndalen and Otto J. Anshus, University of Tromsø, Norway

Most computers are limited to hooking up one or maybe two external displays. Although ATIs Eyefinity tech is looking to change that, noone is going to put such a card into a laptop anytime soon (ahh, go ahead - prove me wrong! The gauntlet is officially thrown). We happen to have a display wall handy at our Display Wall lab, and wondered if we could do better. Could utilizing the resolution of our display wall be made more seamless?

I've always enjoyed using Macs, and one of the things I did as a part of my Ph.D. was to look at how I could integrate the display wall with my laptop. The result of this work was the 22 Megapixel Laptop: A MacBook Pro that can seamlessly use our 22 megapixel display wall as if it were a regular display attached to my computer. The display wall consists of 28 projectors. The projectors are driven by a display cluster consisting of about 30 computers, give or take a few depending on the software we need to run. Each projector has a resolution of 1024x768 pixels, totaling 7168x3072 pixels when the projectors are tiled together.

It's been a while since I worked on this project, and I've long wanted to put the video I put together online. Now is finally the time. You can see the video below; if you're interested in more technical details, continue reading!

The video

Interesting observations

An interesting thing I discovered while developing the software for this project was how Mac OS X handles multiple displays. In particular, it seems like the fine engineers at Apple had different expectations with regard to what the maximum number of displays that could conceivably be attached to a Mac would be. The window server was pretty good at handling many displays. It seems to have a self-imposed limit of 32 displays, of which only 31 can actually be used. The 32nd display seems to be a dummy display of some kind, with a resolution of 1x1 pixel. Strange.

Second place goes to the Displays menu that appears in the menubar. It manages to handle 16 displays in total, and ignores any additional displays.

Worst, however, was the Displays preference pane in System Preferences. Not only did it limit itself to a random selection of at most 10 displays, but it also took 40 seconds (!) from clicking the Displays button until it got around to actually showing the preference pane. This might have improved in recent OS releases. This work was done on 10.4.9, but the software continues to run even on Snow Leopard - although I haven't checked if System Prefs has improved its game yet.

That said, the rest of Mac OS X handles the additional displays with almost unexpected grace. Just for kicks, I tried creating a single display with a resolution of 100 megapixels (16384x6144 pixels), and the window server didn't even flinch. (16384 - 2^14 - pixels does seem to be the maximum horizontal resolution supported by the window server, however.) Apps continued to run, and everything seemed to work. Performance, however, was pretty bad. Memory usage as well, which really isn't all that surprising. And of course, I didn't actually have a 100 megapixel display to project all those pixels onto.

Technical details

The 22 Megapixel Laptop is based on the concept of Network Accessible Displays (NADs). It relies on three local components and a remote component - a display service - to work. You can see an illustration in the figure to the right.

The first component is a kernel extension. The kernel extension creates a set of virtual displays, which tricks the Mac OS X window server into believing that one or more displays have been plugged into the computer. In our case, we pretend like we plug 28 virtual displays into the computer.

The second component is a simple user interface that lets the user manage the virtual displays, arrange them and discover nearby display services. The third component is a VNC-like screen sharing daemon. The daemon is responsible for actually capturing pixels from the virtual displays, and send them to corresponding display services running on the display wall cluster.

The final component is the remote display service. A display service must be running on any computer whose display should be made accessible over the network. We run the display service on the 28 display wall compute nodes, and also on a Nokia N800 Internet Tablet.

Hopefully, that description wasn't too confusing. You can read more details in the paper we wrote about the system. You can also download the PDF directly.

More info

You may also be interested in reading about my work on a touch-free, gesture-based interface to the display wall, or look at our work on browsing gigapixel images on the display wall. Finally, you might also find some interesting tidbits on my website and some of the other software I have developed for Macs.