Class: Vulkan::Fence

Inherits:
Object
  • Object
show all
Includes:
Checks, Finalizer
Defined in:
lib/vulkan/fence.rb

Instance Method Summary collapse

Methods included from Finalizer

#finalize_with, #hexaddr, included, #to_ptr

Methods included from Checks

#check_result

Constructor Details

#initialize(vk, signaled: false) ⇒ Fence

Returns a new instance of Fence.



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/vulkan/fence.rb', line 6

def initialize(vk, signaled: false)
  @vk = vk
  fence_info = VkFenceCreateInfo.malloc
  fence_info.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
  fence_info.flags = (signaled ? VK_FENCE_CREATE_SIGNALED_BIT : 0)
  fence_p = Vulkan.create_value('void *', nil)
  check_result @vk.vkCreateFence(@vk.device, fence_info, nil, fence_p)
  @handle = fence_p.value
  finalize_with @vk, :vkDestroyFence, @vk.device, @handle, nil
  @self_p = Vulkan.create_value('void *', nil)
  @self_p.value = @handle
end

Instance Method Details

#resetObject



23
24
25
# File 'lib/vulkan/fence.rb', line 23

def reset
  @vk.vkResetFences(@vk.device, 1, @self_p)
end

#waitObject



19
20
21
# File 'lib/vulkan/fence.rb', line 19

def wait
  @vk.vkWaitForFences(@vk.device, 1, @self_p, VK_TRUE, 0xffffffffffffffff)
end

#wait_and_resetObject



27
28
29
30
# File 'lib/vulkan/fence.rb', line 27

def wait_and_reset
  wait
  reset
end