drm: Add the TTM GPU memory manager subsystem.
authorThomas Hellstrom <thellstrom@vmware.com>
Wed, 10 Jun 2009 13:20:19 +0000 (15:20 +0200)
committerDave Airlie <airlied@redhat.com>
Sun, 14 Jun 2009 23:37:57 +0000 (09:37 +1000)
commitba4e7d973dd09b66912ac4c0856add8b0703a997
tree32a87edb83a427ffd22645c5f77e6cec8be4e719
parente6c03c5b40314d787f7053f631594d6b1bd609e8
drm: Add the TTM GPU memory manager subsystem.

TTM is a GPU memory manager subsystem designed for use with GPU
devices with various memory types (On-card VRAM, AGP,
PCI apertures etc.). It's essentially a helper library that assists
the DRM driver in creating and managing persistent buffer objects.

TTM manages placement of data and CPU map setup and teardown on
data movement. It can also optionally manage synchronization of
data on a per-buffer-object level.

TTM takes care to provide an always valid virtual user-space address
to a buffer object which makes user-space sub-allocation of
big buffer objects feasible.

TTM uses a fine-grained per buffer-object locking scheme, taking
care to release all relevant locks when waiting for the GPU.
Although this implies some locking overhead, it's probably a big
win for devices with multiple command submission mechanisms, since
the lock contention will be minimal.

TTM can be used with whatever user-space interface the driver
chooses, including GEM. It's used by the upcoming Radeon KMS DRM driver
and is also the GPU memory management core of various new experimental
DRM drivers.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
16 files changed:
drivers/gpu/drm/Kconfig
drivers/gpu/drm/Makefile
drivers/gpu/drm/ttm/Makefile [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_agp_backend.c [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_bo.c [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_bo_util.c [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_bo_vm.c [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_global.c [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_memory.c [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_module.c [new file with mode: 0644]
drivers/gpu/drm/ttm/ttm_tt.c [new file with mode: 0644]
include/drm/ttm/ttm_bo_api.h [new file with mode: 0644]
include/drm/ttm/ttm_bo_driver.h [new file with mode: 0644]
include/drm/ttm/ttm_memory.h [new file with mode: 0644]
include/drm/ttm/ttm_module.h [new file with mode: 0644]
include/drm/ttm/ttm_placement.h [new file with mode: 0644]