Graphics address remapping table
IOMMU enabling DMA from graphics cards to host memory.
The graphics address remapping table (GART), also called the graphics aperture remapping table or graphics translation table (GTT), functions as an I/O memory management unit (IOMMU) for AGP and PCI Express graphics cards. It gives the graphics card direct memory access to the host system’s main memory, enabling it to load buffers containing textures, polygon meshes, and other data. AMD later applied the same concept to I/O virtualization for other devices, such as disk controllers and network adapters.
The GART facilitates data exchange between main memory and video memory by loading buffers (via paging or swapping) of textures, polygon meshes, and other data. It can also expand the effective video memory for systems that rely solely on integrated or shared graphics—like Intel HD Graphics processors—where no discrete or built-in graphics processor exists. However, this memory expansion comes with a system-wide trade-off: any memory pre-allocated for the GART becomes pooled and cannot be used for anything other than graphics memory and display rendering.
With PCI Express, the GART evolved into the GTT (Graphics Translation Table), which acts as a buffer or cache between system memory and the graphics card. In PCI Express, the GPU driver can change the size of the GTT buffer.
Operating system support includes Windows (from Windows 95 OSR2 for AGP GART, and from Windows XP SP2 and Windows Vista for GTT), Linux (where Jeff Hartmann was the primary maintainer of the agpgart driver, originating from Brian Paul’s Utah GLX accelerated Mesa 3D project, with Dave Jones reworking it for 2.6.x kernels), FreeBSD (where the agpgart driver appeared in version 4.1), and Solaris (introduced in the Solaris Express Developer Edition 7/05 release).
- Also known as
- graphics aperture remapping table, graphics translation table (GTT)
- Used by
- AGP and PCI Express graphics cards
- Operating system support windows
- Windows 95 OSR2 (AGP GART), Windows XP SP2 and Windows Vista (GTT)
- Linux maintainer
- Jeff Hartmann (primary maintainer of agpgart driver)
- Linux initial project
- Brian Paul's Utah GLX accelerated Mesa 3D driver project
- Freebsd introduced
- FreeBSD 4.1 release
- Solaris introduced
- Solaris Express Developer Edition 7/05 release
Lore & Background
The GART is used as a means of data exchange between main memory and video memory, through which buffers (i.e. paging/swapping) of textures, polygon meshes and other data are loaded. It can also be used to expand the amount of video memory available for systems with only integrated or shared graphics, such as Intel HD Graphics processors. However, this type of memory expansion remapping has a caveat: any GART pre-allocated memory becomes pooled and cannot be utilized for any other purposes but graphics memory and display rendering. Since PCI Express, the GART is extended to the GTT, which acts as a buffer or cache between system memory and graphics card, and in PCI Express, the GTT buffer size is changeable by the GPU driver.
Reader's Guide
The GART's significance lies in enabling efficient data exchange between system memory and graphics hardware, allowing graphics cards to directly access host memory for textures and polygon meshes. This mechanism was foundational for AGP and later PCI Express graphics, and AMD extended it for I/O virtualization with other peripherals like disk controllers and network adapters. The GART also allowed systems with integrated graphics (e.g., Intel HD Graphics) to expand video memory, though at the cost of reserving system memory exclusively for graphics. Operating system support was gradually added: Windows from 95 OSR2 through Vista, Linux via the agpgart driver maintained by Jeff Hartmann and later reworked by Dave Jones, FreeBSD from its 4.1 release, and Solaris from the 7/05 Express Developer Edition. The transition to PCI Express introduced the GTT with a driver-changeable buffer size, reflecting the evolution of graphics memory management.
Did You Know?
- The GART is also known as the graphics aperture remapping table or graphics translation table (GTT).
- AMD reused the GART mechanism for I/O virtualization with disk controllers and network adapters.
- The Linux agpgart driver began as part of Brian Paul's Utah GLX accelerated Mesa 3D driver project.
Core Function and Architecture
The Graphics Address Remapping Table—commonly abbreviated as GART, and also referred to as the graphics aperture remapping table or graphics translation table—serves as a dedicated I/O memory management unit (IOMMU) purpose-built for graphics hardware. It operates alongside both Accelerated Graphics Port (AGP) and PCI Express (PCIe) graphics cards, providing the critical pathway through which a GPU performs direct memory access (DMA) into the host system's main memory. Through this mechanism, the graphics processor loads and exchanges buffers containing textures, polygon meshes, and other rendering data between system memory and video memory. In essence, GART acts as the translation layer that lets a graphics card read and write to addresses it would not otherwise be able to reach, making seamless data paging and swapping possible during real-time rendering workloads.
Memory Expansion and System-Wide Trade-offs
Beyond its primary role as a data-exchange conduit, the GART mechanism can be leveraged to effectively expand the pool of video memory available to systems that rely on integrated or shared graphics processors—such as Intel HD Graphics—rather than a discrete graphics card. In this configuration, the remapping table carves out a portion of the host's main memory and presents it to the GPU as additional framebuffer space. However, this approach carries a significant system-wide caveat: once memory is pre-allocated through the GART for graphics purposes, it becomes pooled and is no longer available for any other use. The entire operating system and all other applications must operate with that memory permanently reserved for display rendering and graphics workloads, meaning the trade-off is not merely a performance consideration but a hard reduction in usable system RAM.
Evolution from AGP to PCIe and Broader I/O Virtualization
With the arrival of PCI Express, the original GART concept evolved into the Graphics Translation Table (GTT), which functions as a buffer or cache sitting between system memory and the graphics card. A notable distinction in the PCIe era is that the GTT buffer size is no longer fixed; instead, it can be adjusted dynamically by the GPU driver, giving system builders and software developers finer control over how much memory is dedicated to graphics translation. The GART/GTT mechanism also proved influential beyond the graphics domain. AMD later repurposed the same underlying IOMMU architecture for broader I/O virtualization, extending its use to other peripheral devices such as disk controllers and network adapters. This reuse demonstrated that the address-remapping principles originally designed for accelerating texture and mesh transfers could serve as a general-purpose framework for managing device-to-memory access across a wide range of hardware components.
Cross-Platform Operating System Support
The GART and its successor GTT required dedicated driver support across the major operating systems of their era. On Windows, AGP GART support first appeared in Windows 95 OSR2, while GTT support was introduced later with Windows XP Service Pack 2 and Windows Vista. In the Linux world, the agpgart driver originated within Brian Paul's Utah GLX accelerated Mesa 3D driver project, with Jeff Hartmann serving as its primary maintainer. The developers initially targeted Linux 2.4.x kernels, though patches were also made available for older 2.2.x releases. Dave Jones subsequently undertook a major rework of the agpgart driver for the Linux 2.6.x kernel series, with further contributions from Hartmann. FreeBSD shipped its agpgart driver in the 4.1 release, and Solaris gained AGP GART support through the Solaris Express Developer Edition, specifically in its July 2005 release.
Frequently Asked Questions
What is the Graphics Address Remapping Table (GART)?
GART is an I/O memory management unit (IOMMU) purpose-built for graphics cards, also referred to as the graphics aperture remapping table or graphics translation table (GTT). It sits between the GPU and the host's main memory to govern how the card reads and writes system RAM.
What does GART actually do for a GPU in practice?
It grants the graphics card direct memory access to the host system's main memory so the card can load texture buffers, polygon meshes, and other working data on demand. This makes the data exchange between video memory and system RAM far more efficient than routing everything through the CPU.
Which operating systems and hardware generations support GART?
On Windows, AGP-based GART support landed with Windows 95 OSR2, while the broader GTT implementation arrived in Windows XP SP2 and Windows Vista. On Linux the agpgart driver is primarily maintained by Jeff Hartmann, the concept traces back to Brian Paul's Utah GLX accelerated Mesa 3D driver project, and FreeBSD shipped support starting with release 4.1.
Why is GART important for graphics performance?
Without GART, a GPU would be confined to its own small onboard video memory for all working data. By enabling DMA into the host's main memory, GART lets the card stream large texture and geometry buffers as needed, which is essential for modern 3D workloads.
Did the GART concept influence hardware beyond graphics cards?
Yes—AMD later adapted the same remapping-table idea for I/O virtualization, extending it to other peripherals such as disk controllers and network adapters. This shows the GART architecture became a broader template for managing direct memory access across multiple device types.
More in Graphics Hardware 1-24
Spotted an error? Know more?
Reader corrections go straight into our review queue. Suggest an edit · How this site is sourced
