Class VkAttachmentDescription

  • All Implemented Interfaces:
    java.lang.AutoCloseable, NativeResource, Pointer

    public class VkAttachmentDescription
    extends Struct
    implements NativeResource
    Structure specifying an attachment description.
    Description

    If the attachment uses a color format, then loadOp and storeOp are used, and stencilLoadOp and stencilStoreOp are ignored. If the format has depth and/or stencil components, loadOp and storeOp apply only to the depth data, while stencilLoadOp and stencilStoreOp define how the stencil data is handled. loadOp and stencilLoadOp define the load operations that execute as part of the first subpass that uses the attachment. storeOp and stencilStoreOp define the store operations that execute as part of the last subpass that uses the attachment.

    The load operation for each sample in an attachment happens-before any recorded command which accesses the sample in the first subpass where the attachment is used. Load operations for attachments with a depth/stencil format execute in the PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT pipeline stage. Load operations for attachments with a color format execute in the PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT pipeline stage.

    The store operation for each sample in an attachment happens-after any recorded command which accesses the sample in the last subpass where the attachment is used. Store operations for attachments with a depth/stencil format execute in the PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT pipeline stage. Store operations for attachments with a color format execute in the PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT pipeline stage.

    If an attachment is not used by any subpass, then loadOp, storeOp, stencilStoreOp, and stencilLoadOp are ignored, and the attachment's memory contents will not be modified by execution of a render pass instance.

    The load and store operations apply on the first and last use of each view in the render pass, respectively. If a view index of an attachment is not included in the view mask in any subpass that uses it, then the load and store operations are ignored, and the attachment's memory contents will not be modified by execution of a render pass instance.

    During a render pass instance, input/color attachments with color formats that have a component size of 8, 16, or 32 bits must be represented in the attachment's format throughout the instance. Attachments with other floating- or fixed-point color formats, or with depth components may be represented in a format with a precision higher than the attachment format, but must be represented with the same range. When such a component is loaded via the loadOp, it will be converted into an implementation-dependent format used by the render pass. Such components must be converted from the render pass format, to the format of the attachment, before they are resolved or stored at the end of a render pass instance via storeOp. Conversions occur as described in Numeric Representation and Computation and Fixed-Point Data Conversions.

    If flags includes ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT, then the attachment is treated as if it shares physical memory with another attachment in the same render pass. This information limits the ability of the implementation to reorder certain operations (like layout transitions and the loadOp) such that it is not improperly reordered against other uses of the same physical memory via a different attachment. This is described in more detail below.

    Valid Usage
    Valid Usage (Implicit)
    • flags must be a valid combination of VkAttachmentDescriptionFlagBits values
    • format must be a valid VkFormat value
    • samples must be a valid VkSampleCountFlagBits value
    • loadOp must be a valid VkAttachmentLoadOp value
    • storeOp must be a valid VkAttachmentStoreOp value
    • stencilLoadOp must be a valid VkAttachmentLoadOp value
    • stencilStoreOp must be a valid VkAttachmentStoreOp value
    • initialLayout must be a valid VkImageLayout value
    • finalLayout must be a valid VkImageLayout value
    See Also

    VkRenderPassCreateInfo

    Member documentation

    • flags – a bitmask of VkAttachmentDescriptionFlagBits specifying additional properties of the attachment.
    • format – a VkFormat value specifying the format of the image view that will be used for the attachment.
    • samples – the number of samples of the image as defined in VkSampleCountFlagBits.
    • loadOp – a VkAttachmentLoadOp value specifying how the contents of color and depth components of the attachment are treated at the beginning of the subpass where it is first used.
    • storeOp – a VkAttachmentStoreOp value specifying how the contents of color and depth components of the attachment are treated at the end of the subpass where it is last used.
    • stencilLoadOp – a VkAttachmentLoadOp value specifying how the contents of stencil components of the attachment are treated at the beginning of the subpass where it is first used.
    • stencilStoreOp – a VkAttachmentStoreOp value specifying how the contents of stencil components of the attachment are treated at the end of the last subpass where it is used.
    • initialLayout – the layout the attachment image subresource will be in when a render pass instance begins.
    • finalLayout – the layout the attachment image subresource will be transitioned to when a render pass instance ends.

    Layout

    
     struct VkAttachmentDescription {
         VkAttachmentDescriptionFlags flags;
         VkFormat format;
         VkSampleCountFlagBits samples;
         VkAttachmentLoadOp loadOp;
         VkAttachmentStoreOp storeOp;
         VkAttachmentLoadOp stencilLoadOp;
         VkAttachmentStoreOp stencilStoreOp;
         VkImageLayout initialLayout;
         VkImageLayout finalLayout;
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • FLAGS, FORMAT, SAMPLES, LOADOP, STOREOP, STENCILLOADOP, STENCILSTOREOP, INITIALLAYOUT, FINALLAYOUT

        The struct member offsets.
    • Constructor Detail

      • VkAttachmentDescription

        public VkAttachmentDescription​(java.nio.ByteBuffer container)
        Creates a VkAttachmentDescription instance at the current position of the specified ByteBuffer container. Changes to the buffer's content will be visible to the struct instance and vice versa.

        The created instance holds a strong reference to the container object.

    • Method Detail

      • sizeof

        public int sizeof()
        Description copied from class: Struct
        Returns sizeof(struct).
        Specified by:
        sizeof in class Struct
      • flags

        public int flags()
        Returns the value of the flags field.
      • format

        public int format()
        Returns the value of the format field.
      • samples

        public int samples()
        Returns the value of the samples field.
      • loadOp

        public int loadOp()
        Returns the value of the loadOp field.
      • storeOp

        public int storeOp()
        Returns the value of the storeOp field.
      • stencilLoadOp

        public int stencilLoadOp()
        Returns the value of the stencilLoadOp field.
      • stencilStoreOp

        public int stencilStoreOp()
        Returns the value of the stencilStoreOp field.
      • initialLayout

        public int initialLayout()
        Returns the value of the initialLayout field.
      • finalLayout

        public int finalLayout()
        Returns the value of the finalLayout field.
      • stencilLoadOp

        public VkAttachmentDescription stencilLoadOp​(int value)
        Sets the specified value to the stencilLoadOp field.
      • stencilStoreOp

        public VkAttachmentDescription stencilStoreOp​(int value)
        Sets the specified value to the stencilStoreOp field.
      • initialLayout

        public VkAttachmentDescription initialLayout​(int value)
        Sets the specified value to the initialLayout field.
      • finalLayout

        public VkAttachmentDescription finalLayout​(int value)
        Sets the specified value to the finalLayout field.
      • set

        public VkAttachmentDescription set​(int flags,
                                           int format,
                                           int samples,
                                           int loadOp,
                                           int storeOp,
                                           int stencilLoadOp,
                                           int stencilStoreOp,
                                           int initialLayout,
                                           int finalLayout)
        Initializes this struct with the specified values.
      • malloc

        public static VkAttachmentDescription malloc()
        Returns a new VkAttachmentDescription instance allocated with memAlloc. The instance must be explicitly freed.
      • calloc

        public static VkAttachmentDescription calloc()
        Returns a new VkAttachmentDescription instance allocated with memCalloc. The instance must be explicitly freed.
      • create

        public static VkAttachmentDescription create​(long address)
        Returns a new VkAttachmentDescription instance for the specified memory address.
      • callocStack

        public static VkAttachmentDescription callocStack()
        Returns a new VkAttachmentDescription instance allocated on the thread-local MemoryStack and initializes all its bits to zero.
      • mallocStack

        public static VkAttachmentDescription mallocStack​(MemoryStack stack)
        Returns a new VkAttachmentDescription instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
      • callocStack

        public static VkAttachmentDescription callocStack​(MemoryStack stack)
        Returns a new VkAttachmentDescription instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
      • nflags

        public static int nflags​(long struct)
        Unsafe version of flags().
      • nformat

        public static int nformat​(long struct)
        Unsafe version of format().
      • nsamples

        public static int nsamples​(long struct)
        Unsafe version of samples().
      • nloadOp

        public static int nloadOp​(long struct)
        Unsafe version of loadOp().
      • nstoreOp

        public static int nstoreOp​(long struct)
        Unsafe version of storeOp().
      • nstencilLoadOp

        public static int nstencilLoadOp​(long struct)
        Unsafe version of stencilLoadOp().
      • nstencilStoreOp

        public static int nstencilStoreOp​(long struct)
        Unsafe version of stencilStoreOp().
      • ninitialLayout

        public static int ninitialLayout​(long struct)
        Unsafe version of initialLayout().
      • nfinalLayout

        public static int nfinalLayout​(long struct)
        Unsafe version of finalLayout().
      • nflags

        public static void nflags​(long struct,
                                  int value)
        Unsafe version of flags.
      • nformat

        public static void nformat​(long struct,
                                   int value)
        Unsafe version of format.
      • nsamples

        public static void nsamples​(long struct,
                                    int value)
        Unsafe version of samples.
      • nloadOp

        public static void nloadOp​(long struct,
                                   int value)
        Unsafe version of loadOp.
      • nstoreOp

        public static void nstoreOp​(long struct,
                                    int value)
        Unsafe version of storeOp.
      • nstencilLoadOp

        public static void nstencilLoadOp​(long struct,
                                          int value)
        Unsafe version of stencilLoadOp.
      • nstencilStoreOp

        public static void nstencilStoreOp​(long struct,
                                           int value)
        Unsafe version of stencilStoreOp.
      • ninitialLayout

        public static void ninitialLayout​(long struct,
                                          int value)
        Unsafe version of initialLayout.
      • nfinalLayout

        public static void nfinalLayout​(long struct,
                                        int value)
        Unsafe version of finalLayout.