The application can associate frame boundary information to a queue submission call by adding a VkFrameBoundaryEXT structure to the pNext chain of queue submission, VkPresentInfoKHR, or VkBindSparseInfo.
The frame identifier is used to associate one or more queue submission to a frame, it is thus meant to be unique within a frame lifetime, i.e. it is possible (but not recommended) to reuse frame identifiers, as long as any two frames with any chance of having overlapping queue submissions (as in the example above) use two different frame identifiers.
Since the concept of frame is application-dependent, there is no way to validate the use of frame identifier. It is good practice to use a monotonically increasing counter as the frame identifier and not reuse identifiers between frames.
The pImages and pBuffers arrays contain a list of images and buffers which store the "end result" of the frame. As the concept of frame is application-dependent, not all frames may produce their results in images or buffers, yet this is a sufficiently common case to be handled by VkFrameBoundaryEXT. Note that no extra information, such as image layout is being provided, since the images are meant to be used by tools which would already be tracking this required information. Having the possibility of passing a list of end-result images makes VkFrameBoundaryEXT as expressive as QueuePresentKHR, which is often the default frame boundary delimiter.
The application can also associate arbitrary extra information via tag data using tagName, tagSize and pTag. This extra information is typically tool-specific.
sType must be STRUCTURE_TYPE_FRAME_BOUNDARY_EXTflags must be a valid combination of VkFrameBoundaryFlagBitsEXT valuesimageCount is not 0, and pImages is not NULL, pImages must be a valid pointer to an array of imageCount valid VkImage handlesbufferCount is not 0, and pBuffers is not NULL, pBuffers must be a valid pointer to an array of bufferCount valid VkBuffer handlespBuffers, and the elements of pImages that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice
struct VkFrameBoundaryEXT {
VkStructureType sType;
void const * pNext;
VkFrameBoundaryFlagsEXT flags;
uint64_t frameID;
uint32_t imageCount;
VkImage const * pImages;
uint32_t bufferCount;
VkBuffer const * pBuffers;
uint64_t tagName;
size_t tagSize;
void const * pTag;
}
| Modifier and Type | Class and Description |
|---|---|
| public static class | VkFrameBoundaryEXT.
An array of |
| Modifier and Type | Field and Description |
|---|---|
| public static final int | ALIGNOF
The struct alignment in bytes. |
| public static final int | BUFFERCOUNT
The struct member offsets. |
| public static final int | FLAGS
The struct member offsets. |
| public static final int | FRAMEID
The struct member offsets. |
| public static final int | IMAGECOUNT
The struct member offsets. |
| public static final int | PBUFFERS
The struct member offsets. |
| public static final int | PIMAGES
The struct member offsets. |
| public static final int | PNEXT
The struct member offsets. |
| public static final int | PTAG
The struct member offsets. |
| public static final int | SIZEOF
The struct size in bytes. |
| public static final int | STYPE
The struct member offsets. |
| public static final int | TAGNAME
The struct member offsets. |
| public static final int | TAGSIZE
The struct member offsets. |
| Access | Constructor and Description |
|---|---|
| protected | |
| public | VkFrameBoundaryEXT(ByteBuffer container)
Creates a |
| Modifier and Type | Method and Description |
|---|---|
| public int | |
| public VkFrameBoundaryEXT | |
| public static VkFrameBoundaryEXT | |
| public static VkFrameBoundaryEXT. | calloc(int
the buffer capacity capacity)Returns a new |
| public static VkFrameBoundaryEXT | calloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkFrameBoundaryEXT. | calloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| protected VkFrameBoundaryEXT | create(long
the struct memory address address, ByteBuffer an optional container buffer, to be referenced strongly by the struct instance. container)Implements abstract org. the constructor, but returns the exact type of the Struct subclass.
|
| public static VkFrameBoundaryEXT | |
| public static VkFrameBoundaryEXT | |
| public static VkFrameBoundaryEXT. | create(int
the buffer capacity capacity)Returns a new |
| public static VkFrameBoundaryEXT. | create(long
the memory address address, int the buffer capacity capacity)Create a |
| public static VkFrameBoundaryEXT | |
| public static VkFrameBoundaryEXT. | |
| public int | flags()
a bitmask of |
| public VkFrameBoundaryEXT | |
| public long | |
| public VkFrameBoundaryEXT | |
| public int | |
| public VkFrameBoundaryEXT | |
| public static VkFrameBoundaryEXT | |
| public static VkFrameBoundaryEXT. | malloc(int
the buffer capacity capacity)Returns a new |
| public static VkFrameBoundaryEXT | malloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkFrameBoundaryEXT. | malloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| public static int | |
| public static void | nbufferCount(long struct, int value)
Sets the specified value to the |
| public static int | |
| public static void | |
| public static long | |
| public static void | |
| public static int | |
| public static void | nimageCount(long struct, int value)
Sets the specified value to the |
| public static LongBuffer | |
| public static void | |
| public static LongBuffer | |
| public static void | |
| public static long | |
| public static void | |
| public static long | |
| public static void | |
| public static int | |
| public static void | |
| public static long | |
| public static void | |
| public static long | |
| public static void | |
| public LongBuffer | |
| public VkFrameBoundaryEXT | |
| public LongBuffer | |
| public VkFrameBoundaryEXT | |
| public long | |
| public VkFrameBoundaryEXT | |
| public long | |
| public VkFrameBoundaryEXT | |
| public VkFrameBoundaryEXT | set(int sType, long pNext, int flags, long frameID, int imageCount, LongBuffer pImages, int bufferCount, LongBuffer pBuffers, long tagName, long tagSize, long pTag)
Initializes this struct with the specified values. |
| public VkFrameBoundaryEXT | Returns: this structthe source struct src)Copies the specified struct data to this struct. |
| public int | |
| public int | |
| public VkFrameBoundaryEXT | |
| public VkFrameBoundaryEXT | |
| public long | |
| public VkFrameBoundaryEXT | |
| public long | |
| public VkFrameBoundaryEXT |