I thought (correct me if I am wrong), that part of the reason that graphics drivers were so messy was that they had to integrate with X which is archaic and not really designed with hardware acceleration in mind.
IIRC the nvidia Linux drivers actually replace parts of X with their own proprietary stuff which makes things hairy when integrating with software designed around "standard" X.
For example nvidia "twinview" seems to make many applications believe that my two 1920x1080 monitors are actually a single 3840x1080 monitor. I can correct this by using a seperate X session for each monitor but then this stops compiz from working.
While dealing with X is annoying in general, nvidia replacing so much infrastructure was just a case of NIH. Their excuse might be a wish to have as common a code base with Windows as possible.
In fact, none of the GPU vendors with closed-source drivers are providing kernel mode-setting, which would be essential for Wayland.
> For example nvidia "twinview" seems to make many applications believe that my two 1920x1080 monitors are actually a single 3840x1080 monitor. I can correct this by using a seperate X session for each monitor but then this stops compiz from working.
NVidia ships Xrandr in 302 drivers (now in beta, available to ubuntu in ppa:ubuntu-x-swat/x-updates) so this should be a problem of the past.
It's been very annoying though, especially games which try to be clever and position the window centered on the screen or maximize to full screen have been half on the left and half on the right monitor.
I can fix it for many (not all) applications by adding this to /etc/environment.
SDL_VIDEO_FULLSCREEN_DISPLAY=1
SDK_VIDEO_FULLSCREEN_HEAD=1
What surprises me, given the number of programmers that use 2 monitors. How does this stuff not get found when applications are being tested?
Not like it would be a difficult fix either, just test for weird resolutions like 3840x1080 then ask the user "are you using 2 monitors?", if they answer yes then adjust the rendering target.
IIRC the nvidia Linux drivers actually replace parts of X with their own proprietary stuff which makes things hairy when integrating with software designed around "standard" X.
For example nvidia "twinview" seems to make many applications believe that my two 1920x1080 monitors are actually a single 3840x1080 monitor. I can correct this by using a seperate X session for each monitor but then this stops compiz from working.