Quake's official source includes video drivers for X11, SVGAlib and OpenGL, and ports have also been written for SDL and even tty. However, I couldn't find anything that uses X11's XVideo extension.
Xv can use hardware acceleration for rescaling, so that a small image can be scaled up to fill the screen without the need for either software scaling (which is often very slow) or changing screen resolution (which is annoying at the best of times, and next to useless on LCDs). It is used by MPlayer for exactly these reasons.
I hacked bits of the MPlayer Xv driver into Quake's X11 driver, and the result is in vid_xv.c. To use it, replace the file vid_x.c (in the WinQuake, or QW/client for QuakeWorld, directory of the Quake source tree) with the new file before compiling. If the window is resized while running, the output images will be rescaled appropriately. The function ``vid_fullscreen'' can be bound to any key, and will toggle fullscreen mode.
DISCLAIMER: Absolutely no warranty, use at your own risk. Depending on how stable the Xv drivers are for your graphics card, this program may hang your machine/burn out your video card/blow up your monitor. As a rough guide, if MPlayer's -vo xv driver works, chances are this will too.
Known bugs:
- When going from fullscreen to windowed mode, the old window position is not restored. Instead, the window is placed at the center of the screen.
- (Possibly a feature...) There is no restriction on aspect ratio — you can resize the window to any aspect you want.
TODO/potential bugs that I haven't checked yet:
- Only supports YUY2 and YV12 formats. (These are the only ones my card can use, so I can't test any others.)
- Has been tested on 8 and 16bpp, not 24.
- Fullscreen works with Blackbox, Fluxbox, IceWM. Don't know if all WMs handle it the same way.
- The RGB->YUV conversion is possibly inefficient