C Specification

The VkPhysicalDeviceVulkanSC10Properties structure is defined as:

// Provided by VKSC_VERSION_1_0
typedef struct VkPhysicalDeviceVulkanSC10Properties {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           deviceNoDynamicHostAllocations;
    VkBool32           deviceDestroyFreesMemory;
    VkBool32           commandPoolMultipleCommandBuffersRecording;
    VkBool32           commandPoolResetCommandBuffer;
    VkBool32           commandBufferSimultaneousUse;
    VkBool32           secondaryCommandBufferNullOrImagelessFramebuffer;
    VkBool32           recycleDescriptorSetMemory;
    VkBool32           recyclePipelineMemory;
    uint32_t           maxRenderPassSubpasses;
    uint32_t           maxRenderPassDependencies;
    uint32_t           maxSubpassInputAttachments;
    uint32_t           maxSubpassPreserveAttachments;
    uint32_t           maxFramebufferAttachments;
    uint32_t           maxDescriptorSetLayoutBindings;
    uint32_t           maxQueryFaultCount;
    uint32_t           maxCallbackFaultCount;
    uint32_t           maxCommandPoolCommandBuffers;
    VkDeviceSize       maxCommandBufferSize;
} VkPhysicalDeviceVulkanSC10Properties;


  • sType is a VkStructureType value identifying this structure.

  • pNext is NULL or a pointer to a structure extending this structure.

  • deviceNoDynamicHostAllocations indicates whether the implementation will perform dynamic host memory allocations for physical or logical device commands. If deviceNoDynamicHostAllocations is VK_TRUE the implementation will allocate host memory for objects based on the provided VkDeviceObjectReservationCreateInfo limits during vkCreateDevice. Under valid API usage, VK_ERROR_OUT_OF_HOST_MEMORY may only be returned by commands which do not explicitly disallow it.

  • deviceDestroyFreesMemory indicates whether destroying the device frees all memory resources back to the system.

  • commandPoolMultipleCommandBuffersRecording indicates whether multiple command buffers from the same command pool can be in the recording state at the same time.

  • commandPoolResetCommandBuffer indicates whether command buffers support vkResetCommandBuffer, and vkBeginCommandBuffer when not in the initial state.

  • commandBufferSimultaneousUse indicates whether command buffers support VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT.

  • secondaryCommandBufferNullOrImagelessFramebuffer indicates whether the framebuffer member of VkCommandBufferInheritanceInfo may be equal to VK_NULL_HANDLE or be created with a VkFramebufferCreateInfo::flags value that includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT if the command buffer will be executed within a render pass instance.

  • recycleDescriptorSetMemory indicates whether descriptor pools are able to immediately reuse pool memory from descriptor sets that have been freed. If this is VK_FALSE, then memory may only be reallocated after vkResetDescriptorPool is called.

  • recyclePipelineMemory indicates whether the memory for a pipeline is available for reuse by new pipelines after the pipeline is destroyed.

  • maxRenderPassSubpasses is the maximum number of subpasses in a render pass.

  • maxRenderPassDependencies is the maximum number of dependencies in a render pass.

  • maxSubpassInputAttachments is the maximum number of input attachments in a subpass.

  • maxSubpassPreserveAttachments is the maximum number of preserve attachments in a subpass.

  • maxFramebufferAttachments is the maximum number of attachments in a framebuffer, as well as the maximum number of attachments in a render pass.

  • maxDescriptorSetLayoutBindings is the maximum number of bindings in a descriptor set layout.

  • maxQueryFaultCount is the maximum number of faults that the implementation can record, to be reported via vkGetFaultData.

  • maxCallbackFaultCount is the maximum number of faults that the implementation can report via a single call to PFN_vkFaultCallbackFunction.

  • maxCommandPoolCommandBuffers is the maximum number of command buffers that can be allocated from a single command pool.

  • maxCommandBufferSize is the maximum supported size of a single command buffer in bytes. Applications can use vkGetCommandPoolMemoryConsumption to compare a command buffer’s current memory usage to this limit.



Implementations that do not have a fixed upper bound on the number of command buffers that may be allocated from a command pool can report 0xFFFFFFFFU for maxCommandPoolCommandBuffers.

Implementations that do not have a fixed upper bound on the command buffer size can report UINT64_MAX for maxCommandBufferSize.

If the VkPhysicalDeviceVulkanSC10Properties structure is included in the pNext chain of the VkPhysicalDeviceProperties2 structure passed to vkGetPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

These properties correspond to Vulkan SC 1.0 functionality.

Valid Usage (Implicit)
  • VUID-VkPhysicalDeviceVulkanSC10Properties-sType-sType

See Also

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.

Copyright 2014-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0