[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: survival skills for teenage geeks



On Wed, 2003-01-29 at 15:28, Vikki Roemer wrote:
> > > my parents' monitor, OTOH, is a 17", but
> > > they would kill me if I turned up the resolution and I wouldn't be
> > > able to see properly anyway if I did-- the monitor is 3-4 ft. away, so
> > > that's probably part of it.  Otherwise... *shrug* maybe it's a Windows
> > > thing.
> > 
> > I don't have any trouble at 3-4 feet away with 1280x1024 on a 17"
> > monitor. Ok, a little bit, but not enough to bother me. Windows is
> > involved, though; while you can configure the display resolution (in
> > dpi), doing so causes all sorts of horrible graphics glitches. X, on the
> > other hand, deals with the rather odd setting of 106x100 dpi without a
> > hitch, and so do all the applications. Go figure. Fonts are scaled up to
> 
> Ah, the beauty of Linux! :)

The beauty of X, actually. You'll find this on any X system, provided
all of the X clients are capable of dealing with odd resolutions
properly. Fortunately, they do seem to.

> BTW, is the refresh rate what causes the flicker if I run certain
> screensavers, do you think?  I've often wondered that.

Usually, it's a software problem; the screensaver should be using double
buffering, but isn't.

<long-winded-description of="double buffering">

Double buffering (in this case) is where an application (such as a
screensaver) draws not onto the screen directly, but onto an offscreen
buffer, and then quickly moves the bits from the offscreen buffer to the
onscreen buffer (the frame buffer).

When the video hardware goes to display a frame to the screen, it sends
whatever is in its frame buffer, even if the application isn't done
drawing yet, which gives you that nasty flickering effect. Double
buffering puts an entire frame into the frame buffer at once, so the
video hardware won't wind up displaying a partially drawn frame.

Double buffering is not supported by all X servers; in those that do
(such as XFree86), it is supported with the 'DOUBLE-BUFFER' extension.
It is possible to perform double buffering without server support, but
this is incredibly slow, especially over a network, because the client
has to send the entire frame, in X pixel map (XPM) form, to the server.
This is what Jamie Zawinski is complaining about in his description of
his 'Deluxe' screensaver:

        This draws a pulsing sequence of stars, circles, and lines. It
        would look better if it was faster, but as far as I can tell,
        there is no way to make this be both: fast, and flicker-free.
        Yet another reason X sucks. Written by Jamie Zawinski.

There are two principal modes of actually doing the transfer from the
offscreen buffer to the frame buffer: page flipping and blitting.

In a page flipping scheme, neither of the two buffers is permanently
designated the frame buffer or the offscreen buffer. Instead, one buffer
is the frame buffer, and the other is the offscreen buffer; when the
application is done drawing into the offscreen buffer, it signals a page
flip, at which point the buffers are exchanged: the offscreen buffer
becomes the frame buffer and vice versa.

In a blitting scheme, one of the buffers is permanently designated the
frame buffer and the other is permanently designated the offscreen
buffer. When an application is done drawing into the offscreen buffer,
it quickly copies (blits) the contents of the offscreen buffer into the
frame buffer.

If you can do both, blitting tends to be slower, because of the need to
do a complete transfer. However, blitting may be faster under some
configurations, and it may be the only option under others (such as X
without server support for double buffering, as described above).

</long-winded-description>

> BTW, tomorrow is the computer club meeting, when we start getting
> ready to set up the cluster-- hopefully we won't have any snow. :)

Have fun!

Alex.

-- 
PGP Public Key: http://aoi.dyndns.org/~alex/pgp-public-key

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s:++ a18 C++(++++)>$ UL+++(++++) P--- L+++>++++ E---- W+(+++) N-
o-- K+ w--- !O M(+) V-- PS+++ PE-- Y+ PGP+(+++) t* 5-- X-- R tv b- DI
D+++ G e h! !r y
------END GEEK CODE BLOCK------

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: