On Mon, Aug 26, 2019 at 10:47 AM Thomas Zimmermann tzimmermann@suse.de wrote:
Hi,
I would have liked to get some context on the purpose of GEM TTM helpers. Is is just share-able code?
From my understanding VRAM helpers _are_ GEM TTM helpers. And they where re-named to VRAM helpers, so that the naming is independent from the implementation (and vice versa).
The point of the vram helpers was to have something to manage vram for dumb display-only drivers. It's prep work for Thomas Zimmermann's plan to port a pile of fbdev drivers over. So fairly intentionally limit in the use-cases it supports to keep it simple. Kinda similar to how the simple display pipe helper is designed on the kms side of things.
Wrt qxl, would it be possible to convert the driver over to VRAM helpers entirely? I noticed a memory region named PRIV. Could we add this to VRAM helpers?
For both simple display pipe and vram helpers I'd say if your use-case goes beyond simple dumb display-only driver, it's probably better to have something more flexible.
Also this patch series also adjust vram helpers, and I think it has a slightly different goal: Just aligning mmap paths a bit more between ttm and not-ttm based drivers. That's also what motivated my lockdep series, but from a locking rules instead of from a code-sharing point of view. Seems like a good goal, details might need adjustment. -Daniel
Best regards Thomas
Am 08.08.19 um 15:44 schrieb Gerd Hoffmann:
Gerd Hoffmann (17): drm/ttm: turn ttm_bo_device.vma_manager into a pointer drm/ttm: add gem_ttm_bo_device_init() drm/vram: switch vram helpers to the new gem_ttm_bo_device_init() drm/qxl: switch qxl to the new gem_ttm_bo_device_init() drm: add mmap() to drm_gem_object_funcs drm/shmem: switch shmem helper to drm_gem_object_funcs->mmap drm/shmem: drop DEFINE_DRM_GEM_SHMEM_FOPS drm/ttm: factor out ttm_bo_mmap_vma_setup drm/ttm: add drm_gem_ttm_mmap() drm/vram: switch vram helper to drm_gem_object_funcs->mmap codepath drm/vram: drop verify_access drm: drop DRM_VRAM_MM_FILE_OPERATIONS drm/qxl: use drm_gem_object_funcs drm/qxl: drop qxl_ttm_fault drm/qxl: switch qxl to drm_gem_object_funcs->mmap codepath drm/qxl: drop verify_access drm/qxl: use DEFINE_DRM_GEM_FOPS()
drivers/gpu/drm/qxl/qxl_drv.h | 5 +- drivers/gpu/drm/qxl/qxl_object.h | 5 -- include/drm/drm_gem.h | 9 +++ include/drm/drm_gem_shmem_helper.h | 28 +-------- include/drm/drm_gem_ttm_helper.h | 32 ++++++++++ include/drm/drm_gem_vram_helper.h | 9 +-- include/drm/drm_vram_mm_helper.h | 27 --------- include/drm/ttm/ttm_bo_api.h | 8 +++ include/drm/ttm/ttm_bo_driver.h | 11 +++- drivers/gpu/drm/ast/ast_drv.c | 5 +- drivers/gpu/drm/bochs/bochs_drv.c | 5 +- drivers/gpu/drm/cirrus/cirrus.c | 2 +- drivers/gpu/drm/drm_gem.c | 6 ++ drivers/gpu/drm/drm_gem_shmem_helper.c | 18 +++--- drivers/gpu/drm/drm_gem_ttm_helper.c | 47 +++++++++++++++ drivers/gpu/drm/drm_gem_vram_helper.c | 53 +---------------- drivers/gpu/drm/drm_vram_mm_helper.c | 44 +------------- .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 6 +- drivers/gpu/drm/mgag200/mgag200_drv.c | 5 +- drivers/gpu/drm/panfrost/panfrost_drv.c | 2 +- drivers/gpu/drm/panfrost/panfrost_gem.c | 1 + drivers/gpu/drm/qxl/qxl_drv.c | 19 +----- drivers/gpu/drm/qxl/qxl_dumb.c | 17 ------ drivers/gpu/drm/qxl/qxl_ioctl.c | 5 +- drivers/gpu/drm/qxl/qxl_object.c | 13 +++++ drivers/gpu/drm/qxl/qxl_ttm.c | 58 ++----------------- drivers/gpu/drm/ttm/ttm_bo.c | 29 +++++++--- drivers/gpu/drm/ttm/ttm_bo_vm.c | 53 +++++++++-------- drivers/gpu/drm/v3d/v3d_bo.c | 1 + drivers/gpu/drm/v3d/v3d_drv.c | 2 +- drivers/gpu/drm/vboxvideo/vbox_drv.c | 5 +- Documentation/gpu/drm-mm.rst | 12 ++++ drivers/gpu/drm/Kconfig | 8 +++ drivers/gpu/drm/Makefile | 3 + drivers/gpu/drm/qxl/Kconfig | 1 + 35 files changed, 231 insertions(+), 323 deletions(-) create mode 100644 include/drm/drm_gem_ttm_helper.h create mode 100644 drivers/gpu/drm/drm_gem_ttm_helper.c
-- Thomas Zimmermann Graphics Driver Developer SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany GF: Felix Imendörffer, Mary Higgins, Sri Rasiah HRB 21284 (AG Nürnberg)
dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel