]> git.baikalelectronics.ru Git - kernel.git/commit
drm: Add support for two-ended allocation, v3
authorLauri Kasanen <cand@gmx.com>
Wed, 2 Apr 2014 17:03:57 +0000 (20:03 +0300)
committerDave Airlie <airlied@redhat.com>
Thu, 3 Apr 2014 23:28:14 +0000 (09:28 +1000)
commit29675de99ab8973dda9c51209136086eac4c9664
treeb7d6db268abfe08ff52742a47902474877bfa0a4
parent3db620d9e5d90069deb7b0d9f9a19ea0dfdde4bd
drm: Add support for two-ended allocation, v3

Clients like i915 need to segregate cache domains within the GTT which
can lead to small amounts of fragmentation. By allocating the uncached
buffers from the bottom and the cacheable buffers from the top, we can
reduce the amount of wasted space and also optimize allocation of the
mappable portion of the GTT to only those buffers that require CPU
access through the GTT.

For other drivers, allocating small bos from one end and large ones
from the other helps improve the quality of fragmentation.

Based on drm_mm work by Chris Wilson.

v3: Changed to use a TTM placement flag
v2: Updated kerneldoc

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Christian König <deathsimple@vodafone.de>
Signed-off-by: Lauri Kasanen <cand@gmx.com>
Signed-off-by: David Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_mm.c
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/ttm/ttm_bo_manager.c
include/drm/drm_mm.h
include/drm/ttm/ttm_placement.h