43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/vulkan/queue.rb', line 43
def submit(command_buffers, wait_semaphores: [], wait_stages: [], signal_semaphores: [], fence: nil)
wait_stages_p = @wait_stages_buffers[wait_stages.size] ||= Vulkan.struct(["VkPipelineStageFlags stages[#{wait_stages.size}]"]).malloc
wait_stages.each_with_index { |stage, index| wait_stages_p.stages[index] = stage }
wait_semaphores_p = @wait_semaphores_buffers[wait_semaphores.size] ||= Fiddle::Pointer.malloc(wait_semaphores.size * Fiddle::SIZEOF_VOIDP)
array_of_pointers(wait_semaphores, wait_semaphores_p)
signal_semaphores_p = @signal_semaphores_buffers[signal_semaphores.size] ||= Fiddle::Pointer.malloc(signal_semaphores.size * Fiddle::SIZEOF_VOIDP)
array_of_pointers(signal_semaphores, signal_semaphores_p)
command_buffers_p = @command_buffers_buffers[command_buffers.size] ||= Fiddle::Pointer.malloc(command_buffers.size * Fiddle::SIZEOF_VOIDP)
array_of_pointers(command_buffers, command_buffers_p)
submit_info = @submit_infos[1].infos[0]
submit_info.waitSemaphoreCount = wait_semaphores.size
submit_info.pWaitSemaphores = wait_semaphores_p
submit_info.pWaitDstStageMask = wait_stages_p
submit_info.commandBufferCount = command_buffers.size
submit_info.pCommandBuffers = command_buffers_p
submit_info.signalSemaphoreCount = signal_semaphores.size
submit_info.pSignalSemaphores = signal_semaphores_p
submit_infos(@submit_infos[1].infos, fence)
end
|