Matthew Garrett (mjg59) wrote,
Matthew Garrett

Intel power saving

It's sometimes surprising where power goes in a laptop. One of the things busily consuming power is the digital link between the graphics hardware and the TFT, which is busily updating your screen 50 or 60 times a second. That's kind of unfortunate, because most of the time nothing's actually changed. Unlike CRTs, TFTs don't have the same requirement for rapid updates to maintain an image - reducing the vertical refresh rate (within reason) won't result in any reduction in image quality. What it will do is result in jerky movement and blurring, though, so doing this by default is a problem.

The obvious way to handle this would be to downclock the display when it's idle and upclock it again when it's active. Doing so gives the benefit of reduced power consumption when not much is going on (most of the time) and not impairing image quality. Programming clocks takes a noticable amount of time, and doing it while they're controlling the display results in nasty screen flicker. Thankfully, Intel hardware has two sets of clocks per output. One can be programmed at high frequency, and the other at low frequency. On pre-965 chipsets, we can then simply flick between them whenever the screen becomes idle or active - the clocks are already set up and the hardware waits for the next vblank before actually performing the switch, so there's no blurring or flicker. 965 theoretically does all of this in hardware, but I haven't actually tested that yet. In principle the patch sets it up, but...

The savings seem to be on the order of 0.5W or so, though that'll probably depend on your screen resolution. Patch against current git is here, and a precompiled version of the driver for 32-bit is here. The most likely problem is screen flicker when idle, so if anyone sees that then let me know and we'll see if it can be tuned.
Tags: advogato, fedora

Comments for this post were locked by the author