// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a // Creative Commons Attribution 4.0 International License; see // http://creativecommons.org/licenses/by/4.0/ VkDescriptorPoolCreateInfo(3) ============================= Name ---- VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool C Specification --------------- // refBegin VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool Additional information about the pool is passed in an instance of the sname:VkDescriptorPoolCreateInfo structure: include::../api/structs/VkDescriptorPoolCreateInfo.txt[] Members ------- * pname:sType is the type of this structure. * pname:pNext is `NULL` or a pointer to an extension-specific structure. * pname:flags specifies certain supported operations on the pool. Bits which can: be set include: + -- // refBegin VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor pool include::../api/enums/VkDescriptorPoolCreateFlagBits.txt[] -- + If pname:flags includes ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, then descriptor sets can: return their individual allocations to the pool, i.e. all of fname:vkAllocateDescriptorSets, fname:vkFreeDescriptorSets, and fname:vkResetDescriptorPool are allowed. Otherwise, descriptor sets allocated from the pool mustnot: be individually freed back to the pool, i.e. only fname:vkAllocateDescriptorSets and fname:vkResetDescriptorPool are allowed. + * pname:maxSets is the maximum number of descriptor sets that can: be allocated from the pool. * pname:poolSizeCount is the number of elements in pname:pPoolSizes. * pname:pPoolSizes is a pointer to an array of sname:VkDescriptorPoolSize structures, each containing a descriptor type and number of descriptors of that type to be allocated in the pool. Description ----------- If multiple sname:VkDescriptorPoolSize structures appear in the pname: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 mustnot: 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 mustnot: cause an allocation failure (note that this is always the case for a pool created without the ename:VK_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 mustnot: 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. include::../validity/structs/VkDescriptorPoolCreateInfo.txt[] See Also -------- elink:VkDescriptorPoolCreateFlags, slink:VkDescriptorPoolSize, elink:VkStructureType, flink:vkCreateDescriptorPool Document Notes -------------- For more information, see the Vulkan Specification at URL https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkDescriptorPoolCreateInfo This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification,not directly. include::footer.txt[]