Top Description Inners Fields Constructors Methods
org.lwjgl.vulkan

public Class VkAttachmentDescription

extends Struct<VkAttachmentDescription>
implements NativeResource
Class Inheritance
All Implemented Interfaces
org.lwjgl.system.NativeResource, java.lang.AutoCloseable
Imports
javax.annotation.*, java.nio.*, org.lwjgl.*, org.lwjgl.system.*

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 for the attachment. storeOp and stencilStoreOp define the store operations for the attachment. If an attachment is not used by any subpass, loadOp, storeOp, stencilStoreOp, and stencilLoadOp will be ignored for that attachment, and no load or store ops will be performed. However, any transition specified by initialLayout and finalLayout will still be executed.

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.

If a render pass uses multiple attachments that alias the same device memory, those attachments must each include the ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT bit in their attachment description flags. Attachments aliasing the same memory occurs in multiple ways:

Note

Render passes must include subpass dependencies (either directly or via a subpass dependency chain) between any two subpasses that operate on the same attachment or aliasing attachments and those subpass dependencies must include execution and memory dependencies separating uses of the aliases, if at least one of those subpasses writes to one of the aliases. These dependencies must not include the DEPENDENCY_BY_REGION_BIT if the aliases are views of distinct image subresources which overlap in memory.

Multiple attachments that alias the same memory must not be used in a single subpass. A given attachment index must not be used multiple times in a single subpass, with one exception: two subpass attachments can use the same attachment index if at least one use is as an input attachment and neither use is as a resolve or preserve attachment. In other words, the same view can be used simultaneously as an input and color or depth/stencil attachment, but must not be used as multiple color or depth/stencil attachments nor as resolve or preserve attachments.

If a set of attachments alias each other, then all except the first to be used in the render pass must use an initialLayout of IMAGE_LAYOUT_UNDEFINED, since the earlier uses of the other aliases make their contents undefined. Once an alias has been used and a different alias has been used after it, the first alias must not be used in any later subpasses. However, an application can assign the same image view to multiple aliasing attachment indices, which allows that image view to be used multiple times even if other aliases are used in between.

Note

Once an attachment needs the ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT bit, there should be no additional cost of introducing additional aliases, and using these additional aliases may allow more efficient clearing of the attachments on multiple uses via ATTACHMENT_LOAD_OP_CLEAR.

Valid Usage
Valid Usage (Implicit)
See Also

VkRenderPassCreateInfo

Layout


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

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class

Field Summary

Modifier and TypeField and Description
public static final int
ALIGNOF

The struct alignment in bytes.

public static final int
FINALLAYOUT

The struct member offsets.

public static final int
FLAGS

The struct member offsets.

public static final int
FORMAT

The struct member offsets.

public static final int
INITIALLAYOUT

The struct member offsets.

public static final int
LOADOP

The struct member offsets.

public static final int
SAMPLES

The struct member offsets.

public static final int
SIZEOF

The struct size in bytes.

public static final int
STENCILLOADOP

The struct member offsets.

public static final int
STENCILSTOREOP

The struct member offsets.

public static final int
STOREOP

The struct member offsets.

Inherited from org.lwjgl.system.Struct:
containerDEFAULT_ALIGN_ASDEFAULT_PACK_ALIGNMENT

Constructor Summary

AccessConstructor and Description
protected
VkAttachmentDescription(long address, ByteBuffer container)

public
VkAttachmentDescription(ByteBuffer container)

Creates a VkAttachmentDescription instance at the current position of the specified ByteBuffer container.

Method Summary

Modifier and TypeMethod and Description
public static VkAttachmentDescription
calloc()

Returns a new VkAttachmentDescription instance allocated with memCalloc.

public static VkAttachmentDescription.Buffer
calloc(int
the buffer capacity
capacity
)

Returns a new VkAttachmentDescription.Buffer instance allocated with memCalloc.

public static VkAttachmentDescription
calloc(MemoryStack
the stack from which to allocate
stack
)

Returns a new VkAttachmentDescription instance allocated on the specified MemoryStack and initializes all its bits to zero.

public static VkAttachmentDescription.Buffer
calloc(int
the buffer capacity
capacity
,
MemoryStack
the stack from which to allocate
stack
)

Returns a new VkAttachmentDescription.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.

public static VkAttachmentDescription
callocStack()

Deprecated
Deprecated for removal in 3.4.0.
public static VkAttachmentDescription
callocStack(MemoryStack stack)

Deprecated
Deprecated for removal in 3.4.0.
public static VkAttachmentDescription.Buffer
callocStack(int capacity)

Deprecated
Deprecated for removal in 3.4.0.
public static VkAttachmentDescription.Buffer
callocStack(int capacity, MemoryStack stack)

Deprecated
Deprecated for removal in 3.4.0.
protected VkAttachmentDescription
create(long
the struct memory address
address
,
ByteBuffer
an optional container buffer, to be referenced strongly by the struct instance.
container
)

Implements abstract org.lwjgl.system.Struct.create.

Similar to the constructor, but returns the exact type of the Struct subclass.
public static VkAttachmentDescription
create()

Returns a new VkAttachmentDescription instance allocated with BufferUtils.

public static VkAttachmentDescription
create(long address)

Returns a new VkAttachmentDescription instance for the specified memory address.

public static VkAttachmentDescription.Buffer
create(int
the buffer capacity
capacity
)

Returns a new VkAttachmentDescription.Buffer instance allocated with BufferUtils.

public static VkAttachmentDescription.Buffer
create(long
the memory address
address
,
int
the buffer capacity
capacity
)

Create a VkAttachmentDescription.Buffer instance at the specified memory.

public static VkAttachmentDescription
createSafe(long address)

Like create, but returns null if address is NULL.

public static VkAttachmentDescription.Buffer
createSafe(long address, int capacity)

Like create, but returns null if address is NULL.

public int
finalLayout()

the layout the attachment image subresource will be transitioned to when a render pass instance ends.

public VkAttachmentDescription
finalLayout(int value)

Sets the specified value to the finalLayout field.

public int
flags()

a bitmask of VkAttachmentDescriptionFlagBits specifying additional properties of the attachment.

public VkAttachmentDescription
flags(int value)

Sets the specified value to the flags field.

public int
format()

a VkFormat value specifying the format of the image view that will be used for the attachment.

public VkAttachmentDescription
format(int value)

Sets the specified value to the format field.

public int
initialLayout()

the layout the attachment image subresource will be in when a render pass instance begins.

public VkAttachmentDescription
initialLayout(int value)

Sets the specified value to the initialLayout field.

public int
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.

public VkAttachmentDescription
loadOp(int value)

Sets the specified value to the loadOp field.

public static VkAttachmentDescription
malloc()

Returns a new VkAttachmentDescription instance allocated with memAlloc.

public static VkAttachmentDescription.Buffer
malloc(int
the buffer capacity
capacity
)

Returns a new VkAttachmentDescription.Buffer instance allocated with memAlloc.

public static VkAttachmentDescription
malloc(MemoryStack
the stack from which to allocate
stack
)

Returns a new VkAttachmentDescription instance allocated on the specified MemoryStack.

public static VkAttachmentDescription.Buffer
malloc(int
the buffer capacity
capacity
,
MemoryStack
the stack from which to allocate
stack
)

Returns a new VkAttachmentDescription.Buffer instance allocated on the specified MemoryStack.

public static VkAttachmentDescription
mallocStack()

Deprecated
Deprecated for removal in 3.4.0.
public static VkAttachmentDescription
mallocStack(MemoryStack stack)

Deprecated
Deprecated for removal in 3.4.0.
public static VkAttachmentDescription.Buffer
mallocStack(int capacity)

Deprecated
Deprecated for removal in 3.4.0.
public static VkAttachmentDescription.Buffer
mallocStack(int capacity, MemoryStack stack)

Deprecated
Deprecated for removal in 3.4.0.
public static int
nfinalLayout(long struct)

Unsafe version of finalLayout.

public static void
nfinalLayout(long struct, int value)

Unsafe version of finalLayout.

public static int
nflags(long struct)

Unsafe version of flags.

public static void
nflags(long struct, int value)

Unsafe version of flags.

public static int
nformat(long struct)

Unsafe version of format.

public static void
nformat(long struct, int value)

Unsafe version of format.

public static int
ninitialLayout(long struct)

Unsafe version of initialLayout.

public static void
ninitialLayout(long struct, int value)

Unsafe version of initialLayout.

public static int
nloadOp(long struct)

Unsafe version of loadOp.

public static void
nloadOp(long struct, int value)

Unsafe version of loadOp.

public static int
nsamples(long struct)

Unsafe version of samples.

public static void
nsamples(long struct, int value)

Unsafe version of samples.

public static int
nstencilLoadOp(long struct)

Unsafe version of stencilLoadOp.

public static void
nstencilLoadOp(long struct, int value)

Unsafe version of stencilLoadOp.

public static int
nstencilStoreOp(long struct)

Unsafe version of stencilStoreOp.

public static void
nstencilStoreOp(long struct, int value)

Unsafe version of stencilStoreOp.

public static int
nstoreOp(long struct)

Unsafe version of storeOp.

public static void
nstoreOp(long struct, int value)

Unsafe version of storeOp.

public int
samples()

a VkSampleCountFlagBits value specifying the number of samples of the image.

public VkAttachmentDescription
samples(int value)

Sets the specified value to the samples field.

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.

public VkAttachmentDescription

Returns:

this struct
set
(VkAttachmentDescription
the source struct
src
)

Copies the specified struct data to this struct.

public int
sizeof()

Implements abstract org.lwjgl.system.Struct.sizeof.

Returns sizeof(struct).
public int
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.

public VkAttachmentDescription
stencilLoadOp(int value)

Sets the specified value to the stencilLoadOp field.

public int
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.

public VkAttachmentDescription
stencilStoreOp(int value)

Sets the specified value to the stencilStoreOp field.

public int
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.

public VkAttachmentDescription
storeOp(int value)

Sets the specified value to the storeOp field.

Inherited from org.lwjgl.system.Struct:
__array__array__array__checkContainer__checkMalloc__create__getContainer__getContainer__member__member__member__padding__padding__struct__struct__union__unionclearfreeisNullvalidate