How Windows 3.11 Supported Third-Party SVGA Drivers
Microsoft Windows 3.11 supported third-party Super VGA (SVGA) and
accelerated graphics hardware through an abstracted, modular driver
architecture coordinated by the Graphics Device Interface (GDI). Instead
of applications communicating directly with video hardware, Windows
routed rendering requests through standardized device drivers packaged
as .DRV files. Hardware manufacturers wrote these drivers
using Microsoft’s Device Driver Kit (DDK) to map standard Windows
drawing routines to their specific chipsets, configure video modes
beyond standard VGA, and manage video memory directly.
The Role of the Graphics Device Interface (GDI)
Windows 3.11 utilized a device-independent graphics pipeline managed
by GDI.EXE. Applications called standardized Windows API
functions to draw shapes, render text, or manipulate bitmaps. The GDI
subsystem did not need to know the specifications of the graphics card
installed in the PC; instead, it relayed these graphical operations to
the active display driver via the Device Driver Interface (DDI).
The display driver was responsible for either handling the operation directly—using the card’s hardware capabilities—or calling back into GDI's software rendering engine to perform operations the hardware did not natively support.
Display Driver
Architecture (.DRV Files)
Third-party display drivers were implemented as specialized 16-bit
Dynamic Link Libraries (DLLs) compiled with a .DRV
extension. Microsoft provided the Windows Device Driver Kit (DDK), which
outlined the mandatory export functions that every display driver had to
implement, such as:
EnableandDisable: Initialized the hardware into the requested graphics mode (e.g., 800x600 or 1024x768 at 256 or more colors) and restored the text mode or previous state when exiting.BitBlt: Handled block image transfers, handling off-screen memory and screen-to-screen copies.Output: Drew primitives like lines, polygons, and arcs.PixelandExtTextOut: Managed individual pixel manipulation and text glyph rendering.SetPalette: Handled color look-up tables (LUT) for 8-bit, 256-color modes.
If a manufacturer developed an accelerated graphics card (such as those using early S3, ATI, or Tseng Labs chipsets), the driver wrote directly to the card's hardware blitters and command registers. For basic SVGA framebuffers, the driver manipulated video memory manually using optimized assembly code.
Memory Banking and Protected Mode Handling
Standard VGA used a 64 KB memory window located between memory
addresses 0xA0000 and 0xAFFFF. Because SVGA
resolutions and higher color depths required significantly more memory
than 64 KB (for instance, 1024x768 at 256 colors requires 768 KB), SVGA
hardware relied on bank switching (paging) to access the entire video
memory.
Because Windows 3.11 ran in 16-bit protected mode (Standard Mode or
386 Enhanced Mode), drivers could not rely on real-mode ROM BIOS
interrupts (INT 10h) during routine rendering without incurring severe
performance penalties. Third-party drivers interacted directly with the
hardware's proprietary bank-switching registers to swap memory pages
into the 0xA0000 aperture dynamically as drawing operations
crossed 64 KB boundaries. Later SVGA hardware supported linear frame
buffers, which mapped all video memory into a flat address space,
drastically simplifying driver design.
Integration with 386 Enhanced Mode and VDDs
In 386 Enhanced Mode, Windows 3.11 supported multitasking DOS
applications alongside Windows tasks. To prevent conflicts when a DOS
program attempted to alter video states, third-party display systems
often included a paired Virtual Display Device driver (.386
file, such as VDD.386).
The Virtual Device Driver (VxD) intercepted direct hardware access from virtual 8086 DOS sessions, saved and restored hardware states during task switching, and ensured the Windows GDI display driver maintained control of the physical screen.
Driver Installation and Configuration
Users integrated third-party drivers into Windows 3.11 through the
SETUP.EXE utility (accessible via DOS or inside Windows).
Hardware vendors distributed drivers with an OEMSETUP.INF
file containing hardware definitions, supported resolutions, color
depths, and file copy directives.
When a user selected a specific SVGA profile, Setup copied the
corresponding .DRV file into the SYSTEM
directory and modified the core Windows configuration file,
SYSTEM.INI. The driver was registered under the
[boot] section:
[boot]
display.drv=vendor.drvUpon launching, USER.EXE and GDI.EXE read
this line, loaded the vendor-supplied driver into memory, and executed
its initialization code, successfully enabling Super VGA resolutions and
extended color palettes.