diff options
author | Thomas Zimmermann <tzimmermann@suse.de> | 2019-07-02 14:50:08 +0300 |
---|---|---|
committer | Thomas Zimmermann <tzimmermann@suse.de> | 2019-07-03 10:31:59 +0300 |
commit | 31070a871fdcb16dd209e6bc0e6ca16be7cfb938 (patch) | |
tree | 1fd05fe362d6cbe66729776a1867b01c017945ce /drivers/gpu/drm/drm_gem_vram_helper.c | |
parent | 8721215c7ef928293516a9396648592fc7284592 (diff) | |
download | linux-31070a871fdcb16dd209e6bc0e6ca16be7cfb938.tar.xz |
drm/vram: Set GEM object functions for PRIME
PRIME functionality is now provided via the callback functions in
struct drm_gem_object_funcs. The driver-structure functions are obsolete.
As a side effect of this patch, VRAM-based drivers get basic PRIME
support automatically without having to set any flags or additional
fields.
v2:
- use existing PRIME functions for object's table
v3:
- move object table to EOF so it can refer to internal interfaces
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190702115012.4418-2-tzimmermann@suse.de
Diffstat (limited to 'drivers/gpu/drm/drm_gem_vram_helper.c')
-rw-r--r-- | drivers/gpu/drm/drm_gem_vram_helper.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c b/drivers/gpu/drm/drm_gem_vram_helper.c index 4de782ca26b2..22bc6989c1c5 100644 --- a/drivers/gpu/drm/drm_gem_vram_helper.c +++ b/drivers/gpu/drm/drm_gem_vram_helper.c @@ -7,6 +7,8 @@ #include <drm/drm_vram_mm_helper.h> #include <drm/ttm/ttm_page_alloc.h> +static const struct drm_gem_object_funcs drm_gem_vram_object_funcs; + /** * DOC: overview * @@ -80,6 +82,9 @@ static int drm_gem_vram_init(struct drm_device *dev, int ret; size_t acc_size; + if (!gbo->gem.funcs) + gbo->gem.funcs = &drm_gem_vram_object_funcs; + ret = drm_gem_object_init(dev, &gbo->gem, size); if (ret) return ret; @@ -639,3 +644,15 @@ int drm_gem_vram_driver_gem_prime_mmap(struct drm_gem_object *gem, return drm_gem_prime_mmap(gem, vma); } EXPORT_SYMBOL(drm_gem_vram_driver_gem_prime_mmap); + +/* + * GEM object funcs + */ + +static const struct drm_gem_object_funcs drm_gem_vram_object_funcs = { + .free = drm_gem_vram_driver_gem_free_object_unlocked, + .pin = drm_gem_vram_driver_gem_prime_pin, + .unpin = drm_gem_vram_driver_gem_prime_unpin, + .vmap = drm_gem_vram_driver_gem_prime_vmap, + .vunmap = drm_gem_vram_driver_gem_prime_vunmap +}; |