# Class VulkanLWJGLLogicalDevice

java.lang.Object
com.io7m.jcoronado.lwjgl.internal.VulkanLWJGLLogicalDevice

All Implemented Interfaces:
  `VulkanHandleDispatchableType, VulkanHandleType, VulkanLogicalDeviceType, com.io7m.jmulticlose.core.CloseableType, AutoCloseable`

public final class VulkanLWJGLLogicalDevice extends Object implements VulkanLogicalDeviceType
LWJGL `VkDevice`

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface VulkanLogicalDeviceType

  `VulkanLogicalDeviceType.VulkanEventStatus, VulkanLogicalDeviceType.VulkanFenceStatus, VulkanLogicalDeviceType.VulkanPipelineCacheDataResult, VulkanLogicalDeviceType.VulkanWaitStatus`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<VulkanDescriptorSetType>`
  `allocateDescriptorSets(VulkanDescriptorSetAllocateInfo info)`
  Allocate descriptor sets.
  `VulkanDeviceMemoryType`
  `allocateMemory(VulkanMemoryAllocateInfo info)`
  Allocate device memory.
  `void`
  `bindBufferMemory(VulkanBufferType buffer, VulkanDeviceMemoryType device_memory, long offset)`
  Bind device memory to a buffer object.
  `void`
  `bindImageMemory(VulkanImageType image, VulkanDeviceMemoryType device_memory, long offset)`
  Bind device memory to a image object.
  `protected final void`
  `checkNotClosed()`
  `final void`
  `close()`
  Destroy the object.
  `protected void`
  `closeActual()`
  `VulkanSemaphoreBinaryType`
  `createBinarySemaphore(VulkanSemaphoreBinaryCreateInfo info)`
  Create a binary semaphore.
  `VulkanBufferType`
  `createBuffer(VulkanBufferCreateInfo create_info)`
  Create a buffer.
  `VulkanBufferViewType`
  `createBufferView(VulkanBufferViewCreateInfo info)`
  Create an buffer view.
  `List<VulkanCommandBufferType>`
  `createCommandBuffers(VulkanCommandBufferCreateInfo create_info)`
  Create a command buffer.
  `VulkanCommandPoolType`
  `createCommandPool(VulkanCommandPoolCreateInfo create_info)`
  Create a command pool.
  `List<VulkanPipelineType>`
  `createComputePipelines(Optional<VulkanPipelineCacheType> pipeline_cache, List<VulkanComputePipelineCreateInfo> pipeline_infos)`
  Create a set of compute pipelines.
  `VulkanDescriptorPoolType`
  `createDescriptorPool(VulkanDescriptorPoolCreateInfo info)`
  Create a descriptor pool.
  `VulkanDescriptorSetLayoutType`
  `createDescriptorSetLayout(VulkanDescriptorSetLayoutCreateInfo info)`
  Create a descriptor set layout.
  `VulkanEventType`
  `createEvent(VulkanEventCreateInfo create_info)`
  Create an event.
  `VulkanFenceType`
  `createFence(VulkanFenceCreateInfo createInfo)`
  Create a fence.
  `VulkanFramebufferType`
  `createFramebuffer(VulkanFramebufferCreateInfo create_info)`
  Create a framebuffer.
  `List<VulkanPipelineType>`
  `createGraphicsPipelines(Optional<VulkanPipelineCacheType> pipeline_cache, List<VulkanGraphicsPipelineCreateInfo> pipeline_infos)`
  Create a set of graphics pipelines.
  `VulkanImageType`
  `createImage(VulkanImageCreateInfo create_info)`
  Create an image.
  `VulkanImageViewType`
  `createImageView(VulkanImageViewCreateInfo info)`
  Create an image view.
  `VulkanPipelineCacheType`
  `createPipelineCache(VulkanPipelineCacheCreateInfo create_info)`
  Create a pipeline cache.
  `VulkanPipelineLayoutType`
  `createPipelineLayout(VulkanPipelineLayoutCreateInfo info)`
  Create a pipeline layout.
  `VulkanQueryPoolType`
  `createQueryPool(VulkanQueryPoolCreateInfo create_info)`
  Create a query pool.
  `VulkanRenderPassType`
  `createRenderPass(VulkanRenderPassCreateInfo render_pass_create_info)`
  Create a render pass.
  `VulkanSamplerType`
  `createSampler(VulkanSamplerCreateInfo create_info)`
  Create a sampler.
  `VulkanShaderModuleType`
  `createShaderModule(VulkanShaderModuleCreateInfo create_info)`
  Create a shader module.
  `VulkanSemaphoreTimelineType`
  `createTimelineSemaphore(VulkanSemaphoreTimelineCreateInfo info)`
  Create a timeline semaphore.
  `VulkanDebuggingType`
  `debugging()`
  `org.lwjgl.vulkan.VkDevice`
  `device()`
  `Map<String, VulkanExtensionType>`
  `enabledExtensions()`
  `final boolean`
  `equals(Object o)`
  `void`
  `flushMappedMemoryRanges(List<VulkanMappedMemoryRange> ranges)`
  Flush mapped memory ranges.
  `VulkanDeviceAddress`
  `getBufferDeviceAddress(VulkanBufferType buffer)`
  Retrieve the device address for the given buffer.
  `VulkanMemoryRequirements`
  `getBufferMemoryRequirements(VulkanBufferType buffer)`
  Retrieve the memory requirements for the given buffer.
  `VulkanLogicalDeviceType.VulkanEventStatus`
  `getEventStatus(VulkanEventType event)`
  Retrieve the status of an event object.
  `VulkanLogicalDeviceType.VulkanFenceStatus`
  `getFenceStatus(VulkanFenceType fence)`
  Retrieve the status of a fence object.
  `VulkanMemoryRequirements`
  `getImageMemoryRequirements(VulkanImageType image)`
  Retrieve the memory requirements for the given image.
  `VulkanSubresourceLayout`
  `getImageSubresourceLayout(VulkanImageType image, VulkanImageSubresource image_subresource)`
  Retrieve information about an image subresource.
  `VulkanLogicalDeviceType.VulkanPipelineCacheDataResult`
  `getPipelineCacheData(VulkanPipelineCacheType pipeline_cache, ByteBuffer data)`
  Retrieve the data store for the pipeline cache.
  `long`
  `getPipelineCacheDataSize(VulkanPipelineCacheType pipeline_cache)`
  Retrieve the size of the data store for the pipeline cache.
  `long`
  `getSemaphoreCounterValue(VulkanSemaphoreTimelineType semaphore)`
  Retrieve the current value of a semaphore object.
  `final long`
  `handle()`
  `final int`
  `hashCode()`
  `final VulkanLWJGLHostAllocatorProxy`
  `hostAllocatorProxy()`
  `final boolean`
  `isClosed()`
  `protected org.slf4j.Logger`
  `logger()`
  `VulkanMappedMemoryType`
  `mapMemory(VulkanDeviceMemoryType memory, long offset, long size, Set<VulkanMemoryMapFlag> flags)`
  Map a memory object into the application address space.
  `void`
  `mergePipelineCaches(List<VulkanPipelineCacheType> caches, VulkanPipelineCacheType output)`
  Combine the data stores of pipeline caches.
  `VulkanPhysicalDeviceType`
  `physicalDevice()`
  `List<VulkanQueueType>`
  `queues()`
  `void`
  `resetCommandPool(VulkanCommandPoolType pool, Set<VulkanCommandPoolResetFlag> flags)`
  Reset the given command pool.
  `void`
  `resetDescriptorPool(VulkanDescriptorPoolType pool, Set<VulkanDescriptorPoolResetFlag> flags)`
  Reset the given descriptor pool.
  `void`
  `resetEvent(VulkanEventType event)`
  Reset an event object to non-signaled state.
  `void`
  `resetFences(List<VulkanFenceType> fences)`
  Reset the given fences.
  `void`
  `setEvent(VulkanEventType event)`
  Set an event object to signaled state.
  `void`
  `setName(String inName)`
  Set the object name for debugging.
  `void`
  `signalTimelineSemaphore(VulkanSemaphoreTimelineType semaphore, long value)`
  Signal a timeline semaphore.
  `final String`
  `toString()`
  `void`
  `updateDescriptorSets(List<VulkanWriteDescriptorSet> descriptor_writes, List<VulkanCopyDescriptorSet> descriptor_copies)`
  Update the contents of a descriptor set object.
  `VulkanLogicalDeviceType.VulkanWaitStatus`
  `waitForFences(List<VulkanFenceType> fences, boolean wait_all, long timeout_nanos)`
  Wait for one or more fences to become signaled.
  `VulkanLogicalDeviceType.VulkanWaitStatus`
  `waitForTimelineSemaphores(List<VulkanSemaphoreTimelineWait> semaphores, boolean waitAll, long timeoutNanos)`
  Wait for one or more semaphores to become signaled.
  `void`
  `waitIdle()`
  Wait for this device to become idle.

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface com.io7m.jmulticlose.core.CloseableType

  `isClosed`

  ### Methods inherited from interface VulkanLogicalDeviceType

  `close, createBinarySemaphore, createCommandBuffer, createComputePipeline, createComputePipeline, createComputePipeline, createComputePipelines, createComputePipelines, createFence, createGraphicsPipeline, createGraphicsPipeline, createGraphicsPipeline, createGraphicsPipelines, createGraphicsPipelines, createTimelineSemaphore, findEnabledExtension, flushMappedMemoryRange, queue, resetCommandPool, resetDescriptorPool, waitForFence, waitForTimelineSemaphore`

- ## Method Details

  - ### device

    public org.lwjgl.vulkan.VkDevice device()
    Returns:
      The underlying device

  - ### debugging

    public VulkanDebuggingType debugging()
    Specified by:
      `debugging` in interface `VulkanLogicalDeviceType`
    Returns:
      A reference to a possibly no-op debugging interface

  - ### physicalDevice

    public VulkanPhysicalDeviceType physicalDevice()
    Specified by:
      `physicalDevice` in interface `VulkanLogicalDeviceType`
    Returns:
      The physical device to which this logical device belongs

  - ### queues

    public List<VulkanQueueType> queues() throws VulkanDestroyedException
    Specified by:
      `queues` in interface `VulkanLogicalDeviceType`
    Returns:
      The queues present on the logical device
    Throws:
      `VulkanDestroyedException`

  - ### enabledExtensions

    public Map<String, VulkanExtensionType> enabledExtensions() throws VulkanDestroyedException
    Specified by:
      `enabledExtensions` in interface `VulkanLogicalDeviceType`
    Returns:
      The enabled extensions for the instance
    Throws:
      `VulkanDestroyedException`

  - ### createShaderModule

    public VulkanShaderModuleType createShaderModule(VulkanShaderModuleCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a shader module.
    Specified by:
      `createShaderModule` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The creation info
    Returns:
      A shader module
    Throws:
      `VulkanException` - On errors

  - ### createSampler

    public VulkanSamplerType createSampler(VulkanSamplerCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a sampler.
    Specified by:
      `createSampler` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The creation info
    Returns:
      A sampler
    Throws:
      `VulkanException` - On errors

  - ### createBufferView

    public VulkanBufferViewType createBufferView(VulkanBufferViewCreateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create an buffer view.
    Specified by:
      `createBufferView` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The buffer view creation info
    Returns:
      An buffer view
    Throws:
      `VulkanException` - On errors

  - ### createImageView

    public VulkanImageViewType createImageView(VulkanImageViewCreateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create an image view.
    Specified by:
      `createImageView` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The image view creation info
    Returns:
      An image view
    Throws:
      `VulkanException` - On errors

  - ### flushMappedMemoryRanges

    public void flushMappedMemoryRanges(List<VulkanMappedMemoryRange> ranges) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Flush mapped memory ranges.
    Specified by:
      `flushMappedMemoryRanges` in interface `VulkanLogicalDeviceType`
    Parameters:
      `ranges` - The ranges
    Throws:
      `VulkanException` - On errors

  - ### createPipelineLayout

    public VulkanPipelineLayoutType createPipelineLayout(VulkanPipelineLayoutCreateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a pipeline layout.
    Specified by:
      `createPipelineLayout` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The pipeline layout creation info
    Returns:
      A pipeline layout
    Throws:
      `VulkanException` - On errors

  - ### createDescriptorSetLayout

    public VulkanDescriptorSetLayoutType createDescriptorSetLayout(VulkanDescriptorSetLayoutCreateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a descriptor set layout.
    Specified by:
      `createDescriptorSetLayout` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The descriptor set layout creation info
    Returns:
      A descriptor set layout
    Throws:
      `VulkanException` - On errors

  - ### createDescriptorPool

    public VulkanDescriptorPoolType createDescriptorPool(VulkanDescriptorPoolCreateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a descriptor pool.
    Specified by:
      `createDescriptorPool` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The descriptor pool creation info
    Returns:
      A descriptor pool
    Throws:
      `VulkanException` - On errors

  - ### allocateDescriptorSets

    public List<VulkanDescriptorSetType> allocateDescriptorSets(VulkanDescriptorSetAllocateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Allocate descriptor sets.
    Specified by:
      `allocateDescriptorSets` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The descriptor set allocation info
    Returns:
      A list of descriptor sets
    Throws:
      `VulkanException` - On errors

  - ### updateDescriptorSets

    public void updateDescriptorSets(List<VulkanWriteDescriptorSet> descriptor_writes, List<VulkanCopyDescriptorSet> descriptor_copies) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Update the contents of a descriptor set object.
    Specified by:
      `updateDescriptorSets` in interface `VulkanLogicalDeviceType`
    Parameters:
      `descriptor_writes` - An array of VulkanWriteDescriptorSet structures describing the descriptor sets to write to
      `descriptor_copies` - An array of VulkanCopyDescriptorSet structures describing the descriptor sets to copy between.
    Throws:
      `VulkanException` - On errors

  - ### createRenderPass

    public VulkanRenderPassType createRenderPass(VulkanRenderPassCreateInfo render_pass_create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a render pass.
    Specified by:
      `createRenderPass` in interface `VulkanLogicalDeviceType`
    Parameters:
      `render_pass_create_info` - The render pass creation info
    Returns:
      A render pass
    Throws:
      `VulkanException` - On errors

  - ### createPipelineCache

    public VulkanPipelineCacheType createPipelineCache(VulkanPipelineCacheCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a pipeline cache.
    Specified by:
      `createPipelineCache` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The pipeline cache creation info
    Returns:
      A pipeline cache
    Throws:
      `VulkanException` - On errors

  - ### getPipelineCacheDataSize

    public long getPipelineCacheDataSize(VulkanPipelineCacheType pipeline_cache) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve the size of the data store for the pipeline cache.
    Specified by:
      `getPipelineCacheDataSize` in interface `VulkanLogicalDeviceType`
    Parameters:
      `pipeline_cache` - The pipeline cache
    Returns:
      The size of the pipeline cache data
    Throws:
      `VulkanException` - On errors

  - ### getImageMemoryRequirements

    public VulkanMemoryRequirements getImageMemoryRequirements(VulkanImageType image) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve the memory requirements for the given image.
    Specified by:
      `getImageMemoryRequirements` in interface `VulkanLogicalDeviceType`
    Parameters:
      `image` - The image
    Returns:
      The memory requirements
    Throws:
      `VulkanException` - On errors

  - ### getPipelineCacheData

    public VulkanLogicalDeviceType.VulkanPipelineCacheDataResult getPipelineCacheData(VulkanPipelineCacheType pipeline_cache, ByteBuffer data) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve the data store for the pipeline cache.
    Specified by:
      `getPipelineCacheData` in interface `VulkanLogicalDeviceType`
    Parameters:
      `pipeline_cache` - The pipeline cache
      `data` - The buffer used to store the data
    Returns:
      A value indicating the result of the retrieval
    Throws:
      `VulkanException` - On errors
    See Also:
      - `VulkanLogicalDeviceType.getPipelineCacheDataSize(VulkanPipelineCacheType)`

  - ### createGraphicsPipelines

    public List<VulkanPipelineType> createGraphicsPipelines(Optional<VulkanPipelineCacheType> pipeline_cache, List<VulkanGraphicsPipelineCreateInfo> pipeline_infos) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a set of graphics pipelines.
    Specified by:
      `createGraphicsPipelines` in interface `VulkanLogicalDeviceType`
    Parameters:
      `pipeline_cache` - A pipeline cache
      `pipeline_infos` - The pipeline creation infos
    Returns:
      A list of graphics pipelines
    Throws:
      `VulkanException` - On errors

  - ### createQueryPool

    public VulkanQueryPoolType createQueryPool(VulkanQueryPoolCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a query pool.
    Specified by:
      `createQueryPool` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The query pool creation info
    Returns:
      A query pool
    Throws:
      `VulkanException` - On errors

  - ### createFramebuffer

    public VulkanFramebufferType createFramebuffer(VulkanFramebufferCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a framebuffer.
    Specified by:
      `createFramebuffer` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The framebuffer creation info
    Returns:
      A pipeline
    Throws:
      `VulkanException` - On errors

  - ### createCommandPool

    public VulkanCommandPoolType createCommandPool(VulkanCommandPoolCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a command pool.
    Specified by:
      `createCommandPool` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The pool creation info
    Returns:
      A command pool
    Throws:
      `VulkanException` - On errors

  - ### createCommandBuffers

    public List<VulkanCommandBufferType> createCommandBuffers(VulkanCommandBufferCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a command buffer.
    Specified by:
      `createCommandBuffers` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The command buffer creation info
    Returns:
      A list of command buffers
    Throws:
      `VulkanException` - On errors

  - ### createBinarySemaphore

    public VulkanSemaphoreBinaryType createBinarySemaphore(VulkanSemaphoreBinaryCreateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a binary semaphore.
    Specified by:
      `createBinarySemaphore` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The semaphore creation info
    Returns:
      A semaphore
    Throws:
      `VulkanException` - On errors

  - ### createTimelineSemaphore

    public VulkanSemaphoreTimelineType createTimelineSemaphore(VulkanSemaphoreTimelineCreateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a timeline semaphore.
    Specified by:
      `createTimelineSemaphore` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The semaphore creation info
    Returns:
      A semaphore
    Throws:
      `VulkanException` - On errors

  - ### createFence

    public VulkanFenceType createFence(VulkanFenceCreateInfo createInfo) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a fence.
    Specified by:
      `createFence` in interface `VulkanLogicalDeviceType`
    Parameters:
      `createInfo` - The fence creation info
    Returns:
      A fence
    Throws:
      `VulkanException` - On errors

  - ### createEvent

    public VulkanEventType createEvent(VulkanEventCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create an event.
    Specified by:
      `createEvent` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The event creation info
    Returns:
      An event
    Throws:
      `VulkanException` - On errors

  - ### resetFences

    public void resetFences(List<VulkanFenceType> fences) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Reset the given fences.
    Specified by:
      `resetFences` in interface `VulkanLogicalDeviceType`
    Parameters:
      `fences` - The fences
    Throws:
      `VulkanException` - On errors

  - ### resetCommandPool

    public void resetCommandPool(VulkanCommandPoolType pool, Set<VulkanCommandPoolResetFlag> flags) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Reset the given command pool.
    Specified by:
      `resetCommandPool` in interface `VulkanLogicalDeviceType`
    Parameters:
      `pool` - The command pool
      `flags` - The reset flags
    Throws:
      `VulkanException` - On errors

  - ### resetDescriptorPool

    public void resetDescriptorPool(VulkanDescriptorPoolType pool, Set<VulkanDescriptorPoolResetFlag> flags) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Reset the given descriptor pool.
    Specified by:
      `resetDescriptorPool` in interface `VulkanLogicalDeviceType`
    Parameters:
      `pool` - The descriptor pool
      `flags` - The reset flags
    Throws:
      `VulkanException` - On errors

  - ### waitIdle

    public void waitIdle() throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Wait for this device to become idle.
    Specified by:
      `waitIdle` in interface `VulkanLogicalDeviceType`
    Throws:
      `VulkanException` - On errors

  - ### waitForFences

    public VulkanLogicalDeviceType.VulkanWaitStatus waitForFences(List<VulkanFenceType> fences, boolean wait_all, long timeout_nanos) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Wait for one or more fences to become signaled.
    Specified by:
      `waitForFences` in interface `VulkanLogicalDeviceType`
    Parameters:
      `fences` - The fences upon which to wait
      `wait_all` - `true` if all fences must become signalled to stop waiting, `false` if any fence can become signalled
      `timeout_nanos` - The timeout period in units of nanoseconds.
    Returns:
      A value indicating whether waiting succeeded or timed out
    Throws:
      `VulkanException` - On errors

  - ### createBuffer

    public VulkanBufferType createBuffer(VulkanBufferCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a buffer.
    Specified by:
      `createBuffer` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The buffer creation info
    Returns:
      A buffer
    Throws:
      `VulkanException` - On errors

  - ### createImage

    public VulkanImageType createImage(VulkanImageCreateInfo create_info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create an image.
    Specified by:
      `createImage` in interface `VulkanLogicalDeviceType`
    Parameters:
      `create_info` - The image creation info
    Returns:
      A image
    Throws:
      `VulkanException` - On errors

  - ### getBufferMemoryRequirements

    public VulkanMemoryRequirements getBufferMemoryRequirements(VulkanBufferType buffer) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve the memory requirements for the given buffer.
    Specified by:
      `getBufferMemoryRequirements` in interface `VulkanLogicalDeviceType`
    Parameters:
      `buffer` - The buffer
    Returns:
      The memory requirements
    Throws:
      `VulkanException` - On errors

  - ### getBufferDeviceAddress

    public VulkanDeviceAddress getBufferDeviceAddress(VulkanBufferType buffer) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve the device address for the given buffer.
    Specified by:
      `getBufferDeviceAddress` in interface `VulkanLogicalDeviceType`
    Parameters:
      `buffer` - The buffer
    Returns:
      The address
    Throws:
      `VulkanException` - On errors

  - ### allocateMemory

    public VulkanDeviceMemoryType allocateMemory(VulkanMemoryAllocateInfo info) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Allocate device memory.
    Specified by:
      `allocateMemory` in interface `VulkanLogicalDeviceType`
    Parameters:
      `info` - The allocation info
    Returns:
      Allocated memory
    Throws:
      `VulkanException` - On errors

  - ### bindBufferMemory

    public void bindBufferMemory(VulkanBufferType buffer, VulkanDeviceMemoryType device_memory, long offset) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Bind device memory to a buffer object.
    Specified by:
      `bindBufferMemory` in interface `VulkanLogicalDeviceType`
    Parameters:
      `buffer` - The logical device that owns the buffer and memory
      `device_memory` - The device memory to attach
      `offset` - The start offset of the region of memory which is to be bound to the buffer. The number of bytes returned in the VkMemoryRequirements::size member in memory, starting from memoryOffset bytes, will be bound to the specified buffer.
    Throws:
      `VulkanException` - On errors

  - ### bindImageMemory

    public void bindImageMemory(VulkanImageType image, VulkanDeviceMemoryType device_memory, long offset) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Bind device memory to a image object.
    Specified by:
      `bindImageMemory` in interface `VulkanLogicalDeviceType`
    Parameters:
      `image` - The logical device that owns the image and memory
      `device_memory` - The device memory to attach
      `offset` - The start offset of the region of memory which is to be bound to the image. The number of bytes returned in the VkMemoryRequirements::size member in memory, starting from memoryOffset bytes, will be bound to the specified image.
    Throws:
      `VulkanException` - On errors

  - ### mapMemory

    public VulkanMappedMemoryType mapMemory(VulkanDeviceMemoryType memory, long offset, long size, Set<VulkanMemoryMapFlag> flags) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Map a memory object into the application address space.
    Specified by:
      `mapMemory` in interface `VulkanLogicalDeviceType`
    Parameters:
      `memory` - The device memory object to be mapped
      `offset` - A zero-based byte offset from the beginning of the memory object
      `size` - The size of the memory range to map, or VK_WHOLE_SIZE to map from offset to the end of the allocation
      `flags` - The flags
    Returns:
      Mapped memory
    Throws:
      `VulkanException` - On errors

  - ### mergePipelineCaches

    public void mergePipelineCaches(List<VulkanPipelineCacheType> caches, VulkanPipelineCacheType output) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Combine the data stores of pipeline caches.
    Specified by:
      `mergePipelineCaches` in interface `VulkanLogicalDeviceType`
    Parameters:
      `caches` - The input caches
      `output` - The output cache
    Throws:
      `VulkanException` - On errors

  - ### setEvent

    public void setEvent(VulkanEventType event) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Set an event object to signaled state.
    Specified by:
      `setEvent` in interface `VulkanLogicalDeviceType`
    Parameters:
      `event` - The event
    Throws:
      `VulkanException` - On errors

  - ### resetEvent

    public void resetEvent(VulkanEventType event) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Reset an event object to non-signaled state.
    Specified by:
      `resetEvent` in interface `VulkanLogicalDeviceType`
    Parameters:
      `event` - The event
    Throws:
      `VulkanException` - On errors

  - ### getEventStatus

    public VulkanLogicalDeviceType.VulkanEventStatus getEventStatus(VulkanEventType event) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve the status of an event object.
    Specified by:
      `getEventStatus` in interface `VulkanLogicalDeviceType`
    Parameters:
      `event` - The event
    Returns:
      The event status
    Throws:
      `VulkanException` - On errors

  - ### getSemaphoreCounterValue

    public long getSemaphoreCounterValue(VulkanSemaphoreTimelineType semaphore) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve the current value of a semaphore object.
    Specified by:
      `getSemaphoreCounterValue` in interface `VulkanLogicalDeviceType`
    Parameters:
      `semaphore` - The semaphore
    Returns:
      The semaphore value
    Throws:
      `VulkanException` - On errors

  - ### getFenceStatus

    public VulkanLogicalDeviceType.VulkanFenceStatus getFenceStatus(VulkanFenceType fence) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve the status of a fence object.
    Specified by:
      `getFenceStatus` in interface `VulkanLogicalDeviceType`
    Parameters:
      `fence` - The fence
    Returns:
      The fence status
    Throws:
      `VulkanException` - On errors

  - ### getImageSubresourceLayout

    public VulkanSubresourceLayout getImageSubresourceLayout(VulkanImageType image, VulkanImageSubresource image_subresource) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Retrieve information about an image subresource.
    Specified by:
      `getImageSubresourceLayout` in interface `VulkanLogicalDeviceType`
    Parameters:
      `image` - The image
      `image_subresource` - A structure selecting a specific image for the image subresource
    Returns:
      The subresource layout
    Throws:
      `VulkanException` - On errors

  - ### createComputePipelines

    public List<VulkanPipelineType> createComputePipelines(Optional<VulkanPipelineCacheType> pipeline_cache, List<VulkanComputePipelineCreateInfo> pipeline_infos) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Create a set of compute pipelines.
    Specified by:
      `createComputePipelines` in interface `VulkanLogicalDeviceType`
    Parameters:
      `pipeline_cache` - A pipeline cache
      `pipeline_infos` - The pipeline creation infos
    Returns:
      A list of compute pipelines
    Throws:
      `VulkanException` - On errors

  - ### waitForTimelineSemaphores

    public VulkanLogicalDeviceType.VulkanWaitStatus waitForTimelineSemaphores(List<VulkanSemaphoreTimelineWait> semaphores, boolean waitAll, long timeoutNanos) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Wait for one or more semaphores to become signaled.
    Specified by:
      `waitForTimelineSemaphores` in interface `VulkanLogicalDeviceType`
    Parameters:
      `semaphores` - The semaphores upon which to wait
      `waitAll` - `true` if all semaphores must become signalled to stop waiting, `false` if any semaphore can become signalled
      `timeoutNanos` - The timeout period in units of nanoseconds.
    Returns:
      A value indicating whether waiting succeeded or timed out
    Throws:
      `VulkanException` - On errors

  - ### signalTimelineSemaphore

    public void signalTimelineSemaphore(VulkanSemaphoreTimelineType semaphore, long value) throws VulkanException
    Description copied from interface: `VulkanLogicalDeviceType`
    Signal a timeline semaphore.
    Specified by:
      `signalTimelineSemaphore` in interface `VulkanLogicalDeviceType`
    Parameters:
      `semaphore` - The semaphore
      `value` - The value
    Throws:
      `VulkanException` - On errors

  - ### logger

    protected org.slf4j.Logger logger()

  - ### closeActual

    protected void closeActual()

  - ### hostAllocatorProxy

    public final VulkanLWJGLHostAllocatorProxy hostAllocatorProxy()
    Returns:
      The underlying host allocator proxy

  - ### isClosed

    public final boolean isClosed()
    Specified by:
      `isClosed` in interface `com.io7m.jmulticlose.core.CloseableType`

  - ### close

    public final void close()
    Description copied from interface: `VulkanHandleType`
    Destroy the object.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `VulkanHandleType`

  - ### equals

    public final boolean equals(Object o)
    Overrides:
      `equals` in class `Object`

  - ### hashCode

    public final int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### toString

    public final String toString()
    Overrides:
      `toString` in class `Object`

  - ### handle

    public final long handle()
    Returns:
      The raw handle

  - ### checkNotClosed

    protected final void checkNotClosed() throws VulkanDestroyedException
    Throws:
      `VulkanDestroyedException`

  - ### setName

    public void setName(String inName)
    Set the object name for debugging.
    Parameters:
      `inName` - The name