aboutsummaryrefslogtreecommitdiff
path: root/intel
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-12-01 23:01:34 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2009-12-05 11:03:05 +0000
commit9707733a130098a7d9959e72ebd782d8119a23d3 (patch)
tree8a093da56598ae386af2335eb91d639c8c291a97 /intel
parent6f1eba0548cd6a96e91a4e8be7b91ba6a936eb98 (diff)
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.c12
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;
}