[intel-gem] Write the presumed_offset back out after updating it.
authorEric Anholt <eric@anholt.net>
Thu, 29 May 2008 19:53:13 +0000 (12:53 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 29 May 2008 19:53:21 +0000 (12:53 -0700)
Otherwise, 965 constant state buffers get re-relocated every exec.  Ouch.

linux-core/i915_gem.c

index 1fc48e0..52a57d5 100644 (file)
@@ -1137,6 +1137,16 @@ i915_gem_reloc_and_validate_object(struct drm_gem_object *obj,
 #endif
                writel(reloc_val, reloc_entry);
 
+               /* Write the updated presumed offset for this entry back out
+                * to the user.
+                */
+               reloc.presumed_offset = target_obj_priv->gtt_offset;
+               ret = copy_to_user(relocs + i, &reloc, sizeof(reloc));
+               if (ret != 0) {
+                       drm_gem_object_unreference(target_obj);
+                       return ret;
+               }
+
                drm_gem_object_unreference(target_obj);
        }