An Open Graphics Library® (OpenGL®) ATI™ driver is a software interface developed by ATI™ Technologies to be the bridge between the hardware of their graphics card and the abstract programming interface (API) for the OpenGL® library. There are different drivers for each operating system and different drivers for the various graphics card architectures that are sold. The OpenGL® ATI™ driver is specifically designed to make the best use of the graphics hardware while maintaining a compliant interface with the OpenGL® API. The driver includes custom OpenGL® extensions that can be used to access special features or accelerated functions of the graphics card consistently within the OpenGL® framework. Not all ATI™ graphics cards have their own custom OpenGL® ATI™ driver, meaning that some share a common driver, which can lead to problems when certain functions are requested that the hardware does not support.
One of the most important duties that the OpenGL® ATI™ driver performs is to access the hardware of the graphics card directly through whatever hardware interface it is using to communicate with the main computer system. This benefits programmers, because the manufacturer produces the drivers within exacting specifications for the best performance. Additionally, ATI™ works with the Architecture Review Board (ARB) that maintains the OpenGL® specification so, as new hardware is developed, OpenGL® can evolve simultaneously and support can be implemented from both sides.
Operations that use floating point numbers, for example, are moved through the OpenGL® ATI™ drivers and then handled by the graphics processing unit (GPU) on the graphics card, which has special registers to make the operations as fast as possible without using any of the main computers processing power. Many low-level operations dealing with fragments, vertices and matrices are passed directly to the GPU, in most cases, through the driver. This kind of functionality would either be impossible or very unreliable if the driver were not present.
Entire graphical procedures can be optimized through the hardware. For example the OpenGL® ATI™ driver can pass information to the GPU so anti-aliasing, blending and multisampling can be done straight in the hardware. The driver also provides access to temporary memory inside the card so texture images or arrays of vertices can be stored and operated on completely within the graphics hardware.
There are some complications when using an OpenGL® ATI™ driver. There are so many hardware models of ATI™ graphics cards that some drivers are shared and can cause compatibility problems with certain function calls. There also are some non-standard, non-OpenGL® programming steps that might need to be performed so the ATI™ card can enact its own optimizations. Creating a program that is optimized for an ATI™ graphics card also might mean making a program that is not compatible with another brand of card.