The DRI code attempts to use XAAGetCopyROP without checking whether XAA or EXA is in effect. This results in the server crashing with an undefined-symbol error when enabling EXA, then starting glxgears under GNOME/Metacity and attempting to drag the glxgears window.
The EXA code happens to have a functional duplicate of the required code under the name SavageGetCopyROP(). This patch moves the code to savage_accel.c where it is now shared between EXA and the DRI code.
It is disturbing that this has not been caught before.
Under some conditions (documented in this patch), the UploadToScreen implementation can make use of the AGP scratch buffer used for XVideo as a convenient source for Mastered Image Transfer. The previous implementation is still available as a fallback for when AGP acceleration is not possible. This requires the AGP scratch buffer to be persistent, so the XVideo code is also made aware of an existing DRM mapping for the scratch buffer.
SavageGetPanelInfo will reset DisplayType if the panel is not
active, so check again before calling SavageAddPanelMode so that
bogus modes are not added.
This fixes startup failures in some cases, for instance when there is no
real panel and EDID is missing. The bogus sync ranges (typically 0 Hz)
would also block the default sync ranges from being applied.
Thanks to Peter Belew for testing.
https://bugs.launchpad.net/bugs/294899
Since some time, savage enforces video-mode and max. pixel clock
validation through EDID, which is great for autoconfiguration, but
prevents users from defining higher screen resolutions, even though the
monitor is capable of it. This patch implements the IgnoreEDID option so
that the EDID monitor information can be explictly disabled.
In the modified lines, the logical-not binds first to psav->videoFlags,
not to (psav->videoFlags & VF_STREAMS_ON). If more flags are ever
implemented, they could interfere with this check. More of a preventive
patch than anything else.
First pass at merging both trees. So far, this has only been compile
tested. I need to dig out a savage card to put in a system for
testing, so it may take another hour or two.