diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 30 |
2 files changed, 19 insertions, 12 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 06a88be067f1..9f4c27eab046 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -1302,6 +1302,7 @@ int i915_gem_wait_ioctl(struct drm_device *dev, void *data, | |||
1302 | struct drm_file *file_priv); | 1302 | struct drm_file *file_priv); |
1303 | void i915_gem_load(struct drm_device *dev); | 1303 | void i915_gem_load(struct drm_device *dev); |
1304 | int i915_gem_init_object(struct drm_gem_object *obj); | 1304 | int i915_gem_init_object(struct drm_gem_object *obj); |
1305 | void i915_gem_object_init(struct drm_i915_gem_object *obj); | ||
1305 | struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, | 1306 | struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, |
1306 | size_t size); | 1307 | size_t size); |
1307 | void i915_gem_free_object(struct drm_gem_object *obj); | 1308 | void i915_gem_free_object(struct drm_gem_object *obj); |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index eb54a6d81517..553175856e81 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -3558,10 +3558,26 @@ unlock: | |||
3558 | return ret; | 3558 | return ret; |
3559 | } | 3559 | } |
3560 | 3560 | ||
3561 | void i915_gem_object_init(struct drm_i915_gem_object *obj) | ||
3562 | { | ||
3563 | obj->base.driver_private = NULL; | ||
3564 | |||
3565 | INIT_LIST_HEAD(&obj->mm_list); | ||
3566 | INIT_LIST_HEAD(&obj->gtt_list); | ||
3567 | INIT_LIST_HEAD(&obj->ring_list); | ||
3568 | INIT_LIST_HEAD(&obj->exec_list); | ||
3569 | |||
3570 | obj->fence_reg = I915_FENCE_REG_NONE; | ||
3571 | obj->madv = I915_MADV_WILLNEED; | ||
3572 | /* Avoid an unnecessary call to unbind on the first bind. */ | ||
3573 | obj->map_and_fenceable = true; | ||
3574 | |||
3575 | i915_gem_info_add_obj(obj->base.dev->dev_private, obj->base.size); | ||
3576 | } | ||
3577 | |||
3561 | struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, | 3578 | struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, |
3562 | size_t size) | 3579 | size_t size) |
3563 | { | 3580 | { |
3564 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
3565 | struct drm_i915_gem_object *obj; | 3581 | struct drm_i915_gem_object *obj; |
3566 | struct address_space *mapping; | 3582 | struct address_space *mapping; |
3567 | u32 mask; | 3583 | u32 mask; |
@@ -3585,7 +3601,7 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, | |||
3585 | mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; | 3601 | mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; |
3586 | mapping_set_gfp_mask(mapping, mask); | 3602 | mapping_set_gfp_mask(mapping, mask); |
3587 | 3603 | ||
3588 | i915_gem_info_add_obj(dev_priv, size); | 3604 | i915_gem_object_init(obj); |
3589 | 3605 | ||
3590 | obj->base.write_domain = I915_GEM_DOMAIN_CPU; | 3606 | obj->base.write_domain = I915_GEM_DOMAIN_CPU; |
3591 | obj->base.read_domains = I915_GEM_DOMAIN_CPU; | 3607 | obj->base.read_domains = I915_GEM_DOMAIN_CPU; |
@@ -3607,16 +3623,6 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, | |||
3607 | } else | 3623 | } else |
3608 | obj->cache_level = I915_CACHE_NONE; | 3624 | obj->cache_level = I915_CACHE_NONE; |
3609 | 3625 | ||
3610 | obj->base.driver_private = NULL; | ||
3611 | obj->fence_reg = I915_FENCE_REG_NONE; | ||
3612 | INIT_LIST_HEAD(&obj->mm_list); | ||
3613 | INIT_LIST_HEAD(&obj->gtt_list); | ||
3614 | INIT_LIST_HEAD(&obj->ring_list); | ||
3615 | INIT_LIST_HEAD(&obj->exec_list); | ||
3616 | obj->madv = I915_MADV_WILLNEED; | ||
3617 | /* Avoid an unnecessary call to unbind on the first bind. */ | ||
3618 | obj->map_and_fenceable = true; | ||
3619 | |||
3620 | return obj; | 3626 | return obj; |
3621 | } | 3627 | } |
3622 | 3628 | ||