diff options
author | Philip Langdale <philipl@overt.org> | 2018-09-29 17:56:07 -0700 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2018-10-22 21:35:48 +0200 |
commit | 93f800a00f3f8ef416082e0a3f9d34d979a1e9a6 (patch) | |
tree | b5108b3c2f4f4357adf0f9921c6b59a6c8e162e6 /video/out/vulkan/malloc.h | |
parent | 6fbd933108a74bbd3a375be1456692320a97380e (diff) | |
download | mpv-93f800a00f3f8ef416082e0a3f9d34d979a1e9a6.tar.bz2 mpv-93f800a00f3f8ef416082e0a3f9d34d979a1e9a6.tar.xz |
vo_gpu: vulkan: Add support for exporting buffer memory
The CUDA/Vulkan interop works on the basis of memory being exported
from Vulkan and then imported by CUDA. To enable this, we add a way
to declare a buffer as being intended for export, and then add a
function to do the export.
For now, we support the fd and Handle based exports on Linux and
Windows respectively. There are others, which we can support when
a need arises.
Also note that this is just for exporting buffers, rather than
textures (VkImages). Image import on the CUDA side is supposed to
work, but it is currently buggy and waiting for a new driver release.
Finally, at least with my nvidia hardware and drivers, everything
seems to work even if we don't initialise the buffer with the right
exportability options. Nevertheless I'm enforcing it so that we're
following the spec.
Diffstat (limited to 'video/out/vulkan/malloc.h')
-rw-r--r-- | video/out/vulkan/malloc.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/video/out/vulkan/malloc.h b/video/out/vulkan/malloc.h index 466c8d81bd..9b311ce311 100644 --- a/video/out/vulkan/malloc.h +++ b/video/out/vulkan/malloc.h @@ -11,6 +11,7 @@ struct vk_memslice { VkDeviceMemory vkmem; size_t offset; size_t size; + size_t slab_size; void *priv; }; @@ -32,4 +33,5 @@ struct vk_bufslice { // creating/destroying lots of (little) VkBuffers. bool vk_malloc_buffer(struct mpvk_ctx *vk, VkBufferUsageFlags bufFlags, VkMemoryPropertyFlags memFlags, VkDeviceSize size, - VkDeviceSize alignment, struct vk_bufslice *out); + VkDeviceSize alignment, bool exportable, + struct vk_bufslice *out); |