C Specification
Data structures for objects are reserved by the implementation at device
creation time.
The application must provide upper bounds on numbers of objects and other
limits at device creation time.
To reserve data structures for use by objects created from this device, add
a VkDeviceObjectReservationCreateInfo structure to the pNext
chain of the VkDeviceCreateInfo structure.
// Provided by VKSC_VERSION_1_0
typedef struct VkDeviceObjectReservationCreateInfo {
VkStructureType sType;
const void* pNext;
uint32_t pipelineCacheCreateInfoCount;
const VkPipelineCacheCreateInfo* pPipelineCacheCreateInfos;
uint32_t pipelinePoolSizeCount;
const VkPipelinePoolSize* pPipelinePoolSizes;
uint32_t semaphoreRequestCount;
uint32_t commandBufferRequestCount;
uint32_t fenceRequestCount;
uint32_t deviceMemoryRequestCount;
uint32_t bufferRequestCount;
uint32_t imageRequestCount;
uint32_t eventRequestCount;
uint32_t queryPoolRequestCount;
uint32_t bufferViewRequestCount;
uint32_t imageViewRequestCount;
uint32_t layeredImageViewRequestCount;
uint32_t pipelineCacheRequestCount;
uint32_t pipelineLayoutRequestCount;
uint32_t renderPassRequestCount;
uint32_t graphicsPipelineRequestCount;
uint32_t computePipelineRequestCount;
uint32_t descriptorSetLayoutRequestCount;
uint32_t samplerRequestCount;
uint32_t descriptorPoolRequestCount;
uint32_t descriptorSetRequestCount;
uint32_t framebufferRequestCount;
uint32_t commandPoolRequestCount;
uint32_t samplerYcbcrConversionRequestCount;
uint32_t surfaceRequestCount;
uint32_t swapchainRequestCount;
uint32_t displayModeRequestCount;
uint32_t subpassDescriptionRequestCount;
uint32_t attachmentDescriptionRequestCount;
uint32_t descriptorSetLayoutBindingRequestCount;
uint32_t descriptorSetLayoutBindingLimit;
uint32_t maxImageViewMipLevels;
uint32_t maxImageViewArrayLayers;
uint32_t maxLayeredImageViewMipLevels;
uint32_t maxOcclusionQueriesPerPool;
uint32_t maxPipelineStatisticsQueriesPerPool;
uint32_t maxTimestampQueriesPerPool;
uint32_t maxImmutableSamplersPerDescriptorSetLayout;
} VkDeviceObjectReservationCreateInfo;
Members
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
pipelineCacheCreateInfoCountis the length of thepPipelineCacheCreateInfosarray. -
pPipelineCacheCreateInfosis a pointer to an array of VkPipelineCacheCreateInfo structures that contain the creation information of the pipeline caches that can be created on this device. -
pipelinePoolSizeCountis the length of thepPipelinePoolSizesarray. -
pPipelinePoolSizesis a pointer to an array of VkPipelinePoolSize structures requesting memory be reserved for pipelines of the specified sizes. -
semaphoreRequestCountis the requested maximum number ofVkSemaphoreobjects that can exist at the same time. -
commandBufferRequestCountis the requested maximum number ofVkCommandBufferobjects that can be reserved by allVkCommandPoolobjects. -
fenceRequestCountis the requested maximum number ofVkFenceobjects that can exist at the same time. -
deviceMemoryRequestCountis the requested maximum number ofVkDeviceMemoryobjects that can exist at the same time. -
bufferRequestCountis the requested maximum number ofVkBufferobjects that can exist at the same time. -
imageRequestCountis the requested maximum number ofVkImageobjects that can exist at the same time. -
eventRequestCountis the requested maximum number ofVkEventobjects that can exist at the same time. -
queryPoolRequestCountis the requested maximum number ofVkQueryPoolobjects that can exist at the same time. -
bufferViewRequestCountis the requested maximum number ofVkBufferViewobjects that can exist at the same time. -
imageViewRequestCountis the requested maximum number ofVkImageViewobjects that can exist at the same time. -
layeredImageViewRequestCountis the requested maximum numberVkImageViewobjects created with VkImageViewCreateInfo::subresourceRange.layerCountgreater than1that can exist at the same time. -
pipelineCacheRequestCountis the requested maximum number ofVkPipelineCacheobjects that can exist at the same time. -
pipelineLayoutRequestCountis the requested maximum number ofVkPipelineLayoutobjects that can exist at the same time. -
renderPassRequestCountis the requested maximum number ofVkRenderPassobjects that can exist at the same time. -
graphicsPipelineRequestCountis the requested maximum number of graphicsVkPipelineobjects that can exist at the same time. -
computePipelineRequestCountis the requested maximum number of computeVkPipelineobjects that can exist at the same time. -
descriptorSetLayoutRequestCountis the requested maximum number ofVkDescriptorSetLayoutobjects that can exist at the same time. -
samplerRequestCountis the requested maximum number ofVkSamplerobjects that can exist at the same time. -
descriptorPoolRequestCountis the requested maximum number ofVkDescriptorPoolobjects that can exist at the same time. -
descriptorSetRequestCountis the requested maximum number ofVkDescriptorSetobjects that can exist at the same time. -
framebufferRequestCountis the requested maximum number ofVkFramebufferobjects that can exist at the same time. -
commandPoolRequestCountis the requested maximum number ofVkCommandPoolobjects that can exist at the same time. -
samplerYcbcrConversionRequestCountis the requested maximum number ofVkSamplerYcbcrConversionobjects that can exist at the same time. -
surfaceRequestCountis deprecated and implementations must ignore it. -
swapchainRequestCountis the requested maximum number ofVkSwapchainKHRobjects that can exist at the same time. -
displayModeRequestCountis deprecated and implementations must ignore it. -
subpassDescriptionRequestCountis the requested maximum sum of all VkRenderPassCreateInfo2::subpassCountvalues across allVkRenderPassobjects that can exist at the same time. -
attachmentDescriptionRequestCountis the requested maximum sum of all VkRenderPassCreateInfo2::attachmentCountvalues across allVkRenderPassobjects that can exist at the same time. -
descriptorSetLayoutBindingRequestCountis the requested maximum sum of all VkDescriptorSetLayoutCreateInfo::bindingCountvalues across allVkDescriptorSetLayoutobjects that can exist at the same time. -
descriptorSetLayoutBindingLimitis one greater than the maximum value of VkDescriptorSetLayoutBinding::bindingthat can be used. -
maxImageViewMipLevelsis the maximum value of VkImageViewCreateInfo::subresourceRange.levelCountthat can be used. -
maxImageViewArrayLayersis the maximum value of VkImageViewCreateInfo::subresourceRange.layerCountthat can be used. -
maxLayeredImageViewMipLevelsis the maximum value of VkImageViewCreateInfo::subresourceRange.levelCountthat can be used when VkImageViewCreateInfo::subresourceRange.layerCountis greater than1. -
maxOcclusionQueriesPerPoolis the requested maximum number ofVK_QUERY_TYPE_OCCLUSIONqueries that can exist at the same time in a single query pool. -
maxPipelineStatisticsQueriesPerPoolis the requested maximum number ofVK_QUERY_TYPE_PIPELINE_STATISTICSqueries that can exist at the same time in a single query pool. -
maxTimestampQueriesPerPoolis the requested maximum number ofVK_QUERY_TYPE_TIMESTAMPqueries that can exist at the same time in a single query pool. -
maxImmutableSamplersPerDescriptorSetLayoutis the requested maximum number of immutable samplers that can be used across all bindings in a descriptor set layout.
Description
Multiple VkDeviceObjectReservationCreateInfo structures can be
chained together.
The maximum value from all instances of maxImageViewMipLevels,
maxImageViewArrayLayers, maxLayeredImageViewMipLevels,
descriptorSetLayoutBindingLimit, maxOcclusionQueriesPerPool,
maxPipelineStatisticsQueriesPerPool, maxTimestampQueriesPerPool,
and maxImmutableSamplersPerDescriptorSetLayout will be reserved.
For the remaining members, the sum of the requested resources from all
instances of VkDeviceObjectReservationCreateInfo will be reserved.
If
VkPhysicalDeviceVulkanSC10Properties::deviceDestroyFreesMemory is VK_TRUE, the reserved memory is
returned to the system when the device is destroyed, otherwise it may not
be returned to the system until the process is terminated.
Document Notes
For more information, see the Vulkan Specification
This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.