# Class VulkanPhysicalDeviceFeatures11

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

All Implemented Interfaces:
  `VulkanPhysicalDeviceFeatures11Type`

public final class VulkanPhysicalDeviceFeatures11 extends Object implements VulkanPhysicalDeviceFeatures11Type
The features supported by a physical Vulkan 1.1 device.

See Also:
  - "VkPhysicalDeviceVulkan11Features"

- ## Nested Class Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static VulkanPhysicalDeviceFeatures11.Builder`
  `builder()`
  Creates a builder for `VulkanPhysicalDeviceFeatures11`.
  `static VulkanPhysicalDeviceFeatures11`
  `copyOf(VulkanPhysicalDeviceFeatures11Type instance)`
  Creates an immutable copy of a `VulkanPhysicalDeviceFeatures11Type` value.
  `boolean`
  `equals(Object another)`
  This instance is equal to all instances of `VulkanPhysicalDeviceFeatures11` that have equal attribute values.
  `int`
  `hashCode()`
  Computes a hash code from attributes: `multiview`, `multiviewGeometryShader`, `multiviewTessellationShader`, `protectedMemory`, `samplerYcbcrConversion`, `shaderDrawParameters`, `storageBuffer16BitAccess`, `storageInputOutput16`, `storagePushConstant16`, `uniformAndStorageBuffer16BitAccess`, `variablePointers`, `variablePointersStorageBuffer`.
  `boolean`
  `multiview()`
  multiview specifies whether the implementation supports multiview rendering within a render pass.
  `boolean`
  `multiviewGeometryShader()`
  multiviewGeometryShader specifies whether the implementation supports multiview rendering within a render pass, with geometry shaders.
  `boolean`
  `multiviewTessellationShader()`
  multiviewTessellationShader specifies whether the implementation supports multiview rendering within a render pass, with tessellation shaders.
  `boolean`
  `protectedMemory()`
  protectedMemory specifies whether protected memory is supported.
  `boolean`
  `samplerYcbcrConversion()`
  samplerYcbcrConversion specifies whether the implementation supports sampler Y′CBCR conversion.
  `boolean`
  `shaderDrawParameters()`
  shaderDrawParameters specifies whether the implementation supports the SPIR-V DrawParameters capability.
  `boolean`
  `storageBuffer16BitAccess()`
  storageBuffer16BitAccess specifies whether objects in the StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members.
  `boolean`
  `storageInputOutput16()`
  storageInputOutput16 specifies whether objects in the Input and Output storage classes can have 16-bit integer and 16-bit floating-point members.
  `boolean`
  `storagePushConstant16()`
  storagePushConstant16 specifies whether objects in the PushConstant storage class can have 16-bit integer and 16-bit floating-point members.
  `String`
  `toString()`
  Prints the immutable value `VulkanPhysicalDeviceFeatures11` with attribute values.
  `boolean`
  `uniformAndStorageBuffer16BitAccess()`
  uniformAndStorageBuffer16BitAccess specifies whether objects in the Uniform storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members.
  `boolean`
  `variablePointers()`
  variablePointers specifies whether the implementation supports the SPIR-V VariablePointers capability.
  `boolean`
  `variablePointersStorageBuffer()`
  variablePointersStorageBuffer specifies whether the implementation supports the SPIR-V VariablePointersStorageBuffer capability.
  `final VulkanPhysicalDeviceFeatures11`
  `withMultiview(boolean value)`
  Copy the current immutable object by setting a value for the `multiview` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withMultiviewGeometryShader(boolean value)`
  Copy the current immutable object by setting a value for the `multiviewGeometryShader` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withMultiviewTessellationShader(boolean value)`
  Copy the current immutable object by setting a value for the `multiviewTessellationShader` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withProtectedMemory(boolean value)`
  Copy the current immutable object by setting a value for the `protectedMemory` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withSamplerYcbcrConversion(boolean value)`
  Copy the current immutable object by setting a value for the `samplerYcbcrConversion` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withShaderDrawParameters(boolean value)`
  Copy the current immutable object by setting a value for the `shaderDrawParameters` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withStorageBuffer16BitAccess(boolean value)`
  Copy the current immutable object by setting a value for the `storageBuffer16BitAccess` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withStorageInputOutput16(boolean value)`
  Copy the current immutable object by setting a value for the `storageInputOutput16` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withStoragePushConstant16(boolean value)`
  Copy the current immutable object by setting a value for the `storagePushConstant16` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withUniformAndStorageBuffer16BitAccess(boolean value)`
  Copy the current immutable object by setting a value for the `uniformAndStorageBuffer16BitAccess` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withVariablePointers(boolean value)`
  Copy the current immutable object by setting a value for the `variablePointers` attribute.
  `final VulkanPhysicalDeviceFeatures11`
  `withVariablePointersStorageBuffer(boolean value)`
  Copy the current immutable object by setting a value for the `variablePointersStorageBuffer` attribute.

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

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

- ## Method Details

  - ### multiview

    public boolean multiview()
    multiview specifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero.
    Specified by:
      `multiview` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### multiviewGeometryShader

    public boolean multiviewGeometryShader()
    multiviewGeometryShader specifies whether the implementation supports multiview rendering within a render pass, with geometry shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include a geometry shader.
    Specified by:
      `multiviewGeometryShader` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### multiviewTessellationShader

    public boolean multiviewTessellationShader()
    multiviewTessellationShader specifies whether the implementation supports multiview rendering within a render pass, with tessellation shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include any tessellation shaders.
    Specified by:
      `multiviewTessellationShader` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### protectedMemory

    public boolean protectedMemory()
    protectedMemory specifies whether protected memory is supported.
    Specified by:
      `protectedMemory` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### samplerYcbcrConversion

    public boolean samplerYcbcrConversion()
    samplerYcbcrConversion specifies whether the implementation supports sampler Y′CBCR conversion. If samplerYcbcrConversion is VK_FALSE, sampler Y′CBCR conversion is not supported, and samplers using sampler Y′CBCR conversion must not be used.
    Specified by:
      `samplerYcbcrConversion` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### shaderDrawParameters

    public boolean shaderDrawParameters()
    shaderDrawParameters specifies whether the implementation supports the SPIR-V DrawParameters capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_shader_draw_parameters extension or the DrawParameters capability.
    Specified by:
      `shaderDrawParameters` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### storageBuffer16BitAccess

    public boolean storageBuffer16BitAccess()
    storageBuffer16BitAccess specifies whether objects in the StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StorageBuffer16BitAccess capability.
    Specified by:
      `storageBuffer16BitAccess` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### storageInputOutput16

    public boolean storageInputOutput16()
    storageInputOutput16 specifies whether objects in the Input and Output storage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StorageInputOutput16 capability.
    Specified by:
      `storageInputOutput16` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### storagePushConstant16

    public boolean storagePushConstant16()
    storagePushConstant16 specifies whether objects in the PushConstant storage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StoragePushConstant16 capability.
    Specified by:
      `storagePushConstant16` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### uniformAndStorageBuffer16BitAccess

    public boolean uniformAndStorageBuffer16BitAccess()
    uniformAndStorageBuffer16BitAccess specifies whether objects in the Uniform storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the UniformAndStorageBuffer16BitAccess capability.
    Specified by:
      `uniformAndStorageBuffer16BitAccess` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### variablePointers

    public boolean variablePointers()
    variablePointers specifies whether the implementation supports the SPIR-V VariablePointers capability. When this feature is not enabled, shader modules must not declare the VariablePointers capability.
    Specified by:
      `variablePointers` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### variablePointersStorageBuffer

    public boolean variablePointersStorageBuffer()
    variablePointersStorageBuffer specifies whether the implementation supports the SPIR-V VariablePointersStorageBuffer capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_variable_pointers extension or the VariablePointersStorageBuffer capability.
    Specified by:
      `variablePointersStorageBuffer` in interface `VulkanPhysicalDeviceFeatures11Type`
    Returns:
      `true if supported`

  - ### withMultiview

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

  - ### withMultiviewGeometryShader

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

  - ### withMultiviewTessellationShader

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

  - ### withProtectedMemory

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

  - ### withSamplerYcbcrConversion

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

  - ### withShaderDrawParameters

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

  - ### withStorageBuffer16BitAccess

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

  - ### withStorageInputOutput16

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

  - ### withStoragePushConstant16

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

  - ### withUniformAndStorageBuffer16BitAccess

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

  - ### withVariablePointers

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

  - ### withVariablePointersStorageBuffer

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

  - ### equals

    public boolean equals(Object another)
    This instance is equal to all instances of `VulkanPhysicalDeviceFeatures11` 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: `multiview`, `multiviewGeometryShader`, `multiviewTessellationShader`, `protectedMemory`, `samplerYcbcrConversion`, `shaderDrawParameters`, `storageBuffer16BitAccess`, `storageInputOutput16`, `storagePushConstant16`, `uniformAndStorageBuffer16BitAccess`, `variablePointers`, `variablePointersStorageBuffer`.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      hashCode value

  - ### toString

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

  - ### copyOf

    public static VulkanPhysicalDeviceFeatures11 copyOf(VulkanPhysicalDeviceFeatures11Type instance)
    Creates an immutable copy of a `VulkanPhysicalDeviceFeatures11Type` 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 VulkanPhysicalDeviceFeatures11 instance

  - ### builder

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

         VulkanPhysicalDeviceFeatures11.builder()
            .setMultiview(boolean) // optional multiview
            .setMultiviewGeometryShader(boolean) // optional multiviewGeometryShader
            .setMultiviewTessellationShader(boolean) // optional multiviewTessellationShader
            .setProtectedMemory(boolean) // optional protectedMemory
            .setSamplerYcbcrConversion(boolean) // optional samplerYcbcrConversion
            .setShaderDrawParameters(boolean) // optional shaderDrawParameters
            .setStorageBuffer16BitAccess(boolean) // optional storageBuffer16BitAccess
            .setStorageInputOutput16(boolean) // optional storageInputOutput16
            .setStoragePushConstant16(boolean) // optional storagePushConstant16
            .setUniformAndStorageBuffer16BitAccess(boolean) // optional uniformAndStorageBuffer16BitAccess
            .setVariablePointers(boolean) // optional variablePointers
            .setVariablePointersStorageBuffer(boolean) // optional variablePointersStorageBuffer
            .build();

    Returns:
      A new VulkanPhysicalDeviceFeatures11 builder