mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 12:16:20 +00:00
drm/i915: Zap the GTT mapping when transitioning from untiled to tiled.
As of 52dc7d32b8
, we could leave an old
linear GTT mapping in place, so that apps trying to GTT-mapped write in
tiled data wouldn't get the fence added, and garbage would get displayed.
Signed-off-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
901782b21e
commit
d05ca30199
3 changed files with 8 additions and 1 deletions
|
@ -673,6 +673,7 @@ void i915_gem_free_object(struct drm_gem_object *obj);
|
||||||
int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment);
|
int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment);
|
||||||
void i915_gem_object_unpin(struct drm_gem_object *obj);
|
void i915_gem_object_unpin(struct drm_gem_object *obj);
|
||||||
int i915_gem_object_unbind(struct drm_gem_object *obj);
|
int i915_gem_object_unbind(struct drm_gem_object *obj);
|
||||||
|
void i915_gem_release_mmap(struct drm_gem_object *obj);
|
||||||
void i915_gem_lastclose(struct drm_device *dev);
|
void i915_gem_lastclose(struct drm_device *dev);
|
||||||
uint32_t i915_get_gem_seqno(struct drm_device *dev);
|
uint32_t i915_get_gem_seqno(struct drm_device *dev);
|
||||||
int i915_gem_object_get_fence_reg(struct drm_gem_object *obj);
|
int i915_gem_object_get_fence_reg(struct drm_gem_object *obj);
|
||||||
|
|
|
@ -1266,7 +1266,7 @@ out_free_list:
|
||||||
* mapping will then trigger a page fault on the next user access, allowing
|
* mapping will then trigger a page fault on the next user access, allowing
|
||||||
* fixup by i915_gem_fault().
|
* fixup by i915_gem_fault().
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
i915_gem_release_mmap(struct drm_gem_object *obj)
|
i915_gem_release_mmap(struct drm_gem_object *obj)
|
||||||
{
|
{
|
||||||
struct drm_device *dev = obj->dev;
|
struct drm_device *dev = obj->dev;
|
||||||
|
|
|
@ -521,6 +521,12 @@ i915_gem_set_tiling(struct drm_device *dev, void *data,
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If we've changed tiling, GTT-mappings of the object
|
||||||
|
* need to re-fault to ensure that the correct fence register
|
||||||
|
* setup is in place.
|
||||||
|
*/
|
||||||
|
i915_gem_release_mmap(obj);
|
||||||
|
|
||||||
obj_priv->tiling_mode = args->tiling_mode;
|
obj_priv->tiling_mode = args->tiling_mode;
|
||||||
obj_priv->stride = args->stride;
|
obj_priv->stride = args->stride;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue