Future PPGTT [part 4] (Dynamic page table allocations, 64 bit address space, GPU “mirroring”, and yeah, something about relocs too)

This entry is part 3 of 4 in the series i915 object mapping

This entry is part 3 of 4 in the series i915 object mapping Preface GPU mirroring provides a mechanism to have the CPU and the GPU use the same virtual address for the same physical (or IOMMU) page. An immediate result of this is that relocations can be eliminated. There are a few derivative benefits […]

True PPGTT [part 3]

This entry is part 4 of 4 in the series i915 object mapping

This entry is part 4 of 4 in the series i915 object mapping EDIT1: I forgot to include a diagram I did of the software state machine for some presentation. I long lost the SVG, and it got kind of messed up, but it’s there at the bottom. EDIT2: (Apologies to aggregators) Grammar fixes. Fixed […]

Aliasing PPGTT [part 2]

This entry is part 2 of 4 in the series i915 object mapping

This entry is part 2 of 4 in the series i915 object mapping Overview Pictures are the right way to start. There is exactly one thing to get from the above drawing, everything else is just to make it as close to fact as possible. The aliasing PPGTT (aliases|shadows|mimics) the global GTT. The wordy overview […]

The Global GTT [Part 1]

This entry is part 1 of 4 in the series i915 object mapping

This entry is part 1 of 4 in the series i915 object mapping Global Graphics Translation Tables Here goes the basics of how the GEN GPU interacts with memory. It will be focused on the lowest levels of the i915 driver, and the hardware interaction. My hope is that by going through this in excruciating […]