diff --git a/video/out/vulkan/ra_vk.c b/video/out/vulkan/ra_vk.c index 1548b8c785..80019fa4bc 100644 --- a/video/out/vulkan/ra_vk.c +++ b/video/out/vulkan/ra_vk.c @@ -693,8 +693,20 @@ struct ra_buf_vk { // "current" metadata, can change during course of execution VkPipelineStageFlags current_stage; VkAccessFlags current_access; + // Arbitrary user data for the creator of a buffer + void *user_data; }; +void ra_vk_buf_set_user_data(struct ra_buf *buf, void *user_data) { + struct ra_buf_vk *vk_priv = buf->priv; + vk_priv->user_data = user_data; +} + +void *ra_vk_buf_get_user_data(struct ra_buf *buf) { + struct ra_buf_vk *vk_priv = buf->priv; + return vk_priv->user_data; +} + static void vk_buf_deref(struct ra *ra, struct ra_buf *buf) { if (!buf) diff --git a/video/out/vulkan/ra_vk.h b/video/out/vulkan/ra_vk.h index 89eb310146..393c01a3c1 100644 --- a/video/out/vulkan/ra_vk.h +++ b/video/out/vulkan/ra_vk.h @@ -43,3 +43,9 @@ struct vk_external_mem { // Export an ra_buf for importing by another api. bool ra_vk_buf_get_external_info(struct ra *ra, struct ra_buf *buf, struct vk_external_mem *ret); + +// Set the buffer user data +void ra_vk_buf_set_user_data(struct ra_buf *buf, void *priv); + +// Get the buffer user data +void *ra_vk_buf_get_user_data(struct ra_buf *buf);