summaryrefslogtreecommitdiff
path: root/linux-core/drm_bo.c
diff options
context:
space:
mode:
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2007-09-25 18:03:31 +0200
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2007-09-25 18:03:31 +0200
commitc4b3a0f602abd02038f7e5dd45fcfb2df4b5fcfa (patch)
tree803662fb4d1eadb850d9ed2a622fe55d1ec97574 /linux-core/drm_bo.c
parent0774090d5b7d3eba734086b437021039bc19c365 (diff)
parent03c47f1420bf17a1e0f2b86be500656ae5a4c95b (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.c10
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;