xref: /haiku/docs/develop/busses/agp_gart/ReadMe.rst (revision 3d4afef9cba2f328e238089d4609d00d4b1524f3)
1AGP (and PCI-express) Graphics Address Re-Mapping Table
2=======================================================
3
4The GART is an IO-MMU allowing the videocard and CPU to share some
5memory. Either the CPU can access the video RAM directly (“aperture”),
6or the video card can access the system RAM using DMA access.
7
8The GART converts between physical addresses and virtual addresses on
9the video card side. Of course, the CPU must then map these physical
10addresses in its own address space to use them (using the MMU).
11
12The GART works as you’d expect from an MMU. It has a page table (called
13GTT) in RAM and walks it to figure out mappings. Since there cannot be
14page misses (that would require exception handling on the GPU side),
15access to missing pages are instead sent to a dedicated “scratch” page
16which is not used for anything else.
17
18Our driver implements the GART and GTT for Intel graphics card only, so
19far. Since our videodrivers are only doing modesetting, they do not need
20much support and other drivers implemented GTT management directly on
21their own (it is usually enough to make the framebuffer accessible to
22the CPU). However, this could be generalized into a more flexible iommu
23bus protocol.
24