| From 8af30fecb75e77ff67b308c50d66baf278da2dd1 Mon Sep 17 00:00:00 2001 |
| From: Ben Widawsky <benjamin.widawsky@intel.com> |
| Date: Tue, 13 Aug 2013 18:09:07 -0700 |
| Subject: drm/i915: cleanup map&fence in bind |
| |
| Cleanup the map and fenceable setting during bind to make more sense, |
| and not check i915_is_ggtt() 2 unnecessary times |
| |
| v2: Move the bools into the if block (Chris) - There are ways to tidy |
| this function (fence calculations for instance) even further, but they |
| are quite invasive, so I am punting on those unless specifically asked. |
| |
| v3: Add newline between variable declaration and logic (Chris) |
| |
| Recommended-by: Chris Wilson <chris@chris-wilson.co.uk> |
| Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> |
| Signed-off-by: Ben Widawsky <ben@bwidawsk.net> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit 4bd561b3e8d7d2407cf465cb79c51a1ff1264343) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/i915_gem.c | 19 +++++++++---------- |
| 1 file changed, 9 insertions(+), 10 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c |
| index 4a58ead0ba76..01cc016e8d52 100644 |
| --- a/drivers/gpu/drm/i915/i915_gem.c |
| +++ b/drivers/gpu/drm/i915/i915_gem.c |
| @@ -3106,7 +3106,6 @@ i915_gem_object_bind_to_vm(struct drm_i915_gem_object *obj, |
| struct drm_device *dev = obj->base.dev; |
| drm_i915_private_t *dev_priv = dev->dev_private; |
| u32 size, fence_size, fence_alignment, unfenced_alignment; |
| - bool mappable, fenceable; |
| size_t gtt_max = |
| map_and_fenceable ? dev_priv->gtt.mappable_end : vm->total; |
| struct i915_vma *vma; |
| @@ -3191,18 +3190,18 @@ search_free: |
| list_move_tail(&obj->global_list, &dev_priv->mm.bound_list); |
| list_add_tail(&vma->mm_list, &vm->inactive_list); |
| |
| - fenceable = |
| - i915_is_ggtt(vm) && |
| - i915_gem_obj_ggtt_size(obj) == fence_size && |
| - (i915_gem_obj_ggtt_offset(obj) & (fence_alignment - 1)) == 0; |
| + if (i915_is_ggtt(vm)) { |
| + bool mappable, fenceable; |
| |
| - mappable = |
| - i915_is_ggtt(vm) && |
| - vma->node.start + obj->base.size <= dev_priv->gtt.mappable_end; |
| + fenceable = |
| + i915_gem_obj_ggtt_size(obj) == fence_size && |
| + (i915_gem_obj_ggtt_offset(obj) & (fence_alignment - 1)) == 0; |
| + |
| + mappable = |
| + vma->node.start + obj->base.size <= dev_priv->gtt.mappable_end; |
| |
| - /* Map and fenceable only changes if the VM is the global GGTT */ |
| - if (i915_is_ggtt(vm)) |
| obj->map_and_fenceable = mappable && fenceable; |
| + } |
| |
| WARN_ON(map_and_fenceable && !obj->map_and_fenceable); |
| |
| -- |
| 1.8.5.rc3 |
| |