add some docs for agp_gart and intel_extreme drivers

Not a lot of info there yet, but it's a start.
This commit is contained in:
Adrien Destugues
2020-03-13 15:42:03 +01:00
parent 22ec64553f
commit 6a30d84f3c
2 changed files with 120 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
AGP (and PCI-express) Graphics Address Re-Mapping Table
=======================================================
The GART is an IO-MMU allowing the videocard and CPU to share some memory.
Either the CPU can access the video RAM directly ("aperture"), or the video
card can access the system RAM using DMA access.
The GART converts between physical addresses and virtual addresses on the
video card side. Of course, the CPU must then map these physical addresses
in its own address space to use them (using the MMU).
The GART works as you'd expect from an MMU. It has a page table (called GTT)
in RAM and walks it to figure out mappings. Since there cannot be page misses
(that would require exception handling on the GPU side), access to missing
pages are instead sent to a dedicated "scratch" page which is not used for
anything else.
Our driver implements the GART and GTT for Intel graphics card only, so far.
Since our videodrivers are only doing modesetting, they do not need much
support and other drivers implemented GTT management directly on their own
(it is usually enough to make the framebuffer accessible to the CPU). However,
this could be generalized into a more flexible iommu bus protocol.
@@ -0,0 +1,98 @@
Intel video hardware generations
================================
This file summarizes the different generations of Intel hardware, because the
naming is a bit inconsistent and it's hard to follow which is which sometimes.
The devices can be referred to by year of introduction, generation number,
chipset commercial number, or internal codenames.
Generation 1
============
These are the i740 and i810 devices handled by intel_810. No further info will
be provided here.
Generation 2 / 2002
============
i830, 845, 85x, 865
Generation 3 / 2004
============
This is the first generation to be documented at intellinuxgraphics.org.
Generation 2 devices are quite similar for the modesetting part, but not
identical.
GMA 900 (i915G)
GMA 950 (i945G)
GMA 3000 (946GZ, Q965, Q963)
GMA 3100 (G31, G33, Q33 et Q35)
GMA 3150 (Pineview for Atom CPUs)
Generation 4 / 2006
============
GMA X3000 (i965G)
GMA X3100 (i965GM)
GMA X3500 (G35)
GMA 4500 (Q43, Q45)
GMA 4500M / 4500HD (GL40, GS45, GM45, GM47)
GMA X4500 / X4500HD (G41, G43 (X4500), G45 (X4500HD))
Generation 5 / 2010
============
Westmere / Clarkdale, Arrandale / Iron Lake / Ibex Peak
Switches from the traditional northbridge / southbridge to the new
"platform control hub" design. Essentially, most of the northbridge functions
are now directly in the CPU package.
Generation 6 / 2011
============
Sandybridge / Cougar Point
The northbridge and CPU are now even on the same die.
Generation 7 / 2012
============
Ivy Bridge / Panther Point and Haswell / Lynx Point
A lot of the video output hardware is moved from the northbridge (CPU) to the
PCH. This makes sense because it allows to match the PCH chipset (soldered on
to the motherboard) with the video ports (also soldered there). Otherwise, the
CPU generation would define which ports are usable or not.
This impacts several things in the modesetting sequence, as well as the address
of the registers which are moved.
This is also the first generation to support 3 independant displays, which
also impacts the register layout in many places.
Generation 8 / 2013
============
Broadwell / Wildcat Point and Braswell
Generation 9 / 2015
============
Skylake / Sunrise Point, Apollo Lake, Kaby Lake / Union Point
Generation 10
=============
Cannon Point / Coffee Lake
Generation 11
=============
Ice Lake
Generation 12
=============
Tiger Lake