Graphics Execution Manager
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. Drivers for ATI Radeon and VIA S3 chipsets now use a "GEM-ified TTM manager", which provides the same interface as GEM but uses 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 the successor to DRI2 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.