diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_tiling.c | 6 |
3 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 9d6889799d01..d08752875885 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -673,6 +673,7 @@ void i915_gem_free_object(struct drm_gem_object *obj); | |||
| 673 | int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment); | 673 | int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment); |
| 674 | void i915_gem_object_unpin(struct drm_gem_object *obj); | 674 | void i915_gem_object_unpin(struct drm_gem_object *obj); |
| 675 | int i915_gem_object_unbind(struct drm_gem_object *obj); | 675 | int i915_gem_object_unbind(struct drm_gem_object *obj); |
| 676 | void i915_gem_release_mmap(struct drm_gem_object *obj); | ||
| 676 | void i915_gem_lastclose(struct drm_device *dev); | 677 | void i915_gem_lastclose(struct drm_device *dev); |
| 677 | uint32_t i915_get_gem_seqno(struct drm_device *dev); | 678 | uint32_t i915_get_gem_seqno(struct drm_device *dev); |
| 678 | int i915_gem_object_get_fence_reg(struct drm_gem_object *obj); | 679 | int i915_gem_object_get_fence_reg(struct drm_gem_object *obj); |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 08d8e5d85955..5bf420378b6d 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -1266,7 +1266,7 @@ out_free_list: | |||
| 1266 | * mapping will then trigger a page fault on the next user access, allowing | 1266 | * mapping will then trigger a page fault on the next user access, allowing |
| 1267 | * fixup by i915_gem_fault(). | 1267 | * fixup by i915_gem_fault(). |
| 1268 | */ | 1268 | */ |
| 1269 | static void | 1269 | void |
| 1270 | i915_gem_release_mmap(struct drm_gem_object *obj) | 1270 | i915_gem_release_mmap(struct drm_gem_object *obj) |
| 1271 | { | 1271 | { |
| 1272 | struct drm_device *dev = obj->dev; | 1272 | struct drm_device *dev = obj->dev; |
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c index daeae62e1c28..a2d527b22ec4 100644 --- a/drivers/gpu/drm/i915/i915_gem_tiling.c +++ b/drivers/gpu/drm/i915/i915_gem_tiling.c | |||
| @@ -521,6 +521,12 @@ i915_gem_set_tiling(struct drm_device *dev, void *data, | |||
| 521 | goto err; | 521 | goto err; |
| 522 | } | 522 | } |
| 523 | 523 | ||
| 524 | /* If we've changed tiling, GTT-mappings of the object | ||
| 525 | * need to re-fault to ensure that the correct fence register | ||
| 526 | * setup is in place. | ||
| 527 | */ | ||
| 528 | i915_gem_release_mmap(obj); | ||
| 529 | |||
| 524 | obj_priv->tiling_mode = args->tiling_mode; | 530 | obj_priv->tiling_mode = args->tiling_mode; |
| 525 | obj_priv->stride = args->stride; | 531 | obj_priv->stride = args->stride; |
| 526 | } | 532 | } |
