1    type StorageBuffer =
2        inherit Buffer type = BufferType/Storage
3                       offset = 0
4    
5        let device : VkDevice
6        let memory : VkMemory
7    
8        def discard =
9            vk/destroy_buffer device object null
10           vk/free_memory device memory null
11   
12   object StorageBuffer =
13       def create (size : u32) =
14           let instance : Instance @auto
15   
16           let device = instance.device
17           let flags = MemoryPropertyFlags/DeviceLocal
18           let usage = BufferUsageFlags/TransferSrc
19                       | BufferUsageFlags/TransferDst
20                       | BufferUsageFlags/StorageBuffer
21   
22           let (buffer, memory) = buffer/create instance.physical_device instance.device
23                                                size.as<u64> usage flags
24           StorageBuffer object = buffer
25                         =size =usage =device =memory
26