drm: Enable PRIME import/export for all drivers
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 20 Jun 2023 07:59:57 +0000 (09:59 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 26 Jun 2023 09:08:39 +0000 (11:08 +0200)
commit6b85aa68d9d5a27556b8b1015e7e515a371e77de
tree0facd4c6d44ede17d4ca655cae2e610cf5163448
parentaa656d48e871a1b062e1bbf9474d8b831c35074c
drm: Enable PRIME import/export for all drivers

Call drm_gem_prime_handle_to_fd() and drm_gem_prime_fd_to_handle() by
default if no PRIME import/export helpers have been set. Both functions
are the default for almost all drivers.

DRM drivers implement struct drm_driver.gem_prime_import_sg_table
to import dma-buf objects from other drivers. Having the function
drm_gem_prime_fd_to_handle() functions set by default allows each
driver to import dma-buf objects to itself, even without support for
other drivers.

For drm_gem_prime_handle_to_fd() it is similar: using it by default
allows each driver to export to itself, even without support for other
drivers.

This functionality enables userspace to share per-driver buffers
across process boundaries via PRIME (e.g., wlroots requires this
functionality). The patch generalizes a pattern that has previously
been implemented by GEM VRAM helpers [1] to work with any driver.
For example, gma500 can now run the wlroots-based sway compositor.

v2:
* clean up docs and TODO comments (Simon, Zack)
* clean up style in drm_getcap()

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/dri-devel/20230302143502.500661-1-contact@emersion.fr/
Reviewed-by: Simon Ser <contact@emersion.fr>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230620080252.16368-2-tzimmermann@suse.de
drivers/gpu/drm/drm_ioctl.c
drivers/gpu/drm/drm_prime.c
include/drm/drm_drv.h