Vulkan_api.Memorytype 'a buffer = {buffer : Vulkan_types.vk_buffer;memory : Vulkan_types.vk_device_memory;size : int;elem_size : int;device : Device.t;mutable mapped_ptr : unit Ctypes.ptr option;}val find_memory_type : Device.t -> int -> int -> intFind suitable memory type
val free : 'a buffer -> unitVulkan doesn't expose device pointers like CUDA. Return 0 as placeholder. Binding uses the buffer handle directly via set_arg_buffer.
Vulkan always uses explicit transfers (vkMapMemory/memcpy), never zero-copy
val host_to_device :
src:('a, 'b, 'c) Stdlib.Bigarray.Array1.t ->
dst:'d buffer ->
unitval device_to_host :
src:'a buffer ->
dst:('b, 'c, 'd) Stdlib.Bigarray.Array1.t ->
unitval host_ptr_to_device :
src_ptr:unit Ctypes_static.ptr ->
byte_size:int ->
dst:'a buffer ->
unitval device_to_host_ptr :
src:'a buffer ->
dst_ptr:unit Ctypes_static.ptr ->
byte_size:int ->
unit