mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-23 11:04:44 +08:00
49a3f51dfe
This patch replaces the vmap/vunmap's use of raw pointers in GEM object functions with instances of struct dma_buf_map. GEM backends are converted as well. For most of them, this simply changes the returned type. TTM-based drivers now return information about the location of the memory, either system or I/O memory. GEM VRAM helpers and qxl now use ttm_bo_vmap() et al. Amdgpu, nouveau and radeon use drm_gem_ttm_vmap() et al instead of implementing their own vmap callbacks. v7: * init QXL cursor to mapped BO buffer (kernel test robot) v5: * update vkms after switch to shmem v4: * use ttm_bo_vmap(), drm_gem_ttm_vmap(), et al. (Daniel, Christian) * fix a trailing { in drm_gem_vmap() * remove several empty functions instead of converting them (Daniel) * comment uses of raw pointers with a TODO (Daniel) * TODO list: convert more helpers to use struct dma_buf_map Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Christian König <christian.koenig@amd.com> Tested-by: Sam Ravnborg <sam@ravnborg.org> Link: https://patchwork.freedesktop.org/patch/msgid/20201103093015.1063-7-tzimmermann@suse.de
42 lines
1.5 KiB
C
42 lines
1.5 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
#ifndef __NOUVEAU_GEM_H__
|
|
#define __NOUVEAU_GEM_H__
|
|
|
|
#include "nouveau_drv.h"
|
|
#include "nouveau_bo.h"
|
|
|
|
extern const struct drm_gem_object_funcs nouveau_gem_object_funcs;
|
|
|
|
static inline struct nouveau_bo *
|
|
nouveau_gem_object(struct drm_gem_object *gem)
|
|
{
|
|
return gem ? container_of(gem, struct nouveau_bo, bo.base) : NULL;
|
|
}
|
|
|
|
/* nouveau_gem.c */
|
|
extern int nouveau_gem_new(struct nouveau_cli *, u64 size, int align,
|
|
uint32_t domain, uint32_t tile_mode,
|
|
uint32_t tile_flags, struct nouveau_bo **);
|
|
extern void nouveau_gem_object_del(struct drm_gem_object *);
|
|
extern int nouveau_gem_object_open(struct drm_gem_object *, struct drm_file *);
|
|
extern void nouveau_gem_object_close(struct drm_gem_object *,
|
|
struct drm_file *);
|
|
extern int nouveau_gem_ioctl_new(struct drm_device *, void *,
|
|
struct drm_file *);
|
|
extern int nouveau_gem_ioctl_pushbuf(struct drm_device *, void *,
|
|
struct drm_file *);
|
|
extern int nouveau_gem_ioctl_cpu_prep(struct drm_device *, void *,
|
|
struct drm_file *);
|
|
extern int nouveau_gem_ioctl_cpu_fini(struct drm_device *, void *,
|
|
struct drm_file *);
|
|
extern int nouveau_gem_ioctl_info(struct drm_device *, void *,
|
|
struct drm_file *);
|
|
|
|
extern int nouveau_gem_prime_pin(struct drm_gem_object *);
|
|
extern void nouveau_gem_prime_unpin(struct drm_gem_object *);
|
|
extern struct sg_table *nouveau_gem_prime_get_sg_table(struct drm_gem_object *);
|
|
extern struct drm_gem_object *nouveau_gem_prime_import_sg_table(
|
|
struct drm_device *, struct dma_buf_attachment *, struct sg_table *);
|
|
|
|
#endif
|