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
Showing the changes to include/uapi/drm (1 of 4 files). Show all
Unified · Split
| @@ -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 | ||
| 143 | struct drm_msm_gem_info { | 145 | struct drm_msm_gem_info { |
| 144 | __u32 handle; /* in */ | 146 | __u32 handle; /* in */ |