summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-01-09 16:16:12 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2017-01-10 08:12:21 +0000
commitcea84d16c3da717e99ea43108ca50bcc72ff50a1 (patch)
tree72f33973dfbd162320fff13e2a480ad3eff3ec9a
parent944397f04f24eaf05125896dcb601c0e1c917879 (diff)
downloadlinux-stable-cea84d16c3da717e99ea43108ca50bcc72ff50a1.tar.gz
linux-stable-cea84d16c3da717e99ea43108ca50bcc72ff50a1.tar.bz2
linux-stable-cea84d16c3da717e99ea43108ca50bcc72ff50a1.zip
drm/i915: Remove the rounding down of the gen4+ fence region
Restricting the fence to the end of the previous tile-row breaks access to the final portion of the object. On gen2/3 we employed lazy fencing to pad out the fence with scratch page to provide access to the tail, and now we also pad out the object on gen4+ we can apply the same fix. Fixes: af1a7301c7cf ("drm/i915: Only fence tiled region of object.") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170109161613.11881-5-chris@chris-wilson.co.uk
-rw-r--r--drivers/gpu/drm/i915/i915_gem_fence_reg.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_fence_reg.c b/drivers/gpu/drm/i915/i915_gem_fence_reg.c
index 8b37c4cb311a..9e65696a960c 100644
--- a/drivers/gpu/drm/i915/i915_gem_fence_reg.c
+++ b/drivers/gpu/drm/i915/i915_gem_fence_reg.c
@@ -78,15 +78,13 @@ static void i965_write_fence_reg(struct drm_i915_fence_reg *fence,
val = 0;
if (vma) {
unsigned int stride = i915_gem_object_get_stride(vma->obj);
- u32 row_size = i915_gem_object_get_tile_row_size(vma->obj);
- u32 size = rounddown((u32)vma->fence_size, row_size);
GEM_BUG_ON(!i915_vma_is_map_and_fenceable(vma));
GEM_BUG_ON(vma->node.start & 4095);
GEM_BUG_ON(vma->fence_size & 4095);
GEM_BUG_ON(stride & 127);
- val = (vma->node.start + size - 4096) << 32;
+ val = (vma->node.start + vma->fence_size - 4096) << 32;
val |= vma->node.start;
val |= (u64)((stride / 128) - 1) << fence_pitch_shift;
if (i915_gem_object_get_tiling(vma->obj) == I915_TILING_Y)