C Specification
The VkPhysicalDeviceVulkan13Features structure is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceVulkan13Features {
VkStructureType sType;
void* pNext;
VkBool32 robustImageAccess;
VkBool32 inlineUniformBlock;
VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind;
VkBool32 pipelineCreationCacheControl;
VkBool32 privateData;
VkBool32 shaderDemoteToHelperInvocation;
VkBool32 shaderTerminateInvocation;
VkBool32 subgroupSizeControl;
VkBool32 computeFullSubgroups;
VkBool32 synchronization2;
VkBool32 textureCompressionASTC_HDR;
VkBool32 shaderZeroInitializeWorkgroupMemory;
VkBool32 dynamicRendering;
VkBool32 shaderIntegerDotProduct;
VkBool32 maintenance4;
} VkPhysicalDeviceVulkan13Features;
Members
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
Description
-
robustImageAccessindicates whether image accesses are tightly bounds-checked against the dimensions of the image view. Invalid texels resulting from out of bounds image loads will be replaced as described in Texel Replacement, with either (0,0,1) or (0,0,0) values inserted for missing G, B, or A components based on the format. -
inlineUniformBlockindicates whether the implementation supports inline uniform block descriptors. If this feature is not enabled,VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCKmust not be used. -
descriptorBindingInlineUniformBlockUpdateAfterBindindicates whether the implementation supports updating inline uniform block descriptors after a set is bound. If this feature is not enabled,VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITmust not be used withVK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK. -
pipelineCreationCacheControlindicates that the implementation supports:-
The following can be used in
Vk*PipelineCreateInfo::flags:-
VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT -
VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
-
-
The following can be used in VkPipelineCacheCreateInfo::
flags:-
VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
-
-
-
privateDataindicates whether the implementation supports private data. See Private Data. -
shaderDemoteToHelperInvocationindicates whether the implementation supports the SPIR-VDemoteToHelperInvocationEXTcapability. -
shaderTerminateInvocationspecifies whether the implementation supports SPIR-V modules that use theSPV_KHR_terminate_invocationextension. -
subgroupSizeControlindicates whether the implementation supports controlling shader subgroup sizes via theVK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BITflag and the VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure. -
computeFullSubgroupsindicates whether the implementation supports requiring full subgroups in compute , mesh, or task shaders via theVK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BITflag. -
synchronization2indicates whether the implementation supports the new set of synchronization commands introduced inVK_KHR_synchronization2. -
textureCompressionASTC_HDRindicates whether all of the ASTC HDR compressed texture formats are supported. If this feature is enabled, then theVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,VK_FORMAT_FEATURE_BLIT_SRC_BITandVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITfeatures must be supported inoptimalTilingFeaturesfor the following formats:-
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK -
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK -
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK -
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK -
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK -
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK -
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK -
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK -
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK -
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK -
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK -
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK -
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK -
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCKTo query for additional properties, or if the feature is not enabled, vkGetPhysicalDeviceFormatProperties and vkGetPhysicalDeviceImageFormatProperties can be used to check for supported properties of individual formats as normal.
-
-
shaderZeroInitializeWorkgroupMemoryspecifies whether the implementation supports initializing a variable in Workgroup storage class. -
dynamicRenderingspecifies that the implementation supports dynamic render pass instances using the vkCmdBeginRendering command. -
shaderIntegerDotProductspecifies whether shader modules can declare theDotProductInputAllKHR,DotProductInput4x8BitKHR,DotProductInput4x8BitPackedKHRandDotProductKHRcapabilities. -
maintenance4indicates that the implementation supports the following:-
The application may destroy a VkPipelineLayout object immediately after using it to create another object.
-
LocalSizeIdcan be used as an alternative toLocalSizeto specify the local workgroup size with specialization constants. -
Images created with identical creation parameters will always have the same alignment requirements.
-
The size memory requirement of a buffer or image is never greater than that of another buffer or image created with a greater or equal size.
-
Push constants do not have to be initialized before they are dynamically accessed.
-
The interface matching rules allow a larger output vector to match with a smaller input vector, with additional values being discarded.
-
If the VkPhysicalDeviceVulkan13Features structure is included in the pNext chain of the
VkPhysicalDeviceFeatures2 structure passed to
vkGetPhysicalDeviceFeatures2, it is filled in to indicate whether each
corresponding feature is supported.
If the application wishes to use a VkDevice with any features
described by VkPhysicalDeviceVulkan13Features, it must add an instance of the structure,
with the desired feature members set to VK_TRUE, to the pNext
chain of VkDeviceCreateInfo when creating the VkDevice.
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.