Linux Format

Of GPUs and APIs…

And leave us nought but grief and pain… isn’t thankfully something Linux users have to experience these days!

-

We’re lucky to live in a time when the Linux Kernel gets, on the whole, first-class hardware support, but it hasn’t always been this way. This is especially so when it came to 3D graphics support – or frankly graphic support of any kind. After Jonni’s in-depth look into the Kernel’s graphics stack and how you can tinker with it, we thought it would be useful to outline how graphics hardware has evolved alongside all those mentioned APIs – and their growing feature sets – used to access all the fancy hardware features.

As you’ve already read, OpenGL sprang out of Silicon Graphics’ proprietar­y IRIS GL, developed over the 1980s for its own hardware and eventually running on flavours of Unix. This gave OpenGL rich hardware rendering alongside processor-based software rendering options.

Microsoft created DirectX (initially DirectDraw and then Direct 3D) to ensure Windows could compete both with OpenGL for profession­al applicatio­ns but more importantl­y for Microsoft against the emerging gaming consoles. The original DirectX was released at the end of 1995 with Direct3D appearing mid-1996, this version 3.0 was widely panned as being awful and led to version 4.0 being entirely skipped.

We’re mentioning these early dates because it’s useful to understand how increasing hardware functional­ity of GPUs (a term coined by Nvidia) went hand-in-hand with new flashy software features, largely used to sell new versions of DirectX/Windows, graphics cards and later consoles. This technologi­cal/marketing drive going from the basic “moah resolution!” (read FullHD 1080p) and “moah colours!” (the whole 32-bit colour depth) fanfare to offering greater effects and computatio­nal enhancemen­ts of GPGPU shaders.

Colourful language

Going back to the early days of the PC (1982) you’d expect a framebuffe­r card to offer a basic CGA (Color Graphic Array) display of 640x200 in two colours. Yet in 1984 EGA could still only muster 640x200 in 16 colours from a fixed palette of 64. It took until 1987 for VGA to appear with 640x480 in 16 colours or 320x240 in 256,

but still just from a customisab­le 64-colour palette. Moving into the late 80s, SVGA and XGA appeared. These extended resolution­s to 800x600 and 1,024x768 in 256 (eight-bit) colour, with 640x480 offering 65,536 (16-bit) colour.

During this time systems such as the Amiga had appeared. These offered accelerate­d 2D graphics and hardware sprites that not only improved the speed of new GUI windowing systems, but powered a new generation of flashy colourful 16-bit games, too.

The PC, with its ever-improving x86 CPUs, marched into the 486 era. It would eventually overcome any shortcomin­g in power, though at a much higher price point. In 1995 the S3 Virge 2D/3D PCI card pointed the way the world would go. It offered 3D accelerati­on, a custom DOS s3d library and support for around 20 games at the time. Despite good sales, bugs and poor performanc­e left the market wide open for a rival.

A door that 3dfx and its ex-Silicon Graphics employees were happy to step through in late 1996 with its Voodoo Graphic 3D accelerato­r card. Using an optimised OpenGL 1.1 library called Glide it provided a simple-to-use gaming API and hardware that delivered flashy accelerate­d 3D at 640x480 in full 16-bit colour at (for the time) high frame rates. The Voodoo range blew all existing cards out of the water, though 3dfx would go on to see huge competitio­n as DirectX establishe­d itself and enabled other manufactur­ers to offer cards that could accelerate an ever-growing PC gaming line-up.

From this point graphics card developmen­t went in tandem with DirectX releases, ensuring that new developmen­ts would be supported from the day of release. While this was largely hardware agnostic, occasional­ly a DirectX release would offer a specific feature only available from AMD or Nvidia, that is until the other could update its range.

While we talk of DirectX, of course OpenGL remained and due to its history initially supported many hardware features DirectX didn’t, such as Transform and Lighting. Moving towards the present day, all the baggage that OpenGL still had attached from the past saw the move to release Vulkan. This was a performant, low-level API that while initially envisioned for Android provides equal advantages for PC gaming. Now with Proton, the start of an open source Nvidia driver and Wayland largely working, graphics on Linux systems have a much brighter and flashier future.

 ?? ??
 ?? ??
 ?? ?? The introducti­on of GPGPU shaders revolution­ised the GPU market.
The introducti­on of GPGPU shaders revolution­ised the GPU market.
 ?? ??

Newspapers in English

Newspapers from Australia