1 module buffer 2 3 def create (physical_device : VkPhysicalDevice 4 device : VkDevice 5 size : u64 6 usage : BufferUsageFlags 7 memory_property_flags : MemoryPropertyFlags) : (VkBuffer, VkMemory) = 8 let buffer_info = BufferCreateInfo 9 type = StructureType/BufferCreateInfo 10 next = null 11 flags = BufferCreateFlags@zero 12 =size =usage 13 sharing_mode = SharingMode/Exclusive 14 queue_family_index_count = 0 15 queue_family_indices = null 16 17 let mut buffer = null 18 vk/create_buffer device buffer_info@ptr null buffer@mut_ptr 19 |> assert_success 20 21 let mut memory_requirements = struct@zero 22 vk/get_buffer_memory_requirements device buffer memory_requirements@mut_ptr 23 24 let memory_type_index = 25 physical_device.get_memory_type_index memory_requirements.memory_type_bits 26 memory_property_flags 27 let allocate_info = MemoryAllocateInfo 28 type = StructureType/MemoryAllocateInfo 29 next = null 30 allocation_size = memory_requirements.size 31 =memory_type_index 32 33 let mut buffer_memory = null 34 vk/allocate_memory device allocate_info@ptr null buffer_memory@mut_ptr 35 |> assert_success 36 37 vk/bind_buffer_memory device buffer buffer_memory 0 38 39 (buffer, buffer_memory) 40