Class VkDescriptorPoolCreateInfo

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

    public class VkDescriptorPoolCreateInfo
    extends org.lwjgl.system.Struct
    implements org.lwjgl.system.NativeResource
    Structure specifying parameters of a newly created descriptor pool.
    Description

    If multiple VkDescriptorPoolSize structures appear in the pPoolSizes array then the pool will be created with enough storage for the total number of descriptors of each type.

    Fragmentation of a descriptor pool is possible and may lead to descriptor set allocation failures. A failure due to fragmentation is defined as failing a descriptor set allocation despite the sum of all outstanding descriptor set allocations from the pool plus the requested allocation requiring no more than the total number of descriptors requested at pool creation. Implementations provide certain guarantees of when fragmentation must not cause allocation failure, as described below.

    If a descriptor pool has not had any descriptor sets freed since it was created or most recently reset then fragmentation must not cause an allocation failure (note that this is always the case for a pool created without the DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT bit set). Additionally, if all sets allocated from the pool since it was created or most recently reset use the same number of descriptors (of each type) and the requested allocation also uses that same number of descriptors (of each type), then fragmentation must not cause an allocation failure.

    If an allocation failure occurs due to fragmentation, an application can create an additional descriptor pool to perform further descriptor set allocations.

    If flags has the DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT bit set, descriptor pool creation may fail with the error ERROR_FRAGMENTATION_EXT if the total number of descriptors across all pools (including this one) created with this bit set exceeds maxUpdateAfterBindDescriptorsInAllPools, or if fragmentation of the underlying hardware resources occurs.

    Valid Usage
    • maxSets must be greater than 0
    Valid Usage (Implicit)
    See Also

    VkDescriptorPoolSize, CreateDescriptorPool

    Member documentation

    • sType – the type of this structure.
    • pNextNULL or a pointer to an extension-specific structure.
    • flags – a bitmask of VkDescriptorPoolCreateFlagBits specifying certain supported operations on the pool.
    • maxSets – the maximum number of descriptor sets that can be allocated from the pool.
    • poolSizeCount – the number of elements in pPoolSizes.
    • pPoolSizes – a pointer to an array of VkDescriptorPoolSize structures, each containing a descriptor type and number of descriptors of that type to be allocated in the pool.

    Layout

    
     struct VkDescriptorPoolCreateInfo {
         VkStructureType sType;
         void const * pNext;
         VkDescriptorPoolCreateFlags flags;
         uint32_t maxSets;
         uint32_t poolSizeCount;
         VkDescriptorPoolSize const * pPoolSizes;
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • STYPE, PNEXT, FLAGS, MAXSETS, POOLSIZECOUNT, PPOOLSIZES

        The struct member offsets.
    • Constructor Detail

      • VkDescriptorPoolCreateInfo

        public VkDescriptorPoolCreateInfo​(java.nio.ByteBuffer container)
        Creates a VkDescriptorPoolCreateInfo 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()
        Specified by:
        sizeof in class org.lwjgl.system.Struct
      • sType

        public int sType()
        Returns the value of the sType field.
      • pNext

        public long pNext()
        Returns the value of the pNext field.
      • flags

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

        public int maxSets()
        Returns the value of the maxSets field.
      • poolSizeCount

        public int poolSizeCount()
        Returns the value of the poolSizeCount field.
      • malloc

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

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

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

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

        public static VkDescriptorPoolCreateInfo mallocStack()
        Returns a new VkDescriptorPoolCreateInfo instance allocated on the thread-local MemoryStack.
      • callocStack

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

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

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

        public static VkDescriptorPoolCreateInfo.Buffer callocStack​(int capacity,
                                                                    org.lwjgl.system.MemoryStack stack)
        Returns a new VkDescriptorPoolCreateInfo.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • 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().
      • nmaxSets

        public static int nmaxSets​(long struct)
        Unsafe version of maxSets().
      • npoolSizeCount

        public static int npoolSizeCount​(long struct)
        Unsafe version of poolSizeCount().
      • 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.
      • nmaxSets

        public static void nmaxSets​(long struct,
                                    int value)
        Unsafe version of maxSets.
      • npoolSizeCount

        public static void npoolSizeCount​(long struct,
                                          int value)
        Sets the specified value to the poolSizeCount field of the specified struct.
      • validate

        public static void validate​(long struct)
        Validates pointer members that should not be NULL.
        Parameters:
        struct - the struct to validate
      • validate

        public static void validate​(long array,
                                    int count)
        Calls validate(long) for each struct contained in the specified struct array.
        Parameters:
        array - the struct array to validate
        count - the number of structs in array