Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9431ea5 authored by Thomas Hellstrom's avatar Thomas Hellstrom
Browse files

drm/vmwgfx: Move buffer object related code to vmwgfx_bo.c



It makes more sense to have all the buffer object related code in
a single file rather than splitting it up between the resource code
and buffer object pinning utilities.

Place all buffer object related code in vmwgfx_bo.c. Fix up headers
and export resource functionality when needed in the buffer object
code.

Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: default avatarBrian Paul <brianp@vmware.com>
Reviewed-by: default avatarSinclair Yeh <syeh@vmware.com>
Reviewed-by: default avatarDeepak Rawat <drawat@vmware.com>
parent f1d34bfd
Loading
Loading
Loading
Loading
+780 −36

File changed.

Preview size limit exceeded, changes collapsed.

+2 −2
Original line number Diff line number Diff line
@@ -424,7 +424,7 @@ static int vmw_gb_context_unbind(struct vmw_resource *res,
	(void) vmw_execbuf_fence_commands(NULL, dev_priv,
					  &fence, NULL);

	vmw_fence_single_bo(bo, fence);
	vmw_bo_fence_single(bo, fence);

	if (likely(fence != NULL))
		vmw_fence_obj_unreference(&fence);
@@ -648,7 +648,7 @@ static int vmw_dx_context_unbind(struct vmw_resource *res,
	(void) vmw_execbuf_fence_commands(NULL, dev_priv,
					  &fence, NULL);

	vmw_fence_single_bo(bo, fence);
	vmw_bo_fence_single(bo, fence);

	if (likely(fence != NULL))
		vmw_fence_obj_unreference(&fence);
+2 −2
Original line number Diff line number Diff line
@@ -324,7 +324,7 @@ static int vmw_cotable_unbind(struct vmw_resource *res,
		vmw_dx_context_scrub_cotables(vcotbl->ctx, readback);
	mutex_unlock(&dev_priv->binding_mutex);
	(void) vmw_execbuf_fence_commands(NULL, dev_priv, &fence, NULL);
	vmw_fence_single_bo(bo, fence);
	vmw_bo_fence_single(bo, fence);
	if (likely(fence != NULL))
		vmw_fence_obj_unreference(&fence);

@@ -367,7 +367,7 @@ static int vmw_cotable_readback(struct vmw_resource *res)
	}

	(void) vmw_execbuf_fence_commands(NULL, dev_priv, &fence, NULL);
	vmw_fence_single_bo(&res->backup->base, fence);
	vmw_bo_fence_single(&res->backup->base, fence);
	vmw_fence_obj_unreference(&fence);

	return 0;
+35 −38
Original line number Diff line number Diff line
@@ -630,36 +630,6 @@ extern int vmw_user_resource_lookup_handle(
	uint32_t handle,
	const struct vmw_user_resource_conv *converter,
	struct vmw_resource **p_res);
extern void vmw_bo_bo_free(struct ttm_buffer_object *bo);
extern int vmw_bo_init(struct vmw_private *dev_priv,
		       struct vmw_buffer_object *vmw_bo,
		       size_t size, struct ttm_placement *placement,
		       bool interuptable,
		       void (*bo_free)(struct ttm_buffer_object *bo));
extern int vmw_user_bo_verify_access(struct ttm_buffer_object *bo,
				     struct ttm_object_file *tfile);
extern int vmw_user_bo_alloc(struct vmw_private *dev_priv,
			     struct ttm_object_file *tfile,
			     uint32_t size,
			     bool shareable,
			     uint32_t *handle,
			     struct vmw_buffer_object **p_dma_buf,
			     struct ttm_base_object **p_base);
extern int vmw_user_bo_reference(struct ttm_object_file *tfile,
				 struct vmw_buffer_object *dma_buf,
				 uint32_t *handle);
extern int vmw_bo_alloc_ioctl(struct drm_device *dev, void *data,
			      struct drm_file *file_priv);
extern int vmw_bo_unref_ioctl(struct drm_device *dev, void *data,
			      struct drm_file *file_priv);
extern int vmw_user_bo_synccpu_ioctl(struct drm_device *dev, void *data,
				     struct drm_file *file_priv);
extern uint32_t vmw_bo_validate_node(struct ttm_buffer_object *bo,
				     uint32_t cur_validate_node);
extern void vmw_bo_validate_clear(struct ttm_buffer_object *bo);
extern int vmw_user_bo_lookup(struct ttm_object_file *tfile,
			      uint32_t id, struct vmw_buffer_object **out,
			      struct ttm_base_object **base);
extern int vmw_stream_claim_ioctl(struct drm_device *dev, void *data,
				  struct drm_file *file_priv);
extern int vmw_stream_unref_ioctl(struct drm_device *dev, void *data,
@@ -672,16 +642,11 @@ extern void vmw_resource_unreserve(struct vmw_resource *res,
				   bool switch_backup,
				   struct vmw_buffer_object *new_backup,
				   unsigned long new_backup_offset);
extern void vmw_resource_move_notify(struct ttm_buffer_object *bo,
				     struct ttm_mem_reg *mem);
extern void vmw_query_move_notify(struct ttm_buffer_object *bo,
				  struct ttm_mem_reg *mem);
extern void vmw_resource_swap_notify(struct ttm_buffer_object *bo);
extern int vmw_query_readback_all(struct vmw_buffer_object *dx_query_mob);
extern void vmw_fence_single_bo(struct ttm_buffer_object *bo,
				struct vmw_fence_obj *fence);
extern void vmw_resource_evict_all(struct vmw_private *dev_priv);

extern void vmw_resource_unbind_list(struct vmw_buffer_object *vbo);

/**
 * Buffer object helper functions - vmwgfx_bo.c
@@ -705,8 +670,40 @@ extern int vmw_bo_unpin(struct vmw_private *vmw_priv,
extern void vmw_bo_get_guest_ptr(const struct ttm_buffer_object *buf,
				 SVGAGuestPtr *ptr);
extern void vmw_bo_pin_reserved(struct vmw_buffer_object *bo, bool pin);
extern void *vmw_buffer_object_map_and_cache(struct vmw_buffer_object *vbo);
extern void vmw_buffer_object_unmap(struct vmw_buffer_object *vbo);
extern void vmw_bo_bo_free(struct ttm_buffer_object *bo);
extern int vmw_bo_init(struct vmw_private *dev_priv,
		       struct vmw_buffer_object *vmw_bo,
		       size_t size, struct ttm_placement *placement,
		       bool interuptable,
		       void (*bo_free)(struct ttm_buffer_object *bo));
extern int vmw_user_bo_verify_access(struct ttm_buffer_object *bo,
				     struct ttm_object_file *tfile);
extern int vmw_user_bo_alloc(struct vmw_private *dev_priv,
			     struct ttm_object_file *tfile,
			     uint32_t size,
			     bool shareable,
			     uint32_t *handle,
			     struct vmw_buffer_object **p_dma_buf,
			     struct ttm_base_object **p_base);
extern int vmw_user_bo_reference(struct ttm_object_file *tfile,
				 struct vmw_buffer_object *dma_buf,
				 uint32_t *handle);
extern int vmw_bo_alloc_ioctl(struct drm_device *dev, void *data,
			      struct drm_file *file_priv);
extern int vmw_bo_unref_ioctl(struct drm_device *dev, void *data,
			      struct drm_file *file_priv);
extern int vmw_user_bo_synccpu_ioctl(struct drm_device *dev, void *data,
				     struct drm_file *file_priv);
extern int vmw_user_bo_lookup(struct ttm_object_file *tfile,
			      uint32_t id, struct vmw_buffer_object **out,
			      struct ttm_base_object **base);
extern void vmw_bo_fence_single(struct ttm_buffer_object *bo,
				struct vmw_fence_obj *fence);
extern void *vmw_bo_map_and_cache(struct vmw_buffer_object *vbo);
extern void vmw_bo_unmap(struct vmw_buffer_object *vbo);
extern void vmw_bo_move_notify(struct ttm_buffer_object *bo,
			       struct ttm_mem_reg *mem);
extern void vmw_bo_swap_notify(struct ttm_buffer_object *bo);

/**
 * Misc Ioctl functionality - vmwgfx_ioctl.c
+1 −1
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ static void vmw_fb_dirty_flush(struct work_struct *work)

	(void) ttm_read_lock(&vmw_priv->reservation_sem, false);
	(void) ttm_bo_reserve(&vbo->base, false, false, NULL);
	virtual = vmw_buffer_object_map_and_cache(vbo);
	virtual = vmw_bo_map_and_cache(vbo);
	if (!virtual)
		goto out_unreserve;

Loading