diff options
author | Thomas Hellstrom <thomas-at-tungstengraphics-dot-com> | 2007-09-25 18:03:31 +0200 |
---|---|---|
committer | Thomas Hellstrom <thomas-at-tungstengraphics-dot-com> | 2007-09-25 18:03:31 +0200 |
commit | c4b3a0f602abd02038f7e5dd45fcfb2df4b5fcfa (patch) | |
tree | 803662fb4d1eadb850d9ed2a622fe55d1ec97574 /linux-core/drm_bo.c | |
parent | 0774090d5b7d3eba734086b437021039bc19c365 (diff) | |
parent | 03c47f1420bf17a1e0f2b86be500656ae5a4c95b (diff) |
Merge branch 'master' into pre-superioctl-branch
Conflicts:
linux-core/drm_bo.c
linux-core/drm_fence.c
linux-core/drm_objects.h
shared-core/drm.h
Diffstat (limited to 'linux-core/drm_bo.c')
-rw-r--r-- | linux-core/drm_bo.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/linux-core/drm_bo.c b/linux-core/drm_bo.c index 49a57a85..bcbcc662 100644 --- a/linux-core/drm_bo.c +++ b/linux-core/drm_bo.c @@ -588,7 +588,7 @@ int drm_fence_buffer_objects(struct drm_device *dev, list = &bm->unfenced; if (fence) - fence_class = fence->class; + fence_class = fence->fence_class; list_for_each_entry(entry, list, lru) { BUG_ON(!(entry->priv_flags & _DRM_BO_FLAG_UNFENCED)); @@ -612,7 +612,8 @@ int drm_fence_buffer_objects(struct drm_device *dev, } if (fence) { - if ((fence_type & fence->type) != fence_type) { + if ((fence_type & fence->type) != fence_type || + (fence->fence_class != fence_class)) { DRM_ERROR("Given fence doesn't match buffers " "on unfenced list.\n"); ret = -EINVAL; @@ -638,7 +639,8 @@ int drm_fence_buffer_objects(struct drm_device *dev, mutex_lock(&entry->mutex); mutex_lock(&dev->struct_mutex); list_del_init(l); - if (entry->priv_flags & _DRM_BO_FLAG_UNFENCED) { + if (entry->priv_flags & _DRM_BO_FLAG_UNFENCED && + entry->fence_class == fence_class) { count++; if (entry->fence) drm_fence_usage_deref_locked(&entry->fence); @@ -2055,7 +2057,7 @@ drm_bo_set_pin(struct drm_device *dev, struct drm_buffer_object *bo, /* Validate the buffer into its pinned location, with no * pending fence. */ - ret = drm_buffer_object_validate(bo, 0, 0, 0); + ret = drm_buffer_object_validate(bo, bo->fence_class, 0, 0); if (ret) { mutex_unlock(&bo->mutex); return ret; |