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
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
pipelineCacheCreateInfoCount
is the length of thepPipelineCacheCreateInfos
array. -
pPipelineCacheCreateInfos
is a pointer to an array of VkPipelineCacheCreateInfo structures that contain the creation information of the pipeline caches that can be created on this device. -
pipelinePoolSizeCount
is the length of thepPipelinePoolSizes
array. -
pPipelinePoolSizes
is a pointer to an array of VkPipelinePoolSize structures requesting memory be reserved for pipelines of the specified sizes. -
semaphoreRequestCount
is the requested maximum number ofVkSemaphore
objects that can exist at the same time. -
commandBufferRequestCount
is the requested maximum number ofVkCommandBuffer
objects that can be reserved by allVkCommandPool
objects. -
fenceRequestCount
is the requested maximum number ofVkFence
objects that can exist at the same time. -
deviceMemoryRequestCount
is the requested maximum number ofVkDeviceMemory
objects that can exist at the same time. -
bufferRequestCount
is the requested maximum number ofVkBuffer
objects that can exist at the same time. -
imageRequestCount
is the requested maximum number ofVkImage
objects that can exist at the same time. -
eventRequestCount
is the requested maximum number ofVkEvent
objects that can exist at the same time. -
queryPoolRequestCount
is the requested maximum number ofVkQueryPool
objects that can exist at the same time. -
bufferViewRequestCount
is the requested maximum number ofVkBufferView
objects that can exist at the same time. -
imageViewRequestCount
is the requested maximum number ofVkImageView
objects that can exist at the same time. -
layeredImageViewRequestCount
is the requested maximum numberVkImageView
objects created with VkImageViewCreateInfo::subresourceRange.layerCount
greater than1
that can exist at the same time. -
pipelineCacheRequestCount
is the requested maximum number ofVkPipelineCache
objects that can exist at the same time. -
pipelineLayoutRequestCount
is the requested maximum number ofVkPipelineLayout
objects that can exist at the same time. -
renderPassRequestCount
is the requested maximum number ofVkRenderPass
objects that can exist at the same time. -
graphicsPipelineRequestCount
is the requested maximum number of graphicsVkPipeline
objects that can exist at the same time. -
computePipelineRequestCount
is the requested maximum number of computeVkPipeline
objects that can exist at the same time. -
descriptorSetLayoutRequestCount
is the requested maximum number ofVkDescriptorSetLayout
objects that can exist at the same time. -
samplerRequestCount
is the requested maximum number ofVkSampler
objects that can exist at the same time. -
descriptorPoolRequestCount
is the requested maximum number ofVkDescriptorPool
objects that can exist at the same time. -
descriptorSetRequestCount
is the requested maximum number ofVkDescriptorSet
objects that can exist at the same time. -
framebufferRequestCount
is the requested maximum number ofVkFramebuffer
objects that can exist at the same time. -
commandPoolRequestCount
is the requested maximum number ofVkCommandPool
objects that can exist at the same time. -
samplerYcbcrConversionRequestCount
is the requested maximum number ofVkSamplerYcbcrConversion
objects that can exist at the same time. -
surfaceRequestCount
is deprecated and implementations must ignore it. -
swapchainRequestCount
is the requested maximum number ofVkSwapchainKHR
objects that can exist at the same time. -
displayModeRequestCount
is deprecated and implementations must ignore it. -
subpassDescriptionRequestCount
is the requested maximum sum of all VkRenderPassCreateInfo2::subpassCount
values across allVkRenderPass
objects that can exist at the same time. -
attachmentDescriptionRequestCount
is the requested maximum sum of all VkRenderPassCreateInfo2::attachmentCount
values across allVkRenderPass
objects that can exist at the same time. -
descriptorSetLayoutBindingRequestCount
is the requested maximum sum of all VkDescriptorSetLayoutCreateInfo::bindingCount
values across allVkDescriptorSetLayout
objects that can exist at the same time. -
descriptorSetLayoutBindingLimit
is one greater than the maximum value of VkDescriptorSetLayoutBinding::binding
that can be used. -
maxImageViewMipLevels
is the maximum value of VkImageViewCreateInfo::subresourceRange.levelCount
that can be used. -
maxImageViewArrayLayers
is the maximum value of VkImageViewCreateInfo::subresourceRange.layerCount
that can be used. -
maxLayeredImageViewMipLevels
is the maximum value of VkImageViewCreateInfo::subresourceRange.levelCount
that can be used when VkImageViewCreateInfo::subresourceRange.layerCount
is greater than1
. -
maxOcclusionQueriesPerPool
is the requested maximum number ofVK_QUERY_TYPE_OCCLUSION
queries that can exist at the same time in a single query pool. -
maxPipelineStatisticsQueriesPerPool
is the requested maximum number ofVK_QUERY_TYPE_PIPELINE_STATISTICS
queries that can exist at the same time in a single query pool. -
maxTimestampQueriesPerPool
is the requested maximum number ofVK_QUERY_TYPE_TIMESTAMP
queries that can exist at the same time in a single query pool. -
maxImmutableSamplersPerDescriptorSetLayout
is 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.