Graphics Execution Manager
||It has been suggested that this article be merged into Direct Rendering Manager. (Discuss) Proposed since August 2014.|
GEM manages graphics memory (which means dealing with non-uniform memory access (NUMA) on modern graphics chipsets) and controls the execution context for graphics-related code. They allow multiple applications to share graphics device resources without the need to store and restore the entire graphics card state between changes. GEM ensures conflict-free sharing of data between applications by managing the memory synchronization. It uses many existing kernel subsystems for its operations and hence has a very modest code size.
GEM is included in the Linux kernel from version 2.6.28 for use by drivers for Intel graphics hardware. Graphics device drivers for AMD's Radeon and VIA S3 chipsets now use a "GEM-ified TTM manager", which provides the same interface as GEM but uses Translation Table Maps (TTM) internally. GEM is also designed to be compatible with "*BSD" kernels.
However, GEM caused problems for non-Intel developers and collided with current X.Org Server development (notably DRI2 and new EXA acceleration architecture), leading some developers to use a "GEM-ified TTM manager".
DRI2 introduced a technique called Global GEM Handlers, this has some serious security implications and is going to be replaced in DRI3 with a passing of DMA_BUF file descriptors that point to GEM objects instead.
- Michael Larabel (June 12, 2008). "Intel's GEM Merging To Master". Phoronix.
- Michael Larabel (August 26, 2008). "A GEM-ified TTM Manager For Radeon". Phoronix.
- Michael Larabel (June 10, 2009). "TTM Memory Manager Gets Ready For Release". Phoronix.
- Keith Packard (May 27, 2008). "GEM - the Graphics Execution Manager". LWN.net.
- Michael Larabel (May 14, 2008). "Intel's Graphics Execution Manager". Phoronix.
- Keith Packard. "Future directions for the X Window System". linux.conf.au.
- GEM update by Keith Packard, 4 Jul 2008
- TTM entry at X.org's wiki
- GEM - the Graphics Execution Manager - detailed GEM information by Keith Packard
- Memory management for graphics processors – lwn.net article by Jonathan Corbet, November 6, 2007
- i915/GEM Crashcourse by Daniel Vetter