# Interface VulkanInstanceProviderType

All Known Implementing Classes:
  `VulkanLWJGLInstanceProvider`

public interface VulkanInstanceProviderType
Functions to provide Vulkan instances.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `VulkanInstanceType`
  `createInstance(VulkanInstanceCreateInfo info, Optional<VulkanHostAllocatorType> allocator)`
  Create a new instance.
  `Map<String, VulkanExtensionProperties>`
  `extensions()`
  `VulkanVersion`
  `findSupportedInstanceVersion()`
  `Map<String, VulkanLayerProperties>`
  `layers()`
  `VulkanVersion`
  `minimumRequiredVersion()`
  `String`
  `providerName()`
  `String`
  `providerVersion()`

- ## Method Details

  - ### minimumRequiredVersion

    VulkanVersion minimumRequiredVersion()
    Returns:
      The minimum version required by the instance provider

  - ### providerName

    String providerName()
    Returns:
      The name of the (software) provider

  - ### providerVersion

    String providerVersion()
    Returns:
      The version of the (software) provider

  - ### findSupportedInstanceVersion

    VulkanVersion findSupportedInstanceVersion()
    Returns:
      The supported instance version

  - ### extensions

    Map<String, VulkanExtensionProperties> extensions() throws VulkanException
    Returns:
      The available instance extensions
    Throws:
      `VulkanException` - On errors

  - ### layers

    Map<String, VulkanLayerProperties> layers() throws VulkanException
    Returns:
      The available layers
    Throws:
      `VulkanException` - On errors

  - ### createInstance

    VulkanInstanceType createInstance(VulkanInstanceCreateInfo info, Optional<VulkanHostAllocatorType> allocator) throws VulkanException
    Create a new instance.
    Parameters:
      `info` - The creation info
      `allocator` - The optional host allocator
    Returns:
      A new instance
    Throws:
      `VulkanException` - On errors