drm/msm/gem: Add metadata
authorRob Clark <robdclark@chromium.org>
Mon, 6 Nov 2023 18:50:26 +0000 (10:50 -0800)
committerRob Clark <robdclark@chromium.org>
Tue, 21 Nov 2023 02:33:17 +0000 (18:33 -0800)
commit9902cb999e4e913d98e8afe4b36c08e4a793e1ce
treeac483307cac18761cc46f76cbbe32a8b327dac71
parentd1912f6972b857e63577e8094f5f1242d9fe3c7d
drm/msm/gem: Add metadata

The EXT_external_objects extension is a bit awkward as it doesn't pass
explicit modifiers, leaving the importer to guess with incomplete
information.  In the case of vk (turnip) exporting and gl (freedreno)
importing, the "OPTIMAL_TILING_EXT" layout depends on VkImageCreateInfo
flags (among other things), which the importer does not know.  Which
unfortunately leaves us with the need for a metadata back-channel.

The contents of the metadata are defined by userspace.  The
EXT_external_objects extension is only required to work between
compatible versions of gl and vk drivers, as defined by device and
driver UUIDs.

v2: add missing metadata kfree
v3: Rework to move copy_from/to_user out from under gem obj lock
    to avoid angering lockdep about deadlocks against fs-reclaim

Signed-off-by: Rob Clark <robdclark@chromium.org>
Patchwork: https://patchwork.freedesktop.org/patch/566157/
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/msm/msm_gem.c
drivers/gpu/drm/msm/msm_gem.h
include/uapi/drm/msm_drm.h