Moving this from a downstream bug report:
The initial configuration heuristic places monitors horizontally adjacent. That makes total display wider than 2048, which is the maximum size that the 3D engine in the 945 can render to.
This should be fixable, if not fixed, by xserver changes to allow each output to have its own memory allocation instead of sharing a single large one, and modifying the compositor to be aware of this.
The 2D engine is not limited to the constraints of the 3D pipeline. If you look at SNA you can see precisely how that limit can be avoided, and for how operations can be split into pieces that can be handled by the 3D pipeline. The problem is that the 3D compositor has no (efficient) way to workaround those limitations as they are currently also enshrined into OpenGL limits.
The feature request for per-crtc-pixmaps was to be part of randr-1.4. And is better addressed to xorg-devel and Server/Ext/Randr.
Move feature request for per-crtc-pixmaps to Server/Ext/Randr component
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct.