# Class VulkanComputeWorkGroupSize

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

All Implemented Interfaces:
  `VulkanComputeWorkGroupSizeType`

public final class VulkanComputeWorkGroupSize extends Object implements VulkanComputeWorkGroupSizeType
the maximum size of a local compute workgroup, per dimension. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes specified by the LocalSize execution mode and by the object decorated by the WorkgroupSize decoration in shader modules must be less than or equal to the corresponding limit.

See Also:
  - "VkPhysicalDeviceLimits"

- ## Nested Class Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static VulkanComputeWorkGroupSize.Builder`
  `builder()`
  Creates a builder for `VulkanComputeWorkGroupSize`.
  `static VulkanComputeWorkGroupSize`
  `copyOf(VulkanComputeWorkGroupSizeType instance)`
  Creates an immutable copy of a `VulkanComputeWorkGroupSizeType` value.
  `boolean`
  `equals(Object another)`
  This instance is equal to all instances of `VulkanComputeWorkGroupSize` that have equal attribute values.
  `int`
  `hashCode()`
  Computes a hash code from attributes: `maximumX`, `maximumY`, `maximumZ`.
  `int`
  `maximumX()`
  `int`
  `maximumY()`
  `int`
  `maximumZ()`
  `static VulkanComputeWorkGroupSize`
  `of(int maximumX, int maximumY, int maximumZ)`
  Construct a new immutable `VulkanComputeWorkGroupSize` instance.
  `String`
  `toString()`
  Prints the immutable value `VulkanComputeWorkGroupSize` with attribute values.
  `final VulkanComputeWorkGroupSize`
  `withMaximumX(int value)`
  Copy the current immutable object by setting a value for the `maximumX` attribute.
  `final VulkanComputeWorkGroupSize`
  `withMaximumY(int value)`
  Copy the current immutable object by setting a value for the `maximumY` attribute.
  `final VulkanComputeWorkGroupSize`
  `withMaximumZ(int value)`
  Copy the current immutable object by setting a value for the `maximumZ` attribute.

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

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

- ## Method Details

  - ### maximumX

    public int maximumX()
    Specified by:
      `maximumX` in interface `VulkanComputeWorkGroupSizeType`
    Returns:
      The limit on the X dimension

  - ### maximumY

    public int maximumY()
    Specified by:
      `maximumY` in interface `VulkanComputeWorkGroupSizeType`
    Returns:
      The limit on the Y dimension

  - ### maximumZ

    public int maximumZ()
    Specified by:
      `maximumZ` in interface `VulkanComputeWorkGroupSizeType`
    Returns:
      The limit on the Z dimension

  - ### withMaximumX

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

  - ### withMaximumY

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

  - ### withMaximumZ

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

  - ### equals

    public boolean equals(Object another)
    This instance is equal to all instances of `VulkanComputeWorkGroupSize` 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: `maximumX`, `maximumY`, `maximumZ`.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      hashCode value

  - ### toString

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

  - ### of

    public static VulkanComputeWorkGroupSize of(int maximumX, int maximumY, int maximumZ)
    Construct a new immutable `VulkanComputeWorkGroupSize` instance.
    Parameters:
      `maximumX` - The value for the `maximumX` attribute
      `maximumY` - The value for the `maximumY` attribute
      `maximumZ` - The value for the `maximumZ` attribute
    Returns:
      An immutable VulkanComputeWorkGroupSize instance

  - ### copyOf

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

  - ### builder

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

         VulkanComputeWorkGroupSize.builder()
            .setMaximumX(int) // required maximumX
            .setMaximumY(int) // required maximumY
            .setMaximumZ(int) // required maximumZ
            .build();

    Returns:
      A new VulkanComputeWorkGroupSize builder