Features
Features advertise additional functionality which can be enabled in the API. If a feature is supported by a physical device, it must be enabled when creating a VkDevice in order to use its associated functionality with that VkDevice. If a feature is unsupported, that functionality cannot be used with that VkDevice.
|
Features are reported via the basic VkPhysicalDeviceFeatures
structure, as well as the extensible structure
|
For convenience, new core versions of Vulkan may introduce new unified feature structures for features promoted from extensions. At the same time, the extension’s original feature structure (if any) is also promoted to the core API, and is an alias of the extension’s structure. This results in multiple names for the same feature: in the original extension’s feature structure and the promoted structure alias, in the unified feature structure. When a feature was implicitly supported and enabled in the extension, but an explicit name was added during promotion, then the extension itself acts as an alias for the feature as listed in the table below.
All aliases of the same feature in the core API must be reported consistently: either all must be reported as supported, or none of them. When a promoted extension is available, any corresponding feature aliases must be supported.
| Extension | Feature(s) |
|---|---|
To query supported features, call:
// Provided by VK_VERSION_1_0
void vkGetPhysicalDeviceFeatures(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures* pFeatures);
-
physicalDeviceis the physical device from which to query the supported features. -
pFeaturesis a pointer to a VkPhysicalDeviceFeatures structure in which the physical device features are returned. For each feature, a value ofVK_TRUEspecifies that the feature is supported on this physical device, andVK_FALSEspecifies that the feature is not supported.
Fine-grained features used by a logical device must be enabled at
VkDevice creation time.
If a feature is enabled that the physical device does not support,
VkDevice creation will fail and return
VK_ERROR_FEATURE_NOT_PRESENT.
The fine-grained features are enabled by passing a pointer to the
VkPhysicalDeviceFeatures structure via the pEnabledFeatures
member of the VkDeviceCreateInfo structure that is passed into the
vkCreateDevice call.
If a member of pEnabledFeatures is VK_TRUE or VK_FALSE,
then the device will be created with the indicated feature enabled or
disabled, respectively.
Features can also be enabled by using the VkPhysicalDeviceFeatures2
structure.
If an application wishes to enable all features supported by a device, it
can simply pass in the VkPhysicalDeviceFeatures structure that was
previously returned by vkGetPhysicalDeviceFeatures.
To disable an individual feature, the application can set the desired
member to VK_FALSE in the same structure.
Setting pEnabledFeatures to NULL
and not including a VkPhysicalDeviceFeatures2 in the pNext chain
of VkDeviceCreateInfo
is equivalent to setting all members of the structure to VK_FALSE.
|
Some features, such as |
To query supported features defined by the core or extensions, call:
// Provided by VK_VERSION_1_1
void vkGetPhysicalDeviceFeatures2(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2* pFeatures);
or the equivalent command
// Provided by VK_KHR_get_physical_device_properties2
void vkGetPhysicalDeviceFeatures2KHR(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2* pFeatures);
-
physicalDeviceis the physical device from which to query the supported features. -
pFeaturesis a pointer to a VkPhysicalDeviceFeatures2 structure in which the physical device features are returned.
Each structure in pFeatures and its pNext chain contains members
corresponding to fine-grained features.
Each structure in pFeatures and its pNext chain contains
VkBool32 members corresponding to fine-grained features.
Each such member is returned with a VK_TRUE value indicating that
feature is supported on this physical device, or a VK_FALSE value
indicating it is unsupported.
The VkPhysicalDeviceFeatures2 structure is defined as:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceFeatures2 {
VkStructureType sType;
void* pNext;
VkPhysicalDeviceFeatures features;
} VkPhysicalDeviceFeatures2;
or the equivalent
// Provided by VK_KHR_get_physical_device_properties2
typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
featuresis a VkPhysicalDeviceFeatures structure describing the fine-grained features of the Vulkan 1.0 API.
The pNext chain of this structure is used to extend the structure with
features defined by extensions.
This structure can be used in vkGetPhysicalDeviceFeatures2 or can be
included in the pNext chain of a VkDeviceCreateInfo structure,
in which case it controls which features are enabled in lieu of
pEnabledFeatures.
The VkPhysicalDeviceFeatures structure is defined as:
// Provided by VK_VERSION_1_0
typedef struct VkPhysicalDeviceFeatures {
VkBool32 robustBufferAccess;
VkBool32 fullDrawIndexUint32;
VkBool32 imageCubeArray;
VkBool32 independentBlend;
VkBool32 geometryShader;
VkBool32 tessellationShader;
VkBool32 sampleRateShading;
VkBool32 dualSrcBlend;
VkBool32 logicOp;
VkBool32 multiDrawIndirect;
VkBool32 drawIndirectFirstInstance;
VkBool32 depthClamp;
VkBool32 depthBiasClamp;
VkBool32 fillModeNonSolid;
VkBool32 depthBounds;
VkBool32 wideLines;
VkBool32 largePoints;
VkBool32 alphaToOne;
VkBool32 multiViewport;
VkBool32 samplerAnisotropy;
VkBool32 textureCompressionETC2;
VkBool32 textureCompressionASTC_LDR;
VkBool32 textureCompressionBC;
VkBool32 occlusionQueryPrecise;
VkBool32 pipelineStatisticsQuery;
VkBool32 vertexPipelineStoresAndAtomics;
VkBool32 fragmentStoresAndAtomics;
VkBool32 shaderTessellationAndGeometryPointSize;
VkBool32 shaderImageGatherExtended;
VkBool32 shaderStorageImageExtendedFormats;
VkBool32 shaderStorageImageMultisample;
VkBool32 shaderStorageImageReadWithoutFormat;
VkBool32 shaderStorageImageWriteWithoutFormat;
VkBool32 shaderUniformBufferArrayDynamicIndexing;
VkBool32 shaderSampledImageArrayDynamicIndexing;
VkBool32 shaderStorageBufferArrayDynamicIndexing;
VkBool32 shaderStorageImageArrayDynamicIndexing;
VkBool32 shaderClipDistance;
VkBool32 shaderCullDistance;
VkBool32 shaderFloat64;
VkBool32 shaderInt64;
VkBool32 shaderInt16;
VkBool32 shaderResourceResidency;
VkBool32 shaderResourceMinLod;
VkBool32 sparseBinding;
VkBool32 sparseResidencyBuffer;
VkBool32 sparseResidencyImage2D;
VkBool32 sparseResidencyImage3D;
VkBool32 sparseResidency2Samples;
VkBool32 sparseResidency4Samples;
VkBool32 sparseResidency8Samples;
VkBool32 sparseResidency16Samples;
VkBool32 sparseResidencyAliased;
VkBool32 variableMultisampleRate;
VkBool32 inheritedQueries;
} VkPhysicalDeviceFeatures;
This structure describes the following features:
-
robustBufferAccessspecifies that accesses to buffers are bounds-checked against the range of the buffer descriptor (as determined byVkDescriptorBufferInfo::range, VkBufferViewCreateInfo::range, or the size of the buffer). Out of bounds accesses must not cause application termination, and the effects of shader loads, stores, and atomics must conform to an implementation-dependent behavior as described below.-
A buffer access is considered to be out of bounds if any of the following are true:
-
The pointer was formed by
OpImageTexelPointerand the coordinate is less than zero or greater than or equal to the number of whole elements in the bound range. -
The pointer was not formed by
OpImageTexelPointerand the object pointed to is not wholly contained within the bound range. This includes accesses performed via variable pointers where the buffer descriptor being accessed cannot be statically determined. Uninitialized pointers and pointers equal toOpConstantNullare treated as pointing to a zero-sized object, so all accesses through such pointers are considered to be out of bounds. Buffer accesses through buffer device addresses are not bounds-checked. -
If the
VkPhysicalDeviceCooperativeMatrixFeaturesNV::cooperativeMatrixRobustBufferAccessfeature is not enabled, then accesses usingOpCooperativeMatrixLoadNVandOpCooperativeMatrixStoreNVmay not be bounds-checked. -
If the
VkPhysicalDeviceCooperativeMatrixFeaturesKHR::cooperativeMatrixRobustBufferAccessfeature is not enabled, then accesses usingOpCooperativeMatrixLoadKHRandOpCooperativeMatrixStoreKHRmay not be bounds-checked. -
Accesses using
OpCooperativeVector*are not bounds-checked.If a SPIR-V
OpLoadinstruction loads a structure and the tail end of the structure is out of bounds, then all members of the structure are considered out of bounds even if the members at the end are not statically used. -
If the
robustBufferAccess2feature is not enabled and any buffer access is determined to be out of bounds, then any other access of the same type (load, store, or atomic) to the same buffer that accesses an address less than 16 bytes away from the out of bounds address may also be considered out of bounds. -
If the access is a load that reads from the same memory locations as a prior store in the same shader invocation, with no other intervening accesses to the same memory locations in that shader invocation, then the result of the load may be the value stored by the store instruction, even if the access is out of bounds. If the load is
Volatile, then an out of bounds load must return the appropriate out of bounds value.
-
-
Accesses to descriptors written with a VK_NULL_HANDLE resource or view are not considered to be out of bounds. Instead, each type of descriptor access defines a specific behavior for accesses to a null descriptor.
-
Out-of-bounds buffer loads will return any of the following values:
-
If the access is to a uniform buffer and the
robustBufferAccess2feature is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple ofrobustUniformBufferAccessSizeAlignmentbytes must return either zero values or the contents of the memory at the offset being loaded. Loads of offsets past the descriptor range rounded up to a multiple ofrobustUniformBufferAccessSizeAlignmentbytes must return zero values. -
If the access is to a storage buffer and the
robustBufferAccess2feature is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple ofrobustStorageBufferAccessSizeAlignmentbytes must return either zero values or the contents of the memory at the offset being loaded. Loads of offsets past the descriptor range rounded up to a multiple ofrobustStorageBufferAccessSizeAlignmentbytes must return zero values. Similarly, stores to addresses between the end of the descriptor range and the end of the descriptor range rounded up to a multiple ofrobustStorageBufferAccessSizeAlignmentbytes may be discarded. -
Non-atomic accesses to storage buffers that are a multiple of 32 bits may be decomposed into 32-bit accesses that are individually bounds-checked.
-
If the access is to an index buffer and the
robustBufferAccess2feature is enabled, zero values must be returned. -
If the access is to a uniform texel buffer or storage texel buffer and the
robustBufferAccess2feature is enabled, zero values must be returned, and then Conversion to RGBA is applied based on the buffer view’s format. -
Values from anywhere within the memory range(s) bound to the buffer (possibly including bytes of memory past the end of the buffer, up to the end of the bound range).
-
Zero values, or (0,0,0,x) vectors for vector reads where x is a valid value represented in the type of the vector components and may be any of:
-
0, 1, or the maximum representable positive integer value, for signed or unsigned integer components
-
0.0 or 1.0, for floating-point components
-
-
-
Out-of-bounds writes may modify values within the memory range(s) bound to the buffer, but must not modify any other memory.
-
If the
robustBufferAccess2feature is enabled, out of bounds writes must not modify any memory.
-
-
Out-of-bounds atomics may modify values within the memory range(s) bound to the buffer, but must not modify any other memory, and return an undefined value.
-
If the
robustBufferAccess2feature is enabled, out of bounds atomics must not modify any memory, and return an undefined value.
-
-
If the
robustBufferAccess2feature is not enabled, vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than either:-
vertexBufferRangeSize, ifbindingStride== 0; or -
(
vertexBufferRangeSize- (vertexBufferRangeSize%bindingStride))where
vertexBufferRangeSizeis the byte size of the memory range bound to the vertex buffer binding andbindingStrideis the byte stride of the corresponding vertex input binding. Further, if any vertex input attribute using a specific vertex input binding is out of bounds, then all vertex input attributes using that vertex input binding for that vertex shader invocation are considered out of bounds. -
If a vertex input attribute is out of bounds, it will be assigned one of the following values:
-
Values from anywhere within the memory range(s) bound to the buffer, converted according to the format of the attribute.
-
Zero values, format converted according to the format of the attribute.
-
Zero values, or (0,0,0,x) vectors, as described above.
-
-
-
If the
robustBufferAccess2feature is enabled, vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than the byte size of the memory range bound to the vertex buffer binding.-
If a vertex input attribute is out of bounds, the raw data extracted are zero values, and missing G, B, or A components are filled with (0.
-
-
If
robustBufferAccessis not enabled, applications must not perform out of bounds accesses except under the conditions enabled by thepipelineRobustnessfeature .
-
-
fullDrawIndexUint32specifies the full 32-bit range of indices is supported for indexed draw calls when using a VkIndexType ofVK_INDEX_TYPE_UINT32.maxDrawIndexedIndexValueis the maximum index value that may be used (aside from the primitive restart index, which is always 232-1 when the VkIndexType isVK_INDEX_TYPE_UINT32). If this feature is supported,maxDrawIndexedIndexValuemust be 232-1; otherwise it must be no smaller than 224-1. SeemaxDrawIndexedIndexValue. -
imageCubeArrayspecifies whether image views with a VkImageViewType ofVK_IMAGE_VIEW_TYPE_CUBE_ARRAYcan be created, and that the correspondingSampledCubeArrayandImageCubeArraySPIR-V capabilities can be used in shader code. -
independentBlendspecifies whether theVkPipelineColorBlendAttachmentStatesettings are controlled independently per-attachment. If this feature is not enabled, theVkPipelineColorBlendAttachmentStatesettings for all color attachments must be identical. Otherwise, a differentVkPipelineColorBlendAttachmentStatecan be provided for each bound color attachment. -
geometryShaderspecifies whether geometry shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_GEOMETRY_BITandVK_PIPELINE_STAGE_GEOMETRY_SHADER_BITenum values must not be used. This also specifies whether shader modules can declare theGeometrycapability. -
tessellationShaderspecifies whether tessellation control and evaluation shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, andVK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFOenum values must not be used. This also specifies whether shader modules can declare theTessellationcapability. -
sampleRateShadingspecifies whether Sample Shading and multisample interpolation are supported. If this feature is not enabled, thesampleShadingEnablemember of the VkPipelineMultisampleStateCreateInfo structure must beVK_FALSEand theminSampleShadingmember is ignored. This also specifies whether shader modules can declare theSampleRateShadingcapability. -
dualSrcBlendspecifies whether blend operations which take two sources are supported. If this feature is not enabled, theVK_BLEND_FACTOR_SRC1_COLOR,VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,VK_BLEND_FACTOR_SRC1_ALPHA, andVK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHAenum values must not be used as source or destination blending factors. See Dual-Source Blending. -
logicOpspecifies whether logic operations are supported. If this feature is not enabled, thelogicOpEnablemember of the VkPipelineColorBlendStateCreateInfo structure must beVK_FALSE, and thelogicOpmember is ignored. -
multiDrawIndirectspecifies whether multiple draw indirect is supported. If this feature is not enabled, thedrawCountparameter to the vkCmdDrawIndirect and vkCmdDrawIndexedIndirect commands must be 0 or 1. ThemaxDrawIndirectCountmember of theVkPhysicalDeviceLimitsstructure must also be 1 if this feature is not supported. SeemaxDrawIndirectCount. -
drawIndirectFirstInstancespecifies whether indirect drawing calls support thefirstInstanceparameter. If this feature is not enabled, thefirstInstancemember of allVkDrawIndirectCommandandVkDrawIndexedIndirectCommandstructures that are provided to the vkCmdDrawIndirect and vkCmdDrawIndexedIndirect commands must be 0. -
depthClampspecifies whether depth clamping is supported. If this feature is not enabled, thedepthClampEnablemember of the VkPipelineRasterizationStateCreateInfo structure must beVK_FALSE. Otherwise, settingdepthClampEnabletoVK_TRUEwill enable depth clamping. -
depthBiasClampspecifies whether depth bias clamping is supported. If this feature is not enabled, thedepthBiasClampmember of the VkPipelineRasterizationStateCreateInfo structure must be 0.0 unless theVK_DYNAMIC_STATE_DEPTH_BIASdynamic state is enabled, in which case thedepthBiasClampparameter to vkCmdSetDepthBias must be 0.0. -
fillModeNonSolidspecifies whether point and wireframe fill modes are supported. If this feature is not enabled, theVK_POLYGON_MODE_POINTandVK_POLYGON_MODE_LINEenum values must not be used. -
depthBoundsspecifies whether depth bounds tests are supported. If this feature is not enabled, thedepthBoundsTestEnablemember of the VkPipelineDepthStencilStateCreateInfo structure must beVK_FALSEunless theVK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLEdynamic state is enabled, in which case thedepthBoundsTestEnableparameter to vkCmdSetDepthBoundsTestEnable must beVK_FALSE. WhendepthBoundsTestEnableisVK_FALSE, theminDepthBoundsandmaxDepthBoundsmembers of the VkPipelineDepthStencilStateCreateInfo structure are ignored. -
wideLinesspecifies whether lines with width other than 1.0 are supported. If this feature is not enabled, thelineWidthmember of the VkPipelineRasterizationStateCreateInfo structure must be 1.0 unless theVK_DYNAMIC_STATE_LINE_WIDTHdynamic state is enabled, in which case thelineWidthparameter to vkCmdSetLineWidth must be 1.0. When this feature is supported, the range and granularity of supported line widths are indicated by thelineWidthRangeandlineWidthGranularitymembers of theVkPhysicalDeviceLimitsstructure, respectively. -
largePointsspecifies whether points with size greater than 1.0 are supported. If this feature is not enabled, only a point size of 1.0 written by a shader is supported. The range and granularity of supported point sizes are indicated by thepointSizeRangeandpointSizeGranularitymembers of theVkPhysicalDeviceLimitsstructure, respectively. -
alphaToOnespecifies whether the implementation is able to replace the alpha value of the fragment shader color output in the Multisample Coverage fragment operation. If this feature is not enabled, then thealphaToOneEnablemember of the VkPipelineMultisampleStateCreateInfo structure must beVK_FALSE. Otherwise settingalphaToOneEnabletoVK_TRUEwill enable alpha-to-one behavior. -
multiViewportspecifies whether more than one viewport is supported. If this feature is not enabled:-
The
viewportCountandscissorCountmembers of the VkPipelineViewportStateCreateInfo structure must be 1. -
The
firstViewportandviewportCountparameters to the vkCmdSetViewport command must be 0 and 1, respectively. -
The
firstScissorandscissorCountparameters to the vkCmdSetScissor command must be 0 and 1, respectively. -
The
exclusiveScissorCountmember of the VkPipelineViewportExclusiveScissorStateCreateInfoNV structure must be 0 or 1. -
The
firstExclusiveScissorandexclusiveScissorCountparameters to the vkCmdSetExclusiveScissorNV command must be 0 and 1, respectively.
-
-
samplerAnisotropyspecifies whether anisotropic filtering is supported. If this feature is not enabled, theanisotropyEnablemember of the VkSamplerCreateInfo structure must beVK_FALSE. -
textureCompressionETC2specifies whether all of the ETC2 and EAC 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_ETC2_R8G8B8_UNORM_BLOCK -
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK -
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK -
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK -
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK -
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK -
VK_FORMAT_EAC_R11_UNORM_BLOCK -
VK_FORMAT_EAC_R11_SNORM_BLOCK -
VK_FORMAT_EAC_R11G11_UNORM_BLOCK -
VK_FORMAT_EAC_R11G11_SNORM_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.
-
-
textureCompressionASTC_LDRspecifies whether all of the ASTC LDR 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_UNORM_BLOCK -
VK_FORMAT_ASTC_4x4_SRGB_BLOCK -
VK_FORMAT_ASTC_5x4_UNORM_BLOCK -
VK_FORMAT_ASTC_5x4_SRGB_BLOCK -
VK_FORMAT_ASTC_5x5_UNORM_BLOCK -
VK_FORMAT_ASTC_5x5_SRGB_BLOCK -
VK_FORMAT_ASTC_6x5_UNORM_BLOCK -
VK_FORMAT_ASTC_6x5_SRGB_BLOCK -
VK_FORMAT_ASTC_6x6_UNORM_BLOCK -
VK_FORMAT_ASTC_6x6_SRGB_BLOCK -
VK_FORMAT_ASTC_8x5_UNORM_BLOCK -
VK_FORMAT_ASTC_8x5_SRGB_BLOCK -
VK_FORMAT_ASTC_8x6_UNORM_BLOCK -
VK_FORMAT_ASTC_8x6_SRGB_BLOCK -
VK_FORMAT_ASTC_8x8_UNORM_BLOCK -
VK_FORMAT_ASTC_8x8_SRGB_BLOCK -
VK_FORMAT_ASTC_10x5_UNORM_BLOCK -
VK_FORMAT_ASTC_10x5_SRGB_BLOCK -
VK_FORMAT_ASTC_10x6_UNORM_BLOCK -
VK_FORMAT_ASTC_10x6_SRGB_BLOCK -
VK_FORMAT_ASTC_10x8_UNORM_BLOCK -
VK_FORMAT_ASTC_10x8_SRGB_BLOCK -
VK_FORMAT_ASTC_10x10_UNORM_BLOCK -
VK_FORMAT_ASTC_10x10_SRGB_BLOCK -
VK_FORMAT_ASTC_12x10_UNORM_BLOCK -
VK_FORMAT_ASTC_12x10_SRGB_BLOCK -
VK_FORMAT_ASTC_12x12_UNORM_BLOCK -
VK_FORMAT_ASTC_12x12_SRGB_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.
-
-
textureCompressionBCspecifies whether all of the BC 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_BC1_RGB_UNORM_BLOCK -
VK_FORMAT_BC1_RGB_SRGB_BLOCK -
VK_FORMAT_BC1_RGBA_UNORM_BLOCK -
VK_FORMAT_BC1_RGBA_SRGB_BLOCK -
VK_FORMAT_BC2_UNORM_BLOCK -
VK_FORMAT_BC2_SRGB_BLOCK -
VK_FORMAT_BC3_UNORM_BLOCK -
VK_FORMAT_BC3_SRGB_BLOCK -
VK_FORMAT_BC4_UNORM_BLOCK -
VK_FORMAT_BC4_SNORM_BLOCK -
VK_FORMAT_BC5_UNORM_BLOCK -
VK_FORMAT_BC5_SNORM_BLOCK -
VK_FORMAT_BC6H_UFLOAT_BLOCK -
VK_FORMAT_BC6H_SFLOAT_BLOCK -
VK_FORMAT_BC7_UNORM_BLOCK -
VK_FORMAT_BC7_SRGB_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.
-
-
occlusionQueryPrecisespecifies whether occlusion queries returning actual sample counts are supported. Occlusion queries are created in aVkQueryPoolby specifying thequeryTypeofVK_QUERY_TYPE_OCCLUSIONin the VkQueryPoolCreateInfo structure which is passed to vkCreateQueryPool. If this feature is enabled, queries of this type can enableVK_QUERY_CONTROL_PRECISE_BITin theflagsparameter to vkCmdBeginQuery. If this feature is not supported, the implementation supports only boolean occlusion queries. When any samples are passed, boolean queries will return a non-zero result value, otherwise a result value of zero is returned. When this feature is enabled andVK_QUERY_CONTROL_PRECISE_BITis set, occlusion queries will report the actual number of samples passed. -
pipelineStatisticsQueryspecifies whether the pipeline statistics queries are supported. If this feature is not enabled, queries of typeVK_QUERY_TYPE_PIPELINE_STATISTICScannot be created, and none of the VkQueryPipelineStatisticFlagBits bits can be set in thepipelineStatisticsmember of the VkQueryPoolCreateInfo structure. -
vertexPipelineStoresAndAtomicsspecifies whether storage buffers and images support stores and atomic operations in the vertex, tessellation, and geometry shader stages. If this feature is not enabled, all storage image, storage texel buffer, and storage buffer variables used by these stages in shader modules must be decorated with theNonWritabledecoration (or thereadonlymemory qualifier in GLSL). -
fragmentStoresAndAtomicsspecifies whether storage buffers and images support stores and atomic operations in the fragment shader stage. If this feature is not enabled, all storage image, storage texel buffer, and storage buffer variables used by the fragment stage in shader modules must be decorated with theNonWritabledecoration (or thereadonlymemory qualifier in GLSL). -
shaderTessellationAndGeometryPointSizespecifies whether thePointSizebuilt-in decoration is available in the tessellation control, tessellation evaluation, and geometry shader stages. If this feature is not enabled, members decorated with thePointSizebuilt-in decoration must not be read from or written to and all points written from a tessellation or geometry shader will have a size of 1.0. This also specifies whether shader modules can declare theTessellationPointSizecapability for tessellation control and evaluation shaders, or if the shader modules can declare theGeometryPointSizecapability for geometry shaders. An implementation supporting this feature must also support one or both of thetessellationShaderorgeometryShaderfeatures. -
shaderImageGatherExtendedspecifies whether the extended set of image gather instructions are available in shader code. If this feature is not enabled, theOpImage*Gatherinstructions do not support theOffsetandConstOffsetsoperands. This also specifies whether shader modules can declare theImageGatherExtendedcapability. -
shaderStorageImageExtendedFormatsspecifies whether all the “storage image extended formats” below are supported; if this feature is supported, then theVK_FORMAT_FEATURE_STORAGE_IMAGE_BITmust be supported inoptimalTilingFeaturesfor the following formats:-
VK_FORMAT_R16G16_SFLOAT -
VK_FORMAT_B10G11R11_UFLOAT_PACK32 -
VK_FORMAT_R16_SFLOAT -
VK_FORMAT_R16G16B16A16_UNORM -
VK_FORMAT_A2B10G10R10_UNORM_PACK32 -
VK_FORMAT_R16G16_UNORM -
VK_FORMAT_R8G8_UNORM -
VK_FORMAT_R16_UNORM -
VK_FORMAT_R8_UNORM -
VK_FORMAT_R16G16B16A16_SNORM -
VK_FORMAT_R16G16_SNORM -
VK_FORMAT_R8G8_SNORM -
VK_FORMAT_R16_SNORM -
VK_FORMAT_R8_SNORM -
VK_FORMAT_R16G16_SINT -
VK_FORMAT_R8G8_SINT -
VK_FORMAT_R16_SINT -
VK_FORMAT_R8_SINT -
VK_FORMAT_A2B10G10R10_UINT_PACK32 -
VK_FORMAT_R16G16_UINT -
VK_FORMAT_R8G8_UINT -
VK_FORMAT_R16_UINT -
VK_FORMAT_R8_UINTshaderStorageImageExtendedFormatsfeature only adds a guarantee of format support, which is specified for the whole physical device. Therefore enabling or disabling the feature via vkCreateDevice has no practical effect.To query for additional properties, or if the feature is not supported, vkGetPhysicalDeviceFormatProperties and vkGetPhysicalDeviceImageFormatProperties can be used to check for supported properties of individual formats, as usual rules allow.
VK_FORMAT_R32G32_UINT,VK_FORMAT_R32G32_SINT, andVK_FORMAT_R32G32_SFLOATfromStorageImageExtendedFormatsSPIR-V capability, are already covered by core Vulkan mandatory format support.
-
-
shaderStorageImageMultisamplespecifies whether multisampled storage images are supported. If this feature is not enabled, images that are created with ausagethat includesVK_IMAGE_USAGE_STORAGE_BITmust be created withsamplesequal toVK_SAMPLE_COUNT_1_BIT. This also specifies whether shader modules can declare theStorageImageMultisampleandImageMSArraycapabilities. -
shaderStorageImageReadWithoutFormatspecifies whether storage images and storage texel buffers require a format qualifier to be specified when reading.shaderStorageImageReadWithoutFormatapplies only to formats listed in the storage without format list. -
shaderStorageImageWriteWithoutFormatspecifies whether storage images and storage texel buffers require a format qualifier to be specified when writing.shaderStorageImageWriteWithoutFormatapplies only to formats listed in the storage without format list. -
shaderUniformBufferArrayDynamicIndexingspecifies whether arrays of uniform buffers can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theUniformBufferArrayDynamicIndexingcapability. -
shaderSampledImageArrayDynamicIndexingspecifies whether arrays of samplers or sampled images can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, orVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theSampledImageArrayDynamicIndexingcapability. -
shaderStorageBufferArrayDynamicIndexingspecifies whether arrays of storage buffers can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theStorageBufferArrayDynamicIndexingcapability. -
shaderStorageImageArrayDynamicIndexingspecifies whether arrays of storage images can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGEmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theStorageImageArrayDynamicIndexingcapability. -
shaderClipDistancespecifies whether clip distances are supported in shader code. If this feature is not enabled, any members decorated with theClipDistancebuilt-in decoration must not be read from or written to in shader modules. This also specifies whether shader modules can declare theClipDistancecapability. -
shaderCullDistancespecifies whether cull distances are supported in shader code. If this feature is not enabled, any members decorated with theCullDistancebuilt-in decoration must not be read from or written to in shader modules. This also specifies whether shader modules can declare theCullDistancecapability. -
shaderFloat64specifies whether 64-bit floats (doubles) are supported in shader code. If this feature is not enabled, 64-bit floating-point types must not be used in shader code. This also specifies whether shader modules can declare theFloat64capability. Declaring and using 64-bit floats is enabled for all storage classes that SPIR-V allows with theFloat64capability. -
shaderInt64specifies whether 64-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 64-bit integer types must not be used in shader code. This also specifies whether shader modules can declare theInt64capability. Declaring and using 64-bit integers is enabled for all storage classes that SPIR-V allows with theInt64capability. -
shaderInt16specifies whether 16-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 16-bit integer types must not be used in shader code. This also specifies whether shader modules can declare theInt16capability. However, this only enables a subset of the storage classes that SPIR-V allows for theInt16SPIR-V capability: Declaring and using 16-bit integers in thePrivate,Workgroup(for non-Block variables), andFunctionstorage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant,Uniform,StorageBuffer,Input,Output, andPushConstant) is not enabled. -
shaderResourceResidencyspecifies whether image operations that return resource residency information are supported in shader code. If this feature is not enabled, theOpImageSparse*instructions must not be used in shader code. This also specifies whether shader modules can declare theSparseResidencycapability. The feature requires at least one of thesparseResidency*features to be supported. -
shaderResourceMinLodspecifies whether image operations specifying the minimum resource LOD are supported in shader code. If this feature is not enabled, theMinLodimage operand must not be used in shader code. This also specifies whether shader modules can declare theMinLodcapability. -
sparseBindingspecifies whether resource memory can be managed at opaque sparse block level instead of at the object level. If this feature is not enabled, resource memory must be bound only on a per-object basis using the vkBindBufferMemory and vkBindImageMemory commands. In this case, buffers and images must not be created withVK_BUFFER_CREATE_SPARSE_BINDING_BITandVK_IMAGE_CREATE_SPARSE_BINDING_BITset in theflagsmember of the VkBufferCreateInfo and VkImageCreateInfo structures, respectively. Otherwise resource memory can be managed as described in Sparse Resource Features. -
sparseResidencyBufferspecifies whether the device can access partially resident buffers. If this feature is not enabled, buffers must not be created withVK_BUFFER_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of the VkBufferCreateInfo structure. -
sparseResidencyImage2Dspecifies whether the device can access partially resident 2D images with 1 sample per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_1_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of the VkImageCreateInfo structure. -
sparseResidencyImage3Dspecifies whether the device can access partially resident 3D images. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_3Dmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of the VkImageCreateInfo structure. -
sparseResidency2Samplesspecifies whether the physical device can access partially resident 2D images with 2 samples per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_2_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of the VkImageCreateInfo structure. -
sparseResidency4Samplesspecifies whether the physical device can access partially resident 2D images with 4 samples per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_4_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of the VkImageCreateInfo structure. -
sparseResidency8Samplesspecifies whether the physical device can access partially resident 2D images with 8 samples per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_8_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of the VkImageCreateInfo structure. -
sparseResidency16Samplesspecifies whether the physical device can access partially resident 2D images with 16 samples per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_16_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of the VkImageCreateInfo structure. -
sparseResidencyAliasedspecifies whether the physical device can correctly access data aliased into multiple locations. If this feature is not enabled, theVK_BUFFER_CREATE_SPARSE_ALIASED_BITandVK_IMAGE_CREATE_SPARSE_ALIASED_BITenum values must not be used inflagsmembers of the VkBufferCreateInfo and VkImageCreateInfo structures, respectively. -
variableMultisampleRatespecifies whether all pipelines that will be bound to a command buffer during a subpass which uses no attachments must have the same value for VkPipelineMultisampleStateCreateInfo::rasterizationSamples. If set toVK_TRUE, the implementation supports variable multisample rates in a subpass which uses no attachments. If set toVK_FALSE, then all pipelines bound in such a subpass must have the same multisample rate. This has no effect in situations where a subpass uses any attachments. -
inheritedQueriesspecifies whether a secondary command buffer may be executed while a query is active.
The VkPhysicalDeviceVulkan11Features structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceVulkan11Features {
VkStructureType sType;
void* pNext;
VkBool32 storageBuffer16BitAccess;
VkBool32 uniformAndStorageBuffer16BitAccess;
VkBool32 storagePushConstant16;
VkBool32 storageInputOutput16;
VkBool32 multiview;
VkBool32 multiviewGeometryShader;
VkBool32 multiviewTessellationShader;
VkBool32 variablePointersStorageBuffer;
VkBool32 variablePointers;
VkBool32 protectedMemory;
VkBool32 samplerYcbcrConversion;
VkBool32 shaderDrawParameters;
} VkPhysicalDeviceVulkan11Features;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
storageBuffer16BitAccessspecifies whether objects in theStorageBuffer,ShaderRecordBufferKHR, orPhysicalStorageBufferstorage class with theBlockdecoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare theStorageBuffer16BitAccesscapability. -
uniformAndStorageBuffer16BitAccessspecifies whether objects in theUniformstorage class with theBlockdecoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare theUniformAndStorageBuffer16BitAccesscapability. -
storagePushConstant16specifies whether objects in thePushConstantstorage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members must not be used in such objects. This also specifies whether shader modules can declare theStoragePushConstant16capability. -
storageInputOutput16specifies whether objects in theInputandOutputstorage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare theStorageInputOutput16capability. -
multiviewspecifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero. -
multiviewGeometryShaderspecifies whether the implementation supports multiview rendering within a render pass, with geometry shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include a geometry shader. -
multiviewTessellationShaderspecifies whether the implementation supports multiview rendering within a render pass, with tessellation shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include any tessellation shaders. -
variablePointersStorageBufferspecifies whether the implementation supports the SPIR-VVariablePointersStorageBuffercapability. When this feature is not enabled, shader modules must not declare theSPV_KHR_variable_pointersextension or theVariablePointersStorageBuffercapability. -
variablePointersspecifies whether the implementation supports the SPIR-VVariablePointerscapability. When this feature is not enabled, shader modules must not declare theVariablePointerscapability. -
protectedMemoryspecifies whether protected memory is supported. -
samplerYcbcrConversionspecifies whether the implementation supports sampler Y′CBCR conversion. IfsamplerYcbcrConversionisVK_FALSE, sampler Y′CBCR conversion is not supported, and samplers using sampler Y′CBCR conversion must not be used. -
shaderDrawParametersspecifies whether the implementation supports the SPIR-VDrawParameterscapability. When this feature is not enabled, shader modules must not declare theSPV_KHR_shader_draw_parametersextension or theDrawParameterscapability.
If the VkPhysicalDeviceVulkan11Features 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 VkPhysicalDeviceVulkan11Features, 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.
The VkPhysicalDeviceVulkan12Features structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceVulkan12Features {
VkStructureType sType;
void* pNext;
VkBool32 samplerMirrorClampToEdge;
VkBool32 drawIndirectCount;
VkBool32 storageBuffer8BitAccess;
VkBool32 uniformAndStorageBuffer8BitAccess;
VkBool32 storagePushConstant8;
VkBool32 shaderBufferInt64Atomics;
VkBool32 shaderSharedInt64Atomics;
VkBool32 shaderFloat16;
VkBool32 shaderInt8;
VkBool32 descriptorIndexing;
VkBool32 shaderInputAttachmentArrayDynamicIndexing;
VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
VkBool32 shaderUniformBufferArrayNonUniformIndexing;
VkBool32 shaderSampledImageArrayNonUniformIndexing;
VkBool32 shaderStorageBufferArrayNonUniformIndexing;
VkBool32 shaderStorageImageArrayNonUniformIndexing;
VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
VkBool32 descriptorBindingSampledImageUpdateAfterBind;
VkBool32 descriptorBindingStorageImageUpdateAfterBind;
VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
VkBool32 descriptorBindingUpdateUnusedWhilePending;
VkBool32 descriptorBindingPartiallyBound;
VkBool32 descriptorBindingVariableDescriptorCount;
VkBool32 runtimeDescriptorArray;
VkBool32 samplerFilterMinmax;
VkBool32 scalarBlockLayout;
VkBool32 imagelessFramebuffer;
VkBool32 uniformBufferStandardLayout;
VkBool32 shaderSubgroupExtendedTypes;
VkBool32 separateDepthStencilLayouts;
VkBool32 hostQueryReset;
VkBool32 timelineSemaphore;
VkBool32 bufferDeviceAddress;
VkBool32 bufferDeviceAddressCaptureReplay;
VkBool32 bufferDeviceAddressMultiDevice;
VkBool32 vulkanMemoryModel;
VkBool32 vulkanMemoryModelDeviceScope;
VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
VkBool32 shaderOutputViewportIndex;
VkBool32 shaderOutputLayer;
VkBool32 subgroupBroadcastDynamicId;
} VkPhysicalDeviceVulkan12Features;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
samplerMirrorClampToEdgeindicates whether the implementation supports theVK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGEsampler address mode. If this feature is not enabled, theVK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGEsampler address mode must not be used. -
drawIndirectCountindicates whether the implementation supports the vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount functions. If this feature is not enabled, these functions must not be used. -
storageBuffer8BitAccessindicates whether objects in theStorageBuffer,ShaderRecordBufferKHR, orPhysicalStorageBufferstorage class with theBlockdecoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare theStorageBuffer8BitAccesscapability. -
uniformAndStorageBuffer8BitAccessindicates whether objects in theUniformstorage class with theBlockdecoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare theUniformAndStorageBuffer8BitAccesscapability. -
storagePushConstant8indicates whether objects in thePushConstantstorage class can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare theStoragePushConstant8capability. -
shaderBufferInt64Atomicsindicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on buffers. -
shaderSharedInt64Atomicsindicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on shared and payload memory. -
shaderFloat16indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare theFloat16capability. However, this only enables a subset of the storage classes that SPIR-V allows for theFloat16SPIR-V capability: Declaring and using 16-bit floats in thePrivate,Workgroup(for non-Block variables), andFunctionstorage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant,Uniform,StorageBuffer,Input,Output, andPushConstant) is not enabled. -
shaderInt8indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare theInt8capability. However, this only enables a subset of the storage classes that SPIR-V allows for theInt8SPIR-V capability: Declaring and using 8-bit integers in thePrivate,Workgroup(for non-Block variables), andFunctionstorage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant,Uniform,StorageBuffer,Input,Output, andPushConstant) is not enabled. -
descriptorIndexingindicates whether the implementation supports the minimum set of descriptor indexing features as described in the Feature Requirements section. Enabling this feature when vkCreateDevice is called does not imply the other minimum descriptor indexing features are also enabled. Those other descriptor indexing features must be enabled individually as needed by the application. -
shaderInputAttachmentArrayDynamicIndexingindicates whether arrays of input attachments can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theInputAttachmentArrayDynamicIndexingcapability. -
shaderUniformTexelBufferArrayDynamicIndexingindicates whether arrays of uniform texel buffers can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformTexelBufferArrayDynamicIndexingcapability. -
shaderStorageTexelBufferArrayDynamicIndexingindicates whether arrays of storage texel buffers can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageTexelBufferArrayDynamicIndexingcapability. -
shaderUniformBufferArrayNonUniformIndexingindicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformBufferArrayNonUniformIndexingcapability. -
shaderSampledImageArrayNonUniformIndexingindicates whether arrays of samplers or sampled images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, orVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theSampledImageArrayNonUniformIndexingcapability. -
shaderStorageBufferArrayNonUniformIndexingindicates whether arrays of storage buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageBufferArrayNonUniformIndexingcapability. -
shaderStorageImageArrayNonUniformIndexingindicates whether arrays of storage images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGEmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageImageArrayNonUniformIndexingcapability. -
shaderInputAttachmentArrayNonUniformIndexingindicates whether arrays of input attachments can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theInputAttachmentArrayNonUniformIndexingcapability. -
shaderUniformTexelBufferArrayNonUniformIndexingindicates whether arrays of uniform texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformTexelBufferArrayNonUniformIndexingcapability. -
shaderStorageTexelBufferArrayNonUniformIndexingindicates whether arrays of storage texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageTexelBufferArrayNonUniformIndexingcapability. -
descriptorBindingUniformBufferUpdateAfterBindindicates whether the implementation supports updating uniform buffer 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_UNIFORM_BUFFER. -
descriptorBindingSampledImageUpdateAfterBindindicates whether the implementation supports updating sampled image 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_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, orVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE. -
descriptorBindingStorageImageUpdateAfterBindindicates whether the implementation supports updating storage image 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_STORAGE_IMAGE. -
descriptorBindingStorageBufferUpdateAfterBindindicates whether the implementation supports updating storage buffer 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_STORAGE_BUFFER. -
descriptorBindingUniformTexelBufferUpdateAfterBindindicates whether the implementation supports updating uniform texel buffer 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_UNIFORM_TEXEL_BUFFER. -
descriptorBindingStorageTexelBufferUpdateAfterBindindicates whether the implementation supports updating storage texel buffer 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_STORAGE_TEXEL_BUFFER. -
descriptorBindingUpdateUnusedWhilePendingindicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled,VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BITmust not be used. -
descriptorBindingPartiallyBoundindicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid. If this feature is not enabled,VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BITmust not be used. -
descriptorBindingVariableDescriptorCountindicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled,VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BITmust not be used. -
runtimeDescriptorArrayindicates whether the implementation supports the SPIR-VRuntimeDescriptorArraycapability. If this feature is not enabled, descriptors must not be declared in runtime arrays. -
samplerFilterMinmaxindicates whether the implementation supports a minimum set of required formats supporting min/max filtering as defined by thefilterMinmaxSingleComponentFormatsproperty minimum requirements. If this feature is not enabled, then VkSamplerReductionModeCreateInfo must only useVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE. -
scalarBlockLayoutindicates that the implementation supports the layout of resource blocks in shaders using scalar alignment. -
imagelessFramebufferindicates that the implementation supports specifying the image view for attachments at render pass begin time via VkRenderPassAttachmentBeginInfo. -
uniformBufferStandardLayoutindicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See Standard Buffer Layout. -
shaderSubgroupExtendedTypesis a boolean specifying whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in group operations with subgroup scope, if the implementation supports the types. -
separateDepthStencilLayoutsindicates whether the implementation supports aVkImageMemoryBarrierfor a depth/stencil image with only one ofVK_IMAGE_ASPECT_DEPTH_BITorVK_IMAGE_ASPECT_STENCIL_BITset, and whetherVK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, orVK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMALcan be used. -
hostQueryResetindicates that the implementation supports resetting queries from the host with vkResetQueryPool. -
timelineSemaphoreindicates whether semaphores created with a VkSemaphoreType ofVK_SEMAPHORE_TYPE_TIMELINEare supported. -
bufferDeviceAddressindicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddress. -
bufferDeviceAddressCaptureReplayindicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay. -
bufferDeviceAddressMultiDeviceindicates that the implementation supports thebufferDeviceAddress,rayTracingPipelineandrayQueryfeatures for logical devices created with multiple physical devices. If this feature is not supported, buffer and acceleration structure addresses must not be queried on a logical device created with more than one physical device. -
vulkanMemoryModelindicates whether shader modules can declare theVulkanMemoryModelcapability. -
vulkanMemoryModelDeviceScopeindicates whether the Vulkan Memory Model can useDevicescope synchronization. This also indicates whether shader modules can declare theVulkanMemoryModelDeviceScopecapability. -
vulkanMemoryModelAvailabilityVisibilityChainsindicates whether the Vulkan Memory Model can use availability and visibility chains with more than one element. -
shaderOutputViewportIndexindicates whether the implementation supports theShaderViewportIndexSPIR-V capability enabling variables decorated with theViewportIndexbuilt-in to be exported from mesh, vertex or tessellation evaluation shaders. If this feature is not enabled, theViewportIndexbuilt-in decoration must not be used on outputs in mesh, vertex or tessellation evaluation shaders. -
shaderOutputLayerindicates whether the implementation supports theShaderLayerSPIR-V capability enabling variables decorated with theLayerbuilt-in to be exported from mesh, vertex or tessellation evaluation shaders. If this feature is not enabled, theLayerbuilt-in decoration must not be used on outputs in mesh, vertex or tessellation evaluation shaders. -
If
subgroupBroadcastDynamicIdisVK_TRUE, the “Id” operand ofOpGroupNonUniformBroadcastcan be dynamically uniform within a subgroup, and the “Index” operand ofOpGroupNonUniformQuadBroadcastcan be dynamically uniform within the derivative group. If it isVK_FALSE, these operands must be constants.
If the VkPhysicalDeviceVulkan12Features 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 VkPhysicalDeviceVulkan12Features, 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.
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;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
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.
The VkPhysicalDeviceVulkan14Features structure is defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceVulkan14Features {
VkStructureType sType;
void* pNext;
VkBool32 globalPriorityQuery;
VkBool32 shaderSubgroupRotate;
VkBool32 shaderSubgroupRotateClustered;
VkBool32 shaderFloatControls2;
VkBool32 shaderExpectAssume;
VkBool32 rectangularLines;
VkBool32 bresenhamLines;
VkBool32 smoothLines;
VkBool32 stippledRectangularLines;
VkBool32 stippledBresenhamLines;
VkBool32 stippledSmoothLines;
VkBool32 vertexAttributeInstanceRateDivisor;
VkBool32 vertexAttributeInstanceRateZeroDivisor;
VkBool32 indexTypeUint8;
VkBool32 dynamicRenderingLocalRead;
VkBool32 maintenance5;
VkBool32 maintenance6;
VkBool32 pipelineProtectedAccess;
VkBool32 pipelineRobustness;
VkBool32 hostImageCopy;
VkBool32 pushDescriptor;
} VkPhysicalDeviceVulkan14Features;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
globalPriorityQueryindicates whether the implementation supports the ability to query global queue priorities. -
shaderSubgroupRotatespecifies whether shader modules can declare theGroupNonUniformRotateKHRcapability. -
shaderSubgroupRotateClusteredspecifies whether shader modules can use theClusterSizeoperand toOpGroupNonUniformRotateKHR. -
shaderFloatControls2specifies whether shader modules can declare theFloatControls2capability. -
shaderExpectAssumespecifies whether shader modules can declare theExpectAssumeKHRcapability. -
rectangularLinesindicates whether the implementation supports rectangular line rasterization. -
bresenhamLinesindicates whether the implementation supports Bresenham-style line rasterization. -
smoothLinesindicates whether the implementation supports smooth line rasterization. -
stippledRectangularLinesindicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_RECTANGULARlines. -
stippledBresenhamLinesindicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_BRESENHAMlines. -
stippledSmoothLinesindicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTHlines. -
vertexAttributeInstanceRateDivisorspecifies whether vertex attribute fetching may be repeated in the case of instanced rendering. -
vertexAttributeInstanceRateZeroDivisorspecifies whether a zero value for VkVertexInputBindingDivisorDescriptionEXT::divisoris supported. -
indexTypeUint8indicates thatVK_INDEX_TYPE_UINT8can be used with vkCmdBindIndexBuffer2 and vkCmdBindIndexBuffer. -
dynamicRenderingLocalReadspecifies that the implementation supports local reads inside dynamic render pass instances using the vkCmdBeginRendering command. -
maintenance5indicates that the implementation supports the following:-
The ability to expose support for the optional format
VK_FORMAT_A1B5G5R5_UNORM_PACK16. -
The ability to expose support for the optional format
VK_FORMAT_A8_UNORM. -
A property to indicate that multisample coverage operations are performed after sample counting in EarlyFragmentTests mode.
-
Creating a
VkBufferViewwith a subset of the associatedVkBufferusage using VkBufferUsageFlags2CreateInfo. -
A new function vkCmdBindIndexBuffer2, allowing a range of memory to be bound as an index buffer.
-
vkGetDeviceProcAddr will return
NULLfor function pointers of core functions for versions higher than the version requested by the application. -
vkCmdBindVertexBuffers2 supports using
VK_WHOLE_SIZEin thepSizesparameter. -
If
PointSizeis not written, a default value of1.0is used for the size of points. -
VkShaderModuleCreateInfo can be added as a chained structure to pipeline creation via VkPipelineShaderStageCreateInfo, rather than having to create a shader module.
-
A function vkGetRenderingAreaGranularity to query the optimal render area for a dynamic rendering instance.
-
A property to indicate that depth/stencil texturing operations with
VK_COMPONENT_SWIZZLE_ONEhave defined behavior. -
vkGetDeviceImageSubresourceLayout allows an application to perform a vkGetImageSubresourceLayout query without having to create an image.
-
VK_REMAINING_ARRAY_LAYERSas thelayerCountmember of VkImageSubresourceLayers. -
A property to indicate whether
PointSizecontrols the final rasterization of polygons if polygon mode isVK_POLYGON_MODE_POINT. -
Two properties to indicate the non-strict line rasterization algorithm used.
-
Two new flags words VkPipelineCreateFlagBits2 and VkBufferUsageFlagBits2.
-
Physical-device-level functions can now be called with any value in the valid range for a type beyond the defined enumerants, such that applications can avoid checking individual features, extensions, or versions before querying supported properties of a particular enumerant.
-
Copies between images of any type are allowed, with 1D images treated as 2D images with a height of
1.
-
-
maintenance6indicates that the implementation supports the following:-
VK_NULL_HANDLE can be used when binding an index buffer
-
VkBindMemoryStatus can be included in the
pNextchain of the VkBindBufferMemoryInfo and VkBindImageMemoryInfo structures, enabling applications to retrieve VkResult values for individual memory binding operations. -
VkPhysicalDeviceMaintenance6Properties::
blockTexelViewCompatibleMultipleLayersproperty to indicate that the implementation supports creating image views withVK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BITwhere thelayerCountmember ofsubresourceRangeis greater than1. -
VkPhysicalDeviceMaintenance6Properties::
maxCombinedImageSamplerDescriptorCountproperty which indicates the maximum descriptor size required for any format that requires a sampler Y′CBCR conversion supported by the implementation. -
A VkPhysicalDeviceMaintenance6Properties::
fragmentShadingRateClampCombinerInputsproperty which indicates whether the implementation clamps the inputs to fragment shading rate combiner operations.
-
-
pipelineProtectedAccessindicates whether the implementation supports specifying protected access on individual pipelines. -
pipelineRobustnessindicates that robustness can be requested on a per-pipeline-stage granularity. -
hostImageCopyindicates that the implementation supports copying from host memory to images using the vkCopyMemoryToImage command, copying from images to host memory using the vkCopyImageToMemory command, and copying between images using the vkCopyImageToImage command. -
pushDescriptorindicates that the implementation supports push descriptors.
If the VkPhysicalDeviceVulkan14Features 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 VkPhysicalDeviceVulkan14Features, 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.
The VkPhysicalDeviceVariablePointersFeatures structure is defined as:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceVariablePointersFeatures {
VkStructureType sType;
void* pNext;
VkBool32 variablePointersStorageBuffer;
VkBool32 variablePointers;
} VkPhysicalDeviceVariablePointersFeatures;
// Provided by VK_VERSION_1_1
typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;
or the equivalent
// Provided by VK_KHR_variable_pointers
typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR;
// Provided by VK_KHR_variable_pointers
typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
variablePointersStorageBufferspecifies whether the implementation supports the SPIR-VVariablePointersStorageBuffercapability. When this feature is not enabled, shader modules must not declare theSPV_KHR_variable_pointersextension or theVariablePointersStorageBuffercapability. -
variablePointersspecifies whether the implementation supports the SPIR-VVariablePointerscapability. When this feature is not enabled, shader modules must not declare theVariablePointerscapability.
If the VkPhysicalDeviceVariablePointersFeatures 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 VkPhysicalDeviceVariablePointersFeatures, 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.
The VkPhysicalDeviceMultiviewFeatures structure is defined as:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceMultiviewFeatures {
VkStructureType sType;
void* pNext;
VkBool32 multiview;
VkBool32 multiviewGeometryShader;
VkBool32 multiviewTessellationShader;
} VkPhysicalDeviceMultiviewFeatures;
or the equivalent
// Provided by VK_KHR_multiview
typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
multiviewspecifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero. -
multiviewGeometryShaderspecifies whether the implementation supports multiview rendering within a render pass, with geometry shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include a geometry shader. -
multiviewTessellationShaderspecifies whether the implementation supports multiview rendering within a render pass, with tessellation shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include any tessellation shaders.
If the VkPhysicalDeviceMultiviewFeatures 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 VkPhysicalDeviceMultiviewFeatures, 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.
The VkPhysicalDeviceShaderAtomicFloatFeaturesEXT structure is defined as:
// Provided by VK_EXT_shader_atomic_float
typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderBufferFloat32Atomics;
VkBool32 shaderBufferFloat32AtomicAdd;
VkBool32 shaderBufferFloat64Atomics;
VkBool32 shaderBufferFloat64AtomicAdd;
VkBool32 shaderSharedFloat32Atomics;
VkBool32 shaderSharedFloat32AtomicAdd;
VkBool32 shaderSharedFloat64Atomics;
VkBool32 shaderSharedFloat64AtomicAdd;
VkBool32 shaderImageFloat32Atomics;
VkBool32 shaderImageFloat32AtomicAdd;
VkBool32 sparseImageFloat32Atomics;
VkBool32 sparseImageFloat32AtomicAdd;
} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
shaderBufferFloat32Atomicsindicates whether shaders can perform 32-bit floating-point load, store and exchange atomic operations on storage buffers. -
shaderBufferFloat32AtomicAddindicates whether shaders can perform 32-bit floating-point add atomic operations on storage buffers. -
shaderBufferFloat64Atomicsindicates whether shaders can perform 64-bit floating-point load, store and exchange atomic operations on storage buffers. -
shaderBufferFloat64AtomicAddindicates whether shaders can perform 64-bit floating-point add atomic operations on storage buffers. -
shaderSharedFloat32Atomicsindicates whether shaders can perform 32-bit floating-point load, store and exchange atomic operations on shared and payload memory. -
shaderSharedFloat32AtomicAddindicates whether shaders can perform 32-bit floating-point add atomic operations on shared and payload memory. -
shaderSharedFloat64Atomicsindicates whether shaders can perform 64-bit floating-point load, store and exchange atomic operations on shared and payload memory. -
shaderSharedFloat64AtomicAddindicates whether shaders can perform 64-bit floating-point add atomic operations on shared and payload memory. -
shaderImageFloat32Atomicsindicates whether shaders can perform 32-bit floating-point load, store and exchange atomic image operations. -
shaderImageFloat32AtomicAddindicates whether shaders can perform 32-bit floating-point add atomic image operations. -
sparseImageFloat32Atomicsindicates whether 32-bit floating-point load, store and exchange atomic operations can be used on sparse images. -
sparseImageFloat32AtomicAddindicates whether 32-bit floating-point add atomic operations can be used on sparse images.
If the VkPhysicalDeviceShaderAtomicFloatFeaturesEXT 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 VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, 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.
The VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT structure is defined as:
// Provided by VK_EXT_shader_atomic_float2
typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderBufferFloat16Atomics;
VkBool32 shaderBufferFloat16AtomicAdd;
VkBool32 shaderBufferFloat16AtomicMinMax;
VkBool32 shaderBufferFloat32AtomicMinMax;
VkBool32 shaderBufferFloat64AtomicMinMax;
VkBool32 shaderSharedFloat16Atomics;
VkBool32 shaderSharedFloat16AtomicAdd;
VkBool32 shaderSharedFloat16AtomicMinMax;
VkBool32 shaderSharedFloat32AtomicMinMax;
VkBool32 shaderSharedFloat64AtomicMinMax;
VkBool32 shaderImageFloat32AtomicMinMax;
VkBool32 sparseImageFloat32AtomicMinMax;
} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
shaderBufferFloat16Atomicsindicates whether shaders can perform 16-bit floating-point load, store, and exchange atomic operations on storage buffers. -
shaderBufferFloat16AtomicAddindicates whether shaders can perform 16-bit floating-point add atomic operations on storage buffers. -
shaderBufferFloat16AtomicMinMaxindicates whether shaders can perform 16-bit floating-point min and max atomic operations on storage buffers. -
shaderBufferFloat32AtomicMinMaxindicates whether shaders can perform 32-bit floating-point min and max atomic operations on storage buffers. -
shaderBufferFloat64AtomicMinMaxindicates whether shaders can perform 64-bit floating-point min and max atomic operations on storage buffers. -
shaderSharedFloat16Atomicsindicates whether shaders can perform 16-bit floating-point load, store and exchange atomic operations on shared and payload memory. -
shaderSharedFloat16AtomicAddindicates whether shaders can perform 16-bit floating-point add atomic operations on shared and payload memory. -
shaderSharedFloat16AtomicMinMaxindicates whether shaders can perform 16-bit floating-point min and max atomic operations on shared and payload memory. -
shaderSharedFloat32AtomicMinMaxindicates whether shaders can perform 32-bit floating-point min and max atomic operations on shared and payload memory. -
shaderSharedFloat64AtomicMinMaxindicates whether shaders can perform 64-bit floating-point min and max atomic operations on shared and payload memory. -
shaderImageFloat32AtomicMinMaxindicates whether shaders can perform 32-bit floating-point min and max atomic image operations. -
sparseImageFloat32AtomicMinMaxindicates whether 32-bit floating-point min and max atomic operations can be used on sparse images.
If the VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT 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 VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, 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.
The VkPhysicalDeviceShaderAtomicInt64Features structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
VkStructureType sType;
void* pNext;
VkBool32 shaderBufferInt64Atomics;
VkBool32 shaderSharedInt64Atomics;
} VkPhysicalDeviceShaderAtomicInt64Features;
or the equivalent
// Provided by VK_KHR_shader_atomic_int64
typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderAtomicInt64Features 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 VkPhysicalDeviceShaderAtomicInt64Features, 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.
The VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT structure is defined as:
// Provided by VK_EXT_shader_image_atomic_int64
typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderImageInt64Atomics;
VkBool32 sparseImageInt64Atomics;
} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderImageInt64Atomicsindicates whether shaders can support 64-bit unsigned and signed integer atomic operations on images. -
sparseImageInt64Atomicsindicates whether 64-bit integer atomics can be used on sparse images.
If the VkPhysicalDeviceShaderAtomicInt64FeaturesEXT 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 VkPhysicalDeviceShaderAtomicInt64FeaturesEXT, 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.
The VkPhysicalDevice8BitStorageFeatures structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDevice8BitStorageFeatures {
VkStructureType sType;
void* pNext;
VkBool32 storageBuffer8BitAccess;
VkBool32 uniformAndStorageBuffer8BitAccess;
VkBool32 storagePushConstant8;
} VkPhysicalDevice8BitStorageFeatures;
or the equivalent
// Provided by VK_KHR_8bit_storage
typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
storageBuffer8BitAccessindicates whether objects in theStorageBuffer,ShaderRecordBufferKHR, orPhysicalStorageBufferstorage class with theBlockdecoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare theStorageBuffer8BitAccesscapability. -
uniformAndStorageBuffer8BitAccessindicates whether objects in theUniformstorage class with theBlockdecoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare theUniformAndStorageBuffer8BitAccesscapability. -
storagePushConstant8indicates whether objects in thePushConstantstorage class can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare theStoragePushConstant8capability.
If the VkPhysicalDevice8BitStorageFeatures 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 VkPhysicalDevice8BitStorageFeatures, 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.
The VkPhysicalDevice16BitStorageFeatures structure is defined as:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDevice16BitStorageFeatures {
VkStructureType sType;
void* pNext;
VkBool32 storageBuffer16BitAccess;
VkBool32 uniformAndStorageBuffer16BitAccess;
VkBool32 storagePushConstant16;
VkBool32 storageInputOutput16;
} VkPhysicalDevice16BitStorageFeatures;
or the equivalent
// Provided by VK_KHR_16bit_storage
typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
storageBuffer16BitAccessspecifies whether objects in theStorageBuffer,ShaderRecordBufferKHR, orPhysicalStorageBufferstorage class with theBlockdecoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare theStorageBuffer16BitAccesscapability. -
uniformAndStorageBuffer16BitAccessspecifies whether objects in theUniformstorage class with theBlockdecoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare theUniformAndStorageBuffer16BitAccesscapability. -
storagePushConstant16specifies whether objects in thePushConstantstorage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members must not be used in such objects. This also specifies whether shader modules can declare theStoragePushConstant16capability. -
storageInputOutput16specifies whether objects in theInputandOutputstorage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare theStorageInputOutput16capability.
If the VkPhysicalDevice16BitStorageFeatures 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 VkPhysicalDevice16BitStorageFeatures, 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.
The VkPhysicalDeviceShaderFloat16Int8Features structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
VkStructureType sType;
void* pNext;
VkBool32 shaderFloat16;
VkBool32 shaderInt8;
} VkPhysicalDeviceShaderFloat16Int8Features;
or the equivalent
// Provided by VK_KHR_shader_float16_int8
typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
// Provided by VK_KHR_shader_float16_int8
typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
shaderFloat16indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare theFloat16capability. However, this only enables a subset of the storage classes that SPIR-V allows for theFloat16SPIR-V capability: Declaring and using 16-bit floats in thePrivate,Workgroup(for non-Block variables), andFunctionstorage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant,Uniform,StorageBuffer,Input,Output, andPushConstant) is not enabled. -
shaderInt8indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare theInt8capability. However, this only enables a subset of the storage classes that SPIR-V allows for theInt8SPIR-V capability: Declaring and using 8-bit integers in thePrivate,Workgroup(for non-Block variables), andFunctionstorage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant,Uniform,StorageBuffer,Input,Output, andPushConstant) is not enabled.
If the VkPhysicalDeviceShaderFloat16Int8Features 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 VkPhysicalDeviceShaderFloat16Int8Features, 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.
The VkPhysicalDeviceShaderClockFeaturesKHR structure is defined as:
// Provided by VK_KHR_shader_clock
typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderSubgroupClock;
VkBool32 shaderDeviceClock;
} VkPhysicalDeviceShaderClockFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderSubgroupClockindicates whether shaders can performSubgroupscoped clock reads. -
shaderDeviceClockindicates whether shaders can performDevicescoped clock reads.
If the VkPhysicalDeviceShaderClockFeaturesKHR 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 VkPhysicalDeviceShaderClockFeaturesKHR, 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.
The VkPhysicalDeviceSamplerYcbcrConversionFeatures structure is
defined as:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
VkStructureType sType;
void* pNext;
VkBool32 samplerYcbcrConversion;
} VkPhysicalDeviceSamplerYcbcrConversionFeatures;
or the equivalent
// Provided by VK_KHR_sampler_ycbcr_conversion
typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
samplerYcbcrConversionspecifies whether the implementation supports sampler Y′CBCR conversion. IfsamplerYcbcrConversionisVK_FALSE, sampler Y′CBCR conversion is not supported, and samplers using sampler Y′CBCR conversion must not be used.
If the VkPhysicalDeviceSamplerYcbcrConversionFeatures 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 VkPhysicalDeviceSamplerYcbcrConversionFeatures, 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.
The VkPhysicalDeviceProtectedMemoryFeatures structure is defined as:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
VkStructureType sType;
void* pNext;
VkBool32 protectedMemory;
} VkPhysicalDeviceProtectedMemoryFeatures;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
protectedMemoryspecifies whether protected memory is supported.
If the VkPhysicalDeviceProtectedMemoryFeatures 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 VkPhysicalDeviceProtectedMemoryFeatures, 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.
The VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT structure is
defined as:
// Provided by VK_EXT_blend_operation_advanced
typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 advancedBlendCoherentOperations;
} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
advancedBlendCoherentOperationsspecifies whether blending using advanced blend operations is guaranteed to execute atomically and in primitive order. If this isVK_TRUE,VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXTis treated the same asVK_ACCESS_COLOR_ATTACHMENT_READ_BIT, and advanced blending needs no additional synchronization over basic blending. If this isVK_FALSE, then memory dependencies are required to guarantee order between two advanced blending operations that occur on the same sample.
If the VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT 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 VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, 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.
The VkPhysicalDeviceConditionalRenderingFeaturesEXT structure is
defined as:
// Provided by VK_EXT_conditional_rendering
typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 conditionalRendering;
VkBool32 inheritedConditionalRendering;
} VkPhysicalDeviceConditionalRenderingFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
conditionalRenderingspecifies whether conditional rendering is supported. -
inheritedConditionalRenderingspecifies whether a secondary command buffer can be executed while conditional rendering is active in the primary command buffer.
If the VkPhysicalDeviceConditionalRenderingFeaturesEXT 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 VkPhysicalDeviceConditionalRenderingFeaturesEXT, 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.
The VkPhysicalDeviceShaderDrawParametersFeatures structure is defined
as:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceShaderDrawParametersFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderDrawParameters;
} VkPhysicalDeviceShaderDrawParametersFeatures;
// Provided by VK_VERSION_1_1
typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderDrawParametersFeatures 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 VkPhysicalDeviceShaderDrawParametersFeatures, 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.
The VkPhysicalDeviceMeshShaderFeaturesNV structure is defined as:
// Provided by VK_NV_mesh_shader
typedef struct VkPhysicalDeviceMeshShaderFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 taskShader;
VkBool32 meshShader;
} VkPhysicalDeviceMeshShaderFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
taskShaderspecifies whether task shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_TASK_BIT_NVandVK_PIPELINE_STAGE_TASK_SHADER_BIT_NVenum values must not be used. -
meshShaderspecifies whether mesh shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_MESH_BIT_NVandVK_PIPELINE_STAGE_MESH_SHADER_BIT_NVenum values must not be used.
If the VkPhysicalDeviceMeshShaderFeaturesNV 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 VkPhysicalDeviceMeshShaderFeaturesNV, 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.
The VkPhysicalDeviceMeshShaderFeaturesEXT structure is defined as:
// Provided by VK_EXT_mesh_shader
typedef struct VkPhysicalDeviceMeshShaderFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 taskShader;
VkBool32 meshShader;
VkBool32 multiviewMeshShader;
VkBool32 primitiveFragmentShadingRateMeshShader;
VkBool32 meshShaderQueries;
} VkPhysicalDeviceMeshShaderFeaturesEXT;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
taskShaderspecifies whether task shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_TASK_BIT_EXTandVK_PIPELINE_STAGE_TASK_SHADER_BIT_EXTenum values must not be used. -
meshShaderspecifies whether mesh shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_MESH_BIT_EXTandVK_PIPELINE_STAGE_MESH_SHADER_BIT_EXTenum values must not be used. -
multiviewMeshShaderspecifies whether the implementation supportsmultiviewrendering within a render pass, with mesh shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include a mesh shader. -
primitiveFragmentShadingRateMeshShaderindicates that the implementation supports the primitive fragment shading rate in mesh shaders. -
meshShaderQueriesindicates that the implementation supports creating query pools using theVK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXTquery type and statistic queries containing theVK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXTandVK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXTflags
If the VkPhysicalDeviceMeshShaderFeaturesEXT 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 VkPhysicalDeviceMeshShaderFeaturesEXT, 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.
The corresponding features of the VkPhysicalDeviceMeshShaderFeaturesNV
structure must match those in VkPhysicalDeviceMeshShaderFeaturesEXT.
The VkPhysicalDeviceMemoryDecompressionFeaturesNV structure is defined
as:
// Provided by VK_NV_memory_decompression
typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 memoryDecompression;
} VkPhysicalDeviceMemoryDecompressionFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
memoryDecompressionindicates whether memory decompression is supported.
If the VkPhysicalDeviceMemoryDecompressionFeaturesNV 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 VkPhysicalDeviceMemoryDecompressionFeaturesNV, 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.
The VkPhysicalDeviceDescriptorIndexingFeatures structure is defined
as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderInputAttachmentArrayDynamicIndexing;
VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
VkBool32 shaderUniformBufferArrayNonUniformIndexing;
VkBool32 shaderSampledImageArrayNonUniformIndexing;
VkBool32 shaderStorageBufferArrayNonUniformIndexing;
VkBool32 shaderStorageImageArrayNonUniformIndexing;
VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
VkBool32 descriptorBindingSampledImageUpdateAfterBind;
VkBool32 descriptorBindingStorageImageUpdateAfterBind;
VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
VkBool32 descriptorBindingUpdateUnusedWhilePending;
VkBool32 descriptorBindingPartiallyBound;
VkBool32 descriptorBindingVariableDescriptorCount;
VkBool32 runtimeDescriptorArray;
} VkPhysicalDeviceDescriptorIndexingFeatures;
or the equivalent
// Provided by VK_EXT_descriptor_indexing
typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
shaderInputAttachmentArrayDynamicIndexingindicates whether arrays of input attachments can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theInputAttachmentArrayDynamicIndexingcapability. -
shaderUniformTexelBufferArrayDynamicIndexingindicates whether arrays of uniform texel buffers can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformTexelBufferArrayDynamicIndexingcapability. -
shaderStorageTexelBufferArrayDynamicIndexingindicates whether arrays of storage texel buffers can be indexed by integer expressions that are dynamically uniform within either the subgroup or the invocation group in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageTexelBufferArrayDynamicIndexingcapability. -
shaderUniformBufferArrayNonUniformIndexingindicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformBufferArrayNonUniformIndexingcapability. -
shaderSampledImageArrayNonUniformIndexingindicates whether arrays of samplers or sampled images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, orVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theSampledImageArrayNonUniformIndexingcapability. -
shaderStorageBufferArrayNonUniformIndexingindicates whether arrays of storage buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageBufferArrayNonUniformIndexingcapability. -
shaderStorageImageArrayNonUniformIndexingindicates whether arrays of storage images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGEmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageImageArrayNonUniformIndexingcapability. -
shaderInputAttachmentArrayNonUniformIndexingindicates whether arrays of input attachments can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theInputAttachmentArrayNonUniformIndexingcapability. -
shaderUniformTexelBufferArrayNonUniformIndexingindicates whether arrays of uniform texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformTexelBufferArrayNonUniformIndexingcapability. -
shaderStorageTexelBufferArrayNonUniformIndexingindicates whether arrays of storage texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERmust not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageTexelBufferArrayNonUniformIndexingcapability. -
descriptorBindingUniformBufferUpdateAfterBindindicates whether the implementation supports updating uniform buffer 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_UNIFORM_BUFFER. -
descriptorBindingSampledImageUpdateAfterBindindicates whether the implementation supports updating sampled image 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_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, orVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE. -
descriptorBindingStorageImageUpdateAfterBindindicates whether the implementation supports updating storage image 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_STORAGE_IMAGE. -
descriptorBindingStorageBufferUpdateAfterBindindicates whether the implementation supports updating storage buffer 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_STORAGE_BUFFER. -
descriptorBindingUniformTexelBufferUpdateAfterBindindicates whether the implementation supports updating uniform texel buffer 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_UNIFORM_TEXEL_BUFFER. -
descriptorBindingStorageTexelBufferUpdateAfterBindindicates whether the implementation supports updating storage texel buffer 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_STORAGE_TEXEL_BUFFER. -
descriptorBindingUpdateUnusedWhilePendingindicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled,VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BITmust not be used. -
descriptorBindingPartiallyBoundindicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid. If this feature is not enabled,VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BITmust not be used. -
descriptorBindingVariableDescriptorCountindicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled,VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BITmust not be used. -
runtimeDescriptorArrayindicates whether the implementation supports the SPIR-VRuntimeDescriptorArraycapability. If this feature is not enabled, descriptors must not be declared in runtime arrays.
If the VkPhysicalDeviceDescriptorIndexingFeatures 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 VkPhysicalDeviceDescriptorIndexingFeatures, 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.
The VkPhysicalDeviceCopyMemoryIndirectFeaturesNV structure is defined
as:
// Provided by VK_NV_copy_memory_indirect
typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 indirectCopy;
} VkPhysicalDeviceCopyMemoryIndirectFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
indirectCopyindicates whether indirect copies are supported.
If the VkPhysicalDeviceCopyMemoryIndirectFeaturesNV 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 VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, 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.
The VkPhysicalDeviceVertexAttributeDivisorFeatures structure is
defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceVertexAttributeDivisorFeatures {
VkStructureType sType;
void* pNext;
VkBool32 vertexAttributeInstanceRateDivisor;
VkBool32 vertexAttributeInstanceRateZeroDivisor;
} VkPhysicalDeviceVertexAttributeDivisorFeatures;
or the equivalent
// Provided by VK_KHR_vertex_attribute_divisor
typedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR;
or the equivalent
// Provided by VK_EXT_vertex_attribute_divisor
typedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
vertexAttributeInstanceRateDivisorspecifies whether vertex attribute fetching may be repeated in the case of instanced rendering. -
vertexAttributeInstanceRateZeroDivisorspecifies whether a zero value for VkVertexInputBindingDivisorDescriptionEXT::divisoris supported.
If the VkPhysicalDeviceVertexAttributeDivisorFeatures 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 VkPhysicalDeviceVertexAttributeDivisorFeatures, 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.
The VkPhysicalDeviceASTCDecodeFeaturesEXT structure is defined as:
// Provided by VK_EXT_astc_decode_mode
typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 decodeModeSharedExponent;
} VkPhysicalDeviceASTCDecodeFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
decodeModeSharedExponentindicates whether the implementation supports decoding ASTC compressed formats toVK_FORMAT_E5B9G9R9_UFLOAT_PACK32internal precision.
If the VkPhysicalDeviceASTCDecodeFeaturesEXT 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 VkPhysicalDeviceASTCDecodeFeaturesEXT, 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.
The VkPhysicalDeviceTransformFeedbackFeaturesEXT structure is defined
as:
// Provided by VK_EXT_transform_feedback
typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 transformFeedback;
VkBool32 geometryStreams;
} VkPhysicalDeviceTransformFeedbackFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
transformFeedbackindicates whether the implementation supports transform feedback and shader modules can declare theTransformFeedbackcapability. -
geometryStreamsindicates whether the implementation supports theGeometryStreamsSPIR-V capability.
If the VkPhysicalDeviceTransformFeedbackFeaturesEXT 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 VkPhysicalDeviceTransformFeedbackFeaturesEXT, 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.
The VkPhysicalDeviceVulkanMemoryModelFeatures structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
VkStructureType sType;
void* pNext;
VkBool32 vulkanMemoryModel;
VkBool32 vulkanMemoryModelDeviceScope;
VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
} VkPhysicalDeviceVulkanMemoryModelFeatures;
or the equivalent
// Provided by VK_KHR_vulkan_memory_model
typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
vulkanMemoryModelindicates whether shader modules can declare theVulkanMemoryModelcapability. -
vulkanMemoryModelDeviceScopeindicates whether the Vulkan Memory Model can useDevicescope synchronization. This also indicates whether shader modules can declare theVulkanMemoryModelDeviceScopecapability. -
vulkanMemoryModelAvailabilityVisibilityChainsindicates whether the Vulkan Memory Model can use availability and visibility chains with more than one element.
If the VkPhysicalDeviceVulkanMemoryModelFeaturesKHR 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 VkPhysicalDeviceVulkanMemoryModelFeaturesKHR, 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.
The VkPhysicalDeviceInlineUniformBlockFeatures structure is defined
as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceInlineUniformBlockFeatures {
VkStructureType sType;
void* pNext;
VkBool32 inlineUniformBlock;
VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind;
} VkPhysicalDeviceInlineUniformBlockFeatures;
or the equivalent
// Provided by VK_EXT_inline_uniform_block
typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
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.
If the VkPhysicalDeviceInlineUniformBlockFeatures 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 VkPhysicalDeviceInlineUniformBlockFeatures, 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.
The VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV structure is
defined as:
// Provided by VK_NV_representative_fragment_test
typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 representativeFragmentTest;
} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
representativeFragmentTestindicates whether the implementation supports the representative fragment test. See Representative Fragment Test.
If the VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV 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 VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, 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.
The VkPhysicalDeviceExclusiveScissorFeaturesNV structure is defined
as:
// Provided by VK_NV_scissor_exclusive
typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 exclusiveScissor;
} VkPhysicalDeviceExclusiveScissorFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
exclusiveScissorindicates that the implementation supports the exclusive scissor test.
See Exclusive Scissor Test for more information.
If the VkPhysicalDeviceExclusiveScissorFeaturesNV 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 VkPhysicalDeviceExclusiveScissorFeaturesNV, 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.
The VkPhysicalDeviceCornerSampledImageFeaturesNV structure is defined
as:
// Provided by VK_NV_corner_sampled_image
typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cornerSampledImage;
} VkPhysicalDeviceCornerSampledImageFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
cornerSampledImagespecifies whether images can be created with a VkImageCreateInfo::flagscontainingVK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV. See Corner-Sampled Images.
If the VkPhysicalDeviceCornerSampledImageFeaturesNV 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 VkPhysicalDeviceCornerSampledImageFeaturesNV, 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.
The VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR structure is
defined as:
// Provided by VK_KHR_compute_shader_derivatives
typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 computeDerivativeGroupQuads;
VkBool32 computeDerivativeGroupLinear;
} VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR;
or the equivalent
// Provided by VK_NV_compute_shader_derivatives
typedef VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
computeDerivativeGroupQuadsindicates that the implementation supports theComputeDerivativeGroupQuadsKHRSPIR-V capability. -
computeDerivativeGroupLinearindicates that the implementation supports theComputeDerivativeGroupLinearKHRSPIR-V capability.
See Quad shader scope for more information.
If the VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR. 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 VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR., 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.
The VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR structure is
defined as:
// Provided by VK_KHR_fragment_shader_barycentric
typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 fragmentShaderBarycentric;
} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
or the equivalent
// Provided by VK_NV_fragment_shader_barycentric
typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
fragmentShaderBarycentricindicates that the implementation supports theBaryCoordKHRandBaryCoordNoPerspKHRSPIR-V fragment shader built-ins and supports thePerVertexKHRSPIR-V decoration on fragment shader input variables.
See Barycentric Interpolation for more information.
If the VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR 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 VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, 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.
The VkPhysicalDeviceShaderImageFootprintFeaturesNV structure is
defined as:
// Provided by VK_NV_shader_image_footprint
typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 imageFootprint;
} VkPhysicalDeviceShaderImageFootprintFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
imageFootprintspecifies whether the implementation supports theImageFootprintNVSPIR-V capability.
See Texel Footprint Evaluation for more information.
If the VkPhysicalDeviceShaderImageFootprintFeaturesNV 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 VkPhysicalDeviceShaderImageFootprintFeaturesNV, 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.
The VkPhysicalDeviceShadingRateImageFeaturesNV structure is defined
as:
// Provided by VK_NV_shading_rate_image
typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 shadingRateImage;
VkBool32 shadingRateCoarseSampleOrder;
} VkPhysicalDeviceShadingRateImageFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shadingRateImageindicates that the implementation supports the use of a shading rate image to derive an effective shading rate for fragment processing. It also indicates that the implementation supports theShadingRateNVSPIR-V execution mode. -
shadingRateCoarseSampleOrderindicates that the implementation supports an application-configurable ordering of coverage samples in fragments larger than one pixel.
See Shading Rate Image for more information.
If the VkPhysicalDeviceShadingRateImageFeaturesNV 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 VkPhysicalDeviceShadingRateImageFeaturesNV, 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.
The VkPhysicalDeviceFragmentDensityMapFeaturesEXT structure is defined
as:
// Provided by VK_EXT_fragment_density_map
typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 fragmentDensityMap;
VkBool32 fragmentDensityMapDynamic;
VkBool32 fragmentDensityMapNonSubsampledImages;
} VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
fragmentDensityMapspecifies whether the implementation supports render passes with a fragment density map attachment. If this feature is not enabled and thepNextchain of VkRenderPassCreateInfo includes a VkRenderPassFragmentDensityMapCreateInfoEXT structure,fragmentDensityMapAttachmentmust beVK_ATTACHMENT_UNUSED. -
fragmentDensityMapDynamicspecifies whether the implementation supports dynamic fragment density map image views. If this feature is not enabled,VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXTmust not be included in VkImageViewCreateInfo::flags. -
fragmentDensityMapNonSubsampledImagesspecifies whether the implementation supports regular non-subsampled image attachments with fragment density map render passes. If this feature is not enabled, render passes with a fragment density map attachment must only have subsampled attachments bound.
If the VkPhysicalDeviceFragmentDensityMapFeaturesEXT 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 VkPhysicalDeviceFragmentDensityMapFeaturesEXT, 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.
The VkPhysicalDeviceFragmentDensityMap2FeaturesEXT structure is
defined as:
// Provided by VK_EXT_fragment_density_map2
typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 fragmentDensityMapDeferred;
} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
fragmentDensityMapDeferredspecifies whether the implementation supports deferred reads of fragment density map image views. If this feature is not enabled,VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXTmust not be included inVkImageViewCreateInfo::flags.
If the VkPhysicalDeviceFragmentDensityMap2FeaturesEXT 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 VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, 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.
The VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM structure is
defined as:
// Provided by VK_QCOM_fragment_density_map_offset
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 fragmentDensityMapOffset;
} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
fragmentDensityMapOffsetspecifies whether the implementation supports fragment density map offsets
If the VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM 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 VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, 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.
The VkPhysicalDeviceInvocationMaskFeaturesHUAWEI structure is defined
as:
// Provided by VK_HUAWEI_invocation_mask
typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 invocationMask;
} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
invocationMaskindicates that the implementation supports the use of an invocation mask image to optimize the ray dispatch.
If the VkPhysicalDeviceInvocationMaskFeaturesHUAWEI 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 VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, 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.
The VkPhysicalDeviceScalarBlockLayoutFeatures structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
VkStructureType sType;
void* pNext;
VkBool32 scalarBlockLayout;
} VkPhysicalDeviceScalarBlockLayoutFeatures;
or the equivalent
// Provided by VK_EXT_scalar_block_layout
typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
scalarBlockLayoutindicates that the implementation supports the layout of resource blocks in shaders using scalar alignment.
If the VkPhysicalDeviceScalarBlockLayoutFeatures 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 VkPhysicalDeviceScalarBlockLayoutFeatures, 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.
The VkPhysicalDeviceUniformBufferStandardLayoutFeatures structure is
defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
VkStructureType sType;
void* pNext;
VkBool32 uniformBufferStandardLayout;
} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
or the equivalent
// Provided by VK_KHR_uniform_buffer_standard_layout
typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
uniformBufferStandardLayoutindicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See Standard Buffer Layout.
If the VkPhysicalDeviceUniformBufferStandardLayoutFeatures 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 VkPhysicalDeviceUniformBufferStandardLayoutFeatures, 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.
The VkPhysicalDeviceDepthClipEnableFeaturesEXT structure is defined
as:
// Provided by VK_EXT_depth_clip_enable
typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthClipEnable;
} VkPhysicalDeviceDepthClipEnableFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
depthClipEnableindicates that the implementation supports setting the depth clipping operation explicitly via the VkPipelineRasterizationDepthClipStateCreateInfoEXT pipeline state. Otherwise depth clipping is only enabled when VkPipelineRasterizationStateCreateInfo::depthClampEnableisVK_FALSE.
If the VkPhysicalDeviceDepthClipEnableFeaturesEXT 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 VkPhysicalDeviceDepthClipEnableFeaturesEXT, 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.
The VkPhysicalDeviceMemoryPriorityFeaturesEXT structure is defined as:
// Provided by VK_EXT_memory_priority
typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 memoryPriority;
} VkPhysicalDeviceMemoryPriorityFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
memoryPriorityindicates that the implementation supports memory priorities specified at memory allocation time via VkMemoryPriorityAllocateInfoEXT.
If the VkPhysicalDeviceMemoryPriorityFeaturesEXT 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 VkPhysicalDeviceMemoryPriorityFeaturesEXT, 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.
The VkPhysicalDeviceBufferDeviceAddressFeatures structure is defined
as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
VkStructureType sType;
void* pNext;
VkBool32 bufferDeviceAddress;
VkBool32 bufferDeviceAddressCaptureReplay;
VkBool32 bufferDeviceAddressMultiDevice;
} VkPhysicalDeviceBufferDeviceAddressFeatures;
or the equivalent
// Provided by VK_KHR_buffer_device_address
typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
bufferDeviceAddressindicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddress. -
bufferDeviceAddressCaptureReplayindicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay. -
bufferDeviceAddressMultiDeviceindicates that the implementation supports thebufferDeviceAddress,rayTracingPipelineandrayQueryfeatures for logical devices created with multiple physical devices. If this feature is not supported, buffer and acceleration structure addresses must not be queried on a logical device created with more than one physical device.
|
|
See vkGetBufferDeviceAddress for more information.
If the VkPhysicalDeviceBufferDeviceAddressFeatures 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 VkPhysicalDeviceBufferDeviceAddressFeatures, 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.
The VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure is
defined as:
// Provided by VK_EXT_buffer_device_address
typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 bufferDeviceAddress;
VkBool32 bufferDeviceAddressCaptureReplay;
VkBool32 bufferDeviceAddressMultiDevice;
} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
// Provided by VK_EXT_buffer_device_address
typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
bufferDeviceAddressindicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddressEXT. -
bufferDeviceAddressCaptureReplayindicates that the implementation supports saving and reusing buffer addresses, e.g. for trace capture and replay. -
bufferDeviceAddressMultiDeviceindicates that the implementation supports thebufferDeviceAddressfeature for logical devices created with multiple physical devices. If this feature is not supported, buffer addresses must not be queried on a logical device created with more than one physical device.
If the VkPhysicalDeviceBufferDeviceAddressFeaturesEXT 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 VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, 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.
|
The |
The VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
structure is defined as:
// Provided by VK_NV_dedicated_allocation_image_aliasing
typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 dedicatedAllocationImageAliasing;
} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
dedicatedAllocationImageAliasingindicates that the implementation supports aliasing of compatible image objects on a dedicated allocation.
If the VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV 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 VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, 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.
The VkPhysicalDeviceImagelessFramebufferFeatures structure is defined
as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
VkStructureType sType;
void* pNext;
VkBool32 imagelessFramebuffer;
} VkPhysicalDeviceImagelessFramebufferFeatures;
or the equivalent
// Provided by VK_KHR_imageless_framebuffer
typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
imagelessFramebufferindicates that the implementation supports specifying the image view for attachments at render pass begin time via VkRenderPassAttachmentBeginInfo.
If the VkPhysicalDeviceImagelessFramebufferFeatures 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 VkPhysicalDeviceImagelessFramebufferFeatures, 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.
The VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT structure is
defined as:
// Provided by VK_EXT_fragment_shader_interlock
typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 fragmentShaderSampleInterlock;
VkBool32 fragmentShaderPixelInterlock;
VkBool32 fragmentShaderShadingRateInterlock;
} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
fragmentShaderSampleInterlockindicates that the implementation supports theFragmentShaderSampleInterlockEXTSPIR-V capability. -
fragmentShaderPixelInterlockindicates that the implementation supports theFragmentShaderPixelInterlockEXTSPIR-V capability. -
fragmentShaderShadingRateInterlockindicates that the implementation supports theFragmentShaderShadingRateInterlockEXTSPIR-V capability.
If the VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT 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 VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, 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.
The VkPhysicalDeviceCooperativeMatrixFeaturesNV structure is defined
as:
// Provided by VK_NV_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cooperativeMatrix;
VkBool32 cooperativeMatrixRobustBufferAccess;
} VkPhysicalDeviceCooperativeMatrixFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
cooperativeMatrixindicates that the implementation supports theCooperativeMatrixNVSPIR-V capability. -
cooperativeMatrixRobustBufferAccessindicates that the implementation supports robust buffer access for SPIR-VOpCooperativeMatrixLoadNVandOpCooperativeMatrixStoreNVinstructions.
If the VkPhysicalDeviceCooperativeMatrixFeaturesNV 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 VkPhysicalDeviceCooperativeMatrixFeaturesNV, 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.
The VkPhysicalDeviceCooperativeMatrixFeaturesKHR structure is defined
as:
// Provided by VK_KHR_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 cooperativeMatrix;
VkBool32 cooperativeMatrixRobustBufferAccess;
} VkPhysicalDeviceCooperativeMatrixFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
cooperativeMatrixindicates that the implementation supports theCooperativeMatrixKHRSPIR-V capability. -
cooperativeMatrixRobustBufferAccessindicates that the implementation supports robust buffer access for SPIR-VOpCooperativeMatrixLoadKHRandOpCooperativeMatrixStoreKHRinstructions.
If the VkPhysicalDeviceCooperativeMatrixFeaturesKHR 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 VkPhysicalDeviceCooperativeMatrixFeaturesKHR, 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.
The VkPhysicalDeviceCooperativeMatrix2FeaturesNV structure is defined
as:
// Provided by VK_NV_cooperative_matrix2
typedef struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cooperativeMatrixWorkgroupScope;
VkBool32 cooperativeMatrixFlexibleDimensions;
VkBool32 cooperativeMatrixReductions;
VkBool32 cooperativeMatrixConversions;
VkBool32 cooperativeMatrixPerElementOperations;
VkBool32 cooperativeMatrixTensorAddressing;
VkBool32 cooperativeMatrixBlockLoads;
} VkPhysicalDeviceCooperativeMatrix2FeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
cooperativeMatrixWorkgroupScopeindicates that the implementation supports workgroup scope cooperative matrices. -
cooperativeMatrixFlexibleDimensionsindicates that the implementation supports cooperative matrix sizes that are a multiple of the granularity advertised in VkCooperativeMatrixFlexibleDimensionsPropertiesNV. -
cooperativeMatrixReductionsindicates that the implementation supports theCooperativeMatrixReductionsNVSPIR-V capability. This allows performing (row, column, 2x2, or all element) reductions on matrices. -
cooperativeMatrixConversionsindicates that the implementation supports theCooperativeMatrixConversionsNVSPIR-V capability. This allows converting accumulator matrices to A or B matrices. -
cooperativeMatrixPerElementOperationsindicates that the implementation supports theCooperativeMatrixPerElementOperationsNVSPIR-V capability. This allows performing element-wise operations on matrix elements using a callback function. -
cooperativeMatrixTensorAddressingindicates that the implementation supports theTensorAddressingNVandCooperativeMatrixTensorAddressingNVSPIR-V capabilities. This allows using tensor layout and tensor view types for matrix loads and stores. -
cooperativeMatrixBlockLoadsindicates that the implementation supports theCooperativeMatrixBlockLoadsNVSPIR-V capability. This allows setting block size for loads and using a callback function to decode block elements.
If the VkPhysicalDeviceCooperativeMatrix2FeaturesNV 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 VkPhysicalDeviceCooperativeMatrix2FeaturesNV, 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.
The VkPhysicalDeviceCooperativeVectorFeaturesNV structure is defined
as:
// Provided by VK_NV_cooperative_vector
typedef struct VkPhysicalDeviceCooperativeVectorFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cooperativeVector;
VkBool32 cooperativeVectorTraining;
} VkPhysicalDeviceCooperativeVectorFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
cooperativeVectorindicates that the implementation supports theCooperativeVectorNVSPIR-V capability. -
cooperativeVectorTrainingindicates that the implementation supports theCooperativeVectorTrainingNVSPIR-V capability.
If the VkPhysicalDeviceCooperativeVectorFeaturesNV 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 VkPhysicalDeviceCooperativeVectorFeaturesNV, 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.
The VkPhysicalDeviceYcbcrImageArraysFeaturesEXT structure is defined
as:
// Provided by VK_EXT_ycbcr_image_arrays
typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 ycbcrImageArrays;
} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
ycbcrImageArraysindicates that the implementation supports creating images with a format that requires Y′CBCR conversion and has multiple array layers.
If the VkPhysicalDeviceYcbcrImageArraysFeaturesEXT 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 VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, 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.
The VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures structure is
defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderSubgroupExtendedTypes;
} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
or the equivalent
// Provided by VK_KHR_shader_subgroup_extended_types
typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
shaderSubgroupExtendedTypesis a boolean specifying whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in group operations with subgroup scope, if the implementation supports the types.
If the VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures 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 VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, 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.
The VkPhysicalDeviceHostQueryResetFeatures structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceHostQueryResetFeatures {
VkStructureType sType;
void* pNext;
VkBool32 hostQueryReset;
} VkPhysicalDeviceHostQueryResetFeatures;
or the equivalent
// Provided by VK_EXT_host_query_reset
typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
hostQueryResetindicates that the implementation supports resetting queries from the host with vkResetQueryPool.
If the VkPhysicalDeviceHostQueryResetFeatures 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 VkPhysicalDeviceHostQueryResetFeatures, 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.
The VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL structure is
defined as:
// Provided by VK_INTEL_shader_integer_functions2
typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
VkStructureType sType;
void* pNext;
VkBool32 shaderIntegerFunctions2;
} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderIntegerFunctions2indicates that the implementation supports theIntegerFunctions2INTELSPIR-V capability.
If the VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures. 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 VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures., 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.
The VkPhysicalDeviceCoverageReductionModeFeaturesNV structure is
defined as:
// Provided by VK_NV_coverage_reduction_mode
typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 coverageReductionMode;
} VkPhysicalDeviceCoverageReductionModeFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
coverageReductionModeindicates whether the implementation supports coverage reduction modes. See Coverage Reduction.
If the VkPhysicalDeviceCoverageReductionModeFeaturesNV 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 VkPhysicalDeviceCoverageReductionModeFeaturesNV, 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.
The VkPhysicalDeviceTimelineSemaphoreFeatures structure is defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
VkStructureType sType;
void* pNext;
VkBool32 timelineSemaphore;
} VkPhysicalDeviceTimelineSemaphoreFeatures;
or the equivalent
// Provided by VK_KHR_timeline_semaphore
typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
timelineSemaphoreindicates whether semaphores created with a VkSemaphoreType ofVK_SEMAPHORE_TYPE_TIMELINEare supported.
If the VkPhysicalDeviceTimelineSemaphoreFeatures 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 VkPhysicalDeviceTimelineSemaphoreFeatures, 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.
The VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX structure is
defined as:
// Provided by VK_QNX_external_memory_screen_buffer
typedef struct VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
VkStructureType sType;
void* pNext;
VkBool32 screenBufferImport;
} VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
The members of the
VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX structure
describe the following features:
-
screenBufferImportindicates whether QNX Screen buffer import functionality is supported. IfscreenBufferImportisVK_TRUE, VkDeviceMemory supports importing_screen_bufferfrom applications. In this case, the application is responsible for the resource management of the_screen_buffer.
Features |
Functionality |
|
|
Always supported1 |
vkGetScreenBufferPropertiesQNX, VkScreenBufferPropertiesQNX, VkScreenBufferFormatPropertiesQNX, VkExternalFormatQNX |
- 1
-
Functionality in this row is always available.
The Functionality supported for QNX Screen buffer features table summarizes the functionality enabled by the
VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX structure.
Each entry in the body of the table summarizes the functionality that can
be used when the given features are supported and enabled.
This summarizes Valid Usage statements that are added elsewhere in this
specification.
If the VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX 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 VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX, 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.
The VkPhysicalDeviceIndexTypeUint8Features structure is defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceIndexTypeUint8Features {
VkStructureType sType;
void* pNext;
VkBool32 indexTypeUint8;
} VkPhysicalDeviceIndexTypeUint8Features;
or the equivalent
// Provided by VK_KHR_index_type_uint8
typedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesKHR;
or the equivalent
// Provided by VK_EXT_index_type_uint8
typedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
indexTypeUint8indicates thatVK_INDEX_TYPE_UINT8can be used with vkCmdBindIndexBuffer2 and vkCmdBindIndexBuffer.
If the VkPhysicalDeviceIndexTypeUint8Features 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 VkPhysicalDeviceIndexTypeUint8Features, 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.
The VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT structure
is defined as:
// Provided by VK_EXT_primitive_topology_list_restart
typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 primitiveTopologyListRestart;
VkBool32 primitiveTopologyPatchListRestart;
} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
primitiveTopologyListRestartindicates that list type primitives,VK_PRIMITIVE_TOPOLOGY_POINT_LIST,VK_PRIMITIVE_TOPOLOGY_LINE_LIST,VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYandVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, can use the primitive restart index value in index buffers. -
primitiveTopologyPatchListRestartindicates that theVK_PRIMITIVE_TOPOLOGY_PATCH_LISTtopology can use the primitive restart index value in index buffers.
If the VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT 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 VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, 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.
The VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is defined
as:
// Provided by VK_NV_shader_sm_builtins
typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 shaderSMBuiltins;
} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderSMBuiltinsindicates whether the implementation supports the SPIR-VShaderSMBuiltinsNVcapability.
If the VkPhysicalDeviceShaderSMBuiltinsFeaturesNV 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 VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, 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.
The VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures structure is
defined as:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
VkStructureType sType;
void* pNext;
VkBool32 separateDepthStencilLayouts;
} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
or the equivalent
// Provided by VK_KHR_separate_depth_stencil_layouts
typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
separateDepthStencilLayoutsindicates whether the implementation supports aVkImageMemoryBarrierfor a depth/stencil image with only one ofVK_IMAGE_ASPECT_DEPTH_BITorVK_IMAGE_ASPECT_STENCIL_BITset, and whetherVK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, orVK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMALcan be used.
If the VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures 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 VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, 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.
The VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR structure
is defined as:
// Provided by VK_KHR_pipeline_executable_properties
typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 pipelineExecutableInfo;
} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
pipelineExecutableInfoindicates that the implementation supports reporting properties and statistics about the pipeline executables associated with a compiled pipeline.
If the VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR 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 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, 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.
The VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures structure
is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderDemoteToHelperInvocation;
} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;
or the equivalent
// Provided by VK_EXT_shader_demote_to_helper_invocation
typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures 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 VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, 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.
The VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure is
defined as:
// Provided by VK_EXT_texel_buffer_alignment
typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 texelBufferAlignment;
} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
texelBufferAlignmentindicates whether the implementation uses more specific alignment requirements advertised in VkPhysicalDeviceTexelBufferAlignmentProperties rather than VkPhysicalDeviceLimits::minTexelBufferOffsetAlignment.
If the VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT 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 VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, 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.
The VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
structure is defined as:
// Provided by VK_EXT_attachment_feedback_loop_dynamic_state
typedef struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 attachmentFeedbackLoopDynamicState;
} VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
attachmentFeedbackLoopDynamicStatespecifies whether dynamic feedback loops are supported.
If the VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT 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 VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT, 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.
The VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT structure is
defined as:
// Provided by VK_EXT_legacy_vertex_attributes
typedef struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 legacyVertexAttributes;
} VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
legacyVertexAttributesspecifies whether compatibility features for vertex attributes are supported when using dynamic vertex input state.
If the VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT 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 VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT, 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.
The VkPhysicalDeviceTextureCompressionASTCHDRFeatures structure is
defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures {
VkStructureType sType;
void* pNext;
VkBool32 textureCompressionASTC_HDR;
} VkPhysicalDeviceTextureCompressionASTCHDRFeatures;
or the equivalent
// Provided by VK_EXT_texture_compression_astc_hdr
typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
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.
-
If the VkPhysicalDeviceTextureCompressionASTCHDRFeatures 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 VkPhysicalDeviceTextureCompressionASTCHDRFeatures, 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.
The VkPhysicalDeviceLineRasterizationFeatures structure is defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceLineRasterizationFeatures {
VkStructureType sType;
void* pNext;
VkBool32 rectangularLines;
VkBool32 bresenhamLines;
VkBool32 smoothLines;
VkBool32 stippledRectangularLines;
VkBool32 stippledBresenhamLines;
VkBool32 stippledSmoothLines;
} VkPhysicalDeviceLineRasterizationFeatures;
or the equivalent
// Provided by VK_KHR_line_rasterization
typedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesKHR;
or the equivalent
// Provided by VK_EXT_line_rasterization
typedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
rectangularLinesindicates whether the implementation supports rectangular line rasterization. -
bresenhamLinesindicates whether the implementation supports Bresenham-style line rasterization. -
smoothLinesindicates whether the implementation supports smooth line rasterization. -
stippledRectangularLinesindicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_RECTANGULARlines. -
stippledBresenhamLinesindicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_BRESENHAMlines. -
stippledSmoothLinesindicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTHlines.
If the VkPhysicalDeviceLineRasterizationFeatures 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 VkPhysicalDeviceLineRasterizationFeatures, 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.
The VkPhysicalDeviceSubgroupSizeControlFeatures structure is defined
as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures {
VkStructureType sType;
void* pNext;
VkBool32 subgroupSizeControl;
VkBool32 computeFullSubgroups;
} VkPhysicalDeviceSubgroupSizeControlFeatures;
or the equivalent
// Provided by VK_EXT_subgroup_size_control
typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
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.
If the VkPhysicalDeviceSubgroupSizeControlFeatures 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 VkPhysicalDeviceSubgroupSizeControlFeatures, 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.
|
The Vulkan 1.3 implementations always support the features structure. |
The VkPhysicalDeviceCoherentMemoryFeaturesAMD structure is defined as:
// Provided by VK_AMD_device_coherent_memory
typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD {
VkStructureType sType;
void* pNext;
VkBool32 deviceCoherentMemory;
} VkPhysicalDeviceCoherentMemoryFeaturesAMD;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
deviceCoherentMemoryindicates that the implementation supports device coherent memory.
If the VkPhysicalDeviceCoherentMemoryFeaturesAMD 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 VkPhysicalDeviceCoherentMemoryFeaturesAMD, 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.
The VkPhysicalDeviceAccelerationStructureFeaturesKHR structure is
defined as:
// Provided by VK_KHR_acceleration_structure
typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 accelerationStructure;
VkBool32 accelerationStructureCaptureReplay;
VkBool32 accelerationStructureIndirectBuild;
VkBool32 accelerationStructureHostCommands;
VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind;
} VkPhysicalDeviceAccelerationStructureFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
accelerationStructureindicates whether the implementation supports the acceleration structure functionality. See Acceleration Structures. -
accelerationStructureCaptureReplayindicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay. -
accelerationStructureIndirectBuildindicates whether the implementation supports indirect acceleration structure build commands, e.g. vkCmdBuildAccelerationStructuresIndirectKHR. -
accelerationStructureHostCommandsindicates whether the implementation supports host side acceleration structure commands, e.g. vkBuildAccelerationStructuresKHR, vkCopyAccelerationStructureKHR, vkCopyAccelerationStructureToMemoryKHR, vkCopyMemoryToAccelerationStructureKHR, vkWriteAccelerationStructuresPropertiesKHR. -
descriptorBindingAccelerationStructureUpdateAfterBindindicates whether the implementation supports updating acceleration structure 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_ACCELERATION_STRUCTURE_KHR.
If the VkPhysicalDeviceAccelerationStructureFeaturesKHR 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 VkPhysicalDeviceAccelerationStructureFeaturesKHR, 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.
The VkPhysicalDeviceRayTracingPipelineFeaturesKHR structure is defined
as:
// Provided by VK_KHR_ray_tracing_pipeline
typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingPipeline;
VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay;
VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed;
VkBool32 rayTracingPipelineTraceRaysIndirect;
VkBool32 rayTraversalPrimitiveCulling;
} VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
rayTracingPipelineindicates whether the implementation supports the ray tracing pipeline functionality. See Ray Tracing. -
rayTracingPipelineShaderGroupHandleCaptureReplayindicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay. -
rayTracingPipelineShaderGroupHandleCaptureReplayMixedindicates whether the implementation supports reuse of shader group handles being arbitrarily mixed with creation of non-reused shader group handles. If this isVK_FALSE, all reused shader group handles must be specified before any non-reused handles may be created. -
rayTracingPipelineTraceRaysIndirectindicates whether the implementation supports indirect ray tracing commands, e.g. vkCmdTraceRaysIndirectKHR. -
rayTraversalPrimitiveCullingindicates whether the implementation supports primitive culling during ray traversal.
If the VkPhysicalDeviceRayTracingPipelineFeaturesKHR 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 VkPhysicalDeviceRayTracingPipelineFeaturesKHR, 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.
The VkPhysicalDeviceRayQueryFeaturesKHR structure is defined as:
// Provided by VK_KHR_ray_query
typedef struct VkPhysicalDeviceRayQueryFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayQuery;
} VkPhysicalDeviceRayQueryFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
rayQueryindicates whether the implementation supports ray query (OpRayQueryProceedKHR) functionality.
If the VkPhysicalDeviceRayQueryFeaturesKHR 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 VkPhysicalDeviceRayQueryFeaturesKHR, 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.
The VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR structure is
defined as:
// Provided by VK_KHR_ray_tracing_maintenance1
typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingMaintenance1;
VkBool32 rayTracingPipelineTraceRaysIndirect2;
} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
rayTracingMaintenance1indicates that the implementation supports the following:-
The
CullMaskKHRSPIR-V builtin using theSPV_KHR_ray_cull_maskSPIR-V extension. -
Additional acceleration structure property queries:
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHRandVK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR. -
A new access flag
VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR. -
A new pipeline stage flag bit
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR
-
-
rayTracingPipelineTraceRaysIndirect2indicates whether the implementation supports the extended indirect ray tracing command vkCmdTraceRaysIndirect2KHR.
If the VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR 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 VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, 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.
The VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR structure is
defined as:
// Provided by VK_KHR_video_encode_quantization_map
typedef struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 videoEncodeQuantizationMap;
} VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
videoEncodeQuantizationMapindicates that the implementation supports video encode quantization maps.Support for
videoEncodeQuantizationMapdoes not indicate that all video encode profiles support quantization maps. Support for quantization maps for any specific video encode profile is subject to video-profile-specific capabilities.
If the VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR 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 VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR, 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.
The VkPhysicalDeviceVideoMaintenance1FeaturesKHR structure is defined
as:
// Provided by VK_KHR_video_maintenance1
typedef struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 videoMaintenance1;
} VkPhysicalDeviceVideoMaintenance1FeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
videoMaintenance1indicates that the implementation supports the following:-
The new buffer creation flag
VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR. -
The new image creation flag
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR. -
The new video session creation flag
VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR.
-
If the VkPhysicalDeviceVideoMaintenance1FeaturesKHR 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 VkPhysicalDeviceVideoMaintenance1FeaturesKHR, 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.
The VkPhysicalDeviceVideoMaintenance2FeaturesKHR structure is defined
as:
// Provided by VK_KHR_video_maintenance2
typedef struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 videoMaintenance2;
} VkPhysicalDeviceVideoMaintenance2FeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
videoMaintenance2specifies that the implementation supports the following:-
Support for issuing video coding control commands against video decode sessions without a bound video session parameters object.
-
The new video session creation flag
VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHRfor video decode sessions. -
Required support for the rate control mode
VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHRfor the following video encode profiles: -
Additional guarantees on Video Std parameters used with video encode profiles that the implementations support without the need to override them.
-
If the VkPhysicalDeviceVideoMaintenance2FeaturesKHR 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 VkPhysicalDeviceVideoMaintenance2FeaturesKHR, 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.
The VkPhysicalDeviceVideoEncodeAV1FeaturesKHR structure is defined as:
// Provided by VK_KHR_video_encode_av1
typedef struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 videoEncodeAV1;
} VkPhysicalDeviceVideoEncodeAV1FeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
videoEncodeAV1indicates that the implementation supports AV1 encode operations.
If the VkPhysicalDeviceVideoEncodeAV1FeaturesKHR 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 VkPhysicalDeviceVideoEncodeAV1FeaturesKHR, 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.
The VkPhysicalDeviceExtendedDynamicStateFeaturesEXT structure is
defined as:
// Provided by VK_EXT_extended_dynamic_state
typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 extendedDynamicState;
} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
extendedDynamicStateindicates that the implementation supports the following dynamic states:-
VK_DYNAMIC_STATE_CULL_MODE -
VK_DYNAMIC_STATE_FRONT_FACE -
VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY -
VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT -
VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT -
VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE -
VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE -
VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE -
VK_DYNAMIC_STATE_DEPTH_COMPARE_OP -
VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE -
VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE -
VK_DYNAMIC_STATE_STENCIL_OP
-
If the VkPhysicalDeviceExtendedDynamicStateFeaturesEXT 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 VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, 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.
The VkPhysicalDeviceExtendedDynamicState2FeaturesEXT structure is
defined as:
// Provided by VK_EXT_extended_dynamic_state2
typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 extendedDynamicState2;
VkBool32 extendedDynamicState2LogicOp;
VkBool32 extendedDynamicState2PatchControlPoints;
} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
extendedDynamicState2indicates that the implementation supports the following dynamic states:-
VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE -
VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE -
VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
-
-
extendedDynamicState2LogicOpindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_LOGIC_OP_EXT
-
-
extendedDynamicState2PatchControlPointsindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
-
If the VkPhysicalDeviceExtendedDynamicState2FeaturesEXT 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 VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, 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.
The VkPhysicalDeviceExtendedDynamicState3FeaturesEXT structure is
defined as:
// Provided by VK_EXT_extended_dynamic_state3
typedef struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 extendedDynamicState3TessellationDomainOrigin;
VkBool32 extendedDynamicState3DepthClampEnable;
VkBool32 extendedDynamicState3PolygonMode;
VkBool32 extendedDynamicState3RasterizationSamples;
VkBool32 extendedDynamicState3SampleMask;
VkBool32 extendedDynamicState3AlphaToCoverageEnable;
VkBool32 extendedDynamicState3AlphaToOneEnable;
VkBool32 extendedDynamicState3LogicOpEnable;
VkBool32 extendedDynamicState3ColorBlendEnable;
VkBool32 extendedDynamicState3ColorBlendEquation;
VkBool32 extendedDynamicState3ColorWriteMask;
VkBool32 extendedDynamicState3RasterizationStream;
VkBool32 extendedDynamicState3ConservativeRasterizationMode;
VkBool32 extendedDynamicState3ExtraPrimitiveOverestimationSize;
VkBool32 extendedDynamicState3DepthClipEnable;
VkBool32 extendedDynamicState3SampleLocationsEnable;
VkBool32 extendedDynamicState3ColorBlendAdvanced;
VkBool32 extendedDynamicState3ProvokingVertexMode;
VkBool32 extendedDynamicState3LineRasterizationMode;
VkBool32 extendedDynamicState3LineStippleEnable;
VkBool32 extendedDynamicState3DepthClipNegativeOneToOne;
VkBool32 extendedDynamicState3ViewportWScalingEnable;
VkBool32 extendedDynamicState3ViewportSwizzle;
VkBool32 extendedDynamicState3CoverageToColorEnable;
VkBool32 extendedDynamicState3CoverageToColorLocation;
VkBool32 extendedDynamicState3CoverageModulationMode;
VkBool32 extendedDynamicState3CoverageModulationTableEnable;
VkBool32 extendedDynamicState3CoverageModulationTable;
VkBool32 extendedDynamicState3CoverageReductionMode;
VkBool32 extendedDynamicState3RepresentativeFragmentTestEnable;
VkBool32 extendedDynamicState3ShadingRateImageEnable;
} VkPhysicalDeviceExtendedDynamicState3FeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
extendedDynamicState3TessellationDomainOriginindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
-
-
extendedDynamicState3DepthClampEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
-
-
extendedDynamicState3PolygonModeindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_POLYGON_MODE_EXT
-
-
extendedDynamicState3RasterizationSamplesindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
-
-
extendedDynamicState3SampleMaskindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
-
-
extendedDynamicState3AlphaToCoverageEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
-
-
extendedDynamicState3AlphaToOneEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
-
-
extendedDynamicState3LogicOpEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendEquationindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
-
-
extendedDynamicState3ColorWriteMaskindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
-
-
extendedDynamicState3RasterizationStreamindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
-
-
extendedDynamicState3ConservativeRasterizationModeindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
-
-
extendedDynamicState3ExtraPrimitiveOverestimationSizeindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
-
-
extendedDynamicState3DepthClipEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
-
-
extendedDynamicState3SampleLocationsEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendAdvancedindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
-
-
extendedDynamicState3ProvokingVertexModeindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
-
-
extendedDynamicState3LineRasterizationModeindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
-
-
extendedDynamicState3LineStippleEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
-
-
extendedDynamicState3DepthClipNegativeOneToOneindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
-
-
extendedDynamicState3ViewportWScalingEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
-
-
extendedDynamicState3ViewportSwizzleindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
-
-
extendedDynamicState3CoverageToColorEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
-
-
extendedDynamicState3CoverageToColorLocationindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
-
-
extendedDynamicState3CoverageModulationModeindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
-
-
extendedDynamicState3CoverageModulationTableEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
-
-
extendedDynamicState3CoverageModulationTableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
-
-
extendedDynamicState3CoverageReductionModeindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
-
-
extendedDynamicState3RepresentativeFragmentTestEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
-
-
extendedDynamicState3ShadingRateImageEnableindicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
-
If the VkPhysicalDeviceExtendedDynamicState3FeaturesEXT 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 VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, 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.
The VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV structure is
defined as:
// Provided by VK_NV_device_generated_commands
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 deviceGeneratedCommands;
} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
deviceGeneratedCommandsindicates whether the implementation supports functionality to generate commands on the device. See Device-Generated Commands.
If the VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV 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 VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, 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.
The VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV structure
is defined as:
// Provided by VK_NV_device_generated_commands_compute
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 deviceGeneratedCompute;
VkBool32 deviceGeneratedComputePipelines;
VkBool32 deviceGeneratedComputeCaptureReplay;
} VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
deviceGeneratedComputeindicates whether the implementation supports functionality to generate dispatch commands and push constants for the compute pipeline on the device. See Device-Generated Commands. -
deviceGeneratedComputePipelinesindicates whether the implementation supports functionality to generate commands to bind compute pipelines on the device. See Device-Generated Commands. -
deviceGeneratedComputeCaptureReplayindicates whether the implementation supports functionality to capture compute pipeline address and reuse later for replay in Device-Generated Commands.
If the VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV 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 VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV, 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.
The VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT structure is
defined as:
// Provided by VK_EXT_device_generated_commands
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 deviceGeneratedCommands;
VkBool32 dynamicGeneratedPipelineLayout;
} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
deviceGeneratedCommandsindicates whether the implementation supports functionality to generate commands on the device. -
dynamicGeneratedPipelineLayoutindicates the implementation allows thepipelineLayoutmember of VkIndirectCommandsLayoutCreateInfoEXT to be VK_NULL_HANDLE and VkPipelineLayoutCreateInfo can be chained off those structures'pNextinstead.
If the VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT 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 VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT, 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.
The VkPhysicalDeviceDiagnosticsConfigFeaturesNV structure is defined
as:
// Provided by VK_NV_device_diagnostics_config
typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 diagnosticsConfig;
} VkPhysicalDeviceDiagnosticsConfigFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
diagnosticsConfigindicates whether the implementation supports the ability to configure diagnostic tools.
If the VkPhysicalDeviceDiagnosticsConfigFeaturesNV 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 VkPhysicalDeviceDiagnosticsConfigFeaturesNV, 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.
The VkPhysicalDeviceClusterAccelerationStructureFeaturesNV structure
is defined as:
// Provided by VK_NV_cluster_acceleration_structure
typedef struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 clusterAccelerationStructure;
} VkPhysicalDeviceClusterAccelerationStructureFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
clusterAccelerationStructureindicates whether the implementation supports the ability to generate and trace cluster acceleration structures.
If the VkPhysicalDeviceClusterAccelerationStructureFeaturesNV 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 VkPhysicalDeviceClusterAccelerationStructureFeaturesNV, 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.
The VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV
structure is defined as:
// Provided by VK_NV_partitioned_acceleration_structure
typedef struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 partitionedAccelerationStructure;
} VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
partitionedAccelerationStructureindicates whether the implementation supports the ability to generate top level partitioned acceleration structures.
If the VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV 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 VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV, 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.
The VkPhysicalDeviceDeviceMemoryReportFeaturesEXT structure is defined
as:
// Provided by VK_EXT_device_memory_report
typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 deviceMemoryReport;
} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
deviceMemoryReportindicates whether the implementation supports the ability to register device memory report callbacks.
If the VkPhysicalDeviceDeviceMemoryReportFeaturesEXT 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 VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, 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.
The VkPhysicalDeviceGlobalPriorityQueryFeatures structure is defined
as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceGlobalPriorityQueryFeatures {
VkStructureType sType;
void* pNext;
VkBool32 globalPriorityQuery;
} VkPhysicalDeviceGlobalPriorityQueryFeatures;
or the equivalent
// Provided by VK_KHR_global_priority
typedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;
or the equivalent
// Provided by VK_EXT_global_priority_query
typedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceGlobalPriorityQueryFeatures 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 VkPhysicalDeviceGlobalPriorityQueryFeatures, 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.
The VkPhysicalDevicePipelineCreationCacheControlFeatures structure is
defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures {
VkStructureType sType;
void* pNext;
VkBool32 pipelineCreationCacheControl;
} VkPhysicalDevicePipelineCreationCacheControlFeatures;
or the equivalent
// Provided by VK_EXT_pipeline_creation_cache_control
typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
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
-
-
If the VkPhysicalDevicePipelineCreationCacheControlFeatures 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 VkPhysicalDevicePipelineCreationCacheControlFeatures, 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.
The VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures structure is
defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderZeroInitializeWorkgroupMemory;
} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
or the equivalent
// Provided by VK_KHR_zero_initialize_workgroup_memory
typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures 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 VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures, 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.
The VkPhysicalDevicePrivateDataFeatures structure is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDevicePrivateDataFeatures {
VkStructureType sType;
void* pNext;
VkBool32 privateData;
} VkPhysicalDevicePrivateDataFeatures;
or the equivalent
// Provided by VK_EXT_private_data
typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
privateDataindicates whether the implementation supports private data. See Private Data.
If the VkPhysicalDevicePrivateDataFeatures 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 VkPhysicalDevicePrivateDataFeatures, 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.
The VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
structure is defined as:
// Provided by VK_KHR_shader_subgroup_uniform_control_flow
typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderSubgroupUniformControlFlow;
} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderSubgroupUniformControlFlowspecifies whether the implementation supports the shader execution modeSubgroupUniformControlFlowKHR
If the VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR 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 VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, 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.
The VkPhysicalDeviceRobustness2FeaturesEXT structure is defined as:
// Provided by VK_EXT_robustness2
typedef struct VkPhysicalDeviceRobustness2FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 robustBufferAccess2;
VkBool32 robustImageAccess2;
VkBool32 nullDescriptor;
} VkPhysicalDeviceRobustness2FeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
robustBufferAccess2indicates whether buffer accesses are tightly bounds-checked against the range of the descriptor. Uniform buffers must be bounds-checked to the range of the descriptor, where the range is rounded up to a multiple ofrobustUniformBufferAccessSizeAlignment. Storage buffers must be bounds-checked to the range of the descriptor, where the range is rounded up to a multiple ofrobustStorageBufferAccessSizeAlignment. Out of bounds buffer loads will return zero values, and image load, sample, and atomic operations from texel buffers will have (0,0,1) values inserted for missing G, B, or A components based on the format. -
robustImageAccess2indicates whether image accesses are tightly bounds-checked against the dimensions of the image view. Out of bounds image load, sample, and atomic operations from images will return zero values, with (0,0,1) values inserted for missing G, B, or A components based on the format. -
nullDescriptorindicates whether descriptors can be written with a VK_NULL_HANDLE resource or view, which are considered valid to access and act as if the descriptor were bound to nothing.
If the VkPhysicalDeviceRobustness2FeaturesEXT 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 VkPhysicalDeviceRobustness2FeaturesEXT, 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.
The VkPhysicalDeviceImageRobustnessFeatures structure is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceImageRobustnessFeatures {
VkStructureType sType;
void* pNext;
VkBool32 robustImageAccess;
} VkPhysicalDeviceImageRobustnessFeatures;
or the equivalent
// Provided by VK_EXT_image_robustness
typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
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.
If the VkPhysicalDeviceImageRobustnessFeatures 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 VkPhysicalDeviceImageRobustnessFeatures, 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.
The VkPhysicalDeviceShaderTerminateInvocationFeatures structure is
defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderTerminateInvocation;
} VkPhysicalDeviceShaderTerminateInvocationFeatures;
or the equivalent
// Provided by VK_KHR_shader_terminate_invocation
typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderTerminateInvocationFeatures 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 VkPhysicalDeviceShaderTerminateInvocationFeatures, 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.
The VkPhysicalDeviceCustomBorderColorFeaturesEXT structure is defined
as:
// Provided by VK_EXT_custom_border_color
typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 customBorderColors;
VkBool32 customBorderColorWithoutFormat;
} VkPhysicalDeviceCustomBorderColorFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
customBorderColorsindicates that the implementation supports providing aborderColorvalue with one of the following values at sampler creation time:-
VK_BORDER_COLOR_FLOAT_CUSTOM_EXT -
VK_BORDER_COLOR_INT_CUSTOM_EXT
-
-
customBorderColorWithoutFormatindicates that explicit formats are not required for custom border colors and the value of theformatmember of the VkSamplerCustomBorderColorCreateInfoEXT structure may beVK_FORMAT_UNDEFINED. If this feature bit is not set, applications must provide the VkFormat of the image view(s) being sampled by this sampler in theformatmember of the VkSamplerCustomBorderColorCreateInfoEXT structure.
If the VkPhysicalDeviceCustomBorderColorFeaturesEXT 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 VkPhysicalDeviceCustomBorderColorFeaturesEXT, 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.
The VkPhysicalDeviceBorderColorSwizzleFeaturesEXT structure is defined
as:
// Provided by VK_EXT_border_color_swizzle
typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 borderColorSwizzle;
VkBool32 borderColorSwizzleFromImage;
} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
borderColorSwizzleindicates that defined values are returned by sampled image operations when used with a sampler that uses aVK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,VK_BORDER_COLOR_INT_OPAQUE_BLACK,VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, orVK_BORDER_COLOR_INT_CUSTOM_EXTborderColorand an image view that uses a non-identity component mapping, when eitherborderColorSwizzleFromImageis enabled or the VkSamplerBorderColorComponentMappingCreateInfoEXT is specified. -
borderColorSwizzleFromImageindicates that the implementation will return the correct border color values from sampled image operations under the conditions expressed above, without the application having to specify the border color component mapping when creating the sampler object. If this feature bit is not set, applications can chain a VkSamplerBorderColorComponentMappingCreateInfoEXT structure when creating samplers for use with image views that do not have an identity swizzle and, when those samplers are combined with image views using the same component mapping, sampled image operations that use opaque black or custom border colors will return the correct border color values.
If the VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 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 VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, 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.
The VkPhysicalDevicePortabilitySubsetFeaturesKHR structure is defined
as:
// Provided by VK_KHR_portability_subset
typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 constantAlphaColorBlendFactors;
VkBool32 events;
VkBool32 imageViewFormatReinterpretation;
VkBool32 imageViewFormatSwizzle;
VkBool32 imageView2DOn3DImage;
VkBool32 multisampleArrayImage;
VkBool32 mutableComparisonSamplers;
VkBool32 pointPolygons;
VkBool32 samplerMipLodBias;
VkBool32 separateStencilMaskRef;
VkBool32 shaderSampleRateInterpolationFunctions;
VkBool32 tessellationIsolines;
VkBool32 tessellationPointMode;
VkBool32 triangleFans;
VkBool32 vertexAttributeAccessBeyondStride;
} VkPhysicalDevicePortabilitySubsetFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
constantAlphaColorBlendFactorsindicates whether this implementation supports constant alpha Blend Factors used as source or destination color Blending. -
eventsindicates whether this implementation supports synchronization using Events. -
imageViewFormatReinterpretationindicates whether this implementation supports aVkImageViewbeing created with a texel format containing a different number of components, or a different number of bits in each component, than the texel format of the underlyingVkImage. -
imageViewFormatSwizzleindicates whether this implementation supports remapping format components using VkImageViewCreateInfo::components. -
imageView2DOn3DImageindicates whether this implementation supports aVkImagebeing created with theVK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BITflag set, permitting a 2D or 2D array image view to be created on a 3DVkImage. -
multisampleArrayImageindicates whether this implementation supports aVkImagebeing created as a 2D array with multiple samples per texel. -
mutableComparisonSamplersindicates whether this implementation allows descriptors with comparison samplers to be updated. -
pointPolygonsindicates whether this implementation supports Rasterization using a point Polygon Mode. -
samplerMipLodBiasindicates whether this implementation supports setting a mipmap LOD bias value when creating a sampler. -
separateStencilMaskRefindicates whether this implementation supports separate front and back Stencil Test reference values. -
shaderSampleRateInterpolationFunctionsindicates whether this implementation supports fragment shaders which use theInterpolationFunctioncapability and the extended instructionsInterpolateAtCentroid,InterpolateAtOffset, andInterpolateAtSamplefrom theGLSL.std.450extended instruction set. This member is only meaningful if thesampleRateShadingfeature is supported. -
tessellationIsolinesindicates whether this implementation supports isoline output from the Tessellation stage of a graphics pipeline. This member is only meaningful if thetessellationShaderfeature is supported. -
tessellationPointModeindicates whether this implementation supports point output from the Tessellation stage of a graphics pipeline. This member is only meaningful if thetessellationShaderfeature is supported. -
triangleFansindicates whether this implementation supports Triangle Fans primitive topology. -
vertexAttributeAccessBeyondStrideindicates whether this implementation supports accessing a vertex input attribute beyond the stride of the corresponding vertex input binding.
If the VkPhysicalDevicePortabilitySubsetFeaturesKHR 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 VkPhysicalDevicePortabilitySubsetFeaturesKHR, 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.
The VkPhysicalDevicePerformanceQueryFeaturesKHR structure is defined
as:
// Provided by VK_KHR_performance_query
typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 performanceCounterQueryPools;
VkBool32 performanceCounterMultipleQueryPools;
} VkPhysicalDevicePerformanceQueryFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
performanceCounterQueryPoolsindicates whether the implementation supports performance counter query pools. -
performanceCounterMultipleQueryPoolsindicates whether the implementation supports using multiple performance query pools in a primary command buffer and secondary command buffers executed within it.
If the VkPhysicalDevicePerformanceQueryFeaturesKHR 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 VkPhysicalDevicePerformanceQueryFeaturesKHR, 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.
The VkPhysicalDevice4444FormatsFeaturesEXT structure is defined as:
// Provided by VK_EXT_4444_formats
typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 formatA4R4G4B4;
VkBool32 formatA4B4G4R4;
} VkPhysicalDevice4444FormatsFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
formatA4R4G4B4indicates that the implementation must support using a VkFormat ofVK_FORMAT_A4R4G4B4_UNORM_PACK16_EXTwith at least the following VkFormatFeatureFlagBits:-
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT -
VK_FORMAT_FEATURE_BLIT_SRC_BIT -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
-
formatA4B4G4R4indicates that the implementation must support using a VkFormat ofVK_FORMAT_A4B4G4R4_UNORM_PACK16_EXTwith at least the following VkFormatFeatureFlagBits:-
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT -
VK_FORMAT_FEATURE_BLIT_SRC_BIT -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
If the VkPhysicalDevice4444FormatsFeaturesEXT 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 VkPhysicalDevice4444FormatsFeaturesEXT, 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.
|
Although the formats defined by the |
The VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT structure is
defined as:
// Provided by VK_EXT_mutable_descriptor_type
typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 mutableDescriptorType;
} VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;
or the equivalent
// Provided by VK_VALVE_mutable_descriptor_type
typedef VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
mutableDescriptorTypeindicates that the implementation must support using the VkDescriptorType ofVK_DESCRIPTOR_TYPE_MUTABLE_EXTwith at least the following descriptor types, where any combination of the types must be supported:-
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE -
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE -
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER -
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER -
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER -
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
-
-
Additionally,
mutableDescriptorTypeindicates that:-
Non-uniform descriptor indexing must be supported if all descriptor types in a VkMutableDescriptorTypeListEXT for
VK_DESCRIPTOR_TYPE_MUTABLE_EXThave the corresponding non-uniform indexing features enabled in VkPhysicalDeviceDescriptorIndexingFeatures. -
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITwithdescriptorTypeofVK_DESCRIPTOR_TYPE_MUTABLE_EXTrelaxes the list of required descriptor types to the descriptor types which have the corresponding update-after-bind feature enabled in VkPhysicalDeviceDescriptorIndexingFeatures. -
Dynamically uniform descriptor indexing must be supported if all descriptor types in a VkMutableDescriptorTypeListEXT for
VK_DESCRIPTOR_TYPE_MUTABLE_EXThave the corresponding dynamic indexing features enabled. -
VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXTmust be supported. -
VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXTmust be supported.
-
If the VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT 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 VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, 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.
The VkPhysicalDeviceDepthClipControlFeaturesEXT structure is defined
as:
// Provided by VK_EXT_depth_clip_control
typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthClipControl;
} VkPhysicalDeviceDepthClipControlFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
depthClipControlindicates that the implementation supports setting VkPipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOnetoVK_TRUE.
If the VkPhysicalDeviceDepthClipControlFeaturesEXT 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 VkPhysicalDeviceDepthClipControlFeaturesEXT, 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.
The VkPhysicalDeviceDepthClampControlFeaturesEXT structure is defined
as:
// Provided by VK_EXT_depth_clamp_control
typedef struct VkPhysicalDeviceDepthClampControlFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthClampControl;
} VkPhysicalDeviceDepthClampControlFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
depthClampControlindicates that the implementation supports setting VkPipelineViewportDepthClampControlCreateInfoEXT::depthClampModetoVK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT.
If the VkPhysicalDeviceDepthClampControlFeaturesEXT 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 VkPhysicalDeviceDepthClampControlFeaturesEXT, 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.
The VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR structure
is defined as:
// Provided by VK_KHR_workgroup_memory_explicit_layout
typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 workgroupMemoryExplicitLayout;
VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout;
VkBool32 workgroupMemoryExplicitLayout8BitAccess;
VkBool32 workgroupMemoryExplicitLayout16BitAccess;
} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
workgroupMemoryExplicitLayoutindicates whether the implementation supports the SPIR-VWorkgroupMemoryExplicitLayoutKHRcapability. -
workgroupMemoryExplicitLayoutScalarBlockLayoutindicates whether the implementation supports scalar alignment for laying out Workgroup Blocks. -
workgroupMemoryExplicitLayout8BitAccessindicates whether objects in theWorkgroupstorage class with theBlockdecoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare theWorkgroupMemoryExplicitLayout8BitAccessKHRcapability. -
workgroupMemoryExplicitLayout16BitAccessindicates whether objects in theWorkgroupstorage class with theBlockdecoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also indicates whether shader modules can declare theWorkgroupMemoryExplicitLayout16BitAccessKHRcapability.
If the VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR 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 VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, 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.
The VkPhysicalDeviceSynchronization2Features structure is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceSynchronization2Features {
VkStructureType sType;
void* pNext;
VkBool32 synchronization2;
} VkPhysicalDeviceSynchronization2Features;
or the equivalent
// Provided by VK_KHR_synchronization2
typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
synchronization2indicates whether the implementation supports the new set of synchronization commands introduced inVK_KHR_synchronization2.
If the VkPhysicalDeviceSynchronization2Features 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 VkPhysicalDeviceSynchronization2Features, 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.
The VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT structure is
defined as:
// Provided by VK_EXT_vertex_input_dynamic_state
typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 vertexInputDynamicState;
} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
vertexInputDynamicStateindicates that the implementation supports the following dynamic states:-
VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
-
If the VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT 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 VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, 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.
The VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT structure is
defined as:
// Provided by VK_EXT_primitives_generated_query
typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 primitivesGeneratedQuery;
VkBool32 primitivesGeneratedQueryWithRasterizerDiscard;
VkBool32 primitivesGeneratedQueryWithNonZeroStreams;
} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
primitivesGeneratedQueryindicates whether the implementation supports theVK_QUERY_TYPE_PRIMITIVES_GENERATED_EXTquery type. -
primitivesGeneratedQueryWithRasterizerDiscardindicates whether the implementation supports this query when rasterization discard is enabled. -
primitivesGeneratedQueryWithNonZeroStreamsindicates whether the implementation supports this query with a non-zero index in vkCmdBeginQueryIndexedEXT.
If the VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT 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 VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, 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.
The VkPhysicalDeviceFragmentShadingRateFeaturesKHR structure is
defined as:
// Provided by VK_KHR_fragment_shading_rate
typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 pipelineFragmentShadingRate;
VkBool32 primitiveFragmentShadingRate;
VkBool32 attachmentFragmentShadingRate;
} VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
pipelineFragmentShadingRateindicates that the implementation supports the pipeline fragment shading rate. -
primitiveFragmentShadingRateindicates that the implementation supports the primitive fragment shading rate. -
attachmentFragmentShadingRateindicates that the implementation supports the attachment fragment shading rate.
If the VkPhysicalDeviceFragmentShadingRateFeaturesKHR 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 VkPhysicalDeviceFragmentShadingRateFeaturesKHR, 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.
The VkPhysicalDeviceLegacyDitheringFeaturesEXT structure is defined
as:
// Provided by VK_EXT_legacy_dithering
typedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 legacyDithering;
} VkPhysicalDeviceLegacyDitheringFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
legacyDitheringindicates whether the implementation supports Legacy Dithering.
If the VkPhysicalDeviceLegacyDitheringFeaturesEXT 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 VkPhysicalDeviceLegacyDitheringFeaturesEXT, 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.
The VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV structure is
defined as:
// Provided by VK_NV_fragment_shading_rate_enums
typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 fragmentShadingRateEnums;
VkBool32 supersampleFragmentShadingRates;
VkBool32 noInvocationFragmentShadingRates;
} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
fragmentShadingRateEnumsindicates that the implementation supports specifying fragment shading rates using theVkFragmentShadingRateNVenumerated type. -
supersampleFragmentShadingRatesindicates that the implementation supports fragment shading rate enum values indicating more than one invocation per fragment. -
noInvocationFragmentShadingRatesindicates that the implementation supports a fragment shading rate enum value indicating that no fragment shaders should be invoked when that shading rate is used.
If the VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV 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 VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, 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.
The VkPhysicalDeviceInheritedViewportScissorFeaturesNV structure is
defined as:
// Provided by VK_NV_inherited_viewport_scissor
typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 inheritedViewportScissor2D;
} VkPhysicalDeviceInheritedViewportScissorFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
inheritedViewportScissor2Dindicates whether secondary command buffers can inherit most of the dynamic state affected byVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT,VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT,VK_DYNAMIC_STATE_VIEWPORTorVK_DYNAMIC_STATE_SCISSOR, from a primary command buffer.
If the VkPhysicalDeviceInheritedViewportScissorFeaturesNV 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 VkPhysicalDeviceInheritedViewportScissorFeaturesNV, 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.
The VkPhysicalDevicePipelineProtectedAccessFeatures structure is
defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDevicePipelineProtectedAccessFeatures {
VkStructureType sType;
void* pNext;
VkBool32 pipelineProtectedAccess;
} VkPhysicalDevicePipelineProtectedAccessFeatures;
or the equivalent
// Provided by VK_EXT_pipeline_protected_access
typedef VkPhysicalDevicePipelineProtectedAccessFeatures VkPhysicalDevicePipelineProtectedAccessFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDevicePipelineProtectedAccessFeatures 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 VkPhysicalDevicePipelineProtectedAccessFeatures, 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.
The VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT structure is
defined as:
// Provided by VK_EXT_ycbcr_2plane_444_formats
typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 ycbcr2plane444Formats;
} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
ycbcr2plane444Formatsindicates that the implementation supports the following 2-plane 444 Y′CBCR formats:-
VK_FORMAT_G8_B8R8_2PLANE_444_UNORM -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 -
VK_FORMAT_G16_B16R16_2PLANE_444_UNORM
-
If the VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT 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 VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, 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.
|
Although the formats defined by the |
The VkPhysicalDeviceColorWriteEnableFeaturesEXT structure is defined
as:
// Provided by VK_EXT_color_write_enable
typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 colorWriteEnable;
} VkPhysicalDeviceColorWriteEnableFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
colorWriteEnableindicates that the implementation supports the dynamic stateVK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT.
If the VkPhysicalDeviceColorWriteEnableFeaturesEXT 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 VkPhysicalDeviceColorWriteEnableFeaturesEXT, 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.
The VkPhysicalDevicePipelinePropertiesFeaturesEXT structure is defined
as:
// Provided by VK_EXT_pipeline_properties
typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 pipelinePropertiesIdentifier;
} VkPhysicalDevicePipelinePropertiesFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
pipelinePropertiesIdentifierindicates that the implementation supports querying a unique pipeline identifier.
If the VkPhysicalDevicePipelinePropertiesFeaturesEXT 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 VkPhysicalDevicePipelinePropertiesFeaturesEXT, 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.
The VkPhysicalDeviceProvokingVertexFeaturesEXT structure is defined
as:
// Provided by VK_EXT_provoking_vertex
typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 provokingVertexLast;
VkBool32 transformFeedbackPreservesProvokingVertex;
} VkPhysicalDeviceProvokingVertexFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
provokingVertexLastindicates whether the implementation supports theVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXTprovoking vertex mode for flat shading. -
transformFeedbackPreservesProvokingVertexindicates that the order of vertices within each primitive written by transform feedback will preserve the provoking vertex. This does not apply to triangle fan primitives whentransformFeedbackPreservesTriangleFanProvokingVertexisVK_FALSE.transformFeedbackPreservesProvokingVertexmust beVK_FALSEwhen theVK_EXT_transform_feedbackextension is not supported.
If the VkPhysicalDeviceProvokingVertexFeaturesEXT 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 VkPhysicalDeviceProvokingVertexFeaturesEXT, 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.
When VkPhysicalDeviceProvokingVertexFeaturesEXT is in the pNext
chain of VkDeviceCreateInfo but the transformFeedback feature is not enabled, the value of
transformFeedbackPreservesProvokingVertex is ignored.
The VkPhysicalDeviceDescriptorBufferFeaturesEXT structure is defined
as:
// Provided by VK_EXT_descriptor_buffer
typedef struct VkPhysicalDeviceDescriptorBufferFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 descriptorBuffer;
VkBool32 descriptorBufferCaptureReplay;
VkBool32 descriptorBufferImageLayoutIgnored;
VkBool32 descriptorBufferPushDescriptors;
} VkPhysicalDeviceDescriptorBufferFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
descriptorBufferindicates that the implementation supports putting shader-accessible descriptors directly in memory. -
descriptorBufferCaptureReplayindicates that the implementation supports capture and replay when using descriptor buffers. If this isVK_TRUE, all resources created withVK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, orVK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTmust be created before resources of the same types without those flags. -
descriptorBufferImageLayoutIgnoredindicates that the implementation will ignoreimageLayoutinVkDescriptorImageInfowhen calling vkGetDescriptorEXT. -
descriptorBufferPushDescriptorsindicates that the implementation supports using push descriptors with descriptor buffers.
If the VkPhysicalDeviceDescriptorBufferFeaturesEXT 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 VkPhysicalDeviceDescriptorBufferFeaturesEXT, 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.
The VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT structure is
defined as:
// Provided by VK_EXT_pageable_device_local_memory
typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 pageableDeviceLocalMemory;
} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
pageableDeviceLocalMemoryindicates that the implementation supports pageable device-local memory and may transparently move device-local memory allocations to host-local memory to better share device-local memory with other applications.
If the VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT 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 VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, 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.
The VkPhysicalDeviceMultiDrawFeaturesEXT structure is defined as:
// Provided by VK_EXT_multi_draw
typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 multiDraw;
} VkPhysicalDeviceMultiDrawFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
multiDrawindicates that the implementation supports vkCmdDrawMultiEXT and vkCmdDrawMultiIndexedEXT.
If the VkPhysicalDeviceMultiDrawFeaturesEXT 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 VkPhysicalDeviceMultiDrawFeaturesEXT, 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.
The VkPhysicalDeviceRayTracingMotionBlurFeaturesNV structure is
defined as:
// Provided by VK_NV_ray_tracing_motion_blur
typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingMotionBlur;
VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect;
} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
rayTracingMotionBlurindicates whether the implementation supports the motion blur feature. -
rayTracingMotionBlurPipelineTraceRaysIndirectindicates whether the implementation supports indirect ray tracing commands with the motion blur feature enabled.
If the VkPhysicalDeviceRayTracingMotionBlurFeaturesNV 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 VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, 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.
The VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV structure
is defined as:
// Provided by VK_NV_ray_tracing_linear_swept_spheres
typedef struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 spheres;
VkBool32 linearSweptSpheres;
} VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
spheresindicates whether the implementation supports sphere primitives in ray tracing. -
linearSweptSpheresindicates whether the implementation supports linear swept sphere primitives in ray tracing.
If the VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV 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 VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV, 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.
The VkPhysicalDeviceOpacityMicromapFeaturesEXT structure is defined
as:
// Provided by VK_EXT_opacity_micromap
typedef struct VkPhysicalDeviceOpacityMicromapFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 micromap;
VkBool32 micromapCaptureReplay;
VkBool32 micromapHostCommands;
} VkPhysicalDeviceOpacityMicromapFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
micromapindicates whether the implementation supports the micromap array feature. -
micromapCaptureReplayindicates whether the implementation supports capture and replay of addresses for micromap arrays. -
micromapHostCommandsindicates whether the implementation supports host side micromap array commands.
If the VkPhysicalDeviceOpacityMicromapFeaturesEXT 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 VkPhysicalDeviceOpacityMicromapFeaturesEXT, 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.
The VkPhysicalDeviceDisplacementMicromapFeaturesNV structure is
defined as:
// Provided by VK_NV_displacement_micromap
typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 displacementMicromap;
} VkPhysicalDeviceDisplacementMicromapFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
displacementMicromapindicates whether the implementation supports the displacement micromap feature.
If the VkPhysicalDeviceDisplacementMicromapFeaturesNV 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 VkPhysicalDeviceDisplacementMicromapFeaturesNV, 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.
The VkPhysicalDeviceRayTracingValidationFeaturesNV structure is
defined as:
// Provided by VK_NV_ray_tracing_validation
typedef struct VkPhysicalDeviceRayTracingValidationFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingValidation;
} VkPhysicalDeviceRayTracingValidationFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
rayTracingValidationindicates whether the implementation supports the ray tracing validation feature.
If the VkPhysicalDeviceRayTracingValidationFeaturesNV 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 VkPhysicalDeviceRayTracingValidationFeaturesNV, 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.
The VkPhysicalDeviceSubpassShadingFeaturesHUAWEI structure is defined
as:
// Provided by VK_HUAWEI_subpass_shading
typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 subpassShading;
} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
subpassShadingspecifies whether subpass shading is supported.
If the VkPhysicalDeviceSubpassShadingFeaturesHUAWEI 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 VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, 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.
The VkPhysicalDeviceExternalMemoryRDMAFeaturesNV structure is defined
as:
// Provided by VK_NV_external_memory_rdma
typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 externalMemoryRDMA;
} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
externalMemoryRDMAindicates whether the implementation has support for theVK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NVmemory property and theVK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NVexternal memory handle type.
If the VkPhysicalDeviceExternalMemoryRDMAFeaturesNV 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 VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, 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.
The VkPhysicalDevicePresentIdFeaturesKHR structure is defined as:
// Provided by VK_KHR_present_id
typedef struct VkPhysicalDevicePresentIdFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 presentId;
} VkPhysicalDevicePresentIdFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
presentIdindicates that the implementation supports specifying present ID values in theVkPresentIdKHRextension to theVkPresentInfoKHRstruct.
If the VkPhysicalDevicePresentIdFeaturesKHR 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 VkPhysicalDevicePresentIdFeaturesKHR, 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.
The VkPhysicalDevicePresentWaitFeaturesKHR structure is defined as:
// Provided by VK_KHR_present_wait
typedef struct VkPhysicalDevicePresentWaitFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 presentWait;
} VkPhysicalDevicePresentWaitFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
presentWaitindicates that the implementation supportsvkWaitForPresentKHR.
If the VkPhysicalDevicePresentWaitFeaturesKHR 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 VkPhysicalDevicePresentWaitFeaturesKHR, 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.
The VkPhysicalDeviceHostImageCopyFeatures structure is defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceHostImageCopyFeatures {
VkStructureType sType;
void* pNext;
VkBool32 hostImageCopy;
} VkPhysicalDeviceHostImageCopyFeatures;
or the equivalent
// Provided by VK_EXT_host_image_copy
typedef VkPhysicalDeviceHostImageCopyFeatures VkPhysicalDeviceHostImageCopyFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
hostImageCopyindicates that the implementation supports copying from host memory to images using the vkCopyMemoryToImage command, copying from images to host memory using the vkCopyImageToMemory command, and copying between images using the vkCopyImageToImage command.
If the VkPhysicalDeviceHostImageCopyFeatures 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 VkPhysicalDeviceHostImageCopyFeatures, 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.
The VkPhysicalDevicePresentBarrierFeaturesNV structure is defined as:
// Provided by VK_NV_present_barrier
typedef struct VkPhysicalDevicePresentBarrierFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 presentBarrier;
} VkPhysicalDevicePresentBarrierFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
presentBarrierindicates that the implementation supports the present barrier feature.
If the VkPhysicalDevicePresentBarrierFeaturesNV 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 VkPhysicalDevicePresentBarrierFeaturesNV, 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.
The VkPhysicalDeviceShaderIntegerDotProductFeatures structure is
defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderIntegerDotProduct;
} VkPhysicalDeviceShaderIntegerDotProductFeatures;
or the equivalent
// Provided by VK_KHR_shader_integer_dot_product
typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderIntegerDotProductFeatures 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 VkPhysicalDeviceShaderIntegerDotProductFeatures, 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.
The VkPhysicalDeviceMaintenance4Features structure is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceMaintenance4Features {
VkStructureType sType;
void* pNext;
VkBool32 maintenance4;
} VkPhysicalDeviceMaintenance4Features;
or the equivalent
// Provided by VK_KHR_maintenance4
typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
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 VkPhysicalDeviceMaintenance4Features 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 VkPhysicalDeviceMaintenance4Features, 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.
The VkPhysicalDeviceMaintenance5Features structure is defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceMaintenance5Features {
VkStructureType sType;
void* pNext;
VkBool32 maintenance5;
} VkPhysicalDeviceMaintenance5Features;
or the equivalent
// Provided by VK_KHR_maintenance5
typedef VkPhysicalDeviceMaintenance5Features VkPhysicalDeviceMaintenance5FeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
maintenance5indicates that the implementation supports the following:-
The ability to expose support for the optional format
VK_FORMAT_A1B5G5R5_UNORM_PACK16. -
The ability to expose support for the optional format
VK_FORMAT_A8_UNORM. -
A property to indicate that multisample coverage operations are performed after sample counting in EarlyFragmentTests mode.
-
Creating a
VkBufferViewwith a subset of the associatedVkBufferusage using VkBufferUsageFlags2CreateInfo. -
A new function vkCmdBindIndexBuffer2, allowing a range of memory to be bound as an index buffer.
-
vkGetDeviceProcAddr will return
NULLfor function pointers of core functions for versions higher than the version requested by the application. -
vkCmdBindVertexBuffers2 supports using
VK_WHOLE_SIZEin thepSizesparameter. -
If
PointSizeis not written, a default value of1.0is used for the size of points. -
VkShaderModuleCreateInfo can be added as a chained structure to pipeline creation via VkPipelineShaderStageCreateInfo, rather than having to create a shader module.
-
A function vkGetRenderingAreaGranularity to query the optimal render area for a dynamic rendering instance.
-
A property to indicate that depth/stencil texturing operations with
VK_COMPONENT_SWIZZLE_ONEhave defined behavior. -
vkGetDeviceImageSubresourceLayout allows an application to perform a vkGetImageSubresourceLayout query without having to create an image.
-
VK_REMAINING_ARRAY_LAYERSas thelayerCountmember of VkImageSubresourceLayers. -
A property to indicate whether
PointSizecontrols the final rasterization of polygons if polygon mode isVK_POLYGON_MODE_POINT. -
Two properties to indicate the non-strict line rasterization algorithm used.
-
Two new flags words VkPipelineCreateFlagBits2 and VkBufferUsageFlagBits2.
-
Physical-device-level functions can now be called with any value in the valid range for a type beyond the defined enumerants, such that applications can avoid checking individual features, extensions, or versions before querying supported properties of a particular enumerant.
-
Copies between images of any type are allowed, with 1D images treated as 2D images with a height of
1.
-
If the VkPhysicalDeviceMaintenance5Features 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 VkPhysicalDeviceMaintenance5Features, 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.
The VkPhysicalDeviceMaintenance6Features structure is defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceMaintenance6Features {
VkStructureType sType;
void* pNext;
VkBool32 maintenance6;
} VkPhysicalDeviceMaintenance6Features;
or the equivalent
// Provided by VK_KHR_maintenance6
typedef VkPhysicalDeviceMaintenance6Features VkPhysicalDeviceMaintenance6FeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
maintenance6indicates that the implementation supports the following:-
VK_NULL_HANDLE can be used when binding an index buffer
-
VkBindMemoryStatus can be included in the
pNextchain of the VkBindBufferMemoryInfo and VkBindImageMemoryInfo structures, enabling applications to retrieve VkResult values for individual memory binding operations. -
VkPhysicalDeviceMaintenance6Properties::
blockTexelViewCompatibleMultipleLayersproperty to indicate that the implementation supports creating image views withVK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BITwhere thelayerCountmember ofsubresourceRangeis greater than1. -
VkPhysicalDeviceMaintenance6Properties::
maxCombinedImageSamplerDescriptorCountproperty which indicates the maximum descriptor size required for any format that requires a sampler Y′CBCR conversion supported by the implementation. -
A VkPhysicalDeviceMaintenance6Properties::
fragmentShadingRateClampCombinerInputsproperty which indicates whether the implementation clamps the inputs to fragment shading rate combiner operations.
-
If the VkPhysicalDeviceMaintenance6Features 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 VkPhysicalDeviceMaintenance6Features, 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.
The VkPhysicalDeviceMaintenance7FeaturesKHR structure is defined as:
// Provided by VK_KHR_maintenance7
typedef struct VkPhysicalDeviceMaintenance7FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 maintenance7;
} VkPhysicalDeviceMaintenance7FeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
maintenance7indicates that the implementation supports the following:-
The
VK_RENDERING_CONTENTS_INLINE_BIT_KHRandVK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHRflags can be used to record commands in render pass instances both inline and in secondary command buffers executed with vkCmdExecuteCommands for dynamic rendering and legacy render passes respectively. -
Querying information regarding the underlying devices in environments where the Vulkan implementation is provided through layered implementations. This is done by chaining VkPhysicalDeviceLayeredApiPropertiesListKHR to VkPhysicalDeviceProperties2.
-
New limits which indicate the maximum total count of dynamic uniform buffers and dynamic storage buffers that can be included in a pipeline layout.
-
32-bit timestamp queries must wrap on overflow
-
A property that indicates whether a fragment shading rate attachment can have a size that is too small to cover a specified render area.
-
A property that indicates support for writing to one aspect of a depth/stencil attachment without performing a read-modify-write operation on the other aspect
-
If the VkPhysicalDeviceMaintenance7FeaturesKHR 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 VkPhysicalDeviceMaintenance7FeaturesKHR, 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.
The VkPhysicalDeviceMaintenance8FeaturesKHR structure is defined as:
// Provided by VK_KHR_maintenance8
typedef struct VkPhysicalDeviceMaintenance8FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 maintenance8;
} VkPhysicalDeviceMaintenance8FeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.-
maintenance8indicates that the implementation supports the following: -
Allow copies between depth/stencil and “matching” color attachments
-
Allow
dstCacheinvkMergePipelineCachesto be implicitly synchronized. -
Require src/dst sync scopes to work when doing queue family ownership transfers
-
Support
Offset(as an alternative toConstOffset) image operand in texture sampling and fetch operations -
Use the SPIR-V definition of OpSRem and OpSMod, making these operations produce well-defined results for negative operands
-
Loosen layer restrictions when blitting from 3D images to other image types
-
Add space for an additional 64 access flags for use with VkMemoryBarrier2, VkBufferMemoryBarrier2, and VkImageMemoryBarrier2
-
If the VkPhysicalDeviceMaintenance8FeaturesKHR 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 VkPhysicalDeviceMaintenance8FeaturesKHR, 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.
The VkPhysicalDeviceDynamicRenderingFeatures structure is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceDynamicRenderingFeatures {
VkStructureType sType;
void* pNext;
VkBool32 dynamicRendering;
} VkPhysicalDeviceDynamicRenderingFeatures;
or the equivalent
// Provided by VK_KHR_dynamic_rendering
typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
dynamicRenderingspecifies that the implementation supports dynamic render pass instances using the vkCmdBeginRendering command.
If the VkPhysicalDeviceDynamicRenderingFeatures 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 VkPhysicalDeviceDynamicRenderingFeatures, 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.
The VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT structure is defined
as:
// Provided by VK_EXT_rgba10x6_formats
typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 formatRgba10x6WithoutYCbCrSampler;
} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
formatRgba10x6WithoutYCbCrSamplerindicates thatVK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16can be used with aVkImageViewwithsubresourceRange.aspectMaskequal toVK_IMAGE_ASPECT_COLOR_BITwithout a sampler Y′CBCR conversion enabled.
If the VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT 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 VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, 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.
The VkPhysicalDevicePipelineRobustnessFeatures structure is defined
as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDevicePipelineRobustnessFeatures {
VkStructureType sType;
void* pNext;
VkBool32 pipelineRobustness;
} VkPhysicalDevicePipelineRobustnessFeatures;
or the equivalent
// Provided by VK_EXT_pipeline_robustness
typedef VkPhysicalDevicePipelineRobustnessFeatures VkPhysicalDevicePipelineRobustnessFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
|
Enabling the |
If the VkPhysicalDevicePipelineRobustnessFeatures 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 VkPhysicalDevicePipelineRobustnessFeatures, 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.
The VkPhysicalDeviceImageViewMinLodFeaturesEXT structure is defined
as:
// Provided by VK_EXT_image_view_min_lod
typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 minLod;
} VkPhysicalDeviceImageViewMinLodFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
minLodindicates whether the implementation supports clamping the minimum LOD value during Image Level(s) Selection, Texel Gathering and Integer Texel Coordinate Operations with a given VkImageView by VkImageViewMinLodCreateInfoEXT::minLod.
If the VkPhysicalDeviceImageViewMinLodFeaturesEXT 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 VkPhysicalDeviceImageViewMinLodFeaturesEXT, 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.
The VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
structure is defined as:
// Provided by VK_EXT_rasterization_order_attachment_access
typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 rasterizationOrderColorAttachmentAccess;
VkBool32 rasterizationOrderDepthAttachmentAccess;
VkBool32 rasterizationOrderStencilAttachmentAccess;
} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
or the equivalent
// Provided by VK_ARM_rasterization_order_attachment_access
typedef VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
rasterizationOrderColorAttachmentAccessindicates that rasterization order access to color and input attachments is supported by the implementation. -
rasterizationOrderDepthAttachmentAccessindicates that rasterization order access to the depth aspect of depth/stencil and input attachments is supported by the implementation. -
rasterizationOrderStencilAttachmentAccessindicates that rasterization order access to the stencil aspect of depth/stencil and input attachments is supported by the implementation.
If the VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT 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 VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, 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.
The VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT structure is
defined as:
// Provided by VK_EXT_subpass_merge_feedback
typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 subpassMergeFeedback;
} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
subpassMergeFeedbackindicates whether the implementation supports feedback of subpass merging.
If the VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT 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 VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, 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.
The VkPhysicalDeviceLinearColorAttachmentFeaturesNV structure is
defined as:
// Provided by VK_NV_linear_color_attachment
typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 linearColorAttachment;
} VkPhysicalDeviceLinearColorAttachmentFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
linearColorAttachmentindicates whether the implementation supports renderable Linear Color Attachment
If the VkPhysicalDeviceLinearColorAttachmentFeaturesNV 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 VkPhysicalDeviceLinearColorAttachmentFeaturesNV, 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.
The VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT structure
is defined as:
// Provided by VK_EXT_attachment_feedback_loop_layout
typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 attachmentFeedbackLoopLayout;
} VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
attachmentFeedbackLoopLayoutindicates whether the implementation supports usingVK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTimage layout for images created withVK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT.
The VkPhysicalDeviceNestedCommandBufferFeaturesEXT structure is
defined as:
// Provided by VK_EXT_nested_command_buffer
typedef struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 nestedCommandBuffer;
VkBool32 nestedCommandBufferRendering;
VkBool32 nestedCommandBufferSimultaneousUse;
} VkPhysicalDeviceNestedCommandBufferFeaturesEXT;
This structure describes the following features:
-
nestedCommandBufferindicates the implementation supports nested command buffers, which allows Secondary Command Buffers to execute other Secondary Command Buffers. -
nestedCommandBufferRenderingindicates that it is valid to call vkCmdExecuteCommands inside a Secondary Command Buffer recorded withVK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT. -
nestedCommandBufferSimultaneousUseindicates that the implementation supports nested command buffers with command buffers that are recorded withVK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT.
If the VkPhysicalDeviceNestedCommandBufferFeaturesEXT 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 VkPhysicalDeviceNestedCommandBufferFeaturesEXT, 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.
The VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT structure is
defined as:
// Provided by VK_EXT_graphics_pipeline_library
typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 graphicsPipelineLibrary;
} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
graphicsPipelineLibraryindicates that the implementation supports graphics pipeline libraries.
If the VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT 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 VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, 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.
The VkPhysicalDevicePipelineBinaryFeaturesKHR structure is defined as:
// Provided by VK_KHR_pipeline_binary
typedef struct VkPhysicalDevicePipelineBinaryFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 pipelineBinaries;
} VkPhysicalDevicePipelineBinaryFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
pipelineBinariesindicates that the implementation supports Pipeline Binaries.
If the VkPhysicalDevicePipelineBinaryFeaturesKHR 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 VkPhysicalDevicePipelineBinaryFeaturesKHR, 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.
The VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
structure is defined as:
// Provided by VK_EXT_multisampled_render_to_single_sampled
typedef struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 multisampledRenderToSingleSampled;
} VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
multisampledRenderToSingleSampledindicates that the implementation supports multisampled rendering to single-sampled render pass attachments.
If the VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT 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 VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, 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.
The VkPhysicalDeviceImage2DViewOf3DFeaturesEXT structure is defined
as:
// Provided by VK_EXT_image_2d_view_of_3d
typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 image2DViewOf3D;
VkBool32 sampler2DViewOf3D;
} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
image2DViewOf3Dindicates that the implementation supports using a 2D view of a 3D image in a descriptor of typeVK_DESCRIPTOR_TYPE_STORAGE_IMAGEif the image is created usingVK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT. -
sampler2DViewOf3Dindicates that the implementation supports using a 2D view of a 3D image in a descriptor of typeVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEorVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERif the image is created usingVK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT.
If the VkPhysicalDeviceImage2DViewOf3DFeaturesEXT 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 VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, 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.
The VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT structure is
defined as:
// Provided by VK_EXT_image_sliced_view_of_3d
typedef struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 imageSlicedViewOf3D;
} VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
The members of the VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
structure describe the following features:
-
imageSlicedViewOf3Dindicates that the implementation supports using a sliced view of a 3D image in a descriptor of typeVK_DESCRIPTOR_TYPE_STORAGE_IMAGEby using a VkImageViewSlicedCreateInfoEXT structure when creating the view.
If the VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT 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 VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT, 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.
The VkPhysicalDeviceImageCompressionControlFeaturesEXT structure is
defined as:
// Provided by VK_EXT_image_compression_control
typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 imageCompressionControl;
} VkPhysicalDeviceImageCompressionControlFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
imageCompressionControlindicates that the implementation supports providing controls for image compression at image creation time.
If the VkPhysicalDeviceImageCompressionControlFeaturesEXT 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 VkPhysicalDeviceImageCompressionControlFeaturesEXT, 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.
The VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
structure is defined as:
// Provided by VK_EXT_image_compression_control_swapchain
typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 imageCompressionControlSwapchain;
} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
imageCompressionControlSwapchainindicates that the implementation supports controlling image controls per swapchain and querying image compression properties per surface.
If the VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT 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 VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, 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.
The VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR structure is
defined as:
// Provided by VK_KHR_ray_tracing_position_fetch
typedef struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingPositionFetch;
} VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
rayTracingPositionFetchindicates that the implementation supports fetching the object space vertex positions of a hit triangle.
If the VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR 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 VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, 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.
The VkPhysicalDeviceShaderFloatControls2Features structure is defined
as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceShaderFloatControls2Features {
VkStructureType sType;
void* pNext;
VkBool32 shaderFloatControls2;
} VkPhysicalDeviceShaderFloatControls2Features;
or the equivalent
// Provided by VK_KHR_shader_float_controls2
typedef VkPhysicalDeviceShaderFloatControls2Features VkPhysicalDeviceShaderFloatControls2FeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderFloatControls2Features 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 VkPhysicalDeviceShaderFloatControls2Features, 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.
The VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
structure is defined as:
// Provided by VK_AMD_shader_early_and_late_fragment_tests
typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
VkStructureType sType;
void* pNext;
VkBool32 shaderEarlyAndLateFragmentTests;
} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderEarlyAndLateFragmentTestsindicates whether the implementation supports theEarlyAndLateFragmentTestsAMDExecutionMode.
If the VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD 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 VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, 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.
The VkPhysicalDeviceAntiLagFeaturesAMD structure is defined as:
// Provided by VK_AMD_anti_lag
typedef struct VkPhysicalDeviceAntiLagFeaturesAMD {
VkStructureType sType;
void* pNext;
VkBool32 antiLag;
} VkPhysicalDeviceAntiLagFeaturesAMD;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
antiLagindicates whether the implementation supports AMD Radeonâ„¢ Anti-Lag functionality. TheantiLagfeature only supports a single GPU and must not be enabled if VkDeviceGroupDeviceCreateInfo::physicalDeviceCountis greater than 1.
If the VkPhysicalDeviceAntiLagFeaturesAMD 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 VkPhysicalDeviceAntiLagFeaturesAMD, 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.
The VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT structure is defined
as:
// Provided by VK_EXT_non_seamless_cube_map
typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 nonSeamlessCubeMap;
} VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
nonSeamlessCubeMapindicates that the implementation supportsVK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT.
If the VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT 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 VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, 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.
The VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT structure is
defined as:
// Provided by VK_EXT_shader_module_identifier
typedef struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderModuleIdentifier;
} VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderModuleIdentifierindicates whether the implementation supports querying an identifier of a VkShaderModule or VkShaderModuleCreateInfo structure, and creating pipelines from identifiers only.
If the VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT 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 VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, 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.
The VkPhysicalDeviceTilePropertiesFeaturesQCOM structure is defined
as:
// Provided by VK_QCOM_tile_properties
typedef struct VkPhysicalDeviceTilePropertiesFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 tileProperties;
} VkPhysicalDeviceTilePropertiesFeaturesQCOM;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
tilePropertiesindicates that the implementation supports queries for returning tile properties.
If the VkPhysicalDeviceTilePropertiesFeaturesQCOM 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 VkPhysicalDeviceTilePropertiesFeaturesQCOM, 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.
The VkPhysicalDeviceImageProcessingFeaturesQCOM structure is defined
as:
// Provided by VK_QCOM_image_processing
typedef struct VkPhysicalDeviceImageProcessingFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 textureSampleWeighted;
VkBool32 textureBoxFilter;
VkBool32 textureBlockMatch;
} VkPhysicalDeviceImageProcessingFeaturesQCOM;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
textureSampleWeightedindicates that the implementation supports shader modules that declare theTextureSampleWeightedQCOMcapability. -
textureBoxFilterindicates that the implementation supports shader modules that declare theTextureBoxFilterQCOMcapability. -
textureBlockMatchindicates that the implementation supports shader modules that declare theTextureBlockMatchQCOMcapability.
If the VkPhysicalDeviceImageProcessingFeaturesQCOM 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 VkPhysicalDeviceImageProcessingFeaturesQCOM, 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.
The VkPhysicalDeviceImageProcessing2FeaturesQCOM structure is defined
as:
// Provided by VK_QCOM_image_processing2
typedef struct VkPhysicalDeviceImageProcessing2FeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 textureBlockMatch2;
} VkPhysicalDeviceImageProcessing2FeaturesQCOM;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
textureBlockMatch2indicates that the implementation supports shader modules that declare theTextureBlockMatch2QCOMcapability.
If the VkPhysicalDeviceImageProcessing2FeaturesQCOM 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 VkPhysicalDeviceImageProcessing2FeaturesQCOM, 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.
The VkPhysicalDeviceDepthClampZeroOneFeaturesKHR structure is defined
as:
// Provided by VK_KHR_depth_clamp_zero_one
typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 depthClampZeroOne;
} VkPhysicalDeviceDepthClampZeroOneFeaturesKHR;
or the equivalent
// Provided by VK_EXT_depth_clamp_zero_one
typedef VkPhysicalDeviceDepthClampZeroOneFeaturesKHR VkPhysicalDeviceDepthClampZeroOneFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
depthClampZeroOneindicates that the implementation supports clamping the depth to a range of0to1.
If the VkPhysicalDeviceDepthClampZeroOneFeaturesKHR 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 VkPhysicalDeviceDepthClampZeroOneFeaturesKHR, 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.
The VkPhysicalDeviceShaderTileImageFeaturesEXT structure is defined
as:
// Provided by VK_EXT_shader_tile_image
typedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderTileImageColorReadAccess;
VkBool32 shaderTileImageDepthReadAccess;
VkBool32 shaderTileImageStencilReadAccess;
} VkPhysicalDeviceShaderTileImageFeaturesEXT;
The members of the VkPhysicalDeviceShaderTileImageFeaturesEXT
structure describe the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderTileImageColorReadAccessindicates that the implementation supports theTileImageColorReadAccessEXTSPIR-V capability. -
shaderTileImageDepthReadAccessindicates that the implementation supports theTileImageDepthReadAccessEXTSPIR-V capability. -
shaderTileImageStencilReadAccessindicates that the implementation supports theTileImageStencilReadAccessEXTSPIR-V capability.
If the VkPhysicalDeviceShaderTileImageFeaturesEXT 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 VkPhysicalDeviceShaderTileImageFeaturesEXT, 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.
The VkPhysicalDeviceDepthBiasControlFeaturesEXT structure is defined
as:
// Provided by VK_EXT_depth_bias_control
typedef struct VkPhysicalDeviceDepthBiasControlFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthBiasControl;
VkBool32 leastRepresentableValueForceUnormRepresentation;
VkBool32 floatRepresentation;
VkBool32 depthBiasExact;
} VkPhysicalDeviceDepthBiasControlFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
depthBiasControlindicates whether the implementation supports thevkCmdSetDepthBias2EXTcommand and theVkDepthBiasRepresentationInfoEXTstructure. -
leastRepresentableValueForceUnormRepresentationindicates whether the implementation supports using theVK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXTdepth bias representation. -
floatRepresentationindicates whether the implementation supports using theVK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXTdepth bias representation. -
depthBiasExactindicates whether the implementation supports forcing depth bias to not be scaled to ensure a minimum resolvable difference usingVkDepthBiasRepresentationInfoEXT::depthBiasExact.
The VkPhysicalDeviceAddressBindingReportFeaturesEXT structure is
defined as:
// Provided by VK_EXT_device_address_binding_report
typedef struct VkPhysicalDeviceAddressBindingReportFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 reportAddressBinding;
} VkPhysicalDeviceAddressBindingReportFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
reportAddressBindingindicates whether this implementation supports reporting the binding of GPU virtual address ranges to Vulkan objects.
If the VkPhysicalDeviceAddressBindingReportFeaturesEXT 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 VkPhysicalDeviceAddressBindingReportFeaturesEXT, 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.
The VkPhysicalDeviceOpticalFlowFeaturesNV structure is defined as:
// Provided by VK_NV_optical_flow
typedef struct VkPhysicalDeviceOpticalFlowFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 opticalFlow;
} VkPhysicalDeviceOpticalFlowFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
opticalFlowindicates whether the implementation supports optical flow.
If the VkPhysicalDeviceOpticalFlowFeaturesNV 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 VkPhysicalDeviceOpticalFlowFeaturesNV, 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.
The VkPhysicalDeviceFaultFeaturesEXT structure is defined as:
// Provided by VK_EXT_device_fault
typedef struct VkPhysicalDeviceFaultFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 deviceFault;
VkBool32 deviceFaultVendorBinary;
} VkPhysicalDeviceFaultFeaturesEXT;
The members of the VkPhysicalDeviceFaultFeaturesEXT structure describe
the following features:
-
deviceFaultindicates that the implementation supports the reporting of device fault information. -
deviceFaultVendorBinaryindicates that the implementation supports the generation of vendor-specific binary crash dumps. These may provide additional information when imported into vendor-specific external tools.
If the VkPhysicalDeviceFaultFeaturesEXT 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 VkPhysicalDeviceFaultFeaturesEXT, 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.
The VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT structure
is defined as:
// Provided by VK_EXT_pipeline_library_group_handles
typedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 pipelineLibraryGroupHandles;
} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
This structure describes the following features:
If the VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT 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 VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, 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.
The VkPhysicalDeviceShaderObjectFeaturesEXT structure is defined as:
// Provided by VK_EXT_shader_object
typedef struct VkPhysicalDeviceShaderObjectFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderObject;
} VkPhysicalDeviceShaderObjectFeaturesEXT;
This structure describes the following feature:
-
shaderObjectindicates whether the implementation supports shader objects.
If the VkPhysicalDeviceShaderObjectFeaturesEXT 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 VkPhysicalDeviceShaderObjectFeaturesEXT, 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.
The VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM structure is defined
as:
// Provided by VK_ARM_shader_core_builtins
typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM {
VkStructureType sType;
void* pNext;
VkBool32 shaderCoreBuiltins;
} VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderCoreBuiltinsindicates whether the implementation supports the SPIR-VCoreBuiltinsARMcapability.
If the VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM 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 VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, 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.
The VkPhysicalDeviceFrameBoundaryFeaturesEXT structure is defined as:
// Provided by VK_EXT_frame_boundary
typedef struct VkPhysicalDeviceFrameBoundaryFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 frameBoundary;
} VkPhysicalDeviceFrameBoundaryFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
frameBoundaryindicates whether the implementation supports frame boundary information.
If the VkPhysicalDeviceFrameBoundaryFeaturesEXT 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 VkPhysicalDeviceFrameBoundaryFeaturesEXT, 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.
The VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT structure is
defined as:
// Provided by VK_EXT_swapchain_maintenance1
typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 swapchainMaintenance1;
} VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
swapchainMaintenance1indicates that the implementation supports the following:-
VkSwapchainPresentFenceInfoEXT, specifying a fence that is signaled when the resources associated with a present operation can be safely destroyed.
-
VkSwapchainPresentModesCreateInfoEXT and VkSwapchainPresentModeInfoEXT, allowing the swapchain to switch present modes without a need for recreation.
-
VkSwapchainPresentScalingCreateInfoEXT, specifying the scaling behavior of the swapchain in presence of window resizing.
-
The
VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXTflag, allowing the implementation to defer the allocation of swapchain image memory until first acquisition. -
vkReleaseSwapchainImagesEXT, allowing acquired swapchain images to be released without presenting them.
-
If the VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT 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 VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, 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.
The VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT structure is
defined as:
// Provided by VK_EXT_present_mode_fifo_latest_ready
typedef struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 presentModeFifoLatestReady;
} VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
presentModeFifoLatestReadyspecifies whether the implementation supports theVK_PRESENT_MODE_FIFO_LATEST_READY_EXTpresent mode.
If the VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT 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 VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT, 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.
The VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
structure is defined as:
// Provided by VK_EXT_dynamic_rendering_unused_attachments
typedef struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 dynamicRenderingUnusedAttachments;
} VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
dynamicRenderingUnusedAttachmentsindicates that the implementation supports binding graphics pipelines within a render pass instance where any pipeline VkPipelineRenderingCreateInfo::pColorAttachmentFormatselement with a format other thanVK_FORMAT_UNDEFINEDis allowed with a corresponding VkRenderingInfo::pColorAttachmentselement with animageViewequal to VK_NULL_HANDLE, or any pipeline VkPipelineRenderingCreateInfo::pColorAttachmentFormatselement with aVK_FORMAT_UNDEFINEDformat is allowed with a corresponding VkRenderingInfo::pColorAttachmentselement with a non-VK_NULL_HANDLEimageView. Also a VkPipelineRenderingCreateInfo::depthAttachmentFormatother thanVK_FORMAT_UNDEFINEDis allowed with a VK_NULL_HANDLE VkRenderingInfo::pDepthAttachment, or a VkPipelineRenderingCreateInfo::depthAttachmentFormatofVK_FORMAT_UNDEFINEDis allowed with a non-VK_NULL_HANDLE VkRenderingInfo::pDepthAttachment. Also a VkPipelineRenderingCreateInfo::stencilAttachmentFormatother thanVK_FORMAT_UNDEFINEDis allowed with a VK_NULL_HANDLE VkRenderingInfo::pStencilAttachment, or a VkPipelineRenderingCreateInfo::stencilAttachmentFormatofVK_FORMAT_UNDEFINEDis allowed with a non-VK_NULL_HANDLE VkRenderingInfo::pStencilAttachment. Any writes to a VkRenderingInfo::pColorAttachments, VkRenderingInfo::pDepthAttachment, or VkRenderingInfo::pStencilAttachmentwith VK_NULL_HANDLE are discarded.
If the VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT 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 VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT, 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.
The VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV structure is
defined as:
// Provided by VK_NV_ray_tracing_invocation_reorder
typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingInvocationReorder;
} VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
rayTracingInvocationReorderindicates that the implementation supportsSPV_NV_shader_invocation_reorder.
If the VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV 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 VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, 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.
The VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV structure is
defined as:
// Provided by VK_NV_extended_sparse_address_space
typedef struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 extendedSparseAddressSpace;
} VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
extendedSparseAddressSpaceindicates that the implementation supports allowing certain usages of sparse memory resources to exceedVkPhysicalDeviceLimits::sparseAddressSpaceSize. See VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.
If the VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV 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 VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV, 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.
The VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM structure is
defined as:
// Provided by VK_QCOM_multiview_per_view_viewports
typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 multiviewPerViewViewports;
} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
This structure describes the following features:
If the VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM 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 VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, 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.
The VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM structure
is defined as:
// Provided by VK_QCOM_multiview_per_view_render_areas
typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 multiviewPerViewRenderAreas;
} VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
This structure describes the following features:
If the VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM 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 VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM, 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.
The VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI structure is
defined as:
// Provided by VK_HUAWEI_cluster_culling_shader
typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 clustercullingShader;
VkBool32 multiviewClusterCullingShader;
} VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
clustercullingShaderspecifies whether cluster culling shader is supported. -
multiviewClusterCullingShaderspecifies whether multiview is supported.
If the VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 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 VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI, 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.
To query whether a Cluster Culling Shader supports the per-cluster shading
rate feature, include a
VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI structure in the
pNext chain of the
VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI structure.
This structure is defined as:
// Provided by VK_HUAWEI_cluster_culling_shader
typedef struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 clusterShadingRate;
} VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
clusterShadingRatespecifies whether per-cluster shading rates is supported.
The VkPhysicalDeviceHdrVividFeaturesHUAWEI structure is defined as:
// Provided by VK_HUAWEI_hdr_vivid
typedef struct VkPhysicalDeviceHdrVividFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 hdrVivid;
} VkPhysicalDeviceHdrVividFeaturesHUAWEI;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceHdrVividFeaturesHUAWEI 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 VkPhysicalDeviceHdrVividFeaturesHUAWEI, 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.
The VkPhysicalDeviceShaderEnqueueFeaturesAMDX structure is defined as:
// Provided by VK_AMDX_shader_enqueue
typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX {
VkStructureType sType;
void* pNext;
VkBool32 shaderEnqueue;
VkBool32 shaderMeshEnqueue;
} VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
This structure describes the following feature:
-
shaderEnqueueindicates whether the implementation supports execution graphs. -
shaderMeshEnqueueindicates whether the implementation supports mesh nodes in execution graphs.
If the VkPhysicalDeviceShaderEnqueueFeaturesAMDX 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 VkPhysicalDeviceShaderEnqueueFeaturesAMDX, 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.
The VkPhysicalDeviceCubicClampFeaturesQCOM structure is defined as:
// Provided by VK_QCOM_filter_cubic_clamp
typedef struct VkPhysicalDeviceCubicClampFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 cubicRangeClamp;
} VkPhysicalDeviceCubicClampFeaturesQCOM;
This structure describes the following features:
-
cubicRangeClampindicates that the implementation supports cubic filtering in combination with a texel range clamp.
If the VkPhysicalDeviceCubicClampFeaturesQCOM 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 VkPhysicalDeviceCubicClampFeaturesQCOM, 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.
The VkPhysicalDeviceYcbcrDegammaFeaturesQCOM structure is defined as:
// Provided by VK_QCOM_ycbcr_degamma
typedef struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 ycbcrDegamma;
} VkPhysicalDeviceYcbcrDegammaFeaturesQCOM;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
ycbcrDegammaindicates whether the implementation supports Y′CBCR degamma.
If the VkPhysicalDeviceYcbcrDegammaFeaturesQCOM 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 VkPhysicalDeviceYcbcrDegammaFeaturesQCOM, 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.
The VkPhysicalDeviceCubicWeightsFeaturesQCOM structure is defined as:
// Provided by VK_QCOM_filter_cubic_weights
typedef struct VkPhysicalDeviceCubicWeightsFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 selectableCubicWeights;
} VkPhysicalDeviceCubicWeightsFeaturesQCOM;
This structure describes the following feature:
If the VkPhysicalDeviceCubicWeightsFeaturesQCOM 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 VkPhysicalDeviceCubicWeightsFeaturesQCOM, 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.
The VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV structure
is defined as:
// Provided by VK_NV_descriptor_pool_overallocation
typedef struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 descriptorPoolOverallocation;
} VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
descriptorPoolOverallocationindicates that the implementation allows the application to opt into descriptor pool overallocation by creating the descriptor pool withVK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NVand/orVK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NVflags.
If the VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV 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 VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV, 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.
The VkPhysicalDevicePerStageDescriptorSetFeaturesNV structure is
defined as:
// Provided by VK_NV_per_stage_descriptor_set
typedef struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 perStageDescriptorSet;
VkBool32 dynamicPipelineLayout;
} VkPhysicalDevicePerStageDescriptorSetFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
perStageDescriptorSetindicates that the implementation allows theVK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NVdescriptor set layout creation flag to be used so the bindings are specified per-stage rather than across all stages. -
dynamicPipelineLayoutindicates the implementation allows thelayoutmember of VkBindDescriptorSetsInfo, VkPushConstantsInfo, VkPushDescriptorSetInfo, VkPushDescriptorSetWithTemplateInfo, VkSetDescriptorBufferOffsetsInfoEXT and VkBindDescriptorBufferEmbeddedSamplersInfoEXT to be VK_NULL_HANDLE and VkPipelineLayoutCreateInfo can be chained off those structures'pNextinstead.
If the VkPhysicalDevicePerStageDescriptorSetFeaturesNV 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 VkPhysicalDevicePerStageDescriptorSetFeaturesNV, 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.
The VkPhysicalDeviceCudaKernelLaunchFeaturesNV structure is defined
as:
// Provided by VK_NV_cuda_kernel_launch
typedef struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cudaKernelLaunchFeatures;
} VkPhysicalDeviceCudaKernelLaunchFeaturesNV;
This structure describes the following features:
If the VkPhysicalDeviceCudaKernelLaunchFeaturesNV 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 VkPhysicalDeviceCudaKernelLaunchFeaturesNV, 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.
The VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR structure is
defined as:
// Provided by VK_KHR_shader_maximal_reconvergence
typedef struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderMaximalReconvergence;
} VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderMaximalReconvergencespecifies whether the implementation supports the shader execution modeMaximallyReconvergesKHR
If the VkPhysicalDevicePrivateDataFeaturesEXT 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 VkPhysicalDevicePrivateDataFeaturesEXT, 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.
The VkPhysicalDeviceExternalFormatResolveFeaturesANDROID structure is
defined as:
// Provided by VK_ANDROID_external_format_resolve
typedef struct VkPhysicalDeviceExternalFormatResolveFeaturesANDROID {
VkStructureType sType;
void* pNext;
VkBool32 externalFormatResolve;
} VkPhysicalDeviceExternalFormatResolveFeaturesANDROID;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
externalFormatResolvespecifies whether external format resolves are supported.
If the VkPhysicalDeviceExternalFormatResolveFeaturesANDROID 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 VkPhysicalDeviceExternalFormatResolveFeaturesANDROID, 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.
The VkPhysicalDeviceSchedulingControlsFeaturesARM structure is defined
as:
// Provided by VK_ARM_scheduling_controls
typedef struct VkPhysicalDeviceSchedulingControlsFeaturesARM {
VkStructureType sType;
void* pNext;
VkBool32 schedulingControls;
} VkPhysicalDeviceSchedulingControlsFeaturesARM;
This structure describes the following features:
If the VkPhysicalDeviceSchedulingControlsFeaturesARM 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 VkPhysicalDeviceSchedulingControlsFeaturesARM, 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.
The VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG structure is
defined as:
// Provided by VK_IMG_relaxed_line_rasterization
typedef struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
VkStructureType sType;
void* pNext;
VkBool32 relaxedLineRasterization;
} VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
relaxedLineRasterizationindicates that the implementation supports relaxed line rasterization control.
If the VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG 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 VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG, 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.
The VkPhysicalDeviceRenderPassStripedFeaturesARM structure is defined
as:
// Provided by VK_ARM_render_pass_striped
typedef struct VkPhysicalDeviceRenderPassStripedFeaturesARM {
VkStructureType sType;
void* pNext;
VkBool32 renderPassStriped;
} VkPhysicalDeviceRenderPassStripedFeaturesARM;
The members of the VkPhysicalDeviceRenderPassStripedFeaturesARM
structure describe the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
renderPassStripedindicates that striped rendering is supported by the implementation.
If the VkPhysicalDeviceRenderPassStripedFeaturesARM 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 VkPhysicalDeviceRenderPassStripedFeaturesARM, 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.
The VkPhysicalDeviceShaderSubgroupRotateFeatures structure is defined
as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceShaderSubgroupRotateFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderSubgroupRotate;
VkBool32 shaderSubgroupRotateClustered;
} VkPhysicalDeviceShaderSubgroupRotateFeatures;
or the equivalent
// Provided by VK_KHR_shader_subgroup_rotate
typedef VkPhysicalDeviceShaderSubgroupRotateFeatures VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderSubgroupRotateFeatures 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 VkPhysicalDeviceShaderSubgroupRotateFeatures, 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.
The VkPhysicalDeviceShaderExpectAssumeFeatures structure is defined
as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceShaderExpectAssumeFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderExpectAssume;
} VkPhysicalDeviceShaderExpectAssumeFeatures;
or the equivalent
// Provided by VK_KHR_shader_expect_assume
typedef VkPhysicalDeviceShaderExpectAssumeFeatures VkPhysicalDeviceShaderExpectAssumeFeaturesKHR;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderExpectAssumeFeatures 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 VkPhysicalDeviceShaderExpectAssumeFeatures, 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.
The VkPhysicalDeviceDynamicRenderingLocalReadFeatures structure is
defined as:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures {
VkStructureType sType;
void* pNext;
VkBool32 dynamicRenderingLocalRead;
} VkPhysicalDeviceDynamicRenderingLocalReadFeatures;
or the equivalent
// Provided by VK_KHR_dynamic_rendering_local_read
typedef VkPhysicalDeviceDynamicRenderingLocalReadFeatures VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
-
dynamicRenderingLocalReadspecifies that the implementation supports local reads inside dynamic render pass instances using the vkCmdBeginRendering command.
If the VkPhysicalDeviceDynamicRenderingLocalReadFeatures 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 VkPhysicalDeviceDynamicRenderingLocalReadFeatures, 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.
The VkPhysicalDeviceShaderQuadControlFeaturesKHR structure is defined
as:
// Provided by VK_KHR_shader_quad_control
typedef struct VkPhysicalDeviceShaderQuadControlFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderQuadControl;
} VkPhysicalDeviceShaderQuadControlFeaturesKHR;
This structure describes the following features:
If the VkPhysicalDeviceShaderQuadControlFeaturesKHR 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 VkPhysicalDeviceShaderQuadControlFeaturesKHR, 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.
The VkPhysicalDeviceMapMemoryPlacedFeaturesEXT structure is defined
as:
// Provided by VK_EXT_map_memory_placed
typedef struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 memoryMapPlaced;
VkBool32 memoryMapRangePlaced;
VkBool32 memoryUnmapReserve;
} VkPhysicalDeviceMapMemoryPlacedFeaturesEXT;
This structure describes the following features:
-
memoryMapPlacedindicates that the implementation supports placing memory maps at application-specified virtual addresses. -
memoryMapRangePlacedindicates that the implementation supports placing memory maps of a subrange of a memory object at application-specified virtual addresses. -
memoryUnmapReserveindicates that the implementation supports leaving the memory range reserved when unmapping a memory object.
If the VkPhysicalDeviceMapMemoryPlacedFeaturesEXT 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 VkPhysicalDeviceMapMemoryPlacedFeaturesEXT, 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.
The VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV structure is defined as:
// Provided by VK_NV_shader_atomic_float16_vector
typedef struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 shaderFloat16VectorAtomics;
} VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV 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 VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV, 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.
The VkPhysicalDevicePipelineOpacityMicromapFeaturesARM structure is defined as:
// Provided by VK_ARM_pipeline_opacity_micromap
typedef struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM {
VkStructureType sType;
void* pNext;
VkBool32 pipelineOpacityMicromap;
} VkPhysicalDevicePipelineOpacityMicromapFeaturesARM;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure.
If the VkPhysicalDevicePipelineOpacityMicromapFeaturesARM 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 VkPhysicalDevicePipelineOpacityMicromapFeaturesARM, 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.
The VkPhysicalDeviceRawAccessChainsFeaturesNV structure is defined as:
// Provided by VK_NV_raw_access_chains
typedef struct VkPhysicalDeviceRawAccessChainsFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 shaderRawAccessChains;
} VkPhysicalDeviceRawAccessChainsFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderRawAccessChainsspecifies whether shader modules can declare theRawAccessChainsNVcapability.
If the VkPhysicalDeviceRawAccessChainsFeaturesNV 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 VkPhysicalDeviceRawAccessChainsFeaturesNV, 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.
The VkPhysicalDeviceCommandBufferInheritanceFeaturesNV structure is
defined as:
// Provided by VK_NV_command_buffer_inheritance
typedef struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 commandBufferInheritance;
} VkPhysicalDeviceCommandBufferInheritanceFeaturesNV;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
commandBufferInheritanceindicates that command buffers executed in a queue inherit graphics and compute state from the previously executed command buffer in that queue.
If the VkPhysicalDeviceCommandBufferInheritanceFeaturesNV 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 VkPhysicalDeviceCommandBufferInheritanceFeaturesNV, 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.
The VkPhysicalDeviceImageAlignmentControlFeaturesMESA structure is
defined as:
// Provided by VK_MESA_image_alignment_control
typedef struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA {
VkStructureType sType;
void* pNext;
VkBool32 imageAlignmentControl;
} VkPhysicalDeviceImageAlignmentControlFeaturesMESA;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
imageAlignmentControlspecifies that VkImageAlignmentControlCreateInfoMESA can be chained in VkImageCreateInfo
If the VkPhysicalDeviceImageAlignmentControlFeaturesMESA 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 VkPhysicalDeviceImageAlignmentControlFeaturesMESA, 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.
The VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT structure is
defined as:
// Provided by VK_EXT_shader_replicated_composites
typedef struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderReplicatedComposites;
} VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderReplicatedCompositesspecifies whether shader modules can declare theReplicatedCompositesEXTcapability.
If the VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT 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 VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT, 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.
The VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR
structure is defined as:
// Provided by VK_KHR_shader_relaxed_extended_instruction
typedef struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderRelaxedExtendedInstruction;
} VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
shaderRelaxedExtendedInstructionspecifies whether the implementation supports SPIR-V modules that use theSPV_KHR_relaxed_extended_instructionextension.
If the VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR 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 VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR, 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.
The VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT structure is
defined as:
// Provided by VK_EXT_vertex_attribute_robustness
typedef struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 vertexAttributeRobustness;
} VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT;
This structure describes the following feature:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
vertexAttributeRobustnessindicates that vertex shaders can read vertex attribute locations that have no vertex attribute description and the value returned is (0,0,0,0) or (0,0,0,1).
If the VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT 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 VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT, 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.
The VkPhysicalDevicePresentMeteringFeaturesNV structure is defined as:
// Provided by VK_NV_present_metering
typedef struct VkPhysicalDevicePresentMeteringFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 presentMetering;
} VkPhysicalDevicePresentMeteringFeaturesNV;
This structure describes the following features:
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
presentMeteringindicates whether the implementation supports present metering capability.
If the VkPhysicalDevicePresentMeteringFeaturesNV 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 VkPhysicalDevicePresentMeteringFeaturesNV, 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.
Feature Requirements
All Vulkan graphics implementations must support the following features:
-
If Vulkan 1.0 is supported,
robustBufferAccessmust be supported ifVK_KHR_portability_subsetis not advertised -
If Vulkan 1.1 is supported, the following features must be supported:
-
storageBuffer16BitAccessifuniformAndStorageBuffer16BitAccessis supported -
shaderDrawParametersifVK_KHR_shader_draw_parametersis supported
-
-
If Vulkan 1.2 is supported, the following features must be supported:
-
samplerMirrorClampToEdgeifVK_KHR_sampler_mirror_clamp_to_edgeis supported -
drawIndirectCountifVK_KHR_draw_indirect_countis supported -
storageBuffer8BitAccessifuniformAndStorageBuffer8BitAccessis supported -
shaderInt64ifshaderSharedInt64AtomicsorshaderBufferInt64Atomicsare supported -
descriptorIndexingifVK_EXT_descriptor_indexingis supported -
shaderSampledImageArrayDynamicIndexingifdescriptorIndexingis supported -
shaderStorageBufferArrayDynamicIndexingifdescriptorIndexingis supported -
shaderUniformTexelBufferArrayDynamicIndexingifdescriptorIndexingis supported -
shaderStorageTexelBufferArrayDynamicIndexingifdescriptorIndexingis supported -
shaderSampledImageArrayNonUniformIndexingifdescriptorIndexingis supported -
shaderStorageBufferArrayNonUniformIndexingifdescriptorIndexingis supported -
shaderUniformTexelBufferArrayNonUniformIndexingifdescriptorIndexingis supported -
descriptorBindingSampledImageUpdateAfterBindifdescriptorIndexingis supported -
descriptorBindingStorageImageUpdateAfterBindifdescriptorIndexingis supported -
descriptorBindingStorageBufferUpdateAfterBindifdescriptorIndexingis supported -
descriptorBindingUniformTexelBufferUpdateAfterBindifdescriptorIndexingis supported -
descriptorBindingStorageTexelBufferUpdateAfterBindifdescriptorIndexingis supported -
descriptorBindingUpdateUnusedWhilePendingifdescriptorIndexingis supported -
descriptorBindingPartiallyBoundifdescriptorIndexingis supported -
runtimeDescriptorArrayifdescriptorIndexingis supported -
shaderOutputViewportIndexifVK_EXT_shader_viewport_index_layeris supported -
shaderOutputLayerifVK_EXT_shader_viewport_index_layeris supported -
samplerFilterMinmaxifVK_EXT_sampler_filter_minmaxis supported
-
If Vulkan 1.3 is supported, the following features must be supported:
-
If Vulkan 1.4 is supported, the following features must be supported:
-
pipelineProtectedAccessifprotectedMemoryis supported
-
If
VK_KHR_dynamic_renderingis supported,dynamicRenderingmust be supported -
If
VK_KHR_multiviewis supported,multiviewmust be supported -
If
VK_KHR_shader_float16_int8is supported, at least one ofshaderFloat16orshaderInt8must be supported -
If
VK_KHR_16bit_storageis supported,storageBuffer16BitAccessmust be supported -
If
VK_KHR_imageless_framebufferis supported,imagelessFramebuffermust be supported -
If
VK_KHR_performance_queryis supported,performanceCounterQueryPoolsmust be supported -
If
VK_KHR_variable_pointersis supported,variablePointersStorageBuffermust be supported -
If
VK_KHR_sampler_ycbcr_conversionis supported,samplerYcbcrConversionmust be supported -
If
VK_KHR_shader_subgroup_extended_typesis supported,shaderSubgroupExtendedTypesmust be supported -
If
VK_KHR_8bit_storageis supported,storageBuffer8BitAccessmust be supported -
If
VK_KHR_shader_atomic_int64is supported,shaderBufferInt64Atomicsmust be supported -
If
VK_KHR_shader_clockis supported,shaderSubgroupClockmust be supported -
If
VK_KHR_global_priorityis supported,globalPriorityQuerymust be supported -
If
VK_KHR_timeline_semaphoreis supported,timelineSemaphoremust be supported -
If
VK_KHR_vulkan_memory_modelis supported,vulkanMemoryModelmust be supported -
If
VK_KHR_shader_terminate_invocationis supported,shaderTerminateInvocationmust be supported -
If
VK_KHR_fragment_shading_rateis supported,pipelineFragmentShadingRatemust be supported -
If
VK_KHR_dynamic_rendering_local_readis supported,dynamicRenderingLocalReadmust be supported -
If
VK_KHR_shader_quad_controlis supported,shaderQuadControlmust be supported -
If
VK_KHR_separate_depth_stencil_layoutsis supported,separateDepthStencilLayoutsmust be supported -
If
VK_KHR_present_waitis supported,presentWaitmust be supported -
If
VK_KHR_uniform_buffer_standard_layoutis supported,uniformBufferStandardLayoutmust be supported -
If
VK_KHR_buffer_device_addressis supported,bufferDeviceAddressmust be supported -
If
VK_KHR_pipeline_executable_propertiesis supported,pipelineExecutableInfomust be supported -
If
VK_KHR_shader_integer_dot_productis supported,shaderIntegerDotProductmust be supported -
If
VK_KHR_present_idis supported,presentIdmust be supported -
If
VK_KHR_synchronization2is supported,synchronization2must be supported -
If
VK_KHR_fragment_shader_barycentricis supported,fragmentShaderBarycentricmust be supported -
If
VK_KHR_shader_subgroup_uniform_control_flowis supported,shaderSubgroupUniformControlFlowmust be supported -
If
VK_KHR_zero_initialize_workgroup_memoryis supported,shaderZeroInitializeWorkgroupMemorymust be supported -
If
VK_KHR_workgroup_memory_explicit_layoutis supported,workgroupMemoryExplicitLayoutmust be supported -
If
VK_KHR_ray_tracing_maintenance1is supported,rayTracingMaintenance1must be supported -
If
VK_KHR_maintenance4is supported,maintenance4must be supported -
If
VK_KHR_shader_subgroup_rotateis supported,shaderSubgroupRotatemust be supported -
If
VK_KHR_shader_maximal_reconvergenceis supported,shaderMaximalReconvergencemust be supported -
If
VK_KHR_maintenance5is supported,maintenance5must be supported -
If
VK_KHR_ray_tracing_position_fetchis supported,rayTracingPositionFetchmust be supported -
If
VK_KHR_pipeline_binaryis supported,pipelineBinariesmust be supported -
If
VK_KHR_cooperative_matrixis supported,cooperativeMatrixmust be supported -
If
VK_KHR_compute_shader_derivativesis supported,computeDerivativeGroupLinearmust be supported -
If
VK_KHR_video_encode_av1is supported,videoEncodeAV1must be supported -
If
VK_KHR_video_maintenance1is supported,videoMaintenance1must be supported -
If
VK_KHR_vertex_attribute_divisoris supported,vertexAttributeInstanceRateDivisormust be supported -
If
VK_KHR_shader_float_controls2is supported,shaderFloatControls2must be supported -
If
VK_KHR_index_type_uint8is supported,indexTypeUint8must be supported -
If
VK_KHR_line_rasterizationis supported, at least one ofrectangularLines,bresenhamLines,smoothLines,stippledRectangularLines,stippledBresenhamLines, orstippledSmoothLinesmust be supported -
If
VK_KHR_shader_expect_assumeis supported,shaderExpectAssumemust be supported -
If
VK_KHR_maintenance6is supported,maintenance6must be supported -
If
VK_KHR_video_encode_quantization_mapis supported,videoEncodeQuantizationMapmust be supported -
If
VK_KHR_shader_relaxed_extended_instructionis supported,shaderRelaxedExtendedInstructionmust be supported -
If
VK_KHR_maintenance7is supported,maintenance7must be supported -
If
VK_KHR_maintenance8is supported,maintenance8must be supported -
If
VK_KHR_video_maintenance2is supported,videoMaintenance2must be supported -
If
VK_KHR_depth_clamp_zero_oneis supported,depthClampZeroOnemust be supported -
If
VK_EXT_transform_feedbackis supported,transformFeedbackmust be supported -
If
VK_NV_corner_sampled_imageis supported,cornerSampledImagemust be supported -
If
VK_EXT_texture_compression_astc_hdris supported,textureCompressionASTC_HDRmust be supported -
If
VK_EXT_pipeline_robustnessis supported,pipelineRobustnessmust be supported -
If
VK_EXT_conditional_renderingis supported,conditionalRenderingmust be supported -
If
VK_EXT_depth_clip_enableis supported,depthClipEnablemust be supported -
If
VK_IMG_relaxed_line_rasterizationis supported,relaxedLineRasterizationmust be supported -
If
VK_AMDX_shader_enqueueis supported, the following features must be supported:-
shaderMeshEnqueueifVK_EXT_mesh_shaderis supported
-
If
VK_EXT_inline_uniform_blockis supported, the following features must be supported:-
descriptorBindingInlineUniformBlockUpdateAfterBindifVK_EXT_descriptor_indexingis supported, or if Vulkan 1.2 anddescriptorIndexingare supported
-
If
VK_NV_shader_sm_builtinsis supported,shaderSMBuiltinsmust be supported -
If
VK_EXT_descriptor_indexingis supported, the following features must be supported: -
If
VK_NV_shading_rate_imageis supported,shadingRateImagemust be supported -
If
VK_NV_representative_fragment_testis supported,representativeFragmentTestmust be supported -
If
VK_EXT_vertex_attribute_divisoris supported,vertexAttributeInstanceRateDivisormust be supported -
If
VK_NV_compute_shader_derivativesis supported, at least one ofcomputeDerivativeGroupQuadsorcomputeDerivativeGroupLinearmust be supported -
If
VK_NV_mesh_shaderis supported,VkPhysicalDeviceMeshShaderFeaturesNV::meshShadermust be supported -
If
VK_NV_shader_image_footprintis supported,imageFootprintmust be supported -
If
VK_NV_scissor_exclusiveis supported,exclusiveScissormust be supported -
If
VK_INTEL_shader_integer_functions2is supported,shaderIntegerFunctions2must be supported -
If
VK_EXT_fragment_density_mapis supported,fragmentDensityMapmust be supported -
If
VK_EXT_scalar_block_layoutis supported,scalarBlockLayoutmust be supported -
If
VK_EXT_subgroup_size_controlis supported, the following features must be supported: -
If
VK_AMD_device_coherent_memoryis supported,deviceCoherentMemorymust be supported -
If
VK_EXT_shader_image_atomic_int64is supported, the following features must be supported: -
If
VK_EXT_memory_priorityis supported,memoryPrioritymust be supported -
If
VK_NV_dedicated_allocation_image_aliasingis supported,dedicatedAllocationImageAliasingmust be supported -
If
VK_EXT_buffer_device_addressis supported,VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::bufferDeviceAddressmust be supported -
If
VK_NV_cooperative_matrixis supported,VkPhysicalDeviceCooperativeMatrixFeaturesNV::cooperativeMatrixmust be supported -
If
VK_NV_coverage_reduction_modeis supported,coverageReductionModemust be supported -
If
VK_EXT_fragment_shader_interlockis supported, at least one offragmentShaderSampleInterlock,fragmentShaderPixelInterlock, orfragmentShaderShadingRateInterlockmust be supported -
If
VK_EXT_ycbcr_image_arraysis supported,ycbcrImageArraysmust be supported -
If
VK_EXT_provoking_vertexis supported,provokingVertexLastmust be supported -
If
VK_EXT_line_rasterizationis supported, at least one ofrectangularLines,bresenhamLines,smoothLines,stippledRectangularLines,stippledBresenhamLines, orstippledSmoothLinesmust be supported -
If
VK_EXT_shader_atomic_floatis supported, the following features must be supported:-
at least one of
shaderBufferFloat32Atomics,shaderBufferFloat32AtomicAdd,shaderBufferFloat64Atomics,shaderBufferFloat64AtomicAdd,shaderSharedFloat32Atomics,shaderSharedFloat32AtomicAdd,shaderSharedFloat64Atomics,shaderSharedFloat64AtomicAdd,shaderImageFloat32Atomics, orshaderImageFloat32AtomicAdd -
shaderImageFloat32AtomicsifsparseImageFloat32Atomicsis supported -
shaderImageFloat32AtomicAddifsparseImageFloat32AtomicAddis supported
-
-
If
VK_EXT_host_query_resetis supported,hostQueryResetmust be supported -
If
VK_EXT_index_type_uint8is supported,indexTypeUint8must be supported -
If
VK_EXT_extended_dynamic_stateis supported,extendedDynamicStatemust be supported -
If
VK_EXT_host_image_copyis supported,hostImageCopymust be supported -
If
VK_EXT_map_memory_placedis supported,memoryMapPlacedmust be supported -
If
VK_EXT_shader_atomic_float2is supported, the following features must be supported:-
at least one of
shaderBufferFloat16Atomics,shaderBufferFloat16AtomicAdd,shaderBufferFloat16AtomicMinMax,shaderBufferFloat32AtomicMinMax,shaderBufferFloat64AtomicMinMax,shaderSharedFloat16Atomics,shaderSharedFloat16AtomicAdd,shaderSharedFloat16AtomicMinMax,shaderSharedFloat32AtomicMinMax,shaderSharedFloat64AtomicMinMax, orshaderImageFloat32AtomicMinMax -
shaderImageFloat32AtomicMinMaxifsparseImageFloat32AtomicMinMaxis supported
-
-
If
VK_EXT_swapchain_maintenance1is supported,swapchainMaintenance1must be supported -
If
VK_EXT_shader_demote_to_helper_invocationis supported,shaderDemoteToHelperInvocationmust be supported -
If
VK_NV_device_generated_commandsis supported,VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV::deviceGeneratedCommandsmust be supported -
If
VK_NV_inherited_viewport_scissoris supported,inheritedViewportScissor2Dmust be supported -
If
VK_EXT_texel_buffer_alignmentis supported,texelBufferAlignmentmust be supported -
If
VK_EXT_depth_bias_controlis supported,depthBiasControlmust be supported -
If
VK_EXT_device_memory_reportis supported,deviceMemoryReportmust be supported -
If
VK_EXT_robustness2is supported, at least one ofrobustBufferAccess2,robustImageAccess2, ornullDescriptormust be supported -
If
VK_EXT_custom_border_coloris supported,customBorderColorsmust be supported -
If
VK_NV_present_barrieris supported,presentBarriermust be supported -
If
VK_EXT_private_datais supported,privateDatamust be supported -
If
VK_EXT_pipeline_creation_cache_controlis supported,pipelineCreationCacheControlmust be supported -
If
VK_NV_device_diagnostics_configis supported,diagnosticsConfigmust be supported -
If
VK_NV_cuda_kernel_launchis supported,cudaKernelLaunchFeaturesmust be supported -
If
VK_EXT_descriptor_bufferis supported,descriptorBuffermust be supported -
If
VK_EXT_graphics_pipeline_libraryis supported,graphicsPipelineLibrarymust be supported -
If
VK_AMD_shader_early_and_late_fragment_testsis supported,shaderEarlyAndLateFragmentTestsmust be supported -
If
VK_NV_fragment_shading_rate_enumsis supported,fragmentShadingRateEnumsmust be supported -
If
VK_NV_ray_tracing_motion_bluris supported,rayTracingMotionBlurmust be supported -
If
VK_EXT_ycbcr_2plane_444_formatsis supported,ycbcr2plane444Formatsmust be supported -
If
VK_EXT_fragment_density_map2is supported,fragmentDensityMapDeferredmust be supported -
If
VK_EXT_image_robustnessis supported,robustImageAccessmust be supported -
If
VK_EXT_image_compression_controlis supported,imageCompressionControlmust be supported -
If
VK_EXT_attachment_feedback_loop_layoutis supported,attachmentFeedbackLoopLayoutmust be supported -
If
VK_EXT_4444_formatsis supported,formatA4R4G4B4must be supported -
If
VK_EXT_device_faultis supported,deviceFaultmust be supported -
If
VK_EXT_rgba10x6_formatsis supported,formatRgba10x6WithoutYCbCrSamplermust be supported -
If
VK_VALVE_mutable_descriptor_typeis supported,mutableDescriptorTypemust be supported -
If
VK_EXT_vertex_input_dynamic_stateis supported,vertexInputDynamicStatemust be supported -
If
VK_EXT_device_address_binding_reportis supported,reportAddressBindingmust be supported -
If
VK_EXT_depth_clip_controlis supported,depthClipControlmust be supported -
If
VK_EXT_primitive_topology_list_restartis supported,primitiveTopologyListRestartmust be supported -
If
VK_EXT_present_mode_fifo_latest_readyis supported,presentModeFifoLatestReadymust be supported -
If
VK_HUAWEI_subpass_shadingis supported,subpassShadingmust be supported -
If
VK_HUAWEI_invocation_maskis supported,invocationMaskmust be supported -
If
VK_NV_external_memory_rdmais supported,externalMemoryRDMAmust be supported -
If
VK_EXT_pipeline_propertiesis supported,pipelinePropertiesIdentifiermust be supported -
If
VK_EXT_frame_boundaryis supported,frameBoundarymust be supported -
If
VK_EXT_multisampled_render_to_single_sampledis supported,multisampledRenderToSingleSampledmust be supported -
If
VK_EXT_extended_dynamic_state2is supported,extendedDynamicState2must be supported -
If
VK_EXT_color_write_enableis supported,colorWriteEnablemust be supported -
If
VK_EXT_primitives_generated_queryis supported,primitivesGeneratedQuerymust be supported -
If
VK_EXT_global_priority_queryis supported,globalPriorityQuerymust be supported -
If
VK_EXT_image_view_min_lodis supported,minLodmust be supported -
If
VK_EXT_multi_drawis supported,multiDrawmust be supported -
If
VK_EXT_image_2d_view_of_3dis supported,image2DViewOf3Dmust be supported -
If
VK_EXT_shader_tile_imageis supported,shaderTileImageColorReadAccessmust be supported -
If
VK_EXT_opacity_micromapis supported,micromapmust be supported -
If
VK_NV_displacement_micromapis supported,displacementMicromapmust be supported -
If
VK_HUAWEI_cluster_culling_shaderis supported,clustercullingShadermust be supported -
If
VK_EXT_border_color_swizzleis supported,borderColorSwizzlemust be supported -
If
VK_EXT_pageable_device_local_memoryis supported,pageableDeviceLocalMemorymust be supported -
If
VK_ARM_scheduling_controlsis supported,schedulingControlsmust be supported -
If
VK_EXT_image_sliced_view_of_3dis supported,imageSlicedViewOf3Dmust be supported -
If
VK_VALVE_descriptor_set_host_mappingis supported,descriptorSetHostMappingmust be supported -
If
VK_EXT_depth_clamp_zero_oneis supported,depthClampZeroOnemust be supported -
If
VK_EXT_non_seamless_cube_mapis supported,nonSeamlessCubeMapmust be supported -
If
VK_ARM_render_pass_stripedis supported,renderPassStripedmust be supported -
If
VK_QCOM_fragment_density_map_offsetis supported,fragmentDensityMapOffsetmust be supported -
If
VK_NV_copy_memory_indirectis supported,indirectCopymust be supported -
If
VK_NV_memory_decompressionis supported,memoryDecompressionmust be supported -
If
VK_NV_device_generated_commands_computeis supported,deviceGeneratedComputemust be supported -
If
VK_NV_ray_tracing_linear_swept_spheresis supported, at least one ofspheresorlinearSweptSpheresmust be supported -
If
VK_NV_linear_color_attachmentis supported,linearColorAttachmentmust be supported -
If
VK_EXT_image_compression_control_swapchainis supported,imageCompressionControlSwapchainmust be supported -
If
VK_QCOM_image_processingis supported, the following features must be supported: -
If
VK_EXT_nested_command_bufferis supported,nestedCommandBuffermust be supported -
If
VK_EXT_extended_dynamic_state3is supported, the following features must be supported:-
tessellationShaderifextendedDynamicState3TessellationDomainOriginis supported -
depthClampifextendedDynamicState3DepthClampEnableis supported -
fillModeNonSolidifextendedDynamicState3PolygonModeis supported -
alphaToOneifextendedDynamicState3AlphaToOneEnableis supported -
logicOpifextendedDynamicState3LogicOpEnableis supported -
geometryStreamsifVK_EXT_transform_feedbackandextendedDynamicState3RasterizationStreamare supported
-
-
If
VK_EXT_subpass_merge_feedbackis supported,subpassMergeFeedbackmust be supported -
If
VK_EXT_shader_module_identifieris supported,shaderModuleIdentifiermust be supported -
If
VK_NV_optical_flowis supported,opticalFlowmust be supported -
If
VK_EXT_legacy_ditheringis supported,legacyDitheringmust be supported -
If
VK_EXT_pipeline_protected_accessis supported,pipelineProtectedAccessmust be supported -
If
VK_ANDROID_external_format_resolveis supported,externalFormatResolvemust be supported -
If
VK_AMD_anti_lagis supported,antiLagmust be supported -
If
VK_EXT_shader_objectis supported,shaderObjectmust be supported -
If
VK_QCOM_tile_propertiesis supported,tilePropertiesmust be supported -
If
VK_SEC_amigo_profilingis supported,amigoProfilingmust be supported -
If
VK_QCOM_multiview_per_view_viewportsis supported,multiviewPerViewViewportsmust be supported -
If
VK_NV_ray_tracing_invocation_reorderis supported,rayTracingInvocationReordermust be supported -
If
VK_NV_cooperative_vectoris supported,cooperativeVectormust be supported -
If
VK_NV_extended_sparse_address_spaceis supported,extendedSparseAddressSpacemust be supported -
If
VK_EXT_mutable_descriptor_typeis supported,mutableDescriptorTypemust be supported -
If
VK_EXT_legacy_vertex_attributesis supported,legacyVertexAttributesmust be supported -
If
VK_ARM_shader_core_builtinsis supported,shaderCoreBuiltinsmust be supported -
If
VK_EXT_pipeline_library_group_handlesis supported,pipelineLibraryGroupHandlesmust be supported -
If
VK_EXT_dynamic_rendering_unused_attachmentsis supported,dynamicRenderingUnusedAttachmentsmust be supported -
If
VK_QCOM_multiview_per_view_render_areasis supported,multiviewPerViewRenderAreasmust be supported -
If
VK_NV_per_stage_descriptor_setis supported,perStageDescriptorSetmust be supported -
If
VK_QCOM_image_processing2is supported,textureBlockMatch2must be supported -
If
VK_QCOM_filter_cubic_weightsis supported,selectableCubicWeightsmust be supported -
If
VK_QCOM_ycbcr_degammais supported,ycbcrDegammamust be supported -
If
VK_QCOM_filter_cubic_clampis supported,cubicRangeClampmust be supported -
If
VK_EXT_attachment_feedback_loop_dynamic_stateis supported,attachmentFeedbackLoopDynamicStatemust be supported -
If
VK_QNX_external_memory_screen_bufferis supported,screenBufferImportmust be supported -
If
VK_NV_descriptor_pool_overallocationis supported,descriptorPoolOverallocationmust be supported -
If
VK_NV_raw_access_chainsis supported,shaderRawAccessChainsmust be supported -
If
VK_NV_command_buffer_inheritanceis supported,commandBufferInheritancemust be supported -
If
VK_NV_shader_atomic_float16_vectoris supported,shaderFloat16VectorAtomicsmust be supported -
If
VK_EXT_shader_replicated_compositesis supported,shaderReplicatedCompositesmust be supported -
If
VK_NV_ray_tracing_validationis supported,rayTracingValidationmust be supported -
If
VK_NV_cluster_acceleration_structureis supported,clusterAccelerationStructuremust be supported -
If
VK_NV_partitioned_acceleration_structureis supported,partitionedAccelerationStructuremust be supported -
If
VK_EXT_device_generated_commandsis supported,deviceGeneratedCommandsmust be supported -
If
VK_MESA_image_alignment_controlis supported,imageAlignmentControlmust be supported -
If
VK_EXT_depth_clamp_controlis supported,depthClampControlmust be supported -
If
VK_HUAWEI_hdr_vividis supported,hdrVividmust be supported -
If
VK_NV_cooperative_matrix2is supported, at least one ofcooperativeMatrixWorkgroupScope,cooperativeMatrixFlexibleDimensions,cooperativeMatrixReductions,cooperativeMatrixConversions,cooperativeMatrixPerElementOperations,cooperativeMatrixTensorAddressing, orcooperativeMatrixBlockLoadsmust be supported -
If
VK_ARM_pipeline_opacity_micromapis supported,pipelineOpacityMicromapmust be supported -
If
VK_EXT_vertex_attribute_robustnessis supported,vertexAttributeRobustnessmust be supported -
If
VK_NV_present_meteringis supported,presentMeteringmust be supported -
If
VK_KHR_acceleration_structureis supported, the following features must be supported:-
descriptorIndexingif Vulkan 1.2 is supported
-
If
VK_KHR_ray_tracing_pipelineis supported, the following features must be supported: -
If
VK_KHR_ray_queryis supported,rayQuerymust be supported -
If
VK_EXT_mesh_shaderis supported, the following features must be supported: -
VK_KHR_fragment_shading_rateif theprimitiveFragmentShadingRateMeshShaderfeature is supported. -
VK_EXT_transform_feedback, if theextendedDynamicState3RasterizationStreamfeature is supported. -
VK_EXT_conservative_rasterizationextension, if theextendedDynamicState3ConservativeRasterizationModefeature is supported. -
VK_EXT_conservative_rasterizationextension, if theextendedDynamicState3ExtraPrimitiveOverestimationSizefeature is supported. -
VK_EXT_sample_locationsextension, if theextendedDynamicState3SampleLocationsEnablefeature is supported. -
VK_EXT_blend_operation_advancedextension, if theextendedDynamicState3ColorBlendAdvancedfeature is supported. -
VK_EXT_provoking_vertex, if theextendedDynamicState3ProvokingVertexModefeature is supported. -
Vulkan 1.4 or the VK_KHR_line_rasterization extension or the VK_EXT_line_rasterization extension, if the
extendedDynamicState3LineRasterizationModefeature is supported. -
VK_KHR_line_rasterizationorVK_EXT_line_rasterizationextension, if theextendedDynamicState3LineStippleEnablefeature is supported. -
VK_EXT_depth_clip_control, if theextendedDynamicState3DepthClipNegativeOneToOnefeature is supported. -
VK_NV_clip_space_w_scalingextension, if theextendedDynamicState3ViewportWScalingEnablefeature is supported. -
VK_NV_viewport_swizzleextension, if theextendedDynamicState3ViewportSwizzlefeature is supported. -
VK_NV_fragment_coverage_to_colorextension, if theextendedDynamicState3CoverageToColorEnablefeature is supported. -
VK_NV_fragment_coverage_to_colorextension, if theextendedDynamicState3CoverageToColorLocationfeature is supported. -
VK_NV_framebuffer_mixed_samplesextension, if theextendedDynamicState3CoverageModulationModefeature is supported. -
VK_NV_framebuffer_mixed_samplesextension, if theextendedDynamicState3CoverageModulationTableEnablefeature is supported. -
VK_NV_framebuffer_mixed_samplesextension, if theextendedDynamicState3CoverageModulationTablefeature is supported. -
VK_NV_coverage_reduction_mode, if theextendedDynamicState3CoverageReductionModefeature is supported. -
VK_NV_representative_fragment_test, if theextendedDynamicState3RepresentativeFragmentTestEnablefeature is supported. -
VK_NV_shading_rate_image, if theextendedDynamicState3ShadingRateImageEnablefeature is supported. -
If Vulkan 1.4 is supported, at least one queue family is reported by vkGetPhysicalDeviceQueueFamilyProperties that includes the
VK_QUEUE_GRAPHICS_BITflag, and no additional queue families are reported that support theVK_QUEUE_TRANSFER_BITflag, thehostImageCopyfeature must be supported.
All other features defined in the Specification are optional.
Profile Features
Roadmap 2022
Implementations that claim support for the Roadmap 2022 profile must support the following features:
Roadmap 2024
Implementations that claim support for the Roadmap 2024 profile must support the following features: