Class VkFrameBoundaryEXT

java.lang.Object
org.lwjgl.system.Pointer.Default
org.lwjgl.system.Struct<VkFrameBoundaryEXT>
org.lwjgl.vulkan.VkFrameBoundaryEXT
All Implemented Interfaces:
AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer

public class VkFrameBoundaryEXT extends org.lwjgl.system.Struct<VkFrameBoundaryEXT> implements org.lwjgl.system.NativeResource
Add frame boundary information to queue submissions.
Description

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.

Note

The frame identifier is used to associate one or more queue submissions to a frame. It is meant to be unique within a frame lifetime, i.e. it is possible (though not recommended) to reuse frame identifiers, as long as any two frames that may have overlapping queue submissions (as in the example above) use 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.

Valid Usage (Implicit)
  • sType must be STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
  • flags must be a valid combination of VkFrameBoundaryFlagBitsEXT values
  • If imageCount is not 0, and pImages is not NULL, pImages must be a valid pointer to an array of imageCount valid VkImage handles
  • If bufferCount is not 0, and pBuffers is not NULL, pBuffers must be a valid pointer to an array of bufferCount valid VkBuffer handles
  • If tagSize is not 0, and pTag is not NULL, pTag must be a valid pointer to an array of tagSize bytes
  • Both of the elements of pBuffers, and the elements of pImages that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice

Layout


 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();
 }
  • Field Details

    • SIZEOF

      public static final int SIZEOF
      The struct size in bytes.
    • ALIGNOF

      public static final int ALIGNOF
      The struct alignment in bytes.
    • STYPE

      public static final int STYPE
      The struct member offsets.
    • PNEXT

      public static final int PNEXT
      The struct member offsets.
    • FLAGS

      public static final int FLAGS
      The struct member offsets.
    • FRAMEID

      public static final int FRAMEID
      The struct member offsets.
    • IMAGECOUNT

      public static final int IMAGECOUNT
      The struct member offsets.
    • PIMAGES

      public static final int PIMAGES
      The struct member offsets.
    • BUFFERCOUNT

      public static final int BUFFERCOUNT
      The struct member offsets.
    • PBUFFERS

      public static final int PBUFFERS
      The struct member offsets.
    • TAGNAME

      public static final int TAGNAME
      The struct member offsets.
    • TAGSIZE

      public static final int TAGSIZE
      The struct member offsets.
    • PTAG

      public static final int PTAG
      The struct member offsets.
  • Constructor Details

    • VkFrameBoundaryEXT

      public VkFrameBoundaryEXT(ByteBuffer container)
      Creates a VkFrameBoundaryEXT 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 Details

    • sizeof

      public int sizeof()
      Specified by:
      sizeof in class org.lwjgl.system.Struct<VkFrameBoundaryEXT>
    • sType

      public int sType()
      a VkStructureType value identifying this structure.
    • pNext

      public long pNext()
      NULL or a pointer to a structure extending this structure.
    • flags

      public int flags()
      a bitmask of VkFrameBoundaryFlagBitsEXT that can flag the last submission of a frame identifier.
    • frameID

      public long frameID()
      the frame identifier.
    • imageCount

      public int imageCount()
      the number of images that store frame results.
    • pImages

      public @Nullable LongBuffer pImages()
      a pointer to an array of VkImage objects with imageCount entries.
    • bufferCount

      public int bufferCount()
      the number of buffers the store the frame results.
    • pBuffers

      public @Nullable LongBuffer pBuffers()
      a pointer to an array of VkBuffer objects with bufferCount entries.
    • tagName

      public long tagName()
      a numerical identifier for tag data.
    • tagSize

      public long tagSize()
      the number of bytes of tag data.
    • pTag

      public @Nullable ByteBuffer pTag()
      a pointer to an array of tagSize bytes containing tag data.
    • sType

      public VkFrameBoundaryEXT sType(int value)
      Sets the specified value to the sType() field.
    • sType$Default

      public VkFrameBoundaryEXT sType$Default()
      Sets the STRUCTURE_TYPE_FRAME_BOUNDARY_EXT value to the sType() field.
    • pNext

      public VkFrameBoundaryEXT pNext(long value)
      Sets the specified value to the pNext() field.
    • flags

      public VkFrameBoundaryEXT flags(int value)
      Sets the specified value to the flags() field.
    • frameID

      public VkFrameBoundaryEXT frameID(long value)
      Sets the specified value to the frameID() field.
    • imageCount

      public VkFrameBoundaryEXT imageCount(int value)
      Sets the specified value to the imageCount() field.
    • pImages

      public VkFrameBoundaryEXT pImages(@Nullable LongBuffer value)
      Sets the address of the specified LongBuffer to the pImages() field.
    • bufferCount

      public VkFrameBoundaryEXT bufferCount(int value)
      Sets the specified value to the bufferCount() field.
    • pBuffers

      public VkFrameBoundaryEXT pBuffers(@Nullable LongBuffer value)
      Sets the address of the specified LongBuffer to the pBuffers() field.
    • tagName

      public VkFrameBoundaryEXT tagName(long value)
      Sets the specified value to the tagName() field.
    • tagSize

      public VkFrameBoundaryEXT tagSize(long value)
      Sets the specified value to the tagSize() field.
    • pTag

      public VkFrameBoundaryEXT pTag(@Nullable ByteBuffer value)
      Sets the address of the specified ByteBuffer to the pTag() field.
    • set

      public VkFrameBoundaryEXT set(int sType, long pNext, int flags, long frameID, int imageCount, @Nullable LongBuffer pImages, int bufferCount, @Nullable LongBuffer pBuffers, long tagName, long tagSize, @Nullable ByteBuffer pTag)
      Initializes this struct with the specified values.
    • set

      Copies the specified struct data to this struct.
      Parameters:
      src - the source struct
      Returns:
      this struct
    • malloc

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

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

      public static VkFrameBoundaryEXT create()
      Returns a new VkFrameBoundaryEXT instance allocated with BufferUtils.
    • create

      public static VkFrameBoundaryEXT create(long address)
      Returns a new VkFrameBoundaryEXT instance for the specified memory address.
    • createSafe

      public static @Nullable VkFrameBoundaryEXT createSafe(long address)
      Like create, but returns null if address is NULL.
    • malloc

      public static VkFrameBoundaryEXT.Buffer malloc(int capacity)
      Returns a new VkFrameBoundaryEXT.Buffer instance allocated with memAlloc. The instance must be explicitly freed.
      Parameters:
      capacity - the buffer capacity
    • calloc

      public static VkFrameBoundaryEXT.Buffer calloc(int capacity)
      Returns a new VkFrameBoundaryEXT.Buffer instance allocated with memCalloc. The instance must be explicitly freed.
      Parameters:
      capacity - the buffer capacity
    • create

      public static VkFrameBoundaryEXT.Buffer create(int capacity)
      Returns a new VkFrameBoundaryEXT.Buffer instance allocated with BufferUtils.
      Parameters:
      capacity - the buffer capacity
    • create

      public static VkFrameBoundaryEXT.Buffer create(long address, int capacity)
      Create a VkFrameBoundaryEXT.Buffer instance at the specified memory.
      Parameters:
      address - the memory address
      capacity - the buffer capacity
    • createSafe

      public static @Nullable VkFrameBoundaryEXT.Buffer createSafe(long address, int capacity)
      Like create, but returns null if address is NULL.
    • malloc

      public static VkFrameBoundaryEXT malloc(org.lwjgl.system.MemoryStack stack)
      Returns a new VkFrameBoundaryEXT instance allocated on the specified MemoryStack.
      Parameters:
      stack - the stack from which to allocate
    • calloc

      public static VkFrameBoundaryEXT calloc(org.lwjgl.system.MemoryStack stack)
      Returns a new VkFrameBoundaryEXT instance allocated on the specified MemoryStack and initializes all its bits to zero.
      Parameters:
      stack - the stack from which to allocate
    • malloc

      public static VkFrameBoundaryEXT.Buffer malloc(int capacity, org.lwjgl.system.MemoryStack stack)
      Returns a new VkFrameBoundaryEXT.Buffer instance allocated on the specified MemoryStack.
      Parameters:
      capacity - the buffer capacity
      stack - the stack from which to allocate
    • calloc

      public static VkFrameBoundaryEXT.Buffer calloc(int capacity, org.lwjgl.system.MemoryStack stack)
      Returns a new VkFrameBoundaryEXT.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
      Parameters:
      capacity - the buffer capacity
      stack - the stack from which to allocate
    • nsType

      public static int nsType(long struct)
      Unsafe version of sType().
    • npNext

      public static long npNext(long struct)
      Unsafe version of pNext().
    • nflags

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

      public static long nframeID(long struct)
      Unsafe version of frameID().
    • nimageCount

      public static int nimageCount(long struct)
      Unsafe version of imageCount().
    • npImages

      public static @Nullable LongBuffer npImages(long struct)
      Unsafe version of pImages.
    • nbufferCount

      public static int nbufferCount(long struct)
      Unsafe version of bufferCount().
    • npBuffers

      public static @Nullable LongBuffer npBuffers(long struct)
      Unsafe version of pBuffers.
    • ntagName

      public static long ntagName(long struct)
      Unsafe version of tagName().
    • ntagSize

      public static long ntagSize(long struct)
      Unsafe version of tagSize().
    • npTag

      public static @Nullable ByteBuffer npTag(long struct)
      Unsafe version of pTag.
    • nsType

      public static void nsType(long struct, int value)
      Unsafe version of sType.
    • npNext

      public static void npNext(long struct, long value)
      Unsafe version of pNext.
    • nflags

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

      public static void nframeID(long struct, long value)
      Unsafe version of frameID.
    • nimageCount

      public static void nimageCount(long struct, int value)
      Sets the specified value to the imageCount field of the specified struct.
    • npImages

      public static void npImages(long struct, @Nullable LongBuffer value)
      Unsafe version of pImages.
    • nbufferCount

      public static void nbufferCount(long struct, int value)
      Sets the specified value to the bufferCount field of the specified struct.
    • npBuffers

      public static void npBuffers(long struct, @Nullable LongBuffer value)
      Unsafe version of pBuffers.
    • ntagName

      public static void ntagName(long struct, long value)
      Unsafe version of tagName.
    • ntagSize

      public static void ntagSize(long struct, long value)
      Sets the specified value to the tagSize field of the specified struct.
    • npTag

      public static void npTag(long struct, @Nullable ByteBuffer value)
      Unsafe version of pTag.