diff options
| author | Tvrtko Ursulin <[email protected]> | 2015-01-07 17:32:39 +0000 |
|---|---|---|
| committer | Daniel Vetter <[email protected]> | 2015-01-08 09:34:58 +0100 |
| commit | 7226572d8ed48f7e1aa9de5383d919490d6e9a0c (patch) | |
| tree | c2a162ddb47f7079316fcadaaf94fb9b85e3081f /drivers/gpu/drm/i915/i915_gem_execbuffer.c | |
| parent | c9dc0f35986c0e2fc81e0b71ddc7e3adad733829 (diff) | |
drm/i915: Reserve shadow batch VMA analogue to others
If not pinned VMA can become an eviction target just before it needs to be
executed which breaks the internal object lifetime rules.
Signed-off-by: Tvrtko Ursulin <[email protected]>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87399
Signed-off-by: Daniel Vetter <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_execbuffer.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_execbuffer.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index 8330660af978..6c21c59ed71d 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -1084,6 +1084,7 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *ring, { struct drm_i915_private *dev_priv = to_i915(batch_obj->base.dev); struct drm_i915_gem_object *shadow_batch_obj; + bool need_reloc = false; int ret; shadow_batch_obj = i915_gem_batch_pool_get(&dev_priv->mm.batch_pool, @@ -1109,6 +1110,7 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *ring, vma->exec_entry = shadow_exec_entry; vma->exec_entry->flags = __EXEC_OBJECT_PURGEABLE; drm_gem_object_reference(&shadow_batch_obj->base); + i915_gem_execbuffer_reserve_vma(vma, ring, &need_reloc); list_add_tail(&vma->exec_list, &eb->vmas); shadow_batch_obj->base.pending_read_domains = |