|
@@ -4164,6 +4164,17 @@ i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment)
|
|
|
BUG_ON(obj_priv->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT);
|
|
|
|
|
|
i915_verify_inactive(dev, __FILE__, __LINE__);
|
|
|
+
|
|
|
+ if (obj_priv->gtt_space != NULL) {
|
|
|
+ if (alignment == 0)
|
|
|
+ alignment = i915_gem_get_gtt_alignment(obj);
|
|
|
+ if (obj_priv->gtt_offset & (alignment - 1)) {
|
|
|
+ ret = i915_gem_object_unbind(obj);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (obj_priv->gtt_space == NULL) {
|
|
|
ret = i915_gem_object_bind_to_gtt(obj, alignment);
|
|
|
if (ret)
|