# Class VulkanPhysicalDeviceFeatures13

java.lang.Object
com.io7m.jcoronado.api.VulkanPhysicalDeviceFeatures13

All Implemented Interfaces:
  `VulkanPhysicalDeviceFeatures13Type`

public final class VulkanPhysicalDeviceFeatures13 extends Object implements VulkanPhysicalDeviceFeatures13Type
The features supported by a physical Vulkan 1.3 device.

See Also:
  - "VkPhysicalDeviceVulkan13Features"

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `VulkanPhysicalDeviceFeatures13.Builder`
  Builds instances of type `VulkanPhysicalDeviceFeatures13`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static VulkanPhysicalDeviceFeatures13.Builder`
  `builder()`
  Creates a builder for `VulkanPhysicalDeviceFeatures13`.
  `boolean`
  `computeFullSubgroups()`
  Indicates whether the implementation supports requiring full subgroups in compute, mesh, or task shaders via the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag.
  `static VulkanPhysicalDeviceFeatures13`
  `copyOf(VulkanPhysicalDeviceFeatures13Type instance)`
  Creates an immutable copy of a `VulkanPhysicalDeviceFeatures13Type` value.
  `boolean`
  `descriptorBindingInlineUniformBlockUpdateAfterBind()`
  Indicates whether the implementation supports updating inline uniform block descriptors after a set is bound.
  `boolean`
  `dynamicRendering()`
  Specifies that the implementation supports dynamic render pass instances
  `boolean`
  `equals(Object another)`
  This instance is equal to all instances of `VulkanPhysicalDeviceFeatures13` that have equal attribute values.
  `int`
  `hashCode()`
  Computes a hash code from attributes: `robustImageAccess`, `inlineUniformBlock`, `descriptorBindingInlineUniformBlockUpdateAfterBind`, `pipelineCreationCacheControl`, `privateData`, `shaderDemoteToHelperInvocation`, `shaderTerminateInvocation`, `subgroupSizeControl`, `computeFullSubgroups`, `synchronization2`, `textureCompressionASTC_HDR`, `shaderZeroInitializeWorkgroupMemory`, `dynamicRendering`, `shaderIntegerDotProduct`, `maintenance4`.
  `boolean`
  `inlineUniformBlock()`
  Indicates whether the implementation supports inline uniform block descriptors.
  `boolean`
  `maintenance4()`
  Indicates that the implementation supports maintenance4.
  `boolean`
  `pipelineCreationCacheControl()`
  `boolean`
  `privateData()`
  Indicates whether the implementation supports private data.
  `boolean`
  `robustImageAccess()`
  Indicates whether image accesses are tightly bounds-checked against the dimensions of the image view.
  `boolean`
  `shaderDemoteToHelperInvocation()`
  Indicates whether the implementation supports the SPIR-V DemoteToHelperInvocationEXT capability.
  `boolean`
  `shaderIntegerDotProduct()`
  Specifies whether shader modules can declare the DotProductInputAllKHR, DotProductInput4x8BitKHR, DotProductInput4x8BitPackedKHR and DotProductKHR capabilities.
  `boolean`
  `shaderTerminateInvocation()`
  Specifies whether the implementation supports SPIR-V modules that use the SPV_KHR_terminate_invocation extension.
  `boolean`
  `shaderZeroInitializeWorkgroupMemory()`
  Specifies whether the implementation supports initializing a variable in Workgroup storage class.
  `boolean`
  `subgroupSizeControl()`
  Indicates whether the implementation supports controlling shader subgroup sizes via the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT flag and the VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure.
  `boolean`
  `synchronization2()`
  Indicates whether the implementation supports the new set of synchronization commands introduced in VK_KHR_synchronization2.
  `boolean`
  `textureCompressionASTC_HDR()`
  Indicates whether all of the ASTC HDR compressed texture formats are supported.
  `String`
  `toString()`
  Prints the immutable value `VulkanPhysicalDeviceFeatures13` with attribute values.
  `final VulkanPhysicalDeviceFeatures13`
  `withComputeFullSubgroups(boolean value)`
  Copy the current immutable object by setting a value for the `computeFullSubgroups` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withDescriptorBindingInlineUniformBlockUpdateAfterBind(boolean value)`
  Copy the current immutable object by setting a value for the `descriptorBindingInlineUniformBlockUpdateAfterBind` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withDynamicRendering(boolean value)`
  Copy the current immutable object by setting a value for the `dynamicRendering` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withInlineUniformBlock(boolean value)`
  Copy the current immutable object by setting a value for the `inlineUniformBlock` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withMaintenance4(boolean value)`
  Copy the current immutable object by setting a value for the `maintenance4` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withPipelineCreationCacheControl(boolean value)`
  Copy the current immutable object by setting a value for the `pipelineCreationCacheControl` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withPrivateData(boolean value)`
  Copy the current immutable object by setting a value for the `privateData` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withRobustImageAccess(boolean value)`
  Copy the current immutable object by setting a value for the `robustImageAccess` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withShaderDemoteToHelperInvocation(boolean value)`
  Copy the current immutable object by setting a value for the `shaderDemoteToHelperInvocation` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withShaderIntegerDotProduct(boolean value)`
  Copy the current immutable object by setting a value for the `shaderIntegerDotProduct` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withShaderTerminateInvocation(boolean value)`
  Copy the current immutable object by setting a value for the `shaderTerminateInvocation` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withShaderZeroInitializeWorkgroupMemory(boolean value)`
  Copy the current immutable object by setting a value for the `shaderZeroInitializeWorkgroupMemory` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withSubgroupSizeControl(boolean value)`
  Copy the current immutable object by setting a value for the `subgroupSizeControl` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withSynchronization2(boolean value)`
  Copy the current immutable object by setting a value for the `synchronization2` attribute.
  `final VulkanPhysicalDeviceFeatures13`
  `withTextureCompressionASTC_HDR(boolean value)`
  Copy the current immutable object by setting a value for the `textureCompressionASTC_HDR` attribute.

  ### Methods inherited from class java.lang.Object

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

- ## Method Details

  - ### robustImageAccess

    public boolean robustImageAccess()
    Indicates whether image accesses are tightly bounds-checked against the dimensions of the image view. Invalid texels resulting from out of bounds image loads will be replaced as described in Texel Replacement, with either (0,0,1) or (0,0,0) values inserted for missing G, B, or A components based on the format.
    Specified by:
      `robustImageAccess` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### inlineUniformBlock

    public boolean inlineUniformBlock()
    Indicates whether the implementation supports inline uniform block descriptors. If this feature is not enabled, VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK must not be used.
    Specified by:
      `inlineUniformBlock` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### descriptorBindingInlineUniformBlockUpdateAfterBind

    public boolean descriptorBindingInlineUniformBlockUpdateAfterBind()
    Indicates whether the implementation supports updating inline uniform block descriptors after a set is bound. If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK.
    Specified by:
      `descriptorBindingInlineUniformBlockUpdateAfterBind` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### pipelineCreationCacheControl

    public boolean pipelineCreationCacheControl()
    Specified by:
      `pipelineCreationCacheControl` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### privateData

    public boolean privateData()
    Indicates whether the implementation supports private data.
    Specified by:
      `privateData` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### shaderDemoteToHelperInvocation

    public boolean shaderDemoteToHelperInvocation()
    Indicates whether the implementation supports the SPIR-V DemoteToHelperInvocationEXT capability.
    Specified by:
      `shaderDemoteToHelperInvocation` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### shaderTerminateInvocation

    public boolean shaderTerminateInvocation()
    Specifies whether the implementation supports SPIR-V modules that use the SPV_KHR_terminate_invocation extension.
    Specified by:
      `shaderTerminateInvocation` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### subgroupSizeControl

    public boolean subgroupSizeControl()
    Indicates whether the implementation supports controlling shader subgroup sizes via the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT flag and the VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure.
    Specified by:
      `subgroupSizeControl` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### computeFullSubgroups

    public boolean computeFullSubgroups()
    Indicates whether the implementation supports requiring full subgroups in compute, mesh, or task shaders via the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag.
    Specified by:
      `computeFullSubgroups` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### synchronization2

    public boolean synchronization2()
    Indicates whether the implementation supports the new set of synchronization commands introduced in VK_KHR_synchronization2.
    Specified by:
      `synchronization2` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### textureCompressionASTC_HDR

    public boolean textureCompressionASTC_HDR()
    Indicates whether all of the ASTC HDR compressed texture formats are supported.
    Specified by:
      `textureCompressionASTC_HDR` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### shaderZeroInitializeWorkgroupMemory

    public boolean shaderZeroInitializeWorkgroupMemory()
    Specifies whether the implementation supports initializing a variable in Workgroup storage class.
    Specified by:
      `shaderZeroInitializeWorkgroupMemory` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### dynamicRendering

    public boolean dynamicRendering()
    Specifies that the implementation supports dynamic render pass instances
    Specified by:
      `dynamicRendering` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### shaderIntegerDotProduct

    public boolean shaderIntegerDotProduct()
    Specifies whether shader modules can declare the DotProductInputAllKHR, DotProductInput4x8BitKHR, DotProductInput4x8BitPackedKHR and DotProductKHR capabilities.
    Specified by:
      `shaderIntegerDotProduct` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### maintenance4

    public boolean maintenance4()
    Indicates that the implementation supports maintenance4.
    Specified by:
      `maintenance4` in interface `VulkanPhysicalDeviceFeatures13Type`
    Returns:
      `true` if supported

  - ### withRobustImageAccess

    public final VulkanPhysicalDeviceFeatures13 withRobustImageAccess(boolean value)
    Copy the current immutable object by setting a value for the `robustImageAccess` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for robustImageAccess
    Returns:
      A modified copy of the `this` object

  - ### withInlineUniformBlock

    public final VulkanPhysicalDeviceFeatures13 withInlineUniformBlock(boolean value)
    Copy the current immutable object by setting a value for the `inlineUniformBlock` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for inlineUniformBlock
    Returns:
      A modified copy of the `this` object

  - ### withDescriptorBindingInlineUniformBlockUpdateAfterBind

    public final VulkanPhysicalDeviceFeatures13 withDescriptorBindingInlineUniformBlockUpdateAfterBind(boolean value)
    Copy the current immutable object by setting a value for the `descriptorBindingInlineUniformBlockUpdateAfterBind` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for descriptorBindingInlineUniformBlockUpdateAfterBind
    Returns:
      A modified copy of the `this` object

  - ### withPipelineCreationCacheControl

    public final VulkanPhysicalDeviceFeatures13 withPipelineCreationCacheControl(boolean value)
    Copy the current immutable object by setting a value for the `pipelineCreationCacheControl` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for pipelineCreationCacheControl
    Returns:
      A modified copy of the `this` object

  - ### withPrivateData

    public final VulkanPhysicalDeviceFeatures13 withPrivateData(boolean value)
    Copy the current immutable object by setting a value for the `privateData` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for privateData
    Returns:
      A modified copy of the `this` object

  - ### withShaderDemoteToHelperInvocation

    public final VulkanPhysicalDeviceFeatures13 withShaderDemoteToHelperInvocation(boolean value)
    Copy the current immutable object by setting a value for the `shaderDemoteToHelperInvocation` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for shaderDemoteToHelperInvocation
    Returns:
      A modified copy of the `this` object

  - ### withShaderTerminateInvocation

    public final VulkanPhysicalDeviceFeatures13 withShaderTerminateInvocation(boolean value)
    Copy the current immutable object by setting a value for the `shaderTerminateInvocation` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for shaderTerminateInvocation
    Returns:
      A modified copy of the `this` object

  - ### withSubgroupSizeControl

    public final VulkanPhysicalDeviceFeatures13 withSubgroupSizeControl(boolean value)
    Copy the current immutable object by setting a value for the `subgroupSizeControl` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for subgroupSizeControl
    Returns:
      A modified copy of the `this` object

  - ### withComputeFullSubgroups

    public final VulkanPhysicalDeviceFeatures13 withComputeFullSubgroups(boolean value)
    Copy the current immutable object by setting a value for the `computeFullSubgroups` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for computeFullSubgroups
    Returns:
      A modified copy of the `this` object

  - ### withSynchronization2

    public final VulkanPhysicalDeviceFeatures13 withSynchronization2(boolean value)
    Copy the current immutable object by setting a value for the `synchronization2` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for synchronization2
    Returns:
      A modified copy of the `this` object

  - ### withTextureCompressionASTC_HDR

    public final VulkanPhysicalDeviceFeatures13 withTextureCompressionASTC_HDR(boolean value)
    Copy the current immutable object by setting a value for the `textureCompressionASTC_HDR` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for textureCompressionASTC_HDR
    Returns:
      A modified copy of the `this` object

  - ### withShaderZeroInitializeWorkgroupMemory

    public final VulkanPhysicalDeviceFeatures13 withShaderZeroInitializeWorkgroupMemory(boolean value)
    Copy the current immutable object by setting a value for the `shaderZeroInitializeWorkgroupMemory` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for shaderZeroInitializeWorkgroupMemory
    Returns:
      A modified copy of the `this` object

  - ### withDynamicRendering

    public final VulkanPhysicalDeviceFeatures13 withDynamicRendering(boolean value)
    Copy the current immutable object by setting a value for the `dynamicRendering` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for dynamicRendering
    Returns:
      A modified copy of the `this` object

  - ### withShaderIntegerDotProduct

    public final VulkanPhysicalDeviceFeatures13 withShaderIntegerDotProduct(boolean value)
    Copy the current immutable object by setting a value for the `shaderIntegerDotProduct` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for shaderIntegerDotProduct
    Returns:
      A modified copy of the `this` object

  - ### withMaintenance4

    public final VulkanPhysicalDeviceFeatures13 withMaintenance4(boolean value)
    Copy the current immutable object by setting a value for the `maintenance4` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for maintenance4
    Returns:
      A modified copy of the `this` object

  - ### equals

    public boolean equals(Object another)
    This instance is equal to all instances of `VulkanPhysicalDeviceFeatures13` that have equal attribute values.
    Overrides:
      `equals` in class `Object`
    Returns:
      `true` if `this` is equal to `another` instance

  - ### hashCode

    public int hashCode()
    Computes a hash code from attributes: `robustImageAccess`, `inlineUniformBlock`, `descriptorBindingInlineUniformBlockUpdateAfterBind`, `pipelineCreationCacheControl`, `privateData`, `shaderDemoteToHelperInvocation`, `shaderTerminateInvocation`, `subgroupSizeControl`, `computeFullSubgroups`, `synchronization2`, `textureCompressionASTC_HDR`, `shaderZeroInitializeWorkgroupMemory`, `dynamicRendering`, `shaderIntegerDotProduct`, `maintenance4`.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      hashCode value

  - ### toString

    public String toString()
    Prints the immutable value `VulkanPhysicalDeviceFeatures13` with attribute values.
    Overrides:
      `toString` in class `Object`
    Returns:
      A string representation of the value

  - ### copyOf

    public static VulkanPhysicalDeviceFeatures13 copyOf(VulkanPhysicalDeviceFeatures13Type instance)
    Creates an immutable copy of a `VulkanPhysicalDeviceFeatures13Type` value. Uses accessors to get values to initialize the new immutable instance. If an instance is already immutable, it is returned as is.
    Parameters:
      `instance` - The instance to copy
    Returns:
      A copied immutable VulkanPhysicalDeviceFeatures13 instance

  - ### builder

    public static VulkanPhysicalDeviceFeatures13.Builder builder()
    Creates a builder for `VulkanPhysicalDeviceFeatures13`.

         VulkanPhysicalDeviceFeatures13.builder()
            .setRobustImageAccess(boolean) // optional robustImageAccess
            .setInlineUniformBlock(boolean) // optional inlineUniformBlock
            .setDescriptorBindingInlineUniformBlockUpdateAfterBind(boolean) // optional descriptorBindingInlineUniformBlockUpdateAfterBind
            .setPipelineCreationCacheControl(boolean) // optional pipelineCreationCacheControl
            .setPrivateData(boolean) // optional privateData
            .setShaderDemoteToHelperInvocation(boolean) // optional shaderDemoteToHelperInvocation
            .setShaderTerminateInvocation(boolean) // optional shaderTerminateInvocation
            .setSubgroupSizeControl(boolean) // optional subgroupSizeControl
            .setComputeFullSubgroups(boolean) // optional computeFullSubgroups
            .setSynchronization2(boolean) // optional synchronization2
            .setTextureCompressionASTC_HDR(boolean) // optional textureCompressionASTC_HDR
            .setShaderZeroInitializeWorkgroupMemory(boolean) // optional shaderZeroInitializeWorkgroupMemory
            .setDynamicRendering(boolean) // optional dynamicRendering
            .setShaderIntegerDotProduct(boolean) // optional shaderIntegerDotProduct
            .setMaintenance4(boolean) // optional maintenance4
            .build();

    Returns:
      A new VulkanPhysicalDeviceFeatures13 builder