Hoppla,
diesmal scheint es mit meinem jährlichen Ubuntu Test länger als nur zwei Tage zu dauern und auf einmal passt alles zusammen. Nachdem mir die normalen Jaunty Treiber für meine X1600 nicht ausreichend waren, habe ich ebenfalls die aktuellen aus dem GIT gezogen. Beim Compilieren der selbe Fehler wie oben. Also flux mal folgenden Patch in die /usr/include/xorg/dri2.h eingebaut:
/* Version 1 structure (for ABI compatibility) */
typedef struct {
unsigned int attachment;
unsigned int name;
unsigned int pitch;
unsigned int cpp;
unsigned int flags;
unsigned int format; <-- das muss hier rein
void *driverPrivate;
} DRI2BufferRec, *DRI2BufferPtr;Damit klappt das schon besser und man kann den neuen Treiber aus src/.libs/radeon_drv.so anstatt des ausgelieferten /usr/lib/xorg/modules/drivers/radeon_drv verwenden. Damit kann man die folgenden Parameter in der xorg.conf setzen:
Option "ClockGating" "on"
Option "DynamicPM" "on"
Option "ForceLowPowerMode" "on"Ein erster Tests ergab einen Akkuentladestrom von 1900mA im Leerlauf. Das ist noch Meilen von Powerplay unter Windows entfernt, aber besser als vorher. Eine Inspektion der Sourcen ergab aber, dass bisher nur PCIe Lanes deaktiviert und die CPU heruntergetaktet werden. Die Speichertaktung scheint noch nicht implementiert. Da meine Karte ein AtomBios hat und dafür die Anpassung schon teilweise in den Treibern drin zu sein scheinen, kann man auf eigene Gefahr folgende Verbesserungen einbauen:
radeon_pm.c - static void RADEONSetStaticPowerMode(ScrnInfoPtr pScrn, RADEONPMType type)
...
if (i == info->pm.current_mode)
return;
RADEONWaitForIdleMMIO(pScrn);
if (info->IsAtomBios) {
atombios_set_engine_clock(pScrn, info->pm.mode[i].sclk);
atombios_set_memory_clock(pScrn, info->pm.mode[i].mclk); <- hier einfügen UIUI! Könnte auch sein, dass das noch einen WaitIdleMMIO braucht!
}
else
...radeon_pm.c - void RADEONPMInit(ScrnInfoPtr pScrn)
...
if (xf86ReturnOptValBool(info->Options, OPTION_FORCE_LOW_POWER, FALSE)) {
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Force Low Power Mode Enabled\n");
info->pm.force_low_power_enabled = TRUE;
if (info->pm.dynamic_mode_enabled) {
info->pm.mode[2].type = POWER_HIGH;
info->pm.mode[2].sclk = info->pm.mode[0].sclk / 4; <- 1/4 Leistung (statt 1/2 vorher)
info->pm.mode[2].mclk = info->pm.mode[0].mclk / 2;
info->pm.mode[2].pcie_lanes = 4;
} else {
...Damit sollte die Karte mit 1/4 Chiptakt, halbem Speichertakt und nur 4 PCIe Lanes laufen. Sollte ich mich bei den abschließenden Tests nicht vermessen habe, braucht das System nochmal 120mA weniger.
Würde mich freuen, wenn andere Ihre Erfahrungen hier anschließen könnten.