|
@@ -2128,11 +2128,11 @@ static void i915_gem_reset_fences(struct drm_device *dev)
|
|
|
for (i = 0; i < dev_priv->num_fence_regs; i++) {
|
|
|
struct drm_i915_fence_reg *reg = &dev_priv->fence_regs[i];
|
|
|
|
|
|
- i915_gem_write_fence(dev, i, NULL);
|
|
|
-
|
|
|
if (reg->obj)
|
|
|
i915_gem_object_fence_lost(reg->obj);
|
|
|
|
|
|
+ i915_gem_write_fence(dev, i, NULL);
|
|
|
+
|
|
|
reg->pin_count = 0;
|
|
|
reg->obj = NULL;
|
|
|
INIT_LIST_HEAD(®->lru_list);
|
|
@@ -2722,6 +2722,7 @@ int
|
|
|
i915_gem_object_put_fence(struct drm_i915_gem_object *obj)
|
|
|
{
|
|
|
struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
|
|
|
+ struct drm_i915_fence_reg *fence;
|
|
|
int ret;
|
|
|
|
|
|
ret = i915_gem_object_wait_fence(obj);
|
|
@@ -2731,10 +2732,10 @@ i915_gem_object_put_fence(struct drm_i915_gem_object *obj)
|
|
|
if (obj->fence_reg == I915_FENCE_REG_NONE)
|
|
|
return 0;
|
|
|
|
|
|
- i915_gem_object_update_fence(obj,
|
|
|
- &dev_priv->fence_regs[obj->fence_reg],
|
|
|
- false);
|
|
|
+ fence = &dev_priv->fence_regs[obj->fence_reg];
|
|
|
+
|
|
|
i915_gem_object_fence_lost(obj);
|
|
|
+ i915_gem_object_update_fence(obj, fence, false);
|
|
|
|
|
|
return 0;
|
|
|
}
|