Changes after 1.4.1: Bryan Henderson: fix vgatest for small modes and vgatest man page to describe test pattern. PinkFreud: fix g400.c to accept user specified amount of memory. Ryan Rubley : mode 145 (400x300x256 mode X) Change all drivers to test for standard vga modes with a macro. Don Secrets: hardware cursor support for et6000 driver. Michael Glickman : cleanups in kernel/svgalib_helper/Makefile Chris Purnell : fbdev driver. Intellimouse Explorer PS/2 mouse driver. Hans de Goede : fix vesa.c for modes where logical width is not the minimum necessary. Morris Michael Slutsky : A new mouse driver for DR mouse with two wheels. (DRMOUSE4DS) Yury Starkov : fix banshee.c setdisplaystart(). fix gl_enablepageflipping() call in demos/fun.c Bartlomiej Zolnierkiewicz remove compiler warnings from gl/inlstring.h src/ark.c src/chips.c src/et4000.c src/joystick/joystick.c src/mach32.c src/mx.c src/timing.c src/vgacursor.c src/vgapal.c Other miscellaneous cleanups. Tijs van Bakel added SVGALIB_HELPER_IOCSREPOUTB ioctl in kernel module, and port_rep_outb in svgalib_helper.c in order to speed up vga_setpalvec(). Bart Oldeman : vga_simple_init, vga_chipset_setregs, vga_chipset_saveregs - for dosemu. fix sis driver to program 25 and 28MHz clocks correctly, in case bios misporgrammed them. Klaus Stehle : Fix gl_writen to behave as per the man page (not stop at nul char). Ben Winslow : support for Wacom Graphire tablet/mouse. malekith@ikar.mps.com.pl: support for mouse type pnp (explanation of this type in gpm). Krzysztof Nikiel : move mouse_init to vga_init (before giving up root privileges), and not closing mouse upon return to text mode. This enables svgalib programs to use the mouse device even when the device is only readable by root. Matan Ziv-Av Banshee fixes to support high resolution modes. nv3 fix to support nv3 (Riva128) cards again. nv3 fix to restore memory page number. fix gl_hline to do nothing if x1>x2 (rather than segfault) + man page. workaround for double clock speed for some rage cards cursor support: example in demos/cursor.c software cursor in vgacursor.c hardware cursor in mx.c nv3.c rage.c i740.c sis.c banshee.c, etc. removed all BACKGROUND support. vga_flip now saves the graphics state, and does not depend on setmode only. third button support on ms compatible mice laguna driver for cirrus 546X chipset. millennium and g400 drivers for Matrox cards. rage 128 driver. savage driver for S3 savage cards, as well as trio and virge cards. trident driver for PCI Trident cards. fix memory leak in _modeavailable in some drivers (found by Robin). Changes in 1.4.1: Shigehiro Nomura : neomagic driver. Jay Link : Functions gl_fillcircle(3) and gl_bcircle(3), for greater flexibility. Main algorithm of gl_bcircle(3) provided by Chris Atenasio: . Sergey A. Kononenko : s3 driver update to support linear mode with Trio64 + small fixes. Matan Ziv-Av: sis, banshee, i740 drivers. nv3 updated for TNT and GeForce. scitech's gtf in timing.c (not used yet). vgapci can now be used to find more than one vga card. Robert J. Ragno : fix compile problems with gcc-2.95 Greg Alexander add support for fourth button of Trackman Marble. Changes in 1.4.0: Matan Ziv-Av vgapci uses /proc/bus/pci kernel interface, when available. Rage driver. Added static modes. Extended dynamic mode creation with vga_addtiming(3), vga_guesstiming(3), vga_addmode(3) and newmode config file option. Functions vga_cetcurrenttiming(3) and vga_changetiming(3), for mode tuning at runtime. All mmaps of /dev/mem are done by driver initialize function and vga_init, so /dev/mem file descriptor is closed when relinquishing root privileges. Moved mach64.c driver to a different directory. vga_reset utility added to facilitate restoring textmode without rebooting, in case svgalib fails to do it properly. Christian Groessler : Chips&tech driver fixes. Changing vga_setlinearaddressing to return error when in mode that does support linear. Luke Angel : FPC (Pascal) demo. Don Secrest : Rewrite of et6000 driver to comply with newer svgalib driver interface. Russell Marks : Fixed bug in console switching when in background mode (it used to effectively disable console-switching after the first switch, which broke zgv). Made vga_getscansegment() and vga_drawscansegment() work correctly for non-4-pixel-aligned x locations in mode-X modes, and made mode-X vga_getscansegment() set page to *read*, not write. Changes in v1.3.1: (16 Aug 98): Wichert Akkermann & Kevin Vajk : Ensure stdin/out/err don't point to sensitive files (/dev/mem) by accident. David Bateman : C&T: Added support for 65555, 68554, 69000 and 64300 chips Some smaller fixes (65554 memory probing, max. pixel clock) David Grant : Remove some egcs warnings. Christian Groessler : C&T: Further 65550 enhancements, fix text-mode stretching. C&T: does not need iopl(3) anymore. map_framebuffer() also works for non root now. vga_setmode() typo fixed Increase buffers for vgapci Bernd Schmidt : Lrmi.c support under egcs, nested int calls. Don Secrest : Support for linear frame buffer. Scott Stone : Glibc adaptions for lrmi.c. Brion Vibber : Variation of lrmi glibc adaptions. Matan Ziv-Av : Minor apm/nv3/vesa patches. Vgapci enhanced (some buffer sizes changed). MX driver added. TextProg option added. Changes in v1.3.0: (11 June 98): Daniel Engström : Provided an svgalib-style joystick driver. Harald Hoyer : Readjust speed for certain Logitech Mousemen. Jan Hubicka : Some internal additions for cards with no VGA functionality. Elliot Lee : Yet another ViRGE/VX id for autodetection. Attila Lendvai (101) <101@kempelen.inf.bme.hu>: Logarithmic mouse acceleration. Mouse acceleration config by config file. Rename GSVGAMODE to SVGALIB_DEFAULT_MODE Parse ~/.svgalibrc and SVGALIB_CONFIG_FILE. Mouse emulation in raw keyboard mode Changed his email Lalo Martins : Fix misinterpretation of monitor freq limits in Mach32 interlaced (fix generalized and applied to a related code segment as well: eowmob, below) Marek Mintal : Fixed gl_copyfrom/tocontext in more than 8bpp. Don Secrest : ET6000 Support. A tiny ET4000 fix. Trek , : Added gl_printf. Brion Vibber : Added Intellimouse support, PS/2 and serial. Fake keyboard events for using wheel with legacy apps. Updated mousetest demo to do something with middle button and wheel (RX axis). Added limited keyboard layout remapping for raw keyboard. Michael Weller : demos/Makefile misused $* in chown accel and others. Makefile now robust for comments in /etc/ld.so.conf (Problem cause/fix found by ) Makefile failed to remove certain library stubs not removed by ldconfig on Slack 3.3 reported by Jacek Tokarski Various rewritings of gl_printf(). Documentation fixes. Mach32 lowered iopl() accidently on occasion. Allow disabling sigint in graphicsmode. Made apm test more grateful to VGA cards. Mach32 proper accel bitmap (RD_MASK) in 32K colors. Allow joystick sharing and multiple joystick support, bind joystick interface into svgalib. Matan Ziv-Av : Added apm driver for AT3D. Added nv3 driver for Riva128. Added a driver for 'nicely behaved' Vesa bioses. Changes in v1.2.13: (4 Dec 97): Pekka T. Alaruikka & Michael Friman : Modified the VC switch queue & other clean up. Mike Chapman : Added mouse acceleration. Ryan Rubley : Added TVGA9440 support. Provided trap-out tool. Frodo Looijaard : Email changed. Michael Weller : Fix the 512 chars console font fix. Changes in v1.2.12: (4 Sep 97): Pekka T. Alaruikka & Michael Friman : Fix a bug in the background mode support, introduced by Michael. Optimizing speed of the background mode support. Greg Alexander: Autodetect S3Trio64V2/DX. New 640x480 example timing. Ricardas Cepas Save 512 chars of console font (needed for newer kernels). Michael Talbot-Wilson : Some more glibc modification & success reports. Michael Weller : Transformed all README's in a bunch of man pages and even documented previously unknown stuff. Makefile modifications to allow installation of man pages. Makefile modifications to ensure default configuration is for ELF. Fixed accelerated gl_fillbox for more than 8bpp problem reported by Anthony Chu Changes in v1.2.11: (29 Jun 97): Pekka T. Alaruikka & Michael Friman : Background mode support. David Bateman : Support for Chips & Technologies 655xx chipsets Gary Clark : Allow S3 virge to be autodetected as S3 Trio 64 Jeff Epler : Allow for coexistance of GPM and svgalib David Goldsmith : Pointed out buffer overrun security flaws using saved uids and provided a fix. H. Hanemaayer : Some Cirrus 5436 fixes and changes to mode timings for Cirrus Remove lock from a few Ark registers. Dr Stephen Henson (former Stephen Henson ): Fix an ELF/gcc flaw in inlstring.h (former BugsNotFound) Ron Koerner : Enhanced ALI driver. Jae-Hyuck Lee : Makefile problems (probably due to new gmake, used to work b4). Stephen Lee : Detects the Trio64V+. A few patch to Trio64 RAMDAC code to make it work better on the V+. Robert Lupton : Typo in vga_waitevent(). Possible race condition releasevt_signal() when restoring signal. Szeredi Miklos : Reset keystates on a VC switch in keyboard.c David Mosberger-Tang : Some (more) changes for clean Linux/Alpha support. Tomi Sarvela : Added support for Cirrus 5436. Paul Sheer : Gl line drawing routine with inlined set_pixel. Lodewijk Voge : Autodetect Hercules Stingray 64/Video as ark2000pv. Vernon C. Hoxie : Solved (hopefully) the Mach32-AST problem. Michael Weller : Search free console on startup as zgv did. Should also fix a problem with /dev/tty & zgv on newer kernels (reported by Mike Castle ). Various Makefile fixes and changes. (Most useful reports by: Kieron Brown & Don Secrest ) Oliver White : Fix typo that broke G1024x768x32K and G640x480x16M32 and higher in ark.c Eric Sharkey : Added 6-D mouse support Added Spacetec Spaceball/Spaceorb mouse protocol (special thanks to Brett Viren for reverse engineering this protocol and providing many lines of code which I've included in svgalib) Added spin demo, adapted and expanded from the original spin program by Jason Lyons Added mdev config file option to set mouse device Fixed scale bug in mouse_setposition() Changes in v1.2.10: (20 Mar 96) Andreas Arens : Support for new S3 clockchip ICD 2061A in a new clockchip module. Sierra SC1148X ramdac support Sierra SC15025 ramdac support New `DacSpeed' config option Fix for 928 modes. Stefan Kanthak : Several changes for support of Alpha _JENSEN_ system as well. Stephen Lee : Makefile patches: - LFLAGS is for lex, use LDFLAGS instead. - Changed default target. - Create symlinks for new binutils. - Moved ramdac and clockchip into their own directory. - 3dkit can now compile in a separate directory. - use $(CC) $(INCLUDE) instead of just gcc for making dependency files. Cleanup ATI driver (also fix for a buglet). Partial S3 868 support. SDAC 24bpp support (probably wouldn't work with 864, though). Allow 1152x864 & 1600x1200 modes for drivers that can use modeline in libvga.conf (e.g. S3). S3 4bpp doesn't like Linear Bank Switching. SDAC doesn't seem to do pixel multiplexing at 4/8bpp. ramdac.c bugfix and cleanup. okay, so some people still have pixel swapping problem on the 805. (sigh) I've put in an experimental fix for it. split ramdac.c into individual files. 968/IBMRGB support. Only 256 colors for now. Merged Trio64 patch from Moto Kawamura . Changed handling of S3 CR34 for VGA modes at Andreas' suggestion. Updated libvga.config and README.config. Small fix for libvga.h macros. Rewrote __vga_dumpregs(). Bill Randle : Patches to allow compiling only some of the ramdac drivers. Enhanced vga_drawscansegment() to remove it's limitations. New function: vga_getscansegment(); Allow intermixing of vga_setpalette()/vga_getpalette calls. Tomi Sarvela : Some more scancodes for vgakeyboard.h Paul Sheer : Routine to draw quick triangles and some 3d demos in 3dkit/ Erik Troan Renamed a read[bwl] and write[bwl] for ALPHA support under latest kernels. Michael Weller : Fixed security leak from linux-security@vger in restorefont -r. Fixed Fix for vgapal.c so it started working again. Added index register sets back to vgadrawscansegment for ATI SVGA cards. Cleaned support to compile only few RAMDACS in (still not happy with it though) Even more scancodes to vgakeyboard.h New function vga_waitevent() plus eventtest demo due to request for libgrx by Daniel Lee Jackson (although there was no such flexible solution required) Docs for vga_(draw/get)scansegment(), vga_waitevent(); Changes in v1.29: (11 Nov 95) Stephen Lee : Minor Makefile patches. 16 color modes work on the S3 805. Scott Snyder Fix to have Mach32 not remap the location of some ELF libs (modified by Michael). Heiko Schroeder Implemented a modeline config command for libvga.conf to userdefine modes for all drivers using timing.c Andreas Arens : ET4000 patches to avoid problems with 132 column consoles and with IOPERM in ET4000/W32. RAMDAC (SC15025) for S3 Ron Koerner : New driver for ALI2301 (keyword: ALI) cards in all SVGA 256 colormodes. Peter Ekberg Waiting for console activation could be interrupted by signals. Michael Weller : Fixed fix of Oak, modifies mode timings depending on detected chipset Minor typo in egadrv.c Documented unavailability of SIGUSR1/2 as Peter suggested. Fixed a problem in raw keyboard mode noticed by Stephen (matter of seconds coz of good description) Changes in v1.28: (7 Oct 95) Koen Gadeyne : Typo for S3 genDac (S3 SDAC, S3 Trio) made all clocks unusable. Support for 24bpp (true-color) on S3 805 cards with GenDAC. Honza alias Jan Hubicka : Possible segfault in gl/cbitmap, fixed gl_regioncode for clipping on Dec Alpha. Sven Grothklags : Bugfixes for compressed fonts in vgagl. Stephen Lee : Several pixel swapping fixes on S3-805, New Dacspeed keyword for ATT20C490 Changed monitor setup to accept seperate h/vsync values (see README.config), Reintroduced lost (?) et3000 support in distribution shared lib. Rejoined ELF/a.out Makefiles, in fact rewrote all Makefiles. Again many code cleanups to pass -Wstrict-prototypes Michael Weller : Fixed confusion about termios setting between keyboard.c and vga.c (console lockup at -Enter) Catched ALL fatal signals for gentle touch down. Patched mach32 to accept new h/vsync monitor setup. Some tiny a.out patches to Stephen's Makefile's Even more code cleanups. Now EVERY sourcefile passes -Wstrict-prototypes and even the esp. pedantic warnings of my vanilla a.out gcc 2.6.3 (who seems to be more pecular than other compilers) Reformatted ALL sources due to requests. Minimal fix to allow using chipset ATI on Mach32 (doesn't give you much, though) vga_safety_fork() enhanced, uses iopl now. (which has its own security issues, see README) Frodo Looijaard : Fixed Oak driver to support Oak-67 again. Note: The fix might have broken Oak-87 support by accident. Christopher Wiles : Slight modifications of above Oak fix. Peter Ekberg : Some more scancodes in vgakeyboard.h and doc fix for vga_getkey(); Changes in v1.27: (21 August 95) Mach32 related changes(M. Weller ): cosmetic fixes, new config commands svgaclocks, ramdac, vendor to help support alien (not conforming to original ATI specs) cards (should work for dell now). Fixed several NULL ptr dereferences that delurked under ELF. David Mosberger-Tang : Patches to make svgalib work on Linux/Alpha. (Only known to work with #9 GXE PCI, other cards may or may not work) Harm Haanemayer : Change duplicate include check vgamouse.h. Fix bug in gl_getpixel in 3-bytes-per-pixel modes. Allow ctrl-c detection to be disabled in raw keyboard interface. Gregory Margo : Support for the Logitech Mouseman mouse series. Override mouse mode from environment (SVGA_MOUSE_OVERRIDE) (useful for doom) Stephen Lee : ELF support, countless patches for code clean up, bugfixes in S3 15/16/24 bpp, autodection for more chips (but alas, no support for them) Moved config files to /etc/vga due to requests, patched makefiles for automatic reconfiguration. (M. Weller ) Changes in v1.26: (27 April 95) Really fix console-switching in raw-keyboard mode. Fix SDAC support. Fix Trio64 detect. Modes don't work though (use Ramdac "normal"). Move ET4000 chiptype detection so that it works when chipset is forced in config file. Fix Cirrus 5420/22/24 support. Mach32 related changes: Minor typos in mach32info fixed. 68800-6 should now be reported correctly. Fixed compiler warnings in mach32.c due to changed interface (no new accel interface yet). Newflag for red first in 24bpp returned for Mach32 with DAC 4 Support for 24bpp red first in whole svgalib + vgagl. Added support for 32bpp in vgadraw.c Added detection for 24bpp red first in vgatest. TODO: Fix raw-keyboard console switching when alt is kept pressed (e.g. Doom). Changes in v1.25: (7 March 95) Problem with programs that don't call vga_init finally fixed. Fix console-switching in svgalib raw-keyboard mode (vgakeyboard.h). Working ARK driver (includes acceleration). Linear addressing detection changed (supports partial framebuffers). Add more RAMDAC support -- AT&T490-compatible truecolor DACs supported for S3. Tweak mouse/keyboard header files to fix conflict with libgrx compile. Changes in v1.24: Fix bug causing "not running in ..." messages if vga_init wasn't called. Better structure for driver interface ("DriverSpecs"). Fields other than the basic driver functions can be included. Type checking is also better. Most drivers haven't been updated for the new return types; feel free to send patches. Something might be broken, watch out. Better acceleration inferface. Fix ARK chiptype detection. Untested ARK chip support. Largely fixed S3-864 + SDAC support. Untested clock/DAC support for the Trio64 in the S3 driver. Unlock extended registers when forcing Cirrus in config file. Try to avoid Cirrus hardware lock-up when switching certain modes. Add "accel" program to test new acceleration interface. Changes in v1.23: (8 Feb 95) ET4000/W32 tweaks. Added gl_allocatecontext. Use this instead of declaring GraphicsContext variables statically. Demo programs changed accordingly. Safer VC switching with blits. Allow Cirrus SVGA modes with 512K memory. Possible Cirrus 5422 MCLK detection fix. Incorporate ATI 'driver' from Scott Heavner (allows VGA with 132-column textmode). Untested ARK driver and untested generic S3 support (640x480x256 @ 60 Hz). Unused acceleration interface sketch (accel.h/cirrus.c). Changes in v1.22: ET4000 additions for STG170x DAC (tseng3.c and driver), linear addressing support for W32p, better general linear addressing handling with new driver function, 8-bit color components CLUT support for AT&T DAC (David Etherton). Cirrus driver tweaks. S3 driver rewritten for S3-864 + SDAC (doesn't work yet) using new interface. Linear addressing probing with vga_setlinearaddressing. Console switching is not a good idea with linear addressing enabled. Treat Oak 077 as standard VGA (incompatible with OTI-087 mode dumps). Fix planar getpixel (untested). VC switching in RAW keyboard mode (e.g. Doom) (doesn't always work) [was typo, fixed in 1.25]. 'VGAGL' status: Should be usable seperate from svgalib with minor changes. GraphicsContext should be allocated dynamically (malloc) by library for compatibility/extensibility. Non-expanded font text write functions added (untested...). Missing is proper direct page flipping support (double-buffering in video memory). This would require all operations to be performanced at a certain offset into the framebuffer. Changes in v1.21: (23 Dec 94) Partially restructured Cirrus driving using clean, XFree86-style SVGA-generalized interface. Check out timing.*, vgaregs.* and cirrus.c. Cirrus driver itself should now support all 542x/543x cards. Fix MouseSystems movement overflow. Fix PS/2 mouse support finally (sorry). Fix (old) Logitech protocol mouse handling (hopefully - I lost the message that contained the fix). Fix Cirrus bitblt bug. gvga6400 driver BIOS check changed; munmap seems to mess things up. Add vga_getpixel() (untested). Incorporate restorepalette patch from Charles Blake, allows custom textmode console colors (see utils/README). Changes from Michael Weller: Made GSVGAMODE parsing case insensitive, and added names for 16M32 modes. vgatest displays info about 16M32 modes better. mach32 - Support for 8bit clut on type 2 DACS. Added testaccel demo. mach32 - Support for all accelerator functions. Added vga_hlinelist(), vga_blitwait(), vga_ext_set(), [vga_accel()] mach32 - eeprom interpretation more robust and configurable for stupid AST boards. mach32 - changed 16M4 -> 16M32 for compatibility Fix: reserve memory for one screen on EACH setmode call (as the README states). mach32 - Added support for AST style EEPROM checksums. Added commands to control RTS/DTR lines for multiprotocol mice. Fix: mach32 - VGA modes should work now even in 132 columns text modes. Sanity check for MAX_REGS in vga.c Fix: Raised MAX_REGS as was actually needed. Fix: Textmode utils now give errors on problems with accessing files. Fix: Restore of Mach32 regs after clock probe was broken (cosmetic, no problems reported). Fix: Mach32 Dac1&4 have to use double/triple clocks in 16/24bpp. Changes in v1.20: (25 Nov 94) Clean up VT code a bit. Slight ET4000/W32p detection fix. Possible mach32 32bpp copyscreen fix. Allow VT-switching with mouse support (it was disabled because of interaction with an old version of selection, I take it things are better now?). Preliminary Cirrus 5434 support (untested, only 1280x1024x256 for now), will be fixed soon. New Oak driver (Christopher Wiles). Use seteuid instead of setuid to give up setuid-root permissions. Hack that may fix 132-column textmode/VGA mode problems on ET4000. Fix color/mono config option (mono was broken). Disable 320x200x256 page flipping for ET4000. Fix Cirrus fillblt register corruption problem. GVGA6400 driver (Arno Schaefer). vga_init now returns -1 if not on a suitable console (0 otherwise); hard exit can only happen in vga_setmode (David Liu). This should help programs with multiple output devices like gnuplot. Added mouse_init_return_fd and keyboard_init_return_fd for select() use. Add SIGKILL catch to raw keyboard interface. PS/2 mouse support possibly fixed. Shared library 1.2.0 (corresponds with main svgalib version number). Changes in v1.12: (17 June 1994) Delay console checking until actually setting a mode (should fix problems with device-probing programs like gnuplot). Fix planar mode getmodeinfo bug for Trident and others (should fix floating point exceptions in zgv). Support PS/2 mouse in config file. Fix one-byte-per-pixel gl_putboxmask. Shared library 1.1.8. Changes in v1.11: (19 May 94). Better fix for ET4000/W32 auto-detection. Fix typo that prevented ET3000 auto-detection. Clipping bug with compiled bitmaps fixed. Shared library 1.1.7. Changes in v1.10: (9 May 94) Possible fix for ET4000/W32 auto-detection (does iopl(3) now). Logitech mouse fix. Repeated keyboard_init/keyboard_close fix. vgagl fixes for mach32 'misordered' 32bpp truecolor and 32bpp paged fillbox. mach32 - Forgot to disable write mask for VGA framebuffer (zgv2.2 screen corruption after online help) mach32 - Wrong assumption about BIOS enabling the mem aperture.. was actually done by Xfree.. driver will setup linear framebuffer itself using info from the EEPROM now. mach32 - added mach32/mach32.std-modes info file.. mach32 - ran a spell checker over my README's to throw away the worst errors. mach32 - Patched vgapix for correct RGB_MISORDERED support. mach32 - This needed an additional global for the modeinfo-flags (short cut is MODEFLAGS). mach32 - Changed blankadjust for 32bpp modes and DAC-type 2. mach32 - Patched mach32 autodetection code. mach32 - Changed 32bpp setting at all by defining a new dacmode (needed for dac-types 5) mach32 - Changed VFIFO handling and vfifo defaults for 16/24/32bpp modes. mach32 - Added fuzz factor of 0.5KHz when obeying monitor horz restriction. mach32 - deleted dacwidth config command (was not useful) mach32 - Added setuplinear command for mach32 (would be useful for cirrus too) mach32 - Changed order of restore of extended ati registers to obey locking.. may need even more fixing..that is ensure restore of vgaregs before they are locked again when restoring extended ATI lock registers. mach32 - Had to change order of entries in save-/setregs array for mach32 for this. Shared library v1.1.6. Changes in v1.09: (2 May 94) Significant mach32 driver/docs update (potentially dangerous bug fixed). Some vga_draw primitives now support 32-bit pixel modes (better support is in vgagl). Cirrus 320x200x256 registers redefined to support page flipping (setmodeX doesn't work anymore). Trident 320x200x256 page-flipping disabled. Shared library 1.1.5. Changes in v1.08: (27 Apr 94) Improved vgagl 24-bit physical/32-bit virtual screen support (pageflipping really fixed, speed increase (alignment)). S3 driver hacked (try it if you are bold). Sierra 15025/26 DAC support should work for 32K modes now. Added PS/2 mouse support (untested). More vgagl 32bpp primitives. 320x200x256 vgagl page flipping fix (this is a big one). Added ctrl-c detection to low-level keyboard interface. vgagl copyboxfromcontext added, and more efficient copyboxtocontext. Shared library 1.1.4. Changes in v1.07: (19 Apr 94) Moved main library source into src/. Cleaned up shared library making. Fix permissions of utils/convfont. Fix tty behaviour: Open /dev/tty instead of /dev/tty0 (previously non-root users could not run programs if /dev/tty0 was not world-readable, like in the recent slackware). Don't kill the terminal settings when detecting a non-graphics capable virtual console (stupid bug related to use of atexit()). Limited support for ioperm(1) by Olaf Titz. Allows non-root users to run svgalib binaries which are not setuid-root. Emulated paged copybox in vgagl (untested). Utility to read out the ATI mach32 EEPROM. Shared library 1.1.3. Changes in v1.06: (11 Apr 94) vgagl pageflipping fix for 24-bit/32-bit virtual screen. Fix 16 color mode availability on ATI mach32. Possible ET4000/W32 Sierra 15025/26 64K color fix. vgagl compiled bitmaps enhanced (not completely compatible with v1.05), but still untested. Possible Trident 320x200 page flipping fix. Shared library 1.1.2 Changes in v1.05: (2 Apr 94) Some unfinished SVPMI stuff (feedback strongly encouraged). Added vgagl compiled bitmap functions (256 color only, untested). Added definitions for 32 bits per pixel truecolor modes (not used yet). I don't feel like adding vga_draw* functions for these; use vgagl. vgagl now supports VGA 16 color modes indirectly. Added RAW mode keyboard interface (vgakeyboard.h). Mouse driver fix. Shared library 1.1.1. Changes in v1.04: (29 Mar 94) Support for more than 1Mbyte of memory on ET4000W32i/W32p and 24-bit Sierra DAC (15025/6) (untested). Fixed copying 4 bytes per pixel virtual screen to three bytes per pixel screen (e.g. '3d' in truecolor modes). Fixed missing gl_enablepageflipping. Fixed Cirrus linear addressing. Amazing alpha ATI mach32 driver by Michael Weller; configuration file format extended. Shared library version 1.1. Changes in v1.03: EGA support fixed (Kapil Paranjabe). Added vga_safety_fork. utils/Makefile fixed. Changes in v1.02: vgagl bitmap scaling improved. vga_lockvc/unlockvc should be useful now to avoid corruption of certain VGA registers used for drawing. Changes in v1.01: Fixed copying to planar 256 color mode in vgagl, and added page flipping support. Setting an SVGA mode after a planar 256 color mode clears the screen properly now. Shared library 1.0.10. Changes in v1.00: (Jan 94) [The version number doesn't say anything about stability/completeness etc.] A number of bug fixes related to Mode X (display start, console switching, planar 320x200x256 allowed with vga_setmodeX()). Added vga_copytoplanar256 for Mode X-like modes. Added smooth scrolling demo program. Demo programs moved to demos/. Cirrus linear addressing works (if you have less than 16Mb of memory); see demos/testlinear. Added ET3000 driver. Trident 8900 reboot-beep problem should be fixed. Shared library 1.0.9 Changes in v0.99: ET4000 patches by Hartmut Schirmer: ET4000 register dumps now have extra registers, so old register dumps won't work; register dump program (tseng3, moved to et4000/ directory) supports VESA modes. Microsoft mouse handling bug fixed. Shared library 1.0.8. Changes in v0.98: Some minor bugfixes, low-level mouse handling rewritten (was very slow). Added vga_runinbackground and vga_oktowrite as a kludge to allow a graphics program to run in the background (not entirely safe). Disabled ET4000 clock detection (wasn't used yet). Shared library version 1.0.7. Changes in v0.97: Fixed Cirrus 1024x768x256 non-interlaced. Other modes use default (lowest) frequencies. Fixed bad virtual screen bug in vgagl (copyscreen). Incorporates patches from Hartmut Schirmer (et4000 clock frequency determination). Shared library 1.0.6. Changes in v0.96: Corrected et4000/et4000.default. Cirrus 1024x768x256 non-interlaced. Hopefully fixed Cirrus monitor settings. Cirrus blitting works again. Fixes in vgagl truecolor framebuffer support. Shared library 1.0.5. Changes in v0.95: Avoid writing to some reserved registers on ET4000 and Trident (fixes dual monitor setups) (David Monro). Cirrus 1024x768x256 was doing scary things if the svgalib monitor type was set to allow non-interlaced. Added Cirrus 1024x768x16 non-interlaced and 1280x1024x16 interlaced. Shared library 1.0.4. Changes in v0.94: Added 132x43 textmode tweaking utility. Put utilities in utils/. restoretextmode was not saving/restoring extended registers anymore. Shared library 1.0.3. Hack to prevent standard VGA modes from failing to work after having run XFree86 on Cirrus. gl_setcontextwidth fixed. Changes in v0.93: Oops, version 0.92 was not quite up to date. Shared library is 1.0.2. We'll get libvga.so.1.0.99 before the end of the year at this rate :-). gl_copybox truly fixed. Changes in v0.92: Fixed broken configuration file reading; some minor changes. Shared library is now version 1.0.1. Source is flawed. Changes in v0.91: Various fixes. Dumpreg should work better in X now. The default dynamically defined ET4000 registers are now in /usr/local/lib/libvga.et4000. Added vga_getgraphmem. Shared library support (requires tools 2.8 to build). This greatly reduces executable size and is good for binary compatibility. __svgalib_graph_mem is now shadowed in a read-only user-visible global variable (graph_mem) for easier shared library building. Fixed console switching bug when a textmode is set in between the setting of graphics modes. Oak 640x480x256 should work now. vgalgl updates. Added 4 bytes per pixel virtual screen support. Added vga_init. This will detect and initialize the driver, and give up supervisor rights, having obtained I/O permissions. This is the recommended first line of any program that uses svgalib. Should do chmod a+s on restorefont. EGA support from egalib by Kapil Paranjabe integrated into svgalib. This is currently untested. Mouse support (can also be used independently). Added vga_lockvc and vga_unlockvc; vga_getkey (read keyboard without waiting). Using the mouse means no console switching for now. Initial untested S3 driver. Goal is to provide support for truecolor modes on the 801/805/928, in SVGA mode. Properly uses monitor type variable. [doesn't work] Configuration file for mouse/monitor type. Monitor type not used by drivers yet, except Cirrus. Changes in v0.9: Extensive changes and restructuring, by Hartmut Schirmer. Dynamic (run-time) register loading from a configuration file for ET4000 cards, providing binary compatibility. High resolution 16-color modes (for ET4000 at least). More stable virtual console switching. copybox, and gl_setpalettecolor bugs fixed in vgagl. Fixed setting of standard VGA mode after SVGA mode. Changes in v0.82: Virtual console switching cleanup. The dumpreg program now also shows extended registers. Added Oak driver, but extended registers have not been filled in. Somebody should run XFree86 with the Oak driver, dump the extended registers with the dumpreg program (make sure the Oak driver is enabled in config.h), and put them in oak.c. With some luck it'll work. Changes in v0.81: Restorefont (write option) was broken again due to bug in vga.c; gl/text.c was missing in v0.8. Added vga_disabledriverreport. Changes in v0.8: Fixed major bug in vga_getmodeinfo in vgadrv.c. This may have caused spic to fail on unsupported SVGA cards in 320x200x256. vga.c split, and other changes (Hartmut Schirmer). Note that mode numbers beyond 1024x768x256 have changed. Standard VGA modes 720x350x16 and 720x480x16 added. Virtual console switching improved (bank/linewidth/displaystart preserved). Changes in v0.7: Trident textmode restoration and SVGA modes should work now on 1M cards (thanks to Scott Heavner). Bug fixes in vgagl. Changes in v0.6: Trident driver bug fixed; detection cleaned up. 800x600 and 1024x768 on 1Mb cards don't work correctly. Added Cirrus 800x600x16M NI (at 50 Hz), and program to set the Cirrus memory clock to a higher value (setmclk.c). Added framebuffer graphics library for one, two and three byte-per-pixel modes. Documentation improved. vga_setrgbcolor added. ET4000 Hicolor fixes (thanks to Savio Lam), and other fixes (Scott Heavner). Changes in v0.5: Fixed palette register timing bug (caused occasional corruption of textmode palette). Added function that checks the environment variable GSVGAMODE for a default mode (vga_getdefaultmode). The environment string can either be a mode number (compatible with VGAlib Ghostscript), or a mode name as in (G640x480x2, G640x480x16, G640x480x256, G640x480x32K, G640x480x64K, G640x480x16M, PROMPT (ignore)). Changes in v0.4: restorefont.c as distributed in v0.3 missed a case line in a switch statement which made it useless. Each VGA register write in the library was producing silly debugging code (I forgot to restore the macro definition), making everything significantly larger than neccessary. Added vga_getchipset function. vgatest now only lists modes that are available. The ET4000 driver has been improved, including Hicolor DAC detection (thanks to David Monro and Daniel Jackson). Cirrus driver: Fixed 5420/2/4 bug, cleaned up detection, changed the 800x600 timings, and added missing modes 1024x768x256/32K/64K, as well as 320x200x15/16/24bit. Also, there's support for some of the accelerated features of the Cirrus 5426, the driver provides bitblt (move box), fillblt (fill box), and imageblt (write bitmap from system memory) functions. Display start address can now be meaningfully changed in 16-color and planar 256 color VGA modes for page-flipping (address is expressed as number of pixels). Fixed the vga_flip() functionality; if you press escape during vga_getch() the console is switched to textmode until another key is pressed. [note: this has been obsoleted by console switching] The default amount of video memory saved in SVGA modes is the size of one screen. If the program uses more (if it uses page-flipping, for example), you must indicate it with the vga_claimvideomemory function. This prevents 2048 or 1024K being saved when only a few hundred K is required. svgalib now waits until the virtual console it is running in becomes active before setting the first graphics mode. Implemented transparent virtual console switching (which uses vga_flip).