I've been thinking about this for a while now, and if I have my facts wrong, please feel free to correct me.

Currently, gaming on Linux falls into two categories:

1) native implementation
2) Windows binary using WINE

As far as I am aware, X uses OpenGL as its 3D renderer, and therefore something like Cedega or vanilla WINE essentially puts a DX9 library "in front of" the native OpenGL library and does the conversions back and forth.

Or worse yet, does the whole thing in software. Of course, this conversion is slow and affects framerates.

So my question is this: in the same way that I have a /usr/lib/libGL.so.169.12 which is built for my nVidia card, why can I not have a /usr/lib/libDX.so.169.12, which implements DX9 (or 8, or 10 or whatever), and is built for my card (since the GPU has hardware support for DX8,9,10 operations)

Other DirectX stuff such as sound and networking is already handled nicely by WINE, so it's really the graphics stuff that needs to be plugged in.

Is this possible? Would it require loads of work inside the X server? Is it worth petitioning nVidia to do something like this?

Obviously there's no point in asking the games companies to support Linux natively because they won't.

There's no point in asking the games companies to implement an OpenGL renderer if they haven't already done so, because they won't.

So, the the only option I can see is to petition the hardware guys (nVidia, ATI, Intel etc) to produce a native DirectX renderer, since they know the APIs anyway.