Monday Apr 16, 2007

X11 API's for querying multi-head screen layout

I should probably stick this in the X.Org wiki or OpenSolaris/GenUnix wiki, but I'm being lazy and just summarizing to here now from an e-mail thread last week on one of the Sun internal lists...

There are now 4 sets of API's to query the layout of display screens in a logical X screen when using a setup such as Xinerama, TwinView, or MergedFB:

  1. the original X11R6.4 XPanoramiX\* API
  2. Sun's Xinerama API
  3. XFree86's Xinerama API
  4. Xrandr 1.2

The first is pretty much universally available, but also universally deprecated. The functions for it are defined in libXinerama on Linux, libXext on Solaris, but I don't think we've ever shipped the header for it on Solaris, since it was deprecated long ago.

The second Sun created and proposed to the old X.Org industry consortium to become the standard, but they did not adopt it, crafted a replacement in committee that was universally incompatible with everything and never adopted that either. It's what the <X11/extensions/xinerama.h> header in Solaris represents, and was never documented, but you can find a description of the API in PSARC 2000/036. The functions from it are found in Solaris libXext, but nowhere else in the world that I know of.

The third, aka libXinerama, is available on most XFree86 & Xorg based systems, and finally came to Solaris in nv_62 and soon in Solaris 10 patches & the next update release. It uses the <X11/extensions/Xinerama.h> (note the capitalization compared to the other) header and is documented in the man page we created for the Solaris integration and contributed back to X.Org.

The fourth is a very recent development, having been released after X11R7.2's release in February. X.Org is currently in the process of releasing version 1.3 of the Xorg server package (release candidate 5 is out now) - this will be the first Xorg server feature release not tied to one of the whole X Window System releases. (X11R7.2 had Xorg server 1.2, X11R7.3 is expected to have Xorg server 1.4.) The xf86-video-intel driver 2.0 release candidate 4 is also out, it is the first driver to support the new Xrandr 1.2 additions, though work is in progress on other drivers, including the Radeon and nvidia drivers. We don't have a definite roadmap for including this in Solaris yet - we'll probably do it once the X.Org releases are finished and we're passed the upcoming milestone of the second Solaris Express Developer Edition release in May.

Tuesday Mar 20, 2007

How to get better ATI drivers for Xorg

Just a quick note... Michael Larabel's post on “How To Get Better ATI Linux Support” is spot on with what we've heard from ATI and from others about ATI in various conversations — if you really want to get their attention, go through their OEM's and resellers, whether that be asking for improvements to their closed source drivers or ports of them to other OS'es, or even opening more specs/sources to the open source community.

(As for the competition, the same goes for them, and Sun is an nVidia reseller, so if there's something missing from their drivers that would encourage you to buy more Sun workstations with nVidia cards, let us know, and we can work it through our channels.)

[Technorati Tags: , , , , ]

Sunday Feb 04, 2007

Moving x86 video drivers into the kernel

Since Keith's recent talk on X at, I've been asked a few times and seen discussion elsewhere (such as in the comments on the linked article) what Sun thinks about moving various portions of the Xorg video drivers from the current userspace shared objects into true kernel drivers, as most people assume this means Linux kernel drivers and reducing the portability of Xorg to non-Linux platforms such as Solaris/OpenSolaris and the BSD's.

While I'm of course too far down the food chain to claim to speak officially for Sun, as the lead engineer for the Xorg integration to Solaris and someone who has talked to a number of the other Solaris engineers about it, I'd say the Solaris engineering teams agree having in-kernel drivers for video cards is something we want and need.

On Solaris, we've long had in kernel graphics drivers for all our SPARC frame buffers, since that was a small and controlled set, and writing the driver for it was simply part of the cost of producing the card. On the x86 side though, we had for years the same model as most other x86 Unix-like OS'es - a generic set of kernel modules, and all device-specific logic in the X server. The Solaris x86 kernel modules were vgatext and xsvc. vgatext provides the text console, using standard/ancient VGA interfaces which virtually all PC graphics boards support. xsvc (which was closed source due to legal encumberances, but has recently been replaced with a newly written open source version by the Solaris Xen project team) provides the mappings to the PCI bus that allow Xorg to probe the bus hardware to find devices, and then map in the video card once it's found.

Recently, new kernel modules have started appearing in Solaris - the first two for 3-D rendering acceleration, nvidia's driver and the DRI driver for Intel graphics. Two more are coming soon from the Suspend-and-Resume project, to provide the hooks to save and restore necessary state across system suspends - they'll initially support the ATI Rage XL from the Sun Ultra 20 and ATI ES-1000 in the Ultra 20 M2. (Dave and Jay gave a talk on their implementation at last years' X Developer's Conference.)

Additionally, our security guys have been pushing for more kernel frame buffer drivers to reduce our need for running Xorg as root. They'd also like to find a way to close the now infamous Ring 0 security weakness. (We've invited them to drop in to this week's X.Org Developer's Conference to talk about this - they're planning to show up Thursday morning for the Secure X talk, so we may try to have a breakout session on this topic at that time to discuss this.)

Now, we still can't write drivers ourselves for every x86 video card on the market, which is one of the big reasons we chose to move from Xsun to Xorg on Solaris, so we'd still prefer if a model could be found that allowed sharing drivers between Solaris, Linux, and BSD (which means agreeing on both licensing and interfaces with the kernel), similar to what we already have in DRI. If we can work out a model like that, then I think Sun would support it - either way, we're going to have to have more graphics driver functionality in the kernel, and sharing would be better than going our own way.

[Technorati Tags: , , , , , , ]

Monday Aug 01, 2005

X11R6.9 & 7.0 Release Candidates Zero

The “zeroth” release candidates of X11R6.9 and 7.0 have been released and are in need of people like you to download them, build them, test them, and report back any problems you find. These are numbered zero because they're not quite to the point of a normal release candidate, but are to the point where we want people to try them, especially the 7.0 builds. As you can guess from the version number, 6.9 is not a major leap from the current 6.8.2, but does bring the usual collection of new features, driver updates, and bug fixes. 7.0 takes the same code and delivers it in a whole new way, breaking the giant X.Org source tree into individual modules for each library, program, and driver module, and building it all via the GNU autoconf, automake, libtool, and pkgconfig tools instead of the classic Imake used in past X.Org releases since the dawn of X11.

So while 6.9 should build on pretty much the same set of platforms as 6.8.2 did, 7.0 started over with a clean slate and may need work to build on many platforms. The current modular developers have worked mainly on recent releases of Linux, Solaris, and BSD on x86 platforms, with some additional work done on other architectures for those OS'es, including AMD64, IA64, and SPARC, plus MacOS X and Cygwin. For instance, I've built all the libraries and applications on Solaris 10 for both SPARC and x86 architectures, and built the Xorg server on Solaris 10/x86. Older releases and other platforms and architectures need to be tested to find out if we need to adjust the autoconf tests for them, and various build time options still need to be converted to autoconf flags, plus lots of documentation needs to be written to explain it all.

[Technorati Tags: , , , , ]


Engineer working on Oracle Solaris and with the X.Org open source community.


The views expressed on this blog are my own and do not necessarily reflect the views of Oracle, the X.Org Foundation, or anyone else.

See Also
Follow me on twitter


« March 2015