# Interface VulkanPhysicalDeviceType

All Superinterfaces:
  `AutoCloseable, com.io7m.jmulticlose.core.CloseableType, VulkanHandleDispatchableType, VulkanHandleType`

All Known Implementing Classes:
  `VulkanLWJGLPhysicalDevice`

public interface VulkanPhysicalDeviceType extends VulkanHandleDispatchableType
A reference to a physical Vulkan device.

See Also:
  - "VkPhysicalDevice"

- ## Method Summary

  Modifier and Type
  Method
  Description
  `VulkanLogicalDeviceType`
  `createLogicalDevice(VulkanLogicalDeviceCreateInfo info)`
  Create a new logical device from this physical device.
  `Optional<VulkanPhysicalDeviceDriverProperties>`
  `driverProperties()`
  Retrieve the device driver properties.
  `Map<String, VulkanExtensionProperties>`
  `extensions(Optional<String> layer)`
  `VulkanPhysicalDeviceFeatures`
  `features()`
  `VulkanFormatProperties`
  `formatProperties(VulkanFormat format)`
  `Optional<VulkanPhysicalDeviceIDProperties>`
  `idProperties()`
  Retrieve the device ID properties.
  `VulkanImageFormatProperties`
  `imageFormatProperties(VulkanFormat format, VulkanImageKind type, VulkanImageTiling tiling, Set<VulkanImageUsageFlag> usage, Set<VulkanImageCreateFlag> flags)`
  `VulkanInstanceType`
  `instance()`
  `Map<String, VulkanLayerProperties>`
  `layers()`
  `VulkanPhysicalDeviceLimits`
  `limits()`
  `VulkanPhysicalDeviceMemoryProperties`
  `memory()`
  `VulkanPhysicalDeviceProperties`
  `properties()`
  `SortedMap<VulkanQueueFamilyIndex, VulkanQueueFamilyProperties>`
  `queueFamilies()`
  `default Optional<VulkanQueueFamilyProperties>`
  `queueFamilyFindWithFlags(VulkanQueueFamilyPropertyFlag... flags)`
  Find the first queue family that has all the given flags.
  `default Optional<VulkanQueueFamilyProperties>`
  `queueFamilyFindWithFlags(Set<VulkanQueueFamilyPropertyFlag> flags)`
  Find the first queue family that has all the given flags.

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

  `isClosed`

  ### Methods inherited from interface VulkanHandleType

  `close`

- ## Method Details

  - ### instance

    VulkanInstanceType instance()
    Returns:
      The instance to which the physical device belongs

  - ### extensions

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

  - ### layers

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

  - ### properties

    VulkanPhysicalDeviceProperties properties() throws VulkanException
    Returns:
      The basic properties of the device
    Throws:
      `VulkanException` - On errors

  - ### limits

    VulkanPhysicalDeviceLimits limits() throws VulkanException
    Returns:
      The limits of the device
    Throws:
      `VulkanException` - On errors

  - ### features

    VulkanPhysicalDeviceFeatures features() throws VulkanException
    Returns:
      The features of the device
    Throws:
      `VulkanException` - On errors

  - ### formatProperties

    VulkanFormatProperties formatProperties(VulkanFormat format) throws VulkanException
    Parameters:
      `format` - The format
    Returns:
      The properties of the given format
    Throws:
      `VulkanException` - On errors

  - ### imageFormatProperties

    VulkanImageFormatProperties imageFormatProperties(VulkanFormat format, VulkanImageKind type, VulkanImageTiling tiling, Set<VulkanImageUsageFlag> usage, Set<VulkanImageCreateFlag> flags) throws VulkanException
    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

    VulkanPhysicalDeviceMemoryProperties memory() throws VulkanException
    Returns:
      The memory properties of the device
    Throws:
      `VulkanException` - On errors

  - ### queueFamilies

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

  - ### createLogicalDevice

    VulkanLogicalDeviceType createLogicalDevice(VulkanLogicalDeviceCreateInfo info) throws VulkanException
    Create a new logical device from this physical device.
    Parameters:
      `info` - The creation info
    Returns:
      A new logical device
    Throws:
      `VulkanException` - On errors

  - ### driverProperties

    Optional<VulkanPhysicalDeviceDriverProperties> driverProperties()
    Retrieve the device driver properties.
    Returns:
      The device driver properties, if available

  - ### idProperties

    Optional<VulkanPhysicalDeviceIDProperties> idProperties()
    Retrieve the device ID properties.
    Returns:
      The device ID properties, if available

  - ### queueFamilyFindWithFlags

    default Optional<VulkanQueueFamilyProperties> queueFamilyFindWithFlags(Set<VulkanQueueFamilyPropertyFlag> flags) throws VulkanException
    Find the first queue family that has all the given flags.
    Parameters:
      `flags` - The flags
    Returns:
      The first matching queue family, if any
    Throws:
      `VulkanException` - On errors

  - ### queueFamilyFindWithFlags

    default Optional<VulkanQueueFamilyProperties> queueFamilyFindWithFlags(VulkanQueueFamilyPropertyFlag... flags) throws VulkanException
    Find the first queue family that has all the given flags.
    Parameters:
      `flags` - The flags
    Returns:
      The first matching queue family, if any
    Throws:
      `VulkanException` - On errors