Notes

Adam Jackson on X release status and process

We do have a list of (70) bugs blocking the release (10101):

https://bugs.freedesktop.org/show_bug.cgi?id=10101

But nobody other than Adam has ever looked at that.

It seems we're all heads down now. There were lots of good talks at XDS in the fall about new stuff that was coming, (Gallium, etc.). But it's

Bug 13795: With Mozilla and cairo now using Render, we're using lots of parts of the server/drivers that have never really been used before. As expected, they are broken.

Some of the breakage is avoidable with XAANoOffscreenPixmaps.

Can we drop XAA altogether? Not for this release. EXA isn't quite ready yet. And Glucose isn't happening at all.

Ajax: I'm feeling kind of alone here. Nobody else is looking at this stuff? Daniels: I just closed a blocker. One fixed.

Ajax: I don't feel like I'm scaling that well. There are huge swaths of the code that nobody cares about. Things change and break, but nobody takes responsibility for things.

Even the drivers that are "well maintained" have problems. We see lots of churn in the drivers, but not releases. Releases are cheap guys! I don't have a solution for that except shaming people---maybe this is how I get a start.

Every 6 months or so we have a session where we say "what do we want in our next release?" and we write them on the whiteboard. Then, several months later someone, (lately, Ajax), looks at the list and sees which ones are actually coming together, (about 50%), and decides those are the ones that actually go in.

Example of the picaccess change that was on the "desired" list for several releases, but never went in. Finaly, we sat down and forced it in, but found that only the "top 3" drivers had been ported to it, and everything else broke. Fortunately, someone stepped in to save things after the fact. The problem is that we don't have anyone signing up for that janitorial work---or a commitment to "don't break the drivers". But we could have done the whole pciaccess change in-pace with a compatibility layer so that nothing would have ever broken.

Jesse Barnes: We had a big flamewar about putting the drivers back "in tree" in one git module or whatever. That never came to consensus, but wouldn't it help? Right now, nobody cares about the "server" and the distribution maintainers end up taking on all the pain. Wouldn't it be better if driver hackers had a vested interest in getting the "big blob of server and drivers" into a releasable state together.

John: Is the big problem lack of resources for driver development?

Someone: Or just lack of policy?

Ajax: I don't think it's lack of resources. If we had done pciaccess correctly, then it wouldn't have been any work---just a sed script.

Daniel: Bisectability is really nice. People can bisect an independent driver and find Jesse's driver bug. But if we had the big blob, and someone tried to bisect, then it would all just be "Oh my God, my keyboard doesn't work". So if we did put everything together, we'd need lots of separate trees, (input, etc.).

Ajax: Do git submodules help us address the issue?

Eric: Zack's done more work with the submodule thing, but I don't think it gives us what we want. We don't get a master supermodule that points to all the "master" branches of the submodules. Instead, it has to have exact sha1 sums for each point. It would be great for tagging releases, but not so nice for "build master".

[Discussion: What was the whole point of modularization?]

Ajax: It's great to be able to build the server without having to build xedit.

Daniel: It was great for distributions.

Jesse: The only thing that makes sense to merge back together is the server and drivers. It's a social problem, but this technical change would help.

Kevin: That puts structure onto the technical side of things, but not any structure onto the social problem.

Ajax: The problem with merging things together is that it doesn't address the modularization problem. What happens when I want to package up the server, but the Intel driver happens to be broken at the time? If all I can grab is one point in the development of everything, then there's a problem there. How can I back out just the Intel driver changes?

John: It sounds like we want monolithic build and test, but we want modular packaging and distribution.

Ajax: One of the problems is that we're just not testing in the first place. And that's a big part of the problem.

Ajax: We actually do have a test suite (XTS) that we got released under a free license a while ago, but nobody is actually running that. And nobody is adding new tests.

Keith: But we can't add tests to that test suite. We are writing new ad-hoc tests. Do we create a new test suite infrastructure? Do we use something like piglet?

Bart: We don't have to solve all our problems with automated tests. We do need to put together the social organization, (maybe even pay people), to make things happen.

[Someone]: We have a lot of server bugs already without automated tests and they already aren't getting worked on.

Jesse: We're getting a little off-topic here. The original problem was that Ajax isn't getting any help with release management.

Daniel: Release manager is a misnomer anyway. There's no herding of others doing work or anything. It's just signing up to be the person that fixes all the bugs.

Eric: The advantage of automated testing is that you find out the regressions quickly and you only have a couple of commits to look at to find and fix the bug.

[A few minutes more discussion on technical vs. social problems, lots of missing testing from anybody. Lack of a decent infrastructure for writing new tests.]

Kevin Martin on roadmap and introspection

Our goals include:

What have we been doing?

Memory management is critical. And it's still not done. How do we finish this?

DRM, kernel modesetting, VGA arbitration.

Monitor hotplug. Have the desktop-side configuration support, really just need the event from the hardware.

Driver work:

Video. MC and iDCT and such need to get properly implemented everywhere.

Zack Rusin on Gallium

Gallium is a rework of the DRI driver model. The driver ends up being rather large and opaque, and writing new ones is rough because it's so large.

In Gallium, the driver is split up to isolate the core logic from the hardware from the window system from the OS. The core logic assumes that the driver is shaderful.

This allows better reuse (state tracker stays the same, only the hardware driver changes).

This allows better portability to other OSes or windowing systems.

Still under development, but mostly interface-stable.

Have several drivers already (i915, i965, softpipe, cell). External projects for nouveau and R300.

The big pieces are the state tracker, the winsys layer, and the core driver itself.

Fallbacks are hard. Fallbacks are really hard. Ideally you wouldn't have them, but that requires a complex state tracker, since OpenGL is really big and weird. Being worked on.

Matthew Garrett on power management

APM used to exist. It more or less worked! But when it didn't, there was no recovering.

Open Firmware exists, but isn't typically relevant for desktops.

Embedded things have their own stuff.

ACPI basically makes no guarantees about what happens when you come back from resume.

The steps are: call device suspend callbacks, platform Prepare-to-sleep method, platform Go-to-sleep method, (suspend), random BIOS stuff, platform Back-from-sleep method, platform wakeup method, device resume callbacks.

ACPI doesn't require that the platform do anything, but it also doesn't require that the platform do nothing.

Some machines will reenable text mode in BIOS. Sometimes that happens during ACPI methods. Sometimes that only happens if the platform thinks Linux is running. But you'd really rather not go back to text mode at all. Ideally, you'd restore state and go back to graphics directly.

Swapping out all the state is kinda difficult, but doable. The really hard part is getting the device into a consistent state before doing the state restore. Then you need to block X until everything is back to a reasonable state.

(Lots of implementation details)

How do you survive video hotplug? Actually, you're not expected to be able to.

Need to be cleaner about input hotplug, not doing it right right now. Just a bug.

Ben Byer and Jeremy Huddleston on X11.app

DDX module in hw/xquartz/, old hacked-up version of Mesa

Everything else is plain-jane Xorg, packaged up as X11.app

History

Kristian Høgsberg on DRI2

Debriefing: A one-time, semi-structured conversation with an individual who has just experienced a stressful or traumatic event.

No kernel side

Event ring buffer

Technical discussion on how to implement sync to vblank.

(Super hot demo)

Eric Anholt on Render

What do app authors want?

YUV picture formats as a new source picture type

JPEG/PNG picture formats for compressed image transport

YUV needs new filter types for hue/contrast/etc

Gradients need to be properly specified, should just copy the cairo spec

Gradients need dithering, and for filters to work in general

Technical discussion of how to do automatic mipmapping

Rendercheck needs a ton of work

Transforms need to be floating point? Or at least need to be specifiable in floating point

(Søren rants for a while about the imprecision of the spec)

Jérôme Glisse on Radeon

Kernel modesetting is in progress, for all the usual reasons: suspend, flicker-free boot, reducing root code in userspace, graphical boot, graphical panic

Really hard to preserve compatibility, so a new driver sounded like a good idea. Problem is the existing code is well-tested and also tedious to rewrite. Rewriting it was a mistake; should have used the existing DDX code to begin with.

Why ATOM? Should work since Windows uses it. Reuses AMD engineering work. Keeps the driver from needing to know hw details. But, sometimes buggy and not always exactly what we want.

What do users want? Working 3D. Accelerated video. Modesetting is uninteresting as long as it comes up.

So, use ATOM to leverage the existing AMD engineering work. Reduce time to support new hardware, get on to the fun features.

AMD GPU design is "like Lego blocks". Different GPUs share same modules (DAC/TMDSC, 3D engine, CP), but can move around between GPUs. Can and does. But ATOM takes care of most of this for us.

Kernel code should reflect this modular design; each piece should talk only to the piece of the chip that it's responsible for.

Lockups are easy to trigger. And, surprisingly hard to recover from. (Technical details.) Need to sanitize the command stream to be sure you don't do weird things, and avoid the WAIT_UNTIL feature. But this makes vsyncing hard.

Lots of cases where the GPU can stall. Fencing is really hard; need to be careful about batching them. Some buffer offset registers stall until they can be done safely, so you want to avoid doing them. Context switches need some optimization for this case.

Fragment programs are essential now, and optimisation is critical so you correctly run everything you claim to be able to run. LLVM will save us all.

Texture indirections are a finite resource. You can reduce them by rescheduling the shader.

r300 and r400 don't support all swizzling combinations. Want to redo shaders to use native swizzling when possible.

Future work: DRI2, radeon gallium driver, get gears to work, fragprog compiler.

David Schleef on video

Background: working on Dirac, which is a codec from BBC that's designed to be competitive with MPEG4.

Currently: 8 bit per channel, normal color gamut, 480i/30 or 720p/30.

Future: 10-12 bit per channel, wide gamut, 1080p/60, possibly stereoscopic.

Pipeline:

Scaling/Resampling

Alex Deucher on R600 Architecture

R500 was 3d build on R300. Very similar designs.

(Diagram of GPU hardware evolution)

R600 Overview

Driver plan

Keith Packard on RANDR 1.3

Proposed features:

Chris Ball on tinderbox

Started working on tinderbox as part of the OLPC bringup effort

Got interested in adding that test harness to X

It works! tinderbox.x.org

Gives you a long list of build results, properly hierarchical, triggered by commits.

Also has some basic test infrastructure for sanity-checking the builds:

What else do we need?

Bart Massey on image support in XCB

XCB is a replacement for Xlib: a thin C binding with latency hiding and transparent multithreading

Just does a protocol binding and some language bindings

... and then also has a util library

In attempting to port x11perf to XCB, noticed that the image implementation is broken

X image protocol is subtle and quick to anger. Not many apps use the Xlib facilities in interesting ways.

The gory details

Forced some reevaluation of some XCB design

Stefan Dösinger on Wine and X

Wine is a set of libraries to allow running unmodified Windows apps.

Uses X for input and output, translates GDI and DirectX to X APIs

Raw mouse input

3D rendering issues

X.org Foundation Board on the X.org Foundation Board

Members! Be members. Go to members.x.org

We exist to provide education, support, and infrastructure to enable X development. If you think you could use some of that, let us know! We will do what we can.

Meetings and conferences are not necessarily limited to XDC and XDS. If you want to do something smaller and local, let us know! We will do what we can.

The software has been coming out. See elsewhere for details.

Vendor relationships keep getting better. Docs and source keep coming out. Life is good.

We are doing GSoC again. We may be doing additional direct student funding again.

We are VESA members, we're about to be CEA members. We should do something about Khronos; if this is you, let us know! Getting this information out to the development community is important, so let us know if this will help you.

The old LLC structure is being closed out, finally. We're within epsilon of being a 501(c)3.

Apologies for the election being so chaotic last time around. There is a team working on improving this process.

Current board meeting structure is bi-weekly for the whole board plus committee meetings as needed.

Membership agreement is being finalised to make membership easier to agree to and sign up for.

We're spending money well now. We will begin looking for sponsorships again. Healthy cash flow is healthy.

Infrastructure between x.org and freedesktop.org is being merged behind the scenes, for the betterment of both.

There is another major conference coming. September 10-12 (ish) is XDS 2008 at Edinburgh Zoo. Conference facilities, probably a sunset tour, general good times. Should have final details in a few weeks.

Eamon Walsh with A Talk

DevPrivates

Lightning talks

Owen Taylor is working on fixing Radeon Render performance. And making progress! Should be done as generic Render services, so everyone wins.

John Bridgman raises some concern about lockstepping DRM and X as far as getting support pushed out. There's some slip, it works. But it is something the driver maintainers need to be conscious of. Also, what are the last steps to getting X to run as non-root?

Paulo Zanonni and Tiago Vignatti on VGA arbitration. This needs to be done in the kernel to get it right, since each server may want to have VGA space routed to it at various times. Existing proof-of-concept as kernel+library+server code. Should just be a /dev node.

Jesse Barnes on getting off of /dev/mem. Mostly there. How do we expose caching policies to maps? How do we deal with non-PCI video devices like USB?

Adam Jackson on Xinerama and shatter and stuff. If you're interested, go talk to him. http://cgit.freedesktop.org/~ajax/xserver-shatter

Daniel Stone on input. Core, XI, and XKB. Massive amounts of duplication. This is really terrible. Lots of it is being fixed, yay! Being worked on in xkb-atkins branch. This is sort of a prerequisite for merging MPX.

Bart says cut and paste is still broken.