# Class VulkanLWJGLPhysicalDevice

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

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

public final class VulkanLWJGLPhysicalDevice extends Object implements VulkanPhysicalDeviceType
LWJGL `VkPhysicalDevice`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected final void`
  `checkNotClosed()`
  `final void`
  `close()`
  Destroy the object.
  `protected void`
  `closeActual()`
  `VulkanLogicalDeviceType`
  `createLogicalDevice(VulkanLogicalDeviceCreateInfo info)`
  Create a new logical device from this physical device.
  `org.lwjgl.vulkan.VkPhysicalDevice`
  `device()`
  `Optional<VulkanPhysicalDeviceDriverProperties>`
  `driverProperties()`
  Retrieve the device driver properties.
  `final boolean`
  `equals(Object o)`
  `Map<String, VulkanExtensionProperties>`
  `extensions(Optional<String> layer)`
  `VulkanPhysicalDeviceFeatures`
  `features()`
  `VulkanFormatProperties`
  `formatProperties(VulkanFormat format)`
  `final long`
  `handle()`
  `final int`
  `hashCode()`
  `final VulkanLWJGLHostAllocatorProxy`
  `hostAllocatorProxy()`
  `Optional<VulkanPhysicalDeviceIDProperties>`
  `idProperties()`
  Retrieve the device ID properties.
  `VulkanImageFormatProperties`
  `imageFormatProperties(VulkanFormat format, VulkanImageKind type, VulkanImageTiling tiling, Set<VulkanImageUsageFlag> usage, Set<VulkanImageCreateFlag> flags)`
  `VulkanInstanceType`
  `instance()`
  `final boolean`
  `isClosed()`
  `Map<String, VulkanLayerProperties>`
  `layers()`
  `VulkanPhysicalDeviceLimits`
  `limits()`
  `protected org.slf4j.Logger`
  `logger()`
  `VulkanPhysicalDeviceMemoryProperties`
  `memory()`
  `VulkanPhysicalDeviceProperties`
  `properties()`
  `SortedMap<VulkanQueueFamilyIndex, VulkanQueueFamilyProperties>`
  `queueFamilies()`
  `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 VulkanHandleType

  `close`

  ### Methods inherited from interface VulkanPhysicalDeviceType

  `queueFamilyFindWithFlags, queueFamilyFindWithFlags`

- ## Method Details

  - ### device

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

  - ### instance

    public VulkanInstanceType instance()
    Specified by:
      `instance` in interface `VulkanPhysicalDeviceType`
    Returns:
      The instance to which the physical device belongs

  - ### extensions

    public Map<String, VulkanExtensionProperties> extensions(Optional<String> layer) throws VulkanException
    Specified by:
      `extensions` in interface `VulkanPhysicalDeviceType`
    Parameters:
      `layer` - The layer that will be inspected for extensions
    Returns:
      The available device extensions
    Throws:
      `VulkanException` - On errors

  - ### layers

    public Map<String, VulkanLayerProperties> layers() throws VulkanException
    Specified by:
      `layers` in interface `VulkanPhysicalDeviceType`
    Returns:
      The available layers
    Throws:
      `VulkanException` - On errors

  - ### properties

    public VulkanPhysicalDeviceProperties properties() throws VulkanDestroyedException
    Specified by:
      `properties` in interface `VulkanPhysicalDeviceType`
    Returns:
      The basic properties of the device
    Throws:
      `VulkanDestroyedException`

  - ### limits

    public VulkanPhysicalDeviceLimits limits() throws VulkanDestroyedException
    Specified by:
      `limits` in interface `VulkanPhysicalDeviceType`
    Returns:
      The limits of the device
    Throws:
      `VulkanDestroyedException`

  - ### features

    public VulkanPhysicalDeviceFeatures features() throws VulkanDestroyedException
    Specified by:
      `features` in interface `VulkanPhysicalDeviceType`
    Returns:
      The features of the device
    Throws:
      `VulkanDestroyedException`

  - ### formatProperties

    public VulkanFormatProperties formatProperties(VulkanFormat format) throws VulkanException
    Specified by:
      `formatProperties` in interface `VulkanPhysicalDeviceType`
    Parameters:
      `format` - The format
    Returns:
      The properties of the given format
    Throws:
      `VulkanException` - On errors

  - ### imageFormatProperties

    public VulkanImageFormatProperties imageFormatProperties(VulkanFormat format, VulkanImageKind type, VulkanImageTiling tiling, Set<VulkanImageUsageFlag> usage, Set<VulkanImageCreateFlag> flags) throws VulkanException
    Specified by:
      `imageFormatProperties` in interface `VulkanPhysicalDeviceType`
    Parameters:
      `format` - The format
      `type` - The image kind
      `tiling` - The image tiling mode
      `usage` - The usage flags
      `flags` - The creation flags
    Returns:
      The properties of the given image format
    Throws:
      `VulkanException` - On errors

  - ### memory

    public VulkanPhysicalDeviceMemoryProperties memory() throws VulkanException
    Specified by:
      `memory` in interface `VulkanPhysicalDeviceType`
    Returns:
      The memory properties of the device
    Throws:
      `VulkanException` - On errors

  - ### queueFamilies

    public SortedMap<VulkanQueueFamilyIndex, VulkanQueueFamilyProperties> queueFamilies() throws VulkanException
    Specified by:
      `queueFamilies` in interface `VulkanPhysicalDeviceType`
    Returns:
      A read-only list of the available queue families
    Throws:
      `VulkanException` - On errors

  - ### createLogicalDevice

    public VulkanLogicalDeviceType createLogicalDevice(VulkanLogicalDeviceCreateInfo info) throws VulkanException
    Description copied from interface: `VulkanPhysicalDeviceType`
    Create a new logical device from this physical device.
    Specified by:
      `createLogicalDevice` in interface `VulkanPhysicalDeviceType`
    Parameters:
      `info` - The creation info
    Returns:
      A new logical device
    Throws:
      `VulkanException` - On errors

  - ### driverProperties

    public Optional<VulkanPhysicalDeviceDriverProperties> driverProperties()
    Description copied from interface: `VulkanPhysicalDeviceType`
    Retrieve the device driver properties.
    Specified by:
      `driverProperties` in interface `VulkanPhysicalDeviceType`
    Returns:
      The device driver properties, if available

  - ### idProperties

    public Optional<VulkanPhysicalDeviceIDProperties> idProperties()
    Description copied from interface: `VulkanPhysicalDeviceType`
    Retrieve the device ID properties.
    Specified by:
      `idProperties` in interface `VulkanPhysicalDeviceType`
    Returns:
      The device ID properties, if available

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