mirror of https://gitee.com/openkylin/linux.git
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
|
@ -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);
|
||||
void i915_gem_object_unpin(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);
|
||||
uint32_t i915_get_gem_seqno(struct drm_device *dev);
|
||||
int i915_gem_object_get_fence_reg(struct drm_gem_object *obj);
|
||||
|
|
|
@ -1266,7 +1266,7 @@ i915_gem_create_mmap_offset(struct drm_gem_object *obj)
|
|||
* mapping will then trigger a page fault on the next user access, allowing
|
||||
* fixup by i915_gem_fault().
|
||||
*/
|
||||
static void
|
||||
void
|
||||
i915_gem_release_mmap(struct drm_gem_object *obj)
|
||||
{
|
||||
struct drm_device *dev = obj->dev;
|
||||
|
|
|
@ -521,6 +521,12 @@ i915_gem_set_tiling(struct drm_device *dev, void *data,
|
|||
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->stride = args->stride;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue