History

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

Rob Clark committed 3 years ago

Commit 9902cb91 parent d1912f64 files · +98 −1Browse files

Showing the changes to include/uapi/drm (1 of 4 files). Show all

Unified · Split

include/uapi/drm/msm_drm.h+2−0
@@ -139,6 +139,8 @@ struct drm_msm_gem_new { · 138 unmodified lines
139#define MSM_INFO_GET_NAME 0x03 /* get debug name, returned by pointer */139#define MSM_INFO_GET_NAME 0x03 /* get debug name, returned by pointer */
140#define MSM_INFO_SET_IOVA 0x04 /* set the iova, passed by value */140#define MSM_INFO_SET_IOVA 0x04 /* set the iova, passed by value */
141#define MSM_INFO_GET_FLAGS 0x05 /* get the MSM_BO_x flags */141#define MSM_INFO_GET_FLAGS 0x05 /* get the MSM_BO_x flags */
142#define MSM_INFO_SET_METADATA 0x06 /* set userspace metadata */
143#define MSM_INFO_GET_METADATA 0x07 /* get userspace metadata */
142 144
143struct drm_msm_gem_info {145struct drm_msm_gem_info {
144 __u32 handle; /* in */146 __u32 handle; /* in */