diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-08-05 05:14:23 -0400 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-08-05 05:54:43 -0400 |
commit | 3e510a8e65ef6d1cf45c18bf79c8f91ec481f154 (patch) | |
tree | a17a4c68cb4c29a769b1db3187d2b04b5043a27e | |
parent | deeb1519b65a92ca06c8e8554a92df0fdb4d5dea (diff) |
drm/i915: Repack fence tiling mode and stride into a single integer
In the previous commit, we moved the obj->tiling_mode out of a bitfield
and into its own integer so that we could safely use READ_ONCE(). Let us
now repair some of that damage by sharing the tiling_mode with its
companion, the fence stride.
v2: New magic
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/1470388464-28458-18-git-send-email-chris@chris-wilson.co.uk
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 30 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 20 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_execbuffer.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_fence.c | 39 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_tiling.c | 19 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gpu_error.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 34 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_fbc.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_overlay.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_sprite.c | 12 |
12 files changed, 98 insertions, 68 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 1faea382dfeb..0620a84d00ca 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
@@ -101,7 +101,7 @@ static char get_pin_flag(struct drm_i915_gem_object *obj) | |||
101 | 101 | ||
102 | static char get_tiling_flag(struct drm_i915_gem_object *obj) | 102 | static char get_tiling_flag(struct drm_i915_gem_object *obj) |
103 | { | 103 | { |
104 | switch (obj->tiling_mode) { | 104 | switch (i915_gem_object_get_tiling(obj)) { |
105 | default: | 105 | default: |
106 | case I915_TILING_NONE: return ' '; | 106 | case I915_TILING_NONE: return ' '; |
107 | case I915_TILING_X: return 'X'; | 107 | case I915_TILING_X: return 'X'; |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index f18d8761305c..feec00f769e1 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -2214,13 +2214,11 @@ struct drm_i915_gem_object { | |||
2214 | 2214 | ||
2215 | atomic_t frontbuffer_bits; | 2215 | atomic_t frontbuffer_bits; |
2216 | 2216 | ||
2217 | /** | ||
2218 | * Current tiling mode for the object. | ||
2219 | */ | ||
2220 | unsigned int tiling_mode; | ||
2221 | |||
2222 | /** Current tiling stride for the object, if it's tiled. */ | 2217 | /** Current tiling stride for the object, if it's tiled. */ |
2223 | uint32_t stride; | 2218 | unsigned int tiling_and_stride; |
2219 | #define FENCE_MINIMUM_STRIDE 128 /* See i915_tiling_ok() */ | ||
2220 | #define TILING_MASK (FENCE_MINIMUM_STRIDE-1) | ||
2221 | #define STRIDE_MASK (~TILING_MASK) | ||
2224 | 2222 | ||
2225 | unsigned int has_wc_mmap; | 2223 | unsigned int has_wc_mmap; |
2226 | /** Count of VMA actually bound by this object */ | 2224 | /** Count of VMA actually bound by this object */ |
@@ -2359,6 +2357,24 @@ i915_gem_object_has_active_engine(const struct drm_i915_gem_object *obj, | |||
2359 | return obj->flags & BIT(engine + I915_BO_ACTIVE_SHIFT); | 2357 | return obj->flags & BIT(engine + I915_BO_ACTIVE_SHIFT); |
2360 | } | 2358 | } |
2361 | 2359 | ||
2360 | static inline unsigned int | ||
2361 | i915_gem_object_get_tiling(struct drm_i915_gem_object *obj) | ||
2362 | { | ||
2363 | return obj->tiling_and_stride & TILING_MASK; | ||
2364 | } | ||
2365 | |||
2366 | static inline bool | ||
2367 | i915_gem_object_is_tiled(struct drm_i915_gem_object *obj) | ||
2368 | { | ||
2369 | return i915_gem_object_get_tiling(obj) != I915_TILING_NONE; | ||
2370 | } | ||
2371 | |||
2372 | static inline unsigned int | ||
2373 | i915_gem_object_get_stride(struct drm_i915_gem_object *obj) | ||
2374 | { | ||
2375 | return obj->tiling_and_stride & STRIDE_MASK; | ||
2376 | } | ||
2377 | |||
2362 | /* | 2378 | /* |
2363 | * Optimised SGL iterator for GEM objects | 2379 | * Optimised SGL iterator for GEM objects |
2364 | */ | 2380 | */ |
@@ -3457,7 +3473,7 @@ static inline bool i915_gem_object_needs_bit17_swizzle(struct drm_i915_gem_objec | |||
3457 | struct drm_i915_private *dev_priv = to_i915(obj->base.dev); | 3473 | struct drm_i915_private *dev_priv = to_i915(obj->base.dev); |
3458 | 3474 | ||
3459 | return dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && | 3475 | return dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && |
3460 | obj->tiling_mode != I915_TILING_NONE; | 3476 | i915_gem_object_is_tiled(obj); |
3461 | } | 3477 | } |
3462 | 3478 | ||
3463 | /* i915_debugfs.c */ | 3479 | /* i915_debugfs.c */ |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 4e66045439b8..7a00678ae729 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -1042,7 +1042,7 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_private *i915, | |||
1042 | int ret; | 1042 | int ret; |
1043 | bool hit_slow_path = false; | 1043 | bool hit_slow_path = false; |
1044 | 1044 | ||
1045 | if (obj->tiling_mode != I915_TILING_NONE) | 1045 | if (i915_gem_object_is_tiled(obj)) |
1046 | return -EFAULT; | 1046 | return -EFAULT; |
1047 | 1047 | ||
1048 | ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, | 1048 | ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, |
@@ -1671,7 +1671,7 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | |||
1671 | 1671 | ||
1672 | /* Use a partial view if the object is bigger than the aperture. */ | 1672 | /* Use a partial view if the object is bigger than the aperture. */ |
1673 | if (obj->base.size >= ggtt->mappable_end && | 1673 | if (obj->base.size >= ggtt->mappable_end && |
1674 | obj->tiling_mode == I915_TILING_NONE) { | 1674 | !i915_gem_object_is_tiled(obj)) { |
1675 | static const unsigned int chunk_size = 256; // 1 MiB | 1675 | static const unsigned int chunk_size = 256; // 1 MiB |
1676 | 1676 | ||
1677 | memset(&view, 0, sizeof(view)); | 1677 | memset(&view, 0, sizeof(view)); |
@@ -2189,7 +2189,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) | |||
2189 | if (i915_gem_object_needs_bit17_swizzle(obj)) | 2189 | if (i915_gem_object_needs_bit17_swizzle(obj)) |
2190 | i915_gem_object_do_bit_17_swizzle(obj); | 2190 | i915_gem_object_do_bit_17_swizzle(obj); |
2191 | 2191 | ||
2192 | if (obj->tiling_mode != I915_TILING_NONE && | 2192 | if (i915_gem_object_is_tiled(obj) && |
2193 | dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) | 2193 | dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) |
2194 | i915_gem_object_pin_pages(obj); | 2194 | i915_gem_object_pin_pages(obj); |
2195 | 2195 | ||
@@ -2938,10 +2938,12 @@ i915_vma_insert(struct i915_vma *vma, u64 size, u64 alignment, u64 flags) | |||
2938 | 2938 | ||
2939 | size = max(size, vma->size); | 2939 | size = max(size, vma->size); |
2940 | if (flags & PIN_MAPPABLE) | 2940 | if (flags & PIN_MAPPABLE) |
2941 | size = i915_gem_get_ggtt_size(dev_priv, size, obj->tiling_mode); | 2941 | size = i915_gem_get_ggtt_size(dev_priv, size, |
2942 | i915_gem_object_get_tiling(obj)); | ||
2942 | 2943 | ||
2943 | min_alignment = | 2944 | min_alignment = |
2944 | i915_gem_get_ggtt_alignment(dev_priv, size, obj->tiling_mode, | 2945 | i915_gem_get_ggtt_alignment(dev_priv, size, |
2946 | i915_gem_object_get_tiling(obj), | ||
2945 | flags & PIN_MAPPABLE); | 2947 | flags & PIN_MAPPABLE); |
2946 | if (alignment == 0) | 2948 | if (alignment == 0) |
2947 | alignment = min_alignment; | 2949 | alignment = min_alignment; |
@@ -3637,10 +3639,10 @@ void __i915_vma_set_map_and_fenceable(struct i915_vma *vma) | |||
3637 | 3639 | ||
3638 | fence_size = i915_gem_get_ggtt_size(dev_priv, | 3640 | fence_size = i915_gem_get_ggtt_size(dev_priv, |
3639 | obj->base.size, | 3641 | obj->base.size, |
3640 | obj->tiling_mode); | 3642 | i915_gem_object_get_tiling(obj)); |
3641 | fence_alignment = i915_gem_get_ggtt_alignment(dev_priv, | 3643 | fence_alignment = i915_gem_get_ggtt_alignment(dev_priv, |
3642 | obj->base.size, | 3644 | obj->base.size, |
3643 | obj->tiling_mode, | 3645 | i915_gem_object_get_tiling(obj), |
3644 | true); | 3646 | true); |
3645 | 3647 | ||
3646 | fenceable = (vma->node.size == fence_size && | 3648 | fenceable = (vma->node.size == fence_size && |
@@ -3884,7 +3886,7 @@ i915_gem_madvise_ioctl(struct drm_device *dev, void *data, | |||
3884 | } | 3886 | } |
3885 | 3887 | ||
3886 | if (obj->pages && | 3888 | if (obj->pages && |
3887 | obj->tiling_mode != I915_TILING_NONE && | 3889 | i915_gem_object_is_tiled(obj) && |
3888 | dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) { | 3890 | dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) { |
3889 | if (obj->madv == I915_MADV_WILLNEED) | 3891 | if (obj->madv == I915_MADV_WILLNEED) |
3890 | i915_gem_object_unpin_pages(obj); | 3892 | i915_gem_object_unpin_pages(obj); |
@@ -4054,7 +4056,7 @@ void i915_gem_free_object(struct drm_gem_object *gem_obj) | |||
4054 | 4056 | ||
4055 | if (obj->pages && obj->madv == I915_MADV_WILLNEED && | 4057 | if (obj->pages && obj->madv == I915_MADV_WILLNEED && |
4056 | dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES && | 4058 | dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES && |
4057 | obj->tiling_mode != I915_TILING_NONE) | 4059 | i915_gem_object_is_tiled(obj)) |
4058 | i915_gem_object_unpin_pages(obj); | 4060 | i915_gem_object_unpin_pages(obj); |
4059 | 4061 | ||
4060 | if (WARN_ON(obj->pages_pin_count)) | 4062 | if (WARN_ON(obj->pages_pin_count)) |
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index 71834741bd87..c494b79ded20 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c | |||
@@ -803,7 +803,7 @@ i915_gem_execbuffer_reserve(struct intel_engine_cs *engine, | |||
803 | entry->flags &= ~EXEC_OBJECT_NEEDS_FENCE; | 803 | entry->flags &= ~EXEC_OBJECT_NEEDS_FENCE; |
804 | need_fence = | 804 | need_fence = |
805 | entry->flags & EXEC_OBJECT_NEEDS_FENCE && | 805 | entry->flags & EXEC_OBJECT_NEEDS_FENCE && |
806 | obj->tiling_mode != I915_TILING_NONE; | 806 | i915_gem_object_is_tiled(obj); |
807 | need_mappable = need_fence || need_reloc_mappable(vma); | 807 | need_mappable = need_fence || need_reloc_mappable(vma); |
808 | 808 | ||
809 | if (entry->flags & EXEC_OBJECT_PINNED) | 809 | if (entry->flags & EXEC_OBJECT_PINNED) |
diff --git a/drivers/gpu/drm/i915/i915_gem_fence.c b/drivers/gpu/drm/i915/i915_gem_fence.c index 3b462da612ca..9e8173fe2a09 100644 --- a/drivers/gpu/drm/i915/i915_gem_fence.c +++ b/drivers/gpu/drm/i915/i915_gem_fence.c | |||
@@ -86,20 +86,22 @@ static void i965_write_fence_reg(struct drm_device *dev, int reg, | |||
86 | 86 | ||
87 | if (obj) { | 87 | if (obj) { |
88 | u32 size = i915_gem_obj_ggtt_size(obj); | 88 | u32 size = i915_gem_obj_ggtt_size(obj); |
89 | unsigned int tiling = i915_gem_object_get_tiling(obj); | ||
90 | unsigned int stride = i915_gem_object_get_stride(obj); | ||
89 | uint64_t val; | 91 | uint64_t val; |
90 | 92 | ||
91 | /* Adjust fence size to match tiled area */ | 93 | /* Adjust fence size to match tiled area */ |
92 | if (obj->tiling_mode != I915_TILING_NONE) { | 94 | if (tiling != I915_TILING_NONE) { |
93 | uint32_t row_size = obj->stride * | 95 | uint32_t row_size = stride * |
94 | (obj->tiling_mode == I915_TILING_Y ? 32 : 8); | 96 | (tiling == I915_TILING_Y ? 32 : 8); |
95 | size = (size / row_size) * row_size; | 97 | size = (size / row_size) * row_size; |
96 | } | 98 | } |
97 | 99 | ||
98 | val = (uint64_t)((i915_gem_obj_ggtt_offset(obj) + size - 4096) & | 100 | val = (uint64_t)((i915_gem_obj_ggtt_offset(obj) + size - 4096) & |
99 | 0xfffff000) << 32; | 101 | 0xfffff000) << 32; |
100 | val |= i915_gem_obj_ggtt_offset(obj) & 0xfffff000; | 102 | val |= i915_gem_obj_ggtt_offset(obj) & 0xfffff000; |
101 | val |= (uint64_t)((obj->stride / 128) - 1) << fence_pitch_shift; | 103 | val |= (uint64_t)((stride / 128) - 1) << fence_pitch_shift; |
102 | if (obj->tiling_mode == I915_TILING_Y) | 104 | if (tiling == I915_TILING_Y) |
103 | val |= 1 << I965_FENCE_TILING_Y_SHIFT; | 105 | val |= 1 << I965_FENCE_TILING_Y_SHIFT; |
104 | val |= I965_FENCE_REG_VALID; | 106 | val |= I965_FENCE_REG_VALID; |
105 | 107 | ||
@@ -122,6 +124,8 @@ static void i915_write_fence_reg(struct drm_device *dev, int reg, | |||
122 | 124 | ||
123 | if (obj) { | 125 | if (obj) { |
124 | u32 size = i915_gem_obj_ggtt_size(obj); | 126 | u32 size = i915_gem_obj_ggtt_size(obj); |
127 | unsigned int tiling = i915_gem_object_get_tiling(obj); | ||
128 | unsigned int stride = i915_gem_object_get_stride(obj); | ||
125 | int pitch_val; | 129 | int pitch_val; |
126 | int tile_width; | 130 | int tile_width; |
127 | 131 | ||
@@ -131,17 +135,17 @@ static void i915_write_fence_reg(struct drm_device *dev, int reg, | |||
131 | "object 0x%08llx [fenceable? %d] not 1M or pot-size (0x%08x) aligned\n", | 135 | "object 0x%08llx [fenceable? %d] not 1M or pot-size (0x%08x) aligned\n", |
132 | i915_gem_obj_ggtt_offset(obj), obj->map_and_fenceable, size); | 136 | i915_gem_obj_ggtt_offset(obj), obj->map_and_fenceable, size); |
133 | 137 | ||
134 | if (obj->tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev)) | 138 | if (tiling == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev)) |
135 | tile_width = 128; | 139 | tile_width = 128; |
136 | else | 140 | else |
137 | tile_width = 512; | 141 | tile_width = 512; |
138 | 142 | ||
139 | /* Note: pitch better be a power of two tile widths */ | 143 | /* Note: pitch better be a power of two tile widths */ |
140 | pitch_val = obj->stride / tile_width; | 144 | pitch_val = stride / tile_width; |
141 | pitch_val = ffs(pitch_val) - 1; | 145 | pitch_val = ffs(pitch_val) - 1; |
142 | 146 | ||
143 | val = i915_gem_obj_ggtt_offset(obj); | 147 | val = i915_gem_obj_ggtt_offset(obj); |
144 | if (obj->tiling_mode == I915_TILING_Y) | 148 | if (tiling == I915_TILING_Y) |
145 | val |= 1 << I830_FENCE_TILING_Y_SHIFT; | 149 | val |= 1 << I830_FENCE_TILING_Y_SHIFT; |
146 | val |= I915_FENCE_SIZE_BITS(size); | 150 | val |= I915_FENCE_SIZE_BITS(size); |
147 | val |= pitch_val << I830_FENCE_PITCH_SHIFT; | 151 | val |= pitch_val << I830_FENCE_PITCH_SHIFT; |
@@ -161,6 +165,8 @@ static void i830_write_fence_reg(struct drm_device *dev, int reg, | |||
161 | 165 | ||
162 | if (obj) { | 166 | if (obj) { |
163 | u32 size = i915_gem_obj_ggtt_size(obj); | 167 | u32 size = i915_gem_obj_ggtt_size(obj); |
168 | unsigned int tiling = i915_gem_object_get_tiling(obj); | ||
169 | unsigned int stride = i915_gem_object_get_stride(obj); | ||
164 | uint32_t pitch_val; | 170 | uint32_t pitch_val; |
165 | 171 | ||
166 | WARN((i915_gem_obj_ggtt_offset(obj) & ~I830_FENCE_START_MASK) || | 172 | WARN((i915_gem_obj_ggtt_offset(obj) & ~I830_FENCE_START_MASK) || |
@@ -169,11 +175,11 @@ static void i830_write_fence_reg(struct drm_device *dev, int reg, | |||
169 | "object 0x%08llx not 512K or pot-size 0x%08x aligned\n", | 175 | "object 0x%08llx not 512K or pot-size 0x%08x aligned\n", |
170 | i915_gem_obj_ggtt_offset(obj), size); | 176 | i915_gem_obj_ggtt_offset(obj), size); |
171 | 177 | ||
172 | pitch_val = obj->stride / 128; | 178 | pitch_val = stride / 128; |
173 | pitch_val = ffs(pitch_val) - 1; | 179 | pitch_val = ffs(pitch_val) - 1; |
174 | 180 | ||
175 | val = i915_gem_obj_ggtt_offset(obj); | 181 | val = i915_gem_obj_ggtt_offset(obj); |
176 | if (obj->tiling_mode == I915_TILING_Y) | 182 | if (tiling == I915_TILING_Y) |
177 | val |= 1 << I830_FENCE_TILING_Y_SHIFT; | 183 | val |= 1 << I830_FENCE_TILING_Y_SHIFT; |
178 | val |= I830_FENCE_SIZE_BITS(size); | 184 | val |= I830_FENCE_SIZE_BITS(size); |
179 | val |= pitch_val << I830_FENCE_PITCH_SHIFT; | 185 | val |= pitch_val << I830_FENCE_PITCH_SHIFT; |
@@ -201,9 +207,12 @@ static void i915_gem_write_fence(struct drm_device *dev, int reg, | |||
201 | if (i915_gem_object_needs_mb(dev_priv->fence_regs[reg].obj)) | 207 | if (i915_gem_object_needs_mb(dev_priv->fence_regs[reg].obj)) |
202 | mb(); | 208 | mb(); |
203 | 209 | ||
204 | WARN(obj && (!obj->stride || !obj->tiling_mode), | 210 | WARN(obj && |
211 | (!i915_gem_object_get_stride(obj) || | ||
212 | !i915_gem_object_get_tiling(obj)), | ||
205 | "bogus fence setup with stride: 0x%x, tiling mode: %i\n", | 213 | "bogus fence setup with stride: 0x%x, tiling mode: %i\n", |
206 | obj->stride, obj->tiling_mode); | 214 | i915_gem_object_get_stride(obj), |
215 | i915_gem_object_get_tiling(obj)); | ||
207 | 216 | ||
208 | if (IS_GEN2(dev)) | 217 | if (IS_GEN2(dev)) |
209 | i830_write_fence_reg(dev, reg, obj); | 218 | i830_write_fence_reg(dev, reg, obj); |
@@ -248,7 +257,7 @@ static void i915_gem_object_update_fence(struct drm_i915_gem_object *obj, | |||
248 | 257 | ||
249 | static inline void i915_gem_object_fence_lost(struct drm_i915_gem_object *obj) | 258 | static inline void i915_gem_object_fence_lost(struct drm_i915_gem_object *obj) |
250 | { | 259 | { |
251 | if (obj->tiling_mode) | 260 | if (i915_gem_object_is_tiled(obj)) |
252 | i915_gem_release_mmap(obj); | 261 | i915_gem_release_mmap(obj); |
253 | 262 | ||
254 | /* As we do not have an associated fence register, we will force | 263 | /* As we do not have an associated fence register, we will force |
@@ -361,7 +370,7 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj) | |||
361 | { | 370 | { |
362 | struct drm_device *dev = obj->base.dev; | 371 | struct drm_device *dev = obj->base.dev; |
363 | struct drm_i915_private *dev_priv = to_i915(dev); | 372 | struct drm_i915_private *dev_priv = to_i915(dev); |
364 | bool enable = obj->tiling_mode != I915_TILING_NONE; | 373 | bool enable = i915_gem_object_is_tiled(obj); |
365 | struct drm_i915_fence_reg *reg; | 374 | struct drm_i915_fence_reg *reg; |
366 | int ret; | 375 | int ret; |
367 | 376 | ||
@@ -477,7 +486,7 @@ void i915_gem_restore_fences(struct drm_device *dev) | |||
477 | */ | 486 | */ |
478 | if (reg->obj) { | 487 | if (reg->obj) { |
479 | i915_gem_object_update_fence(reg->obj, reg, | 488 | i915_gem_object_update_fence(reg->obj, reg, |
480 | reg->obj->tiling_mode); | 489 | i915_gem_object_get_tiling(reg->obj)); |
481 | } else { | 490 | } else { |
482 | i915_gem_write_fence(dev, i, NULL); | 491 | i915_gem_write_fence(dev, i, NULL); |
483 | } | 492 | } |
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c index 6817f69947d9..f4b984de83b5 100644 --- a/drivers/gpu/drm/i915/i915_gem_tiling.c +++ b/drivers/gpu/drm/i915/i915_gem_tiling.c | |||
@@ -170,6 +170,9 @@ i915_gem_set_tiling(struct drm_device *dev, void *data, | |||
170 | struct drm_i915_gem_object *obj; | 170 | struct drm_i915_gem_object *obj; |
171 | int ret = 0; | 171 | int ret = 0; |
172 | 172 | ||
173 | /* Make sure we don't cross-contaminate obj->tiling_and_stride */ | ||
174 | BUILD_BUG_ON(I915_TILING_LAST & STRIDE_MASK); | ||
175 | |||
173 | obj = i915_gem_object_lookup(file, args->handle); | 176 | obj = i915_gem_object_lookup(file, args->handle); |
174 | if (!obj) | 177 | if (!obj) |
175 | return -ENOENT; | 178 | return -ENOENT; |
@@ -217,8 +220,8 @@ i915_gem_set_tiling(struct drm_device *dev, void *data, | |||
217 | } | 220 | } |
218 | } | 221 | } |
219 | 222 | ||
220 | if (args->tiling_mode != obj->tiling_mode || | 223 | if (args->tiling_mode != i915_gem_object_get_tiling(obj) || |
221 | args->stride != obj->stride) { | 224 | args->stride != i915_gem_object_get_stride(obj)) { |
222 | /* We need to rebind the object if its current allocation | 225 | /* We need to rebind the object if its current allocation |
223 | * no longer meets the alignment restrictions for its new | 226 | * no longer meets the alignment restrictions for its new |
224 | * tiling mode. Otherwise we can just leave it alone, but | 227 | * tiling mode. Otherwise we can just leave it alone, but |
@@ -241,7 +244,7 @@ i915_gem_set_tiling(struct drm_device *dev, void *data, | |||
241 | dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) { | 244 | dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) { |
242 | if (args->tiling_mode == I915_TILING_NONE) | 245 | if (args->tiling_mode == I915_TILING_NONE) |
243 | i915_gem_object_unpin_pages(obj); | 246 | i915_gem_object_unpin_pages(obj); |
244 | if (obj->tiling_mode == I915_TILING_NONE) | 247 | if (!i915_gem_object_is_tiled(obj)) |
245 | i915_gem_object_pin_pages(obj); | 248 | i915_gem_object_pin_pages(obj); |
246 | } | 249 | } |
247 | 250 | ||
@@ -250,16 +253,16 @@ i915_gem_set_tiling(struct drm_device *dev, void *data, | |||
250 | &dev->struct_mutex) || | 253 | &dev->struct_mutex) || |
251 | obj->fence_reg != I915_FENCE_REG_NONE; | 254 | obj->fence_reg != I915_FENCE_REG_NONE; |
252 | 255 | ||
253 | obj->tiling_mode = args->tiling_mode; | 256 | obj->tiling_and_stride = |
254 | obj->stride = args->stride; | 257 | args->stride | args->tiling_mode; |
255 | 258 | ||
256 | /* Force the fence to be reacquired for GTT access */ | 259 | /* Force the fence to be reacquired for GTT access */ |
257 | i915_gem_release_mmap(obj); | 260 | i915_gem_release_mmap(obj); |
258 | } | 261 | } |
259 | } | 262 | } |
260 | /* we have to maintain this existing ABI... */ | 263 | /* we have to maintain this existing ABI... */ |
261 | args->stride = obj->stride; | 264 | args->stride = i915_gem_object_get_stride(obj); |
262 | args->tiling_mode = obj->tiling_mode; | 265 | args->tiling_mode = i915_gem_object_get_tiling(obj); |
263 | 266 | ||
264 | /* Try to preallocate memory required to save swizzling on put-pages */ | 267 | /* Try to preallocate memory required to save swizzling on put-pages */ |
265 | if (i915_gem_object_needs_bit17_swizzle(obj)) { | 268 | if (i915_gem_object_needs_bit17_swizzle(obj)) { |
@@ -306,7 +309,7 @@ i915_gem_get_tiling(struct drm_device *dev, void *data, | |||
306 | if (!obj) | 309 | if (!obj) |
307 | return -ENOENT; | 310 | return -ENOENT; |
308 | 311 | ||
309 | args->tiling_mode = READ_ONCE(obj->tiling_mode); | 312 | args->tiling_mode = READ_ONCE(obj->tiling_and_stride) & TILING_MASK; |
310 | switch (args->tiling_mode) { | 313 | switch (args->tiling_mode) { |
311 | case I915_TILING_X: | 314 | case I915_TILING_X: |
312 | args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x; | 315 | args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x; |
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c index cc28ad429dd8..eecb87063c88 100644 --- a/drivers/gpu/drm/i915/i915_gpu_error.c +++ b/drivers/gpu/drm/i915/i915_gpu_error.c | |||
@@ -781,7 +781,7 @@ static void capture_bo(struct drm_i915_error_buffer *err, | |||
781 | err->pinned = 0; | 781 | err->pinned = 0; |
782 | if (i915_gem_obj_is_pinned(obj)) | 782 | if (i915_gem_obj_is_pinned(obj)) |
783 | err->pinned = 1; | 783 | err->pinned = 1; |
784 | err->tiling = obj->tiling_mode; | 784 | err->tiling = i915_gem_object_get_tiling(obj); |
785 | err->dirty = obj->dirty; | 785 | err->dirty = obj->dirty; |
786 | err->purgeable = obj->madv != I915_MADV_WILLNEED; | 786 | err->purgeable = obj->madv != I915_MADV_WILLNEED; |
787 | err->userptr = obj->userptr.mm != NULL; | 787 | err->userptr = obj->userptr.mm != NULL; |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 9068676943bf..9cbf5431c1e3 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -2466,9 +2466,8 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc, | |||
2466 | return false; | 2466 | return false; |
2467 | } | 2467 | } |
2468 | 2468 | ||
2469 | obj->tiling_mode = plane_config->tiling; | 2469 | if (plane_config->tiling == I915_TILING_X) |
2470 | if (obj->tiling_mode == I915_TILING_X) | 2470 | obj->tiling_and_stride = fb->pitches[0] | I915_TILING_X; |
2471 | obj->stride = fb->pitches[0]; | ||
2472 | 2471 | ||
2473 | mode_cmd.pixel_format = fb->pixel_format; | 2472 | mode_cmd.pixel_format = fb->pixel_format; |
2474 | mode_cmd.width = fb->width; | 2473 | mode_cmd.width = fb->width; |
@@ -2594,7 +2593,7 @@ valid_fb: | |||
2594 | intel_state->dst.y2 = plane_state->crtc_y + plane_state->crtc_h; | 2593 | intel_state->dst.y2 = plane_state->crtc_y + plane_state->crtc_h; |
2595 | 2594 | ||
2596 | obj = intel_fb_obj(fb); | 2595 | obj = intel_fb_obj(fb); |
2597 | if (obj->tiling_mode != I915_TILING_NONE) | 2596 | if (i915_gem_object_is_tiled(obj)) |
2598 | dev_priv->preserve_bios_swizzle = true; | 2597 | dev_priv->preserve_bios_swizzle = true; |
2599 | 2598 | ||
2600 | drm_framebuffer_reference(fb); | 2599 | drm_framebuffer_reference(fb); |
@@ -2672,8 +2671,7 @@ static void i9xx_update_primary_plane(struct drm_plane *primary, | |||
2672 | BUG(); | 2671 | BUG(); |
2673 | } | 2672 | } |
2674 | 2673 | ||
2675 | if (INTEL_INFO(dev)->gen >= 4 && | 2674 | if (INTEL_INFO(dev)->gen >= 4 && i915_gem_object_is_tiled(obj)) |
2676 | obj->tiling_mode != I915_TILING_NONE) | ||
2677 | dspcntr |= DISPPLANE_TILED; | 2675 | dspcntr |= DISPPLANE_TILED; |
2678 | 2676 | ||
2679 | if (IS_G4X(dev)) | 2677 | if (IS_G4X(dev)) |
@@ -2782,7 +2780,7 @@ static void ironlake_update_primary_plane(struct drm_plane *primary, | |||
2782 | BUG(); | 2780 | BUG(); |
2783 | } | 2781 | } |
2784 | 2782 | ||
2785 | if (obj->tiling_mode != I915_TILING_NONE) | 2783 | if (i915_gem_object_is_tiled(obj)) |
2786 | dspcntr |= DISPPLANE_TILED; | 2784 | dspcntr |= DISPPLANE_TILED; |
2787 | 2785 | ||
2788 | if (!IS_HASWELL(dev) && !IS_BROADWELL(dev)) | 2786 | if (!IS_HASWELL(dev) && !IS_BROADWELL(dev)) |
@@ -11200,7 +11198,7 @@ static int intel_gen4_queue_flip(struct drm_device *dev, | |||
11200 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 11198 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
11201 | intel_ring_emit(ring, fb->pitches[0]); | 11199 | intel_ring_emit(ring, fb->pitches[0]); |
11202 | intel_ring_emit(ring, intel_crtc->flip_work->gtt_offset | | 11200 | intel_ring_emit(ring, intel_crtc->flip_work->gtt_offset | |
11203 | obj->tiling_mode); | 11201 | i915_gem_object_get_tiling(obj)); |
11204 | 11202 | ||
11205 | /* XXX Enabling the panel-fitter across page-flip is so far | 11203 | /* XXX Enabling the panel-fitter across page-flip is so far |
11206 | * untested on non-native modes, so ignore it for now. | 11204 | * untested on non-native modes, so ignore it for now. |
@@ -11232,7 +11230,7 @@ static int intel_gen6_queue_flip(struct drm_device *dev, | |||
11232 | 11230 | ||
11233 | intel_ring_emit(ring, MI_DISPLAY_FLIP | | 11231 | intel_ring_emit(ring, MI_DISPLAY_FLIP | |
11234 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 11232 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
11235 | intel_ring_emit(ring, fb->pitches[0] | obj->tiling_mode); | 11233 | intel_ring_emit(ring, fb->pitches[0] | i915_gem_object_get_tiling(obj)); |
11236 | intel_ring_emit(ring, intel_crtc->flip_work->gtt_offset); | 11234 | intel_ring_emit(ring, intel_crtc->flip_work->gtt_offset); |
11237 | 11235 | ||
11238 | /* Contrary to the suggestions in the documentation, | 11236 | /* Contrary to the suggestions in the documentation, |
@@ -11335,7 +11333,7 @@ static int intel_gen7_queue_flip(struct drm_device *dev, | |||
11335 | } | 11333 | } |
11336 | 11334 | ||
11337 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit); | 11335 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit); |
11338 | intel_ring_emit(ring, (fb->pitches[0] | obj->tiling_mode)); | 11336 | intel_ring_emit(ring, fb->pitches[0] | i915_gem_object_get_tiling(obj)); |
11339 | intel_ring_emit(ring, intel_crtc->flip_work->gtt_offset); | 11337 | intel_ring_emit(ring, intel_crtc->flip_work->gtt_offset); |
11340 | intel_ring_emit(ring, (MI_NOOP)); | 11338 | intel_ring_emit(ring, (MI_NOOP)); |
11341 | 11339 | ||
@@ -11442,7 +11440,7 @@ static void ilk_do_mmio_flip(struct intel_crtc *intel_crtc, | |||
11442 | 11440 | ||
11443 | dspcntr = I915_READ(reg); | 11441 | dspcntr = I915_READ(reg); |
11444 | 11442 | ||
11445 | if (obj->tiling_mode != I915_TILING_NONE) | 11443 | if (i915_gem_object_is_tiled(obj)) |
11446 | dspcntr |= DISPPLANE_TILED; | 11444 | dspcntr |= DISPPLANE_TILED; |
11447 | else | 11445 | else |
11448 | dspcntr &= ~DISPPLANE_TILED; | 11446 | dspcntr &= ~DISPPLANE_TILED; |
@@ -11670,7 +11668,8 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, | |||
11670 | 11668 | ||
11671 | if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) { | 11669 | if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) { |
11672 | engine = &dev_priv->engine[BCS]; | 11670 | engine = &dev_priv->engine[BCS]; |
11673 | if (obj->tiling_mode != intel_fb_obj(work->old_fb)->tiling_mode) | 11671 | if (i915_gem_object_get_tiling(obj) != |
11672 | i915_gem_object_get_tiling(intel_fb_obj(work->old_fb))) | ||
11674 | /* vlv: DISPLAY_FLIP fails to change tiling */ | 11673 | /* vlv: DISPLAY_FLIP fails to change tiling */ |
11675 | engine = NULL; | 11674 | engine = NULL; |
11676 | } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { | 11675 | } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { |
@@ -14932,15 +14931,15 @@ static int intel_framebuffer_init(struct drm_device *dev, | |||
14932 | if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) { | 14931 | if (mode_cmd->flags & DRM_MODE_FB_MODIFIERS) { |
14933 | /* Enforce that fb modifier and tiling mode match, but only for | 14932 | /* Enforce that fb modifier and tiling mode match, but only for |
14934 | * X-tiled. This is needed for FBC. */ | 14933 | * X-tiled. This is needed for FBC. */ |
14935 | if (!!(obj->tiling_mode == I915_TILING_X) != | 14934 | if (!!(i915_gem_object_get_tiling(obj) == I915_TILING_X) != |
14936 | !!(mode_cmd->modifier[0] == I915_FORMAT_MOD_X_TILED)) { | 14935 | !!(mode_cmd->modifier[0] == I915_FORMAT_MOD_X_TILED)) { |
14937 | DRM_DEBUG("tiling_mode doesn't match fb modifier\n"); | 14936 | DRM_DEBUG("tiling_mode doesn't match fb modifier\n"); |
14938 | return -EINVAL; | 14937 | return -EINVAL; |
14939 | } | 14938 | } |
14940 | } else { | 14939 | } else { |
14941 | if (obj->tiling_mode == I915_TILING_X) | 14940 | if (i915_gem_object_get_tiling(obj) == I915_TILING_X) |
14942 | mode_cmd->modifier[0] = I915_FORMAT_MOD_X_TILED; | 14941 | mode_cmd->modifier[0] = I915_FORMAT_MOD_X_TILED; |
14943 | else if (obj->tiling_mode == I915_TILING_Y) { | 14942 | else if (i915_gem_object_get_tiling(obj) == I915_TILING_Y) { |
14944 | DRM_DEBUG("No Y tiling for legacy addfb\n"); | 14943 | DRM_DEBUG("No Y tiling for legacy addfb\n"); |
14945 | return -EINVAL; | 14944 | return -EINVAL; |
14946 | } | 14945 | } |
@@ -14984,9 +14983,10 @@ static int intel_framebuffer_init(struct drm_device *dev, | |||
14984 | } | 14983 | } |
14985 | 14984 | ||
14986 | if (mode_cmd->modifier[0] == I915_FORMAT_MOD_X_TILED && | 14985 | if (mode_cmd->modifier[0] == I915_FORMAT_MOD_X_TILED && |
14987 | mode_cmd->pitches[0] != obj->stride) { | 14986 | mode_cmd->pitches[0] != i915_gem_object_get_stride(obj)) { |
14988 | DRM_DEBUG("pitch (%d) must match tiling stride (%d)\n", | 14987 | DRM_DEBUG("pitch (%d) must match tiling stride (%d)\n", |
14989 | mode_cmd->pitches[0], obj->stride); | 14988 | mode_cmd->pitches[0], |
14989 | i915_gem_object_get_stride(obj)); | ||
14990 | return -EINVAL; | 14990 | return -EINVAL; |
14991 | } | 14991 | } |
14992 | 14992 | ||
diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c index d4be07615aa9..85adc2b92594 100644 --- a/drivers/gpu/drm/i915/intel_fbc.c +++ b/drivers/gpu/drm/i915/intel_fbc.c | |||
@@ -741,7 +741,7 @@ static void intel_fbc_update_state_cache(struct intel_crtc *crtc, | |||
741 | cache->fb.pixel_format = fb->pixel_format; | 741 | cache->fb.pixel_format = fb->pixel_format; |
742 | cache->fb.stride = fb->pitches[0]; | 742 | cache->fb.stride = fb->pitches[0]; |
743 | cache->fb.fence_reg = obj->fence_reg; | 743 | cache->fb.fence_reg = obj->fence_reg; |
744 | cache->fb.tiling_mode = obj->tiling_mode; | 744 | cache->fb.tiling_mode = i915_gem_object_get_tiling(obj); |
745 | } | 745 | } |
746 | 746 | ||
747 | static bool intel_fbc_can_activate(struct intel_crtc *crtc) | 747 | static bool intel_fbc_can_activate(struct intel_crtc *crtc) |
diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c index 413a2038e6d1..90f3ab424e01 100644 --- a/drivers/gpu/drm/i915/intel_overlay.c +++ b/drivers/gpu/drm/i915/intel_overlay.c | |||
@@ -1129,7 +1129,7 @@ int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, | |||
1129 | drm_modeset_lock_all(dev); | 1129 | drm_modeset_lock_all(dev); |
1130 | mutex_lock(&dev->struct_mutex); | 1130 | mutex_lock(&dev->struct_mutex); |
1131 | 1131 | ||
1132 | if (new_bo->tiling_mode) { | 1132 | if (i915_gem_object_is_tiled(new_bo)) { |
1133 | DRM_DEBUG_KMS("buffer used for overlay image can not be tiled\n"); | 1133 | DRM_DEBUG_KMS("buffer used for overlay image can not be tiled\n"); |
1134 | ret = -EINVAL; | 1134 | ret = -EINVAL; |
1135 | goto out_unlock; | 1135 | goto out_unlock; |
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index eedcacef7d5c..aef0b105eb58 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
@@ -1585,7 +1585,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc) | |||
1585 | obj = intel_fb_obj(enabled->primary->state->fb); | 1585 | obj = intel_fb_obj(enabled->primary->state->fb); |
1586 | 1586 | ||
1587 | /* self-refresh seems busted with untiled */ | 1587 | /* self-refresh seems busted with untiled */ |
1588 | if (obj->tiling_mode == I915_TILING_NONE) | 1588 | if (!i915_gem_object_is_tiled(obj)) |
1589 | enabled = NULL; | 1589 | enabled = NULL; |
1590 | } | 1590 | } |
1591 | 1591 | ||
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c index e045295ef4af..9ed7ad32cffd 100644 --- a/drivers/gpu/drm/i915/intel_sprite.c +++ b/drivers/gpu/drm/i915/intel_sprite.c | |||
@@ -431,7 +431,7 @@ vlv_update_plane(struct drm_plane *dplane, | |||
431 | */ | 431 | */ |
432 | sprctl |= SP_GAMMA_ENABLE; | 432 | sprctl |= SP_GAMMA_ENABLE; |
433 | 433 | ||
434 | if (obj->tiling_mode != I915_TILING_NONE) | 434 | if (i915_gem_object_is_tiled(obj)) |
435 | sprctl |= SP_TILED; | 435 | sprctl |= SP_TILED; |
436 | 436 | ||
437 | /* Sizes are 0 based */ | 437 | /* Sizes are 0 based */ |
@@ -468,7 +468,7 @@ vlv_update_plane(struct drm_plane *dplane, | |||
468 | I915_WRITE(SPSTRIDE(pipe, plane), fb->pitches[0]); | 468 | I915_WRITE(SPSTRIDE(pipe, plane), fb->pitches[0]); |
469 | I915_WRITE(SPPOS(pipe, plane), (crtc_y << 16) | crtc_x); | 469 | I915_WRITE(SPPOS(pipe, plane), (crtc_y << 16) | crtc_x); |
470 | 470 | ||
471 | if (obj->tiling_mode != I915_TILING_NONE) | 471 | if (i915_gem_object_is_tiled(obj)) |
472 | I915_WRITE(SPTILEOFF(pipe, plane), (y << 16) | x); | 472 | I915_WRITE(SPTILEOFF(pipe, plane), (y << 16) | x); |
473 | else | 473 | else |
474 | I915_WRITE(SPLINOFF(pipe, plane), linear_offset); | 474 | I915_WRITE(SPLINOFF(pipe, plane), linear_offset); |
@@ -553,7 +553,7 @@ ivb_update_plane(struct drm_plane *plane, | |||
553 | */ | 553 | */ |
554 | sprctl |= SPRITE_GAMMA_ENABLE; | 554 | sprctl |= SPRITE_GAMMA_ENABLE; |
555 | 555 | ||
556 | if (obj->tiling_mode != I915_TILING_NONE) | 556 | if (i915_gem_object_is_tiled(obj)) |
557 | sprctl |= SPRITE_TILED; | 557 | sprctl |= SPRITE_TILED; |
558 | 558 | ||
559 | if (IS_HASWELL(dev) || IS_BROADWELL(dev)) | 559 | if (IS_HASWELL(dev) || IS_BROADWELL(dev)) |
@@ -607,7 +607,7 @@ ivb_update_plane(struct drm_plane *plane, | |||
607 | * register */ | 607 | * register */ |
608 | if (IS_HASWELL(dev) || IS_BROADWELL(dev)) | 608 | if (IS_HASWELL(dev) || IS_BROADWELL(dev)) |
609 | I915_WRITE(SPROFFSET(pipe), (y << 16) | x); | 609 | I915_WRITE(SPROFFSET(pipe), (y << 16) | x); |
610 | else if (obj->tiling_mode != I915_TILING_NONE) | 610 | else if (i915_gem_object_is_tiled(obj)) |
611 | I915_WRITE(SPRTILEOFF(pipe), (y << 16) | x); | 611 | I915_WRITE(SPRTILEOFF(pipe), (y << 16) | x); |
612 | else | 612 | else |
613 | I915_WRITE(SPRLINOFF(pipe), linear_offset); | 613 | I915_WRITE(SPRLINOFF(pipe), linear_offset); |
@@ -694,7 +694,7 @@ ilk_update_plane(struct drm_plane *plane, | |||
694 | */ | 694 | */ |
695 | dvscntr |= DVS_GAMMA_ENABLE; | 695 | dvscntr |= DVS_GAMMA_ENABLE; |
696 | 696 | ||
697 | if (obj->tiling_mode != I915_TILING_NONE) | 697 | if (i915_gem_object_is_tiled(obj)) |
698 | dvscntr |= DVS_TILED; | 698 | dvscntr |= DVS_TILED; |
699 | 699 | ||
700 | if (IS_GEN6(dev)) | 700 | if (IS_GEN6(dev)) |
@@ -737,7 +737,7 @@ ilk_update_plane(struct drm_plane *plane, | |||
737 | I915_WRITE(DVSSTRIDE(pipe), fb->pitches[0]); | 737 | I915_WRITE(DVSSTRIDE(pipe), fb->pitches[0]); |
738 | I915_WRITE(DVSPOS(pipe), (crtc_y << 16) | crtc_x); | 738 | I915_WRITE(DVSPOS(pipe), (crtc_y << 16) | crtc_x); |
739 | 739 | ||
740 | if (obj->tiling_mode != I915_TILING_NONE) | 740 | if (i915_gem_object_is_tiled(obj)) |
741 | I915_WRITE(DVSTILEOFF(pipe), (y << 16) | x); | 741 | I915_WRITE(DVSTILEOFF(pipe), (y << 16) | x); |
742 | else | 742 | else |
743 | I915_WRITE(DVSLINOFF(pipe), linear_offset); | 743 | I915_WRITE(DVSLINOFF(pipe), linear_offset); |