1    def submit (sync : Sync) (image_index : u32) =
2        let command_buffer : CommandBuffer @auto
3    
4        let (semaphore_to_acquire, semaphore_count) =
5            if sync.semaphore_acquired
6            then (sync.image_acquired_semaphores[sync.sync_index], 1)
7            else (null, 0)
8    
9        let submit_info = SubmitInfo
10           type = StructureType/SubmitInfo
11           next = null
12           wait_semaphore_count = semaphore_count
13           wait_semaphores = semaphore_to_acquire@ptr
14           wait_dst_stage_mask = PipelineStageFlags/ColorAttachmentOutput@ptr
15           command_buffer_count = 1
16           command_buffers = command_buffer.object@ptr
17           signal_semaphore_count = 1
18           signal_semaphores = sync.ready_for_present_semaphores.as_ptr + image_index
19   
20       vk/queue_submit command_buffer.instance.graphics_queue 1 submit_info@ptr
21                       sync.fences[sync.sync_index]
22       |> assert_success
23