diff options
author | Dave Airlie <airlied@optimus.(none)> | 2007-10-25 16:53:18 +1000 |
---|---|---|
committer | Dave Airlie <airlied@optimus.(none)> | 2007-10-25 16:53:18 +1000 |
commit | a70fe82baf0ca2be98e02680cff489f90b0ea3de (patch) | |
tree | 5318423fc677397e815bb0223981da6547b2e985 | |
parent | c5f158abbe97492f56eb60ac54679945e9d6ddae (diff) |
i915: relocate buffers before validation add memory barrier between two
-rw-r--r-- | shared-core/i915_dma.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c index acbb41dc..1e15e7ce 100644 --- a/shared-core/i915_dma.c +++ b/shared-core/i915_dma.c @@ -964,6 +964,13 @@ int i915_validate_buffer_list(struct drm_file *file_priv, buf_handle = req->bo_req.handle; buf_reloc_handle = arg.reloc_handle; + if (buf_reloc_handle) { + ret = i915_exec_reloc(file_priv, buf_handle, buf_reloc_handle, buffers, buf_count); + if (ret) + goto out_err; + DRM_MEMORYBARRIER(); + } + rep.ret = drm_bo_handle_validate(file_priv, req->bo_req.handle, req->bo_req.fence_class, req->bo_req.flags, @@ -988,11 +995,6 @@ int i915_validate_buffer_list(struct drm_file *file_priv, data = next; buf_count++; - if (buf_reloc_handle) { - ret = i915_exec_reloc(file_priv, buf_handle, buf_reloc_handle, buffers, buf_count); - if (ret) - goto out_err; - } } while (next != 0); *num_buffers = buf_count; return 0; |