# Class VulkanLWJGLInstance

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

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

public final class VulkanLWJGLInstance extends Object implements VulkanInstanceType
LWJGL `VkInstance`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `VulkanLWJGLInstance(org.lwjgl.vulkan.VkInstance inInstance, VulkanLWJGLExtensionsRegistry inExtensionRegistry, Map<String, VulkanExtensionType> inExtensionsEnabled, VulkanLWJGLHostAllocatorProxy inHostAllocatorProxy, VulkanVersion inApiVersionMaximumSupported, VulkanVersion inApiVersionUsed)`
  LWJGL `VkInstance`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `VulkanVersion`
  `apiVersionMaximumSupported()`
  Find the maximum API version supported.
  `VulkanVersion`
  `apiVersionUsed()`
  Return the API version that this instance will support.
  `protected final void`
  `checkNotClosed()`
  `final void`
  `close()`
  Destroy the object.
  `protected void`
  `closeActual()`
  `Map<String, VulkanExtensionType>`
  `enabledExtensions()`
  `Stream<VulkanPhysicalDeviceType>`
  `enumeratePhysicalDevices()`
  `final boolean`
  `equals(Object o)`
  `final long`
  `handle()`
  `final int`
  `hashCode()`
  `final VulkanLWJGLHostAllocatorProxy`
  `hostAllocatorProxy()`
  `org.lwjgl.vulkan.VkInstance`
  `instance()`
  `final boolean`
  `isClosed()`
  `protected org.slf4j.Logger`
  `logger()`
  `void`
  `setName(String inName)`
  Set the object name for debugging.
  `final String`
  `toString()`

  ### 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 VulkanInstanceType

  `close, findEnabledExtension, physicalDevices`

- ## Constructor Details

  - ### VulkanLWJGLInstance

    public VulkanLWJGLInstance(org.lwjgl.vulkan.VkInstance inInstance, VulkanLWJGLExtensionsRegistry inExtensionRegistry, Map<String, VulkanExtensionType> inExtensionsEnabled, VulkanLWJGLHostAllocatorProxy inHostAllocatorProxy, VulkanVersion inApiVersionMaximumSupported, VulkanVersion inApiVersionUsed)
    LWJGL `VkInstance`
    Parameters:
      `inInstance` - The instance
      `inExtensionRegistry` - The extensions
      `inExtensionsEnabled` - The enabled extensions
      `inHostAllocatorProxy` - The host allocator proxy
      `inApiVersionMaximumSupported` - The maximum API version
      `inApiVersionUsed` - The used API version

- ## Method Details

  - ### logger

    protected org.slf4j.Logger logger()

  - ### closeActual

    protected void closeActual()

  - ### enumeratePhysicalDevices

    public Stream<VulkanPhysicalDeviceType> enumeratePhysicalDevices() throws VulkanException
    Specified by:
      `enumeratePhysicalDevices` in interface `VulkanInstanceType`
    Returns:
      The available physical devices
    Throws:
      `VulkanException` - On errors

  - ### apiVersionMaximumSupported

    public VulkanVersion apiVersionMaximumSupported()
    Description copied from interface: `VulkanInstanceType`
    Find the maximum API version supported. This is essentially the same as `VulkanInstanceProviderType.findSupportedInstanceVersion()`, and does not indicate that this particular instance will allow function calls that require that version.
    Specified by:
      `apiVersionMaximumSupported` in interface `VulkanInstanceType`
    Returns:
      The maximum API version supported
    See Also:
      - `VulkanInstanceType.apiVersionUsed()`

  - ### apiVersionUsed

    public VulkanVersion apiVersionUsed()
    Description copied from interface: `VulkanInstanceType`
    Return the API version that this instance will support. This is the version that the user actually requested, and therefore defines the upper bound for the Vulkan API version that can be used with this instance.
    Specified by:
      `apiVersionUsed` in interface `VulkanInstanceType`
    Returns:
      The API version that this instance is configured to use

  - ### enabledExtensions

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

  - ### instance

    public org.lwjgl.vulkan.VkInstance instance()
    Returns:
      The underlying instance

  - ### 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