summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem_stolen.c
diff options
context:
space:
mode:
authorDavid Herrmann2013-07-27 13:36:27 +0200
committerDave Airlie2013-08-07 02:08:58 +0200
commit31e5d7c67bd492fd0b2988440e21e31809c7c9af (patch)
tree833339e49a2d739068e92f01d2f47c5e9cc6d5d0 /drivers/gpu/drm/i915/i915_gem_stolen.c
parentdrm: Apply kref_put_mutex() optimisations to drm_gem_object_unreference_unloc... (diff)
downloadkernel-qcow2-linux-31e5d7c67bd492fd0b2988440e21e31809c7c9af.tar.gz
kernel-qcow2-linux-31e5d7c67bd492fd0b2988440e21e31809c7c9af.tar.xz
kernel-qcow2-linux-31e5d7c67bd492fd0b2988440e21e31809c7c9af.zip
drm/mm: add "best_match" flag to drm_mm_insert_node()
Add a "best_match" flag similar to the drm_mm_search_*() helpers so we can convert TTM to use them in follow up patches. We can also inline the non-generic helpers and move them into the header to allow compile-time optimizations. To make calls to drm_mm_{search,insert}_node() more readable, this converts the boolean argument to a flagset. There are pending patches that add additional flags for top-down allocators and more. v2: - use flag parameter instead of boolean "best_match" - convert *_search_free() helpers to also use flags argument Signed-off-by: David Herrmann <dh.herrmann@gmail.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_stolen.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem_stolen.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
index 55218332e625..e3551706f4ff 100644
--- a/drivers/gpu/drm/i915/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
@@ -115,10 +115,12 @@ static int i915_setup_compression(struct drm_device *dev, int size)
/* Try to over-allocate to reduce reallocations and fragmentation */
compressed_fb = drm_mm_search_free(&dev_priv->mm.stolen,
- size <<= 1, 4096, 0);
+ size <<= 1, 4096,
+ DRM_MM_SEARCH_DEFAULT);
if (!compressed_fb)
compressed_fb = drm_mm_search_free(&dev_priv->mm.stolen,
- size >>= 1, 4096, 0);
+ size >>= 1, 4096,
+ DRM_MM_SEARCH_DEFAULT);
if (compressed_fb)
compressed_fb = drm_mm_get_block(compressed_fb, size, 4096);
if (!compressed_fb)
@@ -130,7 +132,8 @@ static int i915_setup_compression(struct drm_device *dev, int size)
I915_WRITE(DPFC_CB_BASE, compressed_fb->start);
} else {
compressed_llb = drm_mm_search_free(&dev_priv->mm.stolen,
- 4096, 4096, 0);
+ 4096, 4096,
+ DRM_MM_SEARCH_DEFAULT);
if (compressed_llb)
compressed_llb = drm_mm_get_block(compressed_llb,
4096, 4096);
@@ -328,7 +331,8 @@ i915_gem_object_create_stolen(struct drm_device *dev, u32 size)
if (size == 0)
return NULL;
- stolen = drm_mm_search_free(&dev_priv->mm.stolen, size, 4096, 0);
+ stolen = drm_mm_search_free(&dev_priv->mm.stolen, size, 4096,
+ DRM_MM_SEARCH_DEFAULT);
if (stolen)
stolen = drm_mm_get_block(stolen, size, 4096);
if (stolen == NULL)