As far as I know, there were many video cards which offered 2D acceleration (tasks like line drawing, colorfill, bitblit etc.) on Windows as early as Windows 3.1. Did they have any sort of standardised software interface?

New contributor
CompaqSysPro is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
  • 7
    From the application programmer's standpoint, GDI was the standardised API for performing tasks like line drawing, color filling and blitting. GDI also had a "back-end" interface to a video card driver, and if the video card driver supported hardware acceleration, GDI would take advantage of that. – DmytroL Jul 21 at 6:24

In Windows up to version 3.x included (and early versions of OS/2), the only interface available for graphics was the Graphics Device Interface. This defines a large number of 2D graphics primitives, from simple line-drawing to font rendering. Graphics drivers implemented the GDI Device Driver Interface, with primitives matching the GDI primitives; this was the shared interface. Microsoft provided a reference implementation which most (perhaps even all) drivers were based on; this included implementations of all the primitives, ultimately boiling down to point-plotting etc.

Early accelerators were sold as “Windows accelerators” and provided better versions of various GDI DDI primitives, e.g. line-drawing, rectangles, polyfills, font rendering in some cases (e.g. with hardware caches), hardware mouse cursors, etc. Essentially, this involved moving primitives, or parts of primitives, from the drivers into hardware. Benchmarks at the time were not based on real-world scenarios so real-world performance wasn’t necessarily improved all that much.

Later on, acceleration focused on primitives which were more useful to accelerate, in particular for games, instead of trying to tick all the boxes on a GDI checklist. The main desktop-relevant optimisation was hardware BitBlt (see also WinG, which provided fast bitblts, albeit not necessarily hardware-accelerated).

Windows 95 introduced mini-drivers based on a DIB engine: instead of implementing everything, drivers could delegate functions to the generic DIB engine (the Windows 95 DDK documents this). Acceleration efforts switched to DirectX, in 2D and 3D, with primitives designed with optimisation in mind. Comparing Direct2D and GDI Hardware Acceleration gives a good overview (albeit written long after Windows 3 lost its relevance).

  • Windows 3.1 also had WinG, that allowed a faster path to video memory. I don't think it actually used any hardware acceleration but I guess it is at least worth mentioning. – Diego Sánchez Jul 21 at 17:35
  • "Windows 95 introduced mini-drivers based on a DIB engine" – Could you expand on this a bit or give a link to more info? – Alex Hajnal Jul 21 at 17:53
  • @Diego it is, thanks; I’ve added it to the answer. – Stephen Kitt Jul 21 at 18:36
  • @Alex the details are in the Windows 95 DDK; I can’t find it in a browser-friendly format online. It’s also mentioned briefly in the OS/2 Museum link at the start of the answer. I’ve added a little more information. – Stephen Kitt Jul 21 at 18:38
  • 2
    @RonJohn, a lot of the stuff that gets accelerated is either already extremely fast (eg. drawing horizontal lines) or not used very often (eg. fancy fill patterns of complex shapes). – Mark Jul 22 at 1:01

Your Answer

CompaqSysPro is a new contributor. Be nice, and check out our Code of Conduct.

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.