diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-12-01 23:01:34 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-12-05 11:03:05 +0000 |
commit | 9707733a130098a7d9959e72ebd782d8119a23d3 (patch) | |
tree | 8a093da56598ae386af2335eb91d639c8c291a97 /intel | |
parent | 6f1eba0548cd6a96e91a4e8be7b91ba6a936eb98 (diff) | |
download | libdrm-9707733a130098a7d9959e72ebd782d8119a23d3.tar.gz libdrm-9707733a130098a7d9959e72ebd782d8119a23d3.tar.bz2 libdrm-9707733a130098a7d9959e72ebd782d8119a23d3.zip |
intel: Expect caller to guarantee thread-safety of bo during reloc
This removes the foremost prolific user of mutexes in libdrm_intel.so.
The other uses of the bufmgr_gem->mutex to serial access to individual
bos are currently required by Mesa, and are far less frequent.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[anholt: This chunk looks good...]
Acked-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'intel')
-rw-r--r-- | intel/intel_bufmgr_gem.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c index 571ab5c8..5b76340a 100644 --- a/intel/intel_bufmgr_gem.c +++ b/intel/intel_bufmgr_gem.c @@ -1201,23 +1201,17 @@ drm_intel_gem_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset, drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo; drm_intel_bo_gem *target_bo_gem = (drm_intel_bo_gem *) target_bo; - pthread_mutex_lock(&bufmgr_gem->lock); - if (bo_gem->has_error) { - pthread_mutex_unlock(&bufmgr_gem->lock); + if (bo_gem->has_error) return -ENOMEM; - } if (target_bo_gem->has_error) { bo_gem->has_error = 1; - pthread_mutex_unlock(&bufmgr_gem->lock); return -ENOMEM; } /* Create a new relocation list if needed */ - if (bo_gem->relocs == NULL && drm_intel_setup_reloc_list(bo)) { - pthread_mutex_unlock(&bufmgr_gem->lock); + if (bo_gem->relocs == NULL && drm_intel_setup_reloc_list(bo)) return -ENOMEM; - } /* Check overflow */ assert(bo_gem->reloc_count < bufmgr_gem->max_relocs); @@ -1249,8 +1243,6 @@ drm_intel_gem_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset, bo_gem->reloc_count++; - pthread_mutex_unlock(&bufmgr_gem->lock); - return 0; } |