45. Features
Features describe functionality which is not supported on all implementations. Features are properties of the physical device. Features are optional, and must be explicitly enabled before use. Support for features is reported and enabled on a per-feature basis.
Note
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);
-
physicalDevice
is the physical device from which to query the supported features. -
pFeatures
is a pointer to a VkPhysicalDeviceFeatures structure in which the physical device features are returned. For each feature, a value ofVK_TRUE
specifies that the feature is supported on this physical device, andVK_FALSE
specifies 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 set to 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
.
Note
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);
-
physicalDevice
is the physical device from which to query the supported features. -
pFeatures
is 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.
vkGetPhysicalDeviceFeatures2
writes each member to a boolean value
indicating whether that feature is supported.
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;
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
features
is 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 on the device 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:
-
robustBufferAccess
specifies 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
OpImageTexelPointer
and 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
OpImageTexelPointer
and 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 toOpConstantNull
are 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
::cooperativeMatrixRobustBufferAccess
feature is not enabled, then accesses usingOpCooperativeMatrixLoadNV
andOpCooperativeMatrixStoreNV
may not be bounds-checked.NoteIf a SPIR-V
OpLoad
instruction 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
robustBufferAccess2
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
robustBufferAccess2
is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple ofrobustUniformBufferAccessSizeAlignment
bytes 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 ofrobustUniformBufferAccessSizeAlignment
bytes must return zero values. -
If the access is to a storage buffer and
robustBufferAccess2
is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple ofrobustStorageBufferAccessSizeAlignment
bytes 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 ofrobustStorageBufferAccessSizeAlignment
bytes 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 ofrobustStorageBufferAccessSizeAlignment
bytes 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
robustBufferAccess2
is enabled, zero values must be returned. -
If the access is to a uniform texel buffer or storage texel buffer and
robustBufferAccess2
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
robustBufferAccess2
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
robustBufferAccess2
is enabled, out of bounds atomics must not modify any memory, and return an undefined value.
-
-
If
robustBufferAccess2
is disabled, 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
vertexBufferRangeSize
is the byte size of the memory range bound to the vertex buffer binding andbindingStride
is 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
robustBufferAccess2
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,0,1).
-
-
If
robustBufferAccess
is not enabled, applications must not perform out of bounds accesses except under the conditions enabled by thepipelineRobustness
feature .
-
-
fullDrawIndexUint32
specifies the full 32-bit range of indices is supported for indexed draw calls when using a VkIndexType ofVK_INDEX_TYPE_UINT32
.maxDrawIndexedIndexValue
is 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,maxDrawIndexedIndexValue
must be 232-1; otherwise it must be no smaller than 224-1. SeemaxDrawIndexedIndexValue
. -
imageCubeArray
specifies whether image views with a VkImageViewType ofVK_IMAGE_VIEW_TYPE_CUBE_ARRAY
can be created, and that the correspondingSampledCubeArray
andImageCubeArray
SPIR-V capabilities can be used in shader code. -
independentBlend
specifies whether theVkPipelineColorBlendAttachmentState
settings are controlled independently per-attachment. If this feature is not enabled, theVkPipelineColorBlendAttachmentState
settings for all color attachments must be identical. Otherwise, a differentVkPipelineColorBlendAttachmentState
can be provided for each bound color attachment. -
geometryShader
specifies whether geometry shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_GEOMETRY_BIT
andVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
enum values must not be used. This also specifies whether shader modules can declare theGeometry
capability. -
tessellationShader
specifies 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_INFO
enum values must not be used. This also specifies whether shader modules can declare theTessellation
capability. -
sampleRateShading
specifies whether Sample Shading and multisample interpolation are supported. If this feature is not enabled, thesampleShadingEnable
member of the VkPipelineMultisampleStateCreateInfo structure must be set toVK_FALSE
and theminSampleShading
member is ignored. This also specifies whether shader modules can declare theSampleRateShading
capability. -
dualSrcBlend
specifies 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_ALPHA
enum values must not be used as source or destination blending factors. See Dual-Source Blending. -
logicOp
specifies whether logic operations are supported. If this feature is not enabled, thelogicOpEnable
member of the VkPipelineColorBlendStateCreateInfo structure must be set toVK_FALSE
, and thelogicOp
member is ignored. -
multiDrawIndirect
specifies whether multiple draw indirect is supported. If this feature is not enabled, thedrawCount
parameter to thevkCmdDrawIndirect
andvkCmdDrawIndexedIndirect
commands must be 0 or 1. ThemaxDrawIndirectCount
member of theVkPhysicalDeviceLimits
structure must also be 1 if this feature is not supported. SeemaxDrawIndirectCount
. -
drawIndirectFirstInstance
specifies whether indirect drawing calls support thefirstInstance
parameter. If this feature is not enabled, thefirstInstance
member of allVkDrawIndirectCommand
andVkDrawIndexedIndirectCommand
structures that are provided to thevkCmdDrawIndirect
andvkCmdDrawIndexedIndirect
commands must be 0. -
depthClamp
specifies whether depth clamping is supported. If this feature is not enabled, thedepthClampEnable
member of the VkPipelineRasterizationStateCreateInfo structure must be set toVK_FALSE
. Otherwise, settingdepthClampEnable
toVK_TRUE
will enable depth clamping. -
depthBiasClamp
specifies whether depth bias clamping is supported. If this feature is not enabled, thedepthBiasClamp
member of the VkPipelineRasterizationStateCreateInfo structure must be set to 0.0 unless theVK_DYNAMIC_STATE_DEPTH_BIAS
dynamic state is enabled, and thedepthBiasClamp
parameter tovkCmdSetDepthBias
must be set to 0.0. -
fillModeNonSolid
specifies whether point and wireframe fill modes are supported. If this feature is not enabled, theVK_POLYGON_MODE_POINT
andVK_POLYGON_MODE_LINE
enum values must not be used. -
depthBounds
specifies whether depth bounds tests are supported. If this feature is not enabled, thedepthBoundsTestEnable
member of the VkPipelineDepthStencilStateCreateInfo structure must be set toVK_FALSE
. WhendepthBoundsTestEnable
is set toVK_FALSE
, theminDepthBounds
andmaxDepthBounds
members of the VkPipelineDepthStencilStateCreateInfo structure are ignored. -
wideLines
specifies whether lines with width other than 1.0 are supported. If this feature is not enabled, thelineWidth
member of the VkPipelineRasterizationStateCreateInfo structure must be set to 1.0 unless theVK_DYNAMIC_STATE_LINE_WIDTH
dynamic state is enabled, and thelineWidth
parameter tovkCmdSetLineWidth
must be set to 1.0. When this feature is supported, the range and granularity of supported line widths are indicated by thelineWidthRange
andlineWidthGranularity
members of theVkPhysicalDeviceLimits
structure, respectively. -
largePoints
specifies 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 thepointSizeRange
andpointSizeGranularity
members of theVkPhysicalDeviceLimits
structure, respectively. -
alphaToOne
specifies 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 thealphaToOneEnable
member of the VkPipelineMultisampleStateCreateInfo structure must be set toVK_FALSE
. Otherwise settingalphaToOneEnable
toVK_TRUE
will enable alpha-to-one behavior. -
multiViewport
specifies whether more than one viewport is supported. If this feature is not enabled:-
The
viewportCount
andscissorCount
members of the VkPipelineViewportStateCreateInfo structure must be set to 1. -
The
firstViewport
andviewportCount
parameters to thevkCmdSetViewport
command must be set to 0 and 1, respectively. -
The
firstScissor
andscissorCount
parameters to thevkCmdSetScissor
command must be set to 0 and 1, respectively. -
The
exclusiveScissorCount
member of the VkPipelineViewportExclusiveScissorStateCreateInfoNV structure must be set to 0 or 1. -
The
firstExclusiveScissor
andexclusiveScissorCount
parameters to thevkCmdSetExclusiveScissorNV
command must be set to 0 and 1, respectively.
-
-
samplerAnisotropy
specifies whether anisotropic filtering is supported. If this feature is not enabled, theanisotropyEnable
member of the VkSamplerCreateInfo structure must beVK_FALSE
. -
textureCompressionETC2
specifies 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_BIT
andVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
features must be supported inoptimalTilingFeatures
for 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_BLOCK
To 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_LDR
specifies 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_BIT
andVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
features must be supported inoptimalTilingFeatures
for 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_BLOCK
To 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.
-
-
textureCompressionBC
specifies 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_BIT
andVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
features must be supported inoptimalTilingFeatures
for 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_BLOCK
To 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.
-
-
occlusionQueryPrecise
specifies whether occlusion queries returning actual sample counts are supported. Occlusion queries are created in aVkQueryPool
by specifying thequeryType
ofVK_QUERY_TYPE_OCCLUSION
in the VkQueryPoolCreateInfo structure which is passed tovkCreateQueryPool
. If this feature is enabled, queries of this type can enableVK_QUERY_CONTROL_PRECISE_BIT
in theflags
parameter tovkCmdBeginQuery
. 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_BIT
is set, occlusion queries will report the actual number of samples passed. -
pipelineStatisticsQuery
specifies whether the pipeline statistics queries are supported. If this feature is not enabled, queries of typeVK_QUERY_TYPE_PIPELINE_STATISTICS
cannot be created, and none of the VkQueryPipelineStatisticFlagBits bits can be set in thepipelineStatistics
member of the VkQueryPoolCreateInfo structure. -
vertexPipelineStoresAndAtomics
specifies 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 theNonWritable
decoration (or thereadonly
memory qualifier in GLSL). -
fragmentStoresAndAtomics
specifies 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 theNonWritable
decoration (or thereadonly
memory qualifier in GLSL). -
shaderTessellationAndGeometryPointSize
specifies whether thePointSize
built-in decoration is available in the tessellation control, tessellation evaluation, and geometry shader stages. If this feature is not enabled, members decorated with thePointSize
built-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 theTessellationPointSize
capability for tessellation control and evaluation shaders, or if the shader modules can declare theGeometryPointSize
capability for geometry shaders. An implementation supporting this feature must also support one or both of thetessellationShader
orgeometryShader
features. -
shaderImageGatherExtended
specifies whether the extended set of image gather instructions are available in shader code. If this feature is not enabled, theOpImage*Gather
instructions do not support theOffset
andConstOffsets
operands. This also specifies whether shader modules can declare theImageGatherExtended
capability. -
shaderStorageImageExtendedFormats
specifies whether all the “storage image extended formats” below are supported; if this feature is supported, then theVK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
must be supported inoptimalTilingFeatures
for 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_UINT
NoteshaderStorageImageExtendedFormats
feature 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_SFLOAT
fromStorageImageExtendedFormats
SPIR-V capability, are already covered by core Vulkan mandatory format support. -
-
shaderStorageImageMultisample
specifies whether multisampled storage images are supported. If this feature is not enabled, images that are created with ausage
that includesVK_IMAGE_USAGE_STORAGE_BIT
must be created withsamples
equal toVK_SAMPLE_COUNT_1_BIT
. This also specifies whether shader modules can declare theStorageImageMultisample
andImageMSArray
capabilities. -
shaderStorageImageReadWithoutFormat
specifies whether storage images and storage texel buffers require a format qualifier to be specified when reading.shaderStorageImageReadWithoutFormat
applies only to formats listed in the storage without format list. -
shaderStorageImageWriteWithoutFormat
specifies whether storage images and storage texel buffers require a format qualifier to be specified when writing.shaderStorageImageWriteWithoutFormat
applies only to formats listed in the storage without format list. -
shaderUniformBufferArrayDynamicIndexing
specifies whether arrays of uniform buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
orVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theUniformBufferArrayDynamicIndexing
capability. -
shaderSampledImageArrayDynamicIndexing
specifies whether arrays of samplers or sampled images can be indexed by dynamically 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_IMAGE
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theSampledImageArrayDynamicIndexing
capability. -
shaderStorageBufferArrayDynamicIndexing
specifies whether arrays of storage buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theStorageBufferArrayDynamicIndexing
capability. -
shaderStorageImageArrayDynamicIndexing
specifies whether arrays of storage images can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theStorageImageArrayDynamicIndexing
capability. -
shaderClipDistance
specifies whether clip distances are supported in shader code. If this feature is not enabled, any members decorated with theClipDistance
built-in decoration must not be read from or written to in shader modules. This also specifies whether shader modules can declare theClipDistance
capability. -
shaderCullDistance
specifies whether cull distances are supported in shader code. If this feature is not enabled, any members decorated with theCullDistance
built-in decoration must not be read from or written to in shader modules. This also specifies whether shader modules can declare theCullDistance
capability. -
shaderFloat64
specifies 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 theFloat64
capability. Declaring and using 64-bit floats is enabled for all storage classes that SPIR-V allows with theFloat64
capability. -
shaderInt64
specifies 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 theInt64
capability. Declaring and using 64-bit integers is enabled for all storage classes that SPIR-V allows with theInt64
capability. -
shaderInt16
specifies 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 theInt16
capability. However, this only enables a subset of the storage classes that SPIR-V allows for theInt16
SPIR-V capability: Declaring and using 16-bit integers in thePrivate
,Workgroup
(for non-Block variables), andFunction
storage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant
,Uniform
,StorageBuffer
,Input
,Output
, andPushConstant
) is not enabled. -
shaderResourceResidency
specifies 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 theSparseResidency
capability. The feature requires at least one of thesparseResidency*
features to be supported. -
shaderResourceMinLod
specifies whether image operations specifying the minimum resource LOD are supported in shader code. If this feature is not enabled, theMinLod
image operand must not be used in shader code. This also specifies whether shader modules can declare theMinLod
capability. -
sparseBinding
specifies 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 thevkBindBufferMemory
andvkBindImageMemory
commands. In this case, buffers and images must not be created withVK_BUFFER_CREATE_SPARSE_BINDING_BIT
andVK_IMAGE_CREATE_SPARSE_BINDING_BIT
set in theflags
member of the VkBufferCreateInfo and VkImageCreateInfo structures, respectively. Otherwise resource memory can be managed as described in Sparse Resource Features. -
sparseResidencyBuffer
specifies whether the device can access partially resident buffers. If this feature is not enabled, buffers must not be created withVK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
set in theflags
member of the VkBufferCreateInfo structure. -
sparseResidencyImage2D
specifies whether the device can access partially resident 2D images with 1 sample per pixel. If this feature is not enabled, images with animageType
ofVK_IMAGE_TYPE_2D
andsamples
set toVK_SAMPLE_COUNT_1_BIT
must not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
set in theflags
member of the VkImageCreateInfo structure. -
sparseResidencyImage3D
specifies whether the device can access partially resident 3D images. If this feature is not enabled, images with animageType
ofVK_IMAGE_TYPE_3D
must not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
set in theflags
member of the VkImageCreateInfo structure. -
sparseResidency2Samples
specifies whether the physical device can access partially resident 2D images with 2 samples per pixel. If this feature is not enabled, images with animageType
ofVK_IMAGE_TYPE_2D
andsamples
set toVK_SAMPLE_COUNT_2_BIT
must not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
set in theflags
member of the VkImageCreateInfo structure. -
sparseResidency4Samples
specifies whether the physical device can access partially resident 2D images with 4 samples per pixel. If this feature is not enabled, images with animageType
ofVK_IMAGE_TYPE_2D
andsamples
set toVK_SAMPLE_COUNT_4_BIT
must not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
set in theflags
member of the VkImageCreateInfo structure. -
sparseResidency8Samples
specifies whether the physical device can access partially resident 2D images with 8 samples per pixel. If this feature is not enabled, images with animageType
ofVK_IMAGE_TYPE_2D
andsamples
set toVK_SAMPLE_COUNT_8_BIT
must not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
set in theflags
member of the VkImageCreateInfo structure. -
sparseResidency16Samples
specifies whether the physical device can access partially resident 2D images with 16 samples per pixel. If this feature is not enabled, images with animageType
ofVK_IMAGE_TYPE_2D
andsamples
set toVK_SAMPLE_COUNT_16_BIT
must not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
set in theflags
member of the VkImageCreateInfo structure. -
sparseResidencyAliased
specifies whether the physical device can correctly access data aliased into multiple locations. If this feature is not enabled, theVK_BUFFER_CREATE_SPARSE_ALIASED_BIT
andVK_IMAGE_CREATE_SPARSE_ALIASED_BIT
enum values must not be used inflags
members of the VkBufferCreateInfo and VkImageCreateInfo structures, respectively. -
variableMultisampleRate
specifies 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. -
inheritedQueries
specifies 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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
storageBuffer16BitAccess
specifies whether objects in theStorageBuffer
,ShaderRecordBufferKHR
, orPhysicalStorageBuffer
storage class with theBlock
decoration 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 theStorageBuffer16BitAccess
capability. -
uniformAndStorageBuffer16BitAccess
specifies whether objects in theUniform
storage class with theBlock
decoration 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 theUniformAndStorageBuffer16BitAccess
capability. -
storagePushConstant16
specifies whether objects in thePushConstant
storage 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 theStoragePushConstant16
capability. -
storageInputOutput16
specifies whether objects in theInput
andOutput
storage 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 theStorageInputOutput16
capability. -
multiview
specifies 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. -
multiviewGeometryShader
specifies 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. -
multiviewTessellationShader
specifies 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. -
variablePointersStorageBuffer
specifies whether the implementation supports the SPIR-VVariablePointersStorageBuffer
capability. When this feature is not enabled, shader modules must not declare theSPV_KHR_variable_pointers
extension or theVariablePointersStorageBuffer
capability. -
variablePointers
specifies whether the implementation supports the SPIR-VVariablePointers
capability. When this feature is not enabled, shader modules must not declare theVariablePointers
capability. -
protectedMemory
specifies whether protected memory is supported. -
samplerYcbcrConversion
specifies whether the implementation supports sampler Y′CBCR conversion. IfsamplerYcbcrConversion
isVK_FALSE
, sampler Y′CBCR conversion is not supported, and samplers using sampler Y′CBCR conversion must not be used. -
shaderDrawParameters
specifies whether the implementation supports the SPIR-VDrawParameters
capability. When this feature is not enabled, shader modules must not declare theSPV_KHR_shader_draw_parameters
extension or theDrawParameters
capability.
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.
VkPhysicalDeviceVulkan11Features
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
samplerMirrorClampToEdge
indicates whether the implementation supports theVK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
sampler address mode. If this feature is not enabled, theVK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
sampler address mode must not be used. -
drawIndirectCount
indicates whether the implementation supports the vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount functions. If this feature is not enabled, these functions must not be used. -
storageBuffer8BitAccess
indicates whether objects in theStorageBuffer
,ShaderRecordBufferKHR
, orPhysicalStorageBuffer
storage class with theBlock
decoration 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 theStorageBuffer8BitAccess
capability. -
uniformAndStorageBuffer8BitAccess
indicates whether objects in theUniform
storage class with theBlock
decoration 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 theUniformAndStorageBuffer8BitAccess
capability. -
storagePushConstant8
indicates whether objects in thePushConstant
storage 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 theStoragePushConstant8
capability. -
shaderBufferInt64Atomics
indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on buffers. -
shaderSharedInt64Atomics
indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on shared and payload memory. -
shaderFloat16
indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare theFloat16
capability. However, this only enables a subset of the storage classes that SPIR-V allows for theFloat16
SPIR-V capability: Declaring and using 16-bit floats in thePrivate
,Workgroup
(for non-Block variables), andFunction
storage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant
,Uniform
,StorageBuffer
,Input
,Output
, andPushConstant
) is not enabled. -
shaderInt8
indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare theInt8
capability. However, this only enables a subset of the storage classes that SPIR-V allows for theInt8
SPIR-V capability: Declaring and using 8-bit integers in thePrivate
,Workgroup
(for non-Block variables), andFunction
storage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant
,Uniform
,StorageBuffer
,Input
,Output
, andPushConstant
) is not enabled. -
descriptorIndexing
indicates whether the implementation supports the minimum set of descriptor indexing features as described in the Feature Requirements section. Enabling thedescriptorIndexing
member 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. -
shaderInputAttachmentArrayDynamicIndexing
indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theInputAttachmentArrayDynamicIndexing
capability. -
shaderUniformTexelBufferArrayDynamicIndexing
indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformTexelBufferArrayDynamicIndexing
capability. -
shaderStorageTexelBufferArrayDynamicIndexing
indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageTexelBufferArrayDynamicIndexing
capability. -
shaderUniformBufferArrayNonUniformIndexing
indicates 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_BUFFER
orVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformBufferArrayNonUniformIndexing
capability. -
shaderSampledImageArrayNonUniformIndexing
indicates 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_IMAGE
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theSampledImageArrayNonUniformIndexing
capability. -
shaderStorageBufferArrayNonUniformIndexing
indicates 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_BUFFER
orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageBufferArrayNonUniformIndexing
capability. -
shaderStorageImageArrayNonUniformIndexing
indicates 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_IMAGE
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageImageArrayNonUniformIndexing
capability. -
shaderInputAttachmentArrayNonUniformIndexing
indicates 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_ATTACHMENT
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theInputAttachmentArrayNonUniformIndexing
capability. -
shaderUniformTexelBufferArrayNonUniformIndexing
indicates 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_BUFFER
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformTexelBufferArrayNonUniformIndexing
capability. -
shaderStorageTexelBufferArrayNonUniformIndexing
indicates 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_BUFFER
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageTexelBufferArrayNonUniformIndexing
capability. -
descriptorBindingUniformBufferUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
. -
descriptorBindingSampledImageUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_SAMPLER
,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, orVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
. -
descriptorBindingStorageImageUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
. -
descriptorBindingStorageBufferUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
. -
descriptorBindingUniformTexelBufferUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
. -
descriptorBindingStorageTexelBufferUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
. -
descriptorBindingUpdateUnusedWhilePending
indicates 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_BIT
must not be used. -
descriptorBindingPartiallyBound
indicates 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_BIT
must not be used. -
descriptorBindingVariableDescriptorCount
indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled,VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
must not be used. -
runtimeDescriptorArray
indicates whether the implementation supports the SPIR-VRuntimeDescriptorArray
capability. If this feature is not enabled, descriptors must not be declared in runtime arrays. -
samplerFilterMinmax
indicates whether the implementation supports a minimum set of required formats supporting min/max filtering as defined by thefilterMinmaxSingleComponentFormats
property minimum requirements. If this feature is not enabled, then VkSamplerReductionModeCreateInfo must only useVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
. -
scalarBlockLayout
indicates that the implementation supports the layout of resource blocks in shaders using scalar alignment. -
imagelessFramebuffer
indicates that the implementation supports specifying the image view for attachments at render pass begin time via VkRenderPassAttachmentBeginInfo. -
uniformBufferStandardLayout
indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See Standard Buffer Layout. -
shaderSubgroupExtendedTypes
is 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. -
separateDepthStencilLayouts
indicates whether the implementation supports aVkImageMemoryBarrier
for a depth/stencil image with only one ofVK_IMAGE_ASPECT_DEPTH_BIT
orVK_IMAGE_ASPECT_STENCIL_BIT
set, 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_OPTIMAL
can be used. -
hostQueryReset
indicates that the implementation supports resetting queries from the host with vkResetQueryPool. -
timelineSemaphore
indicates whether semaphores created with a VkSemaphoreType ofVK_SEMAPHORE_TYPE_TIMELINE
are supported. -
bufferDeviceAddress
indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddress. -
bufferDeviceAddressCaptureReplay
indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay. -
bufferDeviceAddressMultiDevice
indicates that the implementation supports thebufferDeviceAddress
,rayTracingPipeline
andrayQuery
features 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. -
vulkanMemoryModel
indicates whether shader modules can declare theVulkanMemoryModel
capability. -
vulkanMemoryModelDeviceScope
indicates whether the Vulkan Memory Model can useDevice
scope synchronization. This also indicates whether shader modules can declare theVulkanMemoryModelDeviceScope
capability. -
vulkanMemoryModelAvailabilityVisibilityChains
indicates whether the Vulkan Memory Model can use availability and visibility chains with more than one element. -
shaderOutputViewportIndex
indicates whether the implementation supports theShaderViewportIndex
SPIR-V capability enabling variables decorated with theViewportIndex
built-in to be exported from mesh, vertex or tessellation evaluation shaders. If this feature is not enabled, theViewportIndex
built-in decoration must not be used on outputs in mesh, vertex or tessellation evaluation shaders. -
shaderOutputLayer
indicates whether the implementation supports theShaderLayer
SPIR-V capability enabling variables decorated with theLayer
built-in to be exported from mesh, vertex or tessellation evaluation shaders. If this feature is not enabled, theLayer
built-in decoration must not be used on outputs in mesh, vertex or tessellation evaluation shaders. -
If
subgroupBroadcastDynamicId
isVK_TRUE
, the “Id” operand ofOpGroupNonUniformBroadcast
can be dynamically uniform within a subgroup, and the “Index” operand ofOpGroupNonUniformQuadBroadcast
can 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.
VkPhysicalDeviceVulkan12Features
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
robustImageAccess
indicates 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. -
inlineUniformBlock
indicates whether the implementation supports inline uniform block descriptors. If this feature is not enabled,VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
must not be used. -
descriptorBindingInlineUniformBlockUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
. -
pipelineCreationCacheControl
indicates 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
-
-
-
privateData
indicates whether the implementation supports private data. See Private Data. -
shaderDemoteToHelperInvocation
indicates whether the implementation supports the SPIR-VDemoteToHelperInvocationEXT
capability. -
shaderTerminateInvocation
specifies whether the implementation supports SPIR-V modules that use theSPV_KHR_terminate_invocation
extension. -
subgroupSizeControl
indicates whether the implementation supports controlling shader subgroup sizes via theVK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
flag and the VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure. -
computeFullSubgroups
indicates whether the implementation supports requiring full subgroups in compute , mesh, or task shaders via theVK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
flag. -
synchronization2
indicates whether the implementation supports the new set of synchronization commands introduced inVK_KHR_synchronization2
. -
textureCompressionASTC_HDR
indicates 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_BIT
andVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
features must be supported inoptimalTilingFeatures
for 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_BLOCK
To 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.
-
-
shaderZeroInitializeWorkgroupMemory
specifies whether the implementation supports initializing a variable in Workgroup storage class. -
dynamicRendering
specifies that the implementation supports dynamic render pass instances using the vkCmdBeginRendering command. -
shaderIntegerDotProduct
specifies whether shader modules can declare theDotProductInputAllKHR
,DotProductInput4x8BitKHR
,DotProductInput4x8BitPackedKHR
andDotProductKHR
capabilities. -
maintenance4
indicates that the implementation supports the following:-
The application may destroy a VkPipelineLayout object immediately after using it to create another object.
-
LocalSizeId
can be used as an alternative toLocalSize
to 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.
VkPhysicalDeviceVulkan13Features
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
variablePointersStorageBuffer
specifies whether the implementation supports the SPIR-VVariablePointersStorageBuffer
capability. When this feature is not enabled, shader modules must not declare theSPV_KHR_variable_pointers
extension or theVariablePointersStorageBuffer
capability. -
variablePointers
specifies whether the implementation supports the SPIR-VVariablePointers
capability. When this feature is not enabled, shader modules must not declare theVariablePointers
capability.
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.
VkPhysicalDeviceVariablePointersFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
multiview
specifies 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. -
multiviewGeometryShader
specifies 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. -
multiviewTessellationShader
specifies 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.
VkPhysicalDeviceMultiviewFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
shaderBufferFloat32Atomics
indicates whether shaders can perform 32-bit floating-point load, store and exchange atomic operations on storage buffers. -
shaderBufferFloat32AtomicAdd
indicates whether shaders can perform 32-bit floating-point add atomic operations on storage buffers. -
shaderBufferFloat64Atomics
indicates whether shaders can perform 64-bit floating-point load, store and exchange atomic operations on storage buffers. -
shaderBufferFloat64AtomicAdd
indicates whether shaders can perform 64-bit floating-point add atomic operations on storage buffers. -
shaderSharedFloat32Atomics
indicates whether shaders can perform 32-bit floating-point load, store and exchange atomic operations on shared and payload memory. -
shaderSharedFloat32AtomicAdd
indicates whether shaders can perform 32-bit floating-point add atomic operations on shared and payload memory. -
shaderSharedFloat64Atomics
indicates whether shaders can perform 64-bit floating-point load, store and exchange atomic operations on shared and payload memory. -
shaderSharedFloat64AtomicAdd
indicates whether shaders can perform 64-bit floating-point add atomic operations on shared and payload memory. -
shaderImageFloat32Atomics
indicates whether shaders can perform 32-bit floating-point load, store and exchange atomic image operations. -
shaderImageFloat32AtomicAdd
indicates whether shaders can perform 32-bit floating-point add atomic image operations. -
sparseImageFloat32Atomics
indicates whether 32-bit floating-point load, store and exchange atomic operations can be used on sparse images. -
sparseImageFloat32AtomicAdd
indicates 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.
VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
shaderBufferFloat16Atomics
indicates whether shaders can perform 16-bit floating-point load, store, and exchange atomic operations on storage buffers. -
shaderBufferFloat16AtomicAdd
indicates whether shaders can perform 16-bit floating-point add atomic operations on storage buffers. -
shaderBufferFloat16AtomicMinMax
indicates whether shaders can perform 16-bit floating-point min and max atomic operations on storage buffers. -
shaderBufferFloat32AtomicMinMax
indicates whether shaders can perform 32-bit floating-point min and max atomic operations on storage buffers. -
shaderBufferFloat64AtomicMinMax
indicates whether shaders can perform 64-bit floating-point min and max atomic operations on storage buffers. -
shaderSharedFloat16Atomics
indicates whether shaders can perform 16-bit floating-point load, store and exchange atomic operations on shared and payload memory. -
shaderSharedFloat16AtomicAdd
indicates whether shaders can perform 16-bit floating-point add atomic operations on shared and payload memory. -
shaderSharedFloat16AtomicMinMax
indicates whether shaders can perform 16-bit floating-point min and max atomic operations on shared and payload memory. -
shaderSharedFloat32AtomicMinMax
indicates whether shaders can perform 32-bit floating-point min and max atomic operations on shared and payload memory. -
shaderSharedFloat64AtomicMinMax
indicates whether shaders can perform 64-bit floating-point min and max atomic operations on shared and payload memory. -
shaderImageFloat32AtomicMinMax
indicates whether shaders can perform 32-bit floating-point min and max atomic image operations. -
sparseImageFloat32AtomicMinMax
indicates 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.
VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or 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.
VkPhysicalDeviceShaderAtomicInt64Features
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shaderImageInt64Atomics
indicates whether shaders can support 64-bit unsigned and signed integer atomic operations on images. -
sparseImageInt64Atomics
indicates 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.
VkPhysicalDeviceShaderAtomicInt64FeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
storageBuffer8BitAccess
indicates whether objects in theStorageBuffer
,ShaderRecordBufferKHR
, orPhysicalStorageBuffer
storage class with theBlock
decoration 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 theStorageBuffer8BitAccess
capability. -
uniformAndStorageBuffer8BitAccess
indicates whether objects in theUniform
storage class with theBlock
decoration 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 theUniformAndStorageBuffer8BitAccess
capability. -
storagePushConstant8
indicates whether objects in thePushConstant
storage 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 theStoragePushConstant8
capability.
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.
VkPhysicalDevice8BitStorageFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
storageBuffer16BitAccess
specifies whether objects in theStorageBuffer
,ShaderRecordBufferKHR
, orPhysicalStorageBuffer
storage class with theBlock
decoration 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 theStorageBuffer16BitAccess
capability. -
uniformAndStorageBuffer16BitAccess
specifies whether objects in theUniform
storage class with theBlock
decoration 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 theUniformAndStorageBuffer16BitAccess
capability. -
storagePushConstant16
specifies whether objects in thePushConstant
storage 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 theStoragePushConstant16
capability. -
storageInputOutput16
specifies whether objects in theInput
andOutput
storage 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 theStorageInputOutput16
capability.
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.
VkPhysicalDevice16BitStorageFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
shaderFloat16
indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare theFloat16
capability. However, this only enables a subset of the storage classes that SPIR-V allows for theFloat16
SPIR-V capability: Declaring and using 16-bit floats in thePrivate
,Workgroup
(for non-Block variables), andFunction
storage classes is enabled, while declaring them in the interface storage classes (e.g.,UniformConstant
,Uniform
,StorageBuffer
,Input
,Output
, andPushConstant
) is not enabled. -
shaderInt8
indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare theInt8
capability. However, this only enables a subset of the storage classes that SPIR-V allows for theInt8
SPIR-V capability: Declaring and using 8-bit integers in thePrivate
,Workgroup
(for non-Block variables), andFunction
storage 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.
VkPhysicalDeviceShaderFloat16Int8Features
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shaderSubgroupClock
indicates whether shaders can performSubgroup
scoped clock reads. -
shaderDeviceClock
indicates whether shaders can performDevice
scoped 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.
VkPhysicalDeviceShaderClockFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
samplerYcbcrConversion
specifies whether the implementation supports sampler Y′CBCR conversion. IfsamplerYcbcrConversion
isVK_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.
VkPhysicalDeviceSamplerYcbcrConversionFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
protectedMemory
specifies 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.
VkPhysicalDeviceProtectedMemoryFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
advancedBlendCoherentOperations
specifies 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_EXT
is 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.
VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
conditionalRendering
specifies whether conditional rendering is supported. -
inheritedConditionalRendering
specifies 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.
VkPhysicalDeviceConditionalRenderingFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or 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.
VkPhysicalDeviceShaderDrawParametersFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
taskShader
specifies whether task shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_TASK_BIT_NV
andVK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
enum values must not be used. -
meshShader
specifies whether mesh shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_MESH_BIT_NV
andVK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
enum 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.
VkPhysicalDeviceMeshShaderFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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;
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
taskShader
specifies whether task shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_TASK_BIT_EXT
andVK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
enum values must not be used. -
meshShader
specifies whether mesh shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_MESH_BIT_EXT
andVK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
enum values must not be used. -
multiviewMeshShader
specifies whether the implementation supportsmultiview
rendering 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. -
primitiveFragmentShadingRateMeshShader
indicates that the implementation supports the primitive fragment shading rate in mesh shaders. -
meshShaderQueries
indicates that the implementation supports creating query pools using theVK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT
query type and statistic queries containing theVK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT
andVK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT
flags
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.
VkPhysicalDeviceMeshShaderFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
memoryDecompression
indicates 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.
VkPhysicalDeviceMemoryDecompressionFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
shaderInputAttachmentArrayDynamicIndexing
indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theInputAttachmentArrayDynamicIndexing
capability. -
shaderUniformTexelBufferArrayDynamicIndexing
indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformTexelBufferArrayDynamicIndexing
capability. -
shaderStorageTexelBufferArrayDynamicIndexing
indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageTexelBufferArrayDynamicIndexing
capability. -
shaderUniformBufferArrayNonUniformIndexing
indicates 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_BUFFER
orVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformBufferArrayNonUniformIndexing
capability. -
shaderSampledImageArrayNonUniformIndexing
indicates 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_IMAGE
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theSampledImageArrayNonUniformIndexing
capability. -
shaderStorageBufferArrayNonUniformIndexing
indicates 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_BUFFER
orVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageBufferArrayNonUniformIndexing
capability. -
shaderStorageImageArrayNonUniformIndexing
indicates 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_IMAGE
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageImageArrayNonUniformIndexing
capability. -
shaderInputAttachmentArrayNonUniformIndexing
indicates 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_ATTACHMENT
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theInputAttachmentArrayNonUniformIndexing
capability. -
shaderUniformTexelBufferArrayNonUniformIndexing
indicates 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_BUFFER
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theUniformTexelBufferArrayNonUniformIndexing
capability. -
shaderStorageTexelBufferArrayNonUniformIndexing
indicates 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_BUFFER
must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare theStorageTexelBufferArrayNonUniformIndexing
capability. -
descriptorBindingUniformBufferUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
. -
descriptorBindingSampledImageUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_SAMPLER
,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, orVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
. -
descriptorBindingStorageImageUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
. -
descriptorBindingStorageBufferUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
. -
descriptorBindingUniformTexelBufferUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
. -
descriptorBindingStorageTexelBufferUpdateAfterBind
indicates 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_BIT
must not be used withVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
. -
descriptorBindingUpdateUnusedWhilePending
indicates 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_BIT
must not be used. -
descriptorBindingPartiallyBound
indicates 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_BIT
must not be used. -
descriptorBindingVariableDescriptorCount
indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled,VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
must not be used. -
runtimeDescriptorArray
indicates whether the implementation supports the SPIR-VRuntimeDescriptorArray
capability. 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.
VkPhysicalDeviceDescriptorIndexingFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
indirectCopy
indicates 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.
VkPhysicalDeviceCopyMemoryIndirectFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
structure is
defined as:
// Provided by VK_EXT_vertex_attribute_divisor
typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 vertexAttributeInstanceRateDivisor;
VkBool32 vertexAttributeInstanceRateZeroDivisor;
} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
This structure describes the following features:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
vertexAttributeInstanceRateDivisor
specifies whether vertex attribute fetching may be repeated in case of instanced rendering. -
vertexAttributeInstanceRateZeroDivisor
specifies whether a zero value forVkVertexInputBindingDivisorDescriptionEXT
::divisor
is supported.
If the VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
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.
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
decodeModeSharedExponent
indicates whether the implementation supports decoding ASTC compressed formats toVK_FORMAT_E5B9G9R9_UFLOAT_PACK32
internal 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.
VkPhysicalDeviceASTCDecodeFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
transformFeedback
indicates whether the implementation supports transform feedback and shader modules can declare theTransformFeedback
capability. -
geometryStreams
indicates whether the implementation supports theGeometryStreams
SPIR-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.
VkPhysicalDeviceTransformFeedbackFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
vulkanMemoryModel
indicates whether shader modules can declare theVulkanMemoryModel
capability. -
vulkanMemoryModelDeviceScope
indicates whether the Vulkan Memory Model can useDevice
scope synchronization. This also indicates whether shader modules can declare theVulkanMemoryModelDeviceScope
capability. -
vulkanMemoryModelAvailabilityVisibilityChains
indicates 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.
VkPhysicalDeviceVulkanMemoryModelFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
inlineUniformBlock
indicates whether the implementation supports inline uniform block descriptors. If this feature is not enabled,VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
must not be used. -
descriptorBindingInlineUniformBlockUpdateAfterBind
indicates 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_BIT
must 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.
VkPhysicalDeviceInlineUniformBlockFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
representativeFragmentTest
indicates 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.
VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
exclusiveScissor
indicates 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.
VkPhysicalDeviceExclusiveScissorFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
cornerSampledImage
specifies whether images can be created with a VkImageCreateInfo::flags
containingVK_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.
VkPhysicalDeviceCornerSampledImageFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDeviceComputeShaderDerivativesFeaturesNV
structure is
defined as:
// Provided by VK_NV_compute_shader_derivatives
typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 computeDerivativeGroupQuads;
VkBool32 computeDerivativeGroupLinear;
} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
This structure describes the following features:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
computeDerivativeGroupQuads
indicates that the implementation supports theComputeDerivativeGroupQuadsNV
SPIR-V capability. -
computeDerivativeGroupLinear
indicates that the implementation supports theComputeDerivativeGroupLinearNV
SPIR-V capability.
See Quad shader scope for more information.
If the VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures
. 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.
VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures
. can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
fragmentShaderBarycentric
indicates that the implementation supports theBaryCoordKHR
andBaryCoordNoPerspKHR
SPIR-V fragment shader built-ins and supports thePerVertexKHR
SPIR-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.
VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
imageFootprint
specifies whether the implementation supports theImageFootprintNV
SPIR-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.
VkPhysicalDeviceShaderImageFootprintFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shadingRateImage
indicates 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 theShadingRateNV
SPIR-V execution mode. -
shadingRateCoarseSampleOrder
indicates that the implementation supports a user-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.
VkPhysicalDeviceShadingRateImageFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
fragmentDensityMap
specifies whether the implementation supports render passes with a fragment density map attachment. If this feature is not enabled and thepNext
chain of VkRenderPassCreateInfo includes a VkRenderPassFragmentDensityMapCreateInfoEXT structure,fragmentDensityMapAttachment
must beVK_ATTACHMENT_UNUSED
. -
fragmentDensityMapDynamic
specifies 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_EXT
must not be included in VkImageViewCreateInfo::flags
. -
fragmentDensityMapNonSubsampledImages
specifies 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.
VkPhysicalDeviceFragmentDensityMapFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
fragmentDensityMapDeferred
specifies 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_EXT
must 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.
VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
fragmentDensityMapOffsets
specifies 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.
VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
invocationMask
indicates 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.
VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
scalarBlockLayout
indicates 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.
VkPhysicalDeviceScalarBlockLayoutFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
uniformBufferStandardLayout
indicates 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.
VkPhysicalDeviceUniformBufferStandardLayoutFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
depthClipEnable
indicates that the implementation supports setting the depth clipping operation explicitly via the VkPipelineRasterizationDepthClipStateCreateInfoEXT pipeline state. Otherwise depth clipping is only enabled when VkPipelineRasterizationStateCreateInfo::depthClampEnable
is set toVK_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.
VkPhysicalDeviceDepthClipEnableFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
memoryPriority
indicates 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.
VkPhysicalDeviceMemoryPriorityFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
bufferDeviceAddress
indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddress. -
bufferDeviceAddressCaptureReplay
indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay. -
bufferDeviceAddressMultiDevice
indicates that the implementation supports thebufferDeviceAddress
,rayTracingPipeline
andrayQuery
features 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.
Note
|
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.
VkPhysicalDeviceBufferDeviceAddressFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
bufferDeviceAddress
indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddressEXT. -
bufferDeviceAddressCaptureReplay
indicates that the implementation supports saving and reusing buffer addresses, e.g. for trace capture and replay. -
bufferDeviceAddressMultiDevice
indicates that the implementation supports thebufferDeviceAddress
feature 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.
VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
Note
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
dedicatedAllocationImageAliasing
indicates 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.
VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
imagelessFramebuffer
indicates 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.
VkPhysicalDeviceImagelessFramebufferFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
fragmentShaderSampleInterlock
indicates that the implementation supports theFragmentShaderSampleInterlockEXT
SPIR-V capability. -
fragmentShaderPixelInterlock
indicates that the implementation supports theFragmentShaderPixelInterlockEXT
SPIR-V capability. -
fragmentShaderShadingRateInterlock
indicates that the implementation supports theFragmentShaderShadingRateInterlockEXT
SPIR-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.
VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
cooperativeMatrix
indicates that the implementation supports theCooperativeMatrixNV
SPIR-V capability. -
cooperativeMatrixRobustBufferAccess
indicates that the implementation supports robust buffer access for SPIR-VOpCooperativeMatrixLoadNV
andOpCooperativeMatrixStoreNV
instructions.
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.
VkPhysicalDeviceCooperativeMatrixFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
ycbcrImageArrays
indicates 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.
VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
shaderSubgroupExtendedTypes
is 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.
VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
hostQueryReset
indicates 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.
VkPhysicalDeviceHostQueryResetFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shaderIntegerFunctions2
indicates that the implementation supports theIntegerFunctions2INTEL
SPIR-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.
VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures
. can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
coverageReductionMode
indicates 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.
VkPhysicalDeviceCoverageReductionModeFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
timelineSemaphore
indicates whether semaphores created with a VkSemaphoreType ofVK_SEMAPHORE_TYPE_TIMELINE
are 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.
VkPhysicalDeviceTimelineSemaphoreFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDeviceIndexTypeUint8FeaturesEXT
structure is defined as:
// Provided by VK_EXT_index_type_uint8
typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 indexTypeUint8;
} VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
This structure describes the following feature:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
indexTypeUint8
indicates thatVK_INDEX_TYPE_UINT8_EXT
can be used with vkCmdBindIndexBuffer.
If the VkPhysicalDeviceIndexTypeUint8FeaturesEXT
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.
VkPhysicalDeviceIndexTypeUint8FeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
primitiveTopologyListRestart
indicates 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_ADJACENCY
andVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
, can use the primitive restart index value in index buffers. -
primitiveTopologyPatchListRestart
indicates that theVK_PRIMITIVE_TOPOLOGY_PATCH_LIST
topology 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.
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shaderSMBuiltins
indicates whether the implementation supports the SPIR-VShaderSMBuiltinsNV
capability.
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.
VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
separateDepthStencilLayouts
indicates whether the implementation supports aVkImageMemoryBarrier
for a depth/stencil image with only one ofVK_IMAGE_ASPECT_DEPTH_BIT
orVK_IMAGE_ASPECT_STENCIL_BIT
set, 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_OPTIMAL
can 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.
VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
pipelineExecutableInfo
indicates 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.
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or 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.
VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
texelBufferAlignment
indicates 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.
VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
textureCompressionASTC_HDR
indicates 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_BIT
andVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
features must be supported inoptimalTilingFeatures
for 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_BLOCK
To 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.
VkPhysicalDeviceTextureCompressionASTCHDRFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDeviceLineRasterizationFeaturesEXT
structure is defined
as:
// Provided by VK_EXT_line_rasterization
typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 rectangularLines;
VkBool32 bresenhamLines;
VkBool32 smoothLines;
VkBool32 stippledRectangularLines;
VkBool32 stippledBresenhamLines;
VkBool32 stippledSmoothLines;
} VkPhysicalDeviceLineRasterizationFeaturesEXT;
This structure describes the following features:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
rectangularLines
indicates whether the implementation supports rectangular line rasterization. -
bresenhamLines
indicates whether the implementation supports Bresenham-style line rasterization. -
smoothLines
indicates whether the implementation supports smooth line rasterization. -
stippledRectangularLines
indicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
lines. -
stippledBresenhamLines
indicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
lines. -
stippledSmoothLines
indicates whether the implementation supports stippled line rasterization withVK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
lines.
If the VkPhysicalDeviceLineRasterizationFeaturesEXT
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.
VkPhysicalDeviceLineRasterizationFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
subgroupSizeControl
indicates whether the implementation supports controlling shader subgroup sizes via theVK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
flag and the VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure. -
computeFullSubgroups
indicates whether the implementation supports requiring full subgroups in compute , mesh, or task shaders via theVK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
flag.
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.
VkPhysicalDeviceSubgroupSizeControlFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
Note
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
deviceCoherentMemory
indicates 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.
VkPhysicalDeviceCoherentMemoryFeaturesAMD
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
accelerationStructure
indicates whether the implementation supports the acceleration structure functionality. See Acceleration Structures. -
accelerationStructureCaptureReplay
indicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay. -
accelerationStructureIndirectBuild
indicates whether the implementation supports indirect acceleration structure build commands, e.g. vkCmdBuildAccelerationStructuresIndirectKHR. -
accelerationStructureHostCommands
indicates whether the implementation supports host side acceleration structure commands, e.g. vkBuildAccelerationStructuresKHR, vkCopyAccelerationStructureKHR, vkCopyAccelerationStructureToMemoryKHR, vkCopyMemoryToAccelerationStructureKHR, vkWriteAccelerationStructuresPropertiesKHR. -
descriptorBindingAccelerationStructureUpdateAfterBind
indicates 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_BIT
must 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.
VkPhysicalDeviceAccelerationStructureFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
rayTracingPipeline
indicates whether the implementation supports the ray tracing pipeline functionality. See Ray Tracing. -
rayTracingPipelineShaderGroupHandleCaptureReplay
indicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay. -
rayTracingPipelineShaderGroupHandleCaptureReplayMixed
indicates 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. -
rayTracingPipelineTraceRaysIndirect
indicates whether the implementation supports indirect ray tracing commands, e.g. vkCmdTraceRaysIndirectKHR. -
rayTraversalPrimitiveCulling
indicates 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.
VkPhysicalDeviceRayTracingPipelineFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
rayQuery
indicates 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.
VkPhysicalDeviceRayQueryFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
rayTracingMaintenance1
indicates that the implementation supports the following:-
The
CullMaskKHR
SPIR-V builtin using theSPV_KHR_ray_cull_mask
SPIR-V extension. -
Additional acceleration structure property queries:
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
andVK_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
-
-
rayTracingPipelineTraceRaysIndirect2
indicates 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.
VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
extendedDynamicState
indicates 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.
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
extendedDynamicState2
indicates 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
-
-
extendedDynamicState2LogicOp
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_LOGIC_OP_EXT
-
-
extendedDynamicState2PatchControlPoints
indicates 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.
VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
extendedDynamicState3TessellationDomainOrigin
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
-
-
extendedDynamicState3DepthClampEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
-
-
extendedDynamicState3PolygonMode
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_POLYGON_MODE_EXT
-
-
extendedDynamicState3RasterizationSamples
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
-
-
extendedDynamicState3SampleMask
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
-
-
extendedDynamicState3AlphaToCoverageEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
-
-
extendedDynamicState3AlphaToOneEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
-
-
extendedDynamicState3LogicOpEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendEquation
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
-
-
extendedDynamicState3ColorWriteMask
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
-
-
extendedDynamicState3RasterizationStream
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
-
-
extendedDynamicState3ConservativeRasterizationMode
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
-
-
extendedDynamicState3ExtraPrimitiveOverestimationSize
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
-
-
extendedDynamicState3DepthClipEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
-
-
extendedDynamicState3SampleLocationsEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendAdvanced
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
-
-
extendedDynamicState3ProvokingVertexMode
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
-
-
extendedDynamicState3LineRasterizationMode
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
-
-
extendedDynamicState3LineStippleEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
-
-
extendedDynamicState3DepthClipNegativeOneToOne
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
-
-
extendedDynamicState3ViewportWScalingEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
-
-
extendedDynamicState3ViewportSwizzle
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
-
-
extendedDynamicState3CoverageToColorEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
-
-
extendedDynamicState3CoverageToColorLocation
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
-
-
extendedDynamicState3CoverageModulationMode
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
-
-
extendedDynamicState3CoverageModulationTableEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
-
-
extendedDynamicState3CoverageModulationTable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
-
-
extendedDynamicState3CoverageReductionMode
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
-
-
extendedDynamicState3RepresentativeFragmentTestEnable
indicates that the implementation supports the following dynamic state:-
VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
-
-
extendedDynamicState3ShadingRateImageEnable
indicates 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.
VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
deviceGeneratedCommands
indicates 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.
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
diagnosticsConfig
indicates 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.
VkPhysicalDeviceDiagnosticsConfigFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
deviceMemoryReport
indicates 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.
VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR
structure is
defined as:
// Provided by VK_KHR_global_priority
typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 globalPriorityQuery;
} VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;
or the equivalent
// Provided by VK_EXT_global_priority_query
typedef VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
This structure describes the following feature:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
globalPriorityQuery
indicates whether the implementation supports the ability to query global queue priorities.
If the VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR
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.
VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
pipelineCreationCacheControl
indicates 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.
VkPhysicalDevicePipelineCreationCacheControlFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or 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.
VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
privateData
indicates 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.
VkPhysicalDevicePrivateDataFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shaderSubgroupUniformControlFlow
specifies 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.
VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
robustBufferAccess2
indicates 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. -
robustImageAccess2
indicates 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. -
nullDescriptor
indicates 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.
VkPhysicalDeviceRobustness2FeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
robustImageAccess
indicates 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.
VkPhysicalDeviceImageRobustnessFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or 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.
VkPhysicalDeviceShaderTerminateInvocationFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
customBorderColors
indicates that the implementation supports providing aborderColor
value with one of the following values at sampler creation time:-
VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
-
VK_BORDER_COLOR_INT_CUSTOM_EXT
-
-
customBorderColorWithoutFormat
indicates that explicit formats are not required for custom border colors and the value of theformat
member 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 theformat
member 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.
VkPhysicalDeviceCustomBorderColorFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
borderColorSwizzle
indicates 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_EXT
borderColor
and an image view that uses a non-identity component mapping, when eitherborderColorSwizzleFromImage
is enabled or the VkSamplerBorderColorComponentMappingCreateInfoEXT is specified. -
borderColorSwizzleFromImage
indicates 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.
VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
constantAlphaColorBlendFactors
indicates whether this implementation supports constant alpha Blend Factors used as source or destination color Blending. -
events
indicates whether this implementation supports synchronization using Events. -
imageViewFormatReinterpretation
indicates whether this implementation supports aVkImageView
being 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
. -
imageViewFormatSwizzle
indicates whether this implementation supports remapping format components using VkImageViewCreateInfo::components
. -
imageView2DOn3DImage
indicates whether this implementation supports aVkImage
being created with theVK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
flag set, permitting a 2D or 2D array image view to be created on a 3DVkImage
. -
multisampleArrayImage
indicates whether this implementation supports aVkImage
being created as a 2D array with multiple samples per texel. -
mutableComparisonSamplers
indicates whether this implementation allows descriptors with comparison samplers to be updated. -
pointPolygons
indicates whether this implementation supports Rasterization using a point Polygon Mode. -
samplerMipLodBias
indicates whether this implementation supports setting a mipmap LOD bias value when creating a sampler. -
separateStencilMaskRef
indicates whether this implementation supports separate front and back Stencil Test reference values. -
shaderSampleRateInterpolationFunctions
indicates whether this implementation supports fragment shaders which use theInterpolationFunction
capability and the extended instructionsInterpolateAtCentroid
,InterpolateAtOffset
, andInterpolateAtSample
from theGLSL.std.450
extended instruction set. This member is only meaningful if thesampleRateShading
feature is supported. -
tessellationIsolines
indicates whether this implementation supports isoline output from the Tessellation stage of a graphics pipeline. This member is only meaningful iftessellationShader
are supported. -
tessellationPointMode
indicates whether this implementation supports point output from the Tessellation stage of a graphics pipeline. This member is only meaningful iftessellationShader
are supported. -
triangleFans
indicates whether this implementation supports Triangle Fans primitive topology. -
vertexAttributeAccessBeyondStride
indicates 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.
VkPhysicalDevicePortabilitySubsetFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
performanceCounterQueryPools
indicates whether the implementation supports performance counter query pools. -
performanceCounterMultipleQueryPools
indicates 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.
VkPhysicalDevicePerformanceQueryFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
formatA4R4G4B4
indicates that the implementation must support using a VkFormat ofVK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT
with 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
-
-
formatA4B4G4R4
indicates that the implementation must support using a VkFormat ofVK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT
with 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.
VkPhysicalDevice4444FormatsFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
Note
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
mutableDescriptorType
indicates that the implementation must support using the VkDescriptorType ofVK_DESCRIPTOR_TYPE_MUTABLE_EXT
with 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,
mutableDescriptorType
indicates that:-
Non-uniform descriptor indexing must be supported if all descriptor types in a VkMutableDescriptorTypeListEXT for
VK_DESCRIPTOR_TYPE_MUTABLE_EXT
have the corresponding non-uniform indexing features enabled in VkPhysicalDeviceDescriptorIndexingFeatures. -
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
withdescriptorType
ofVK_DESCRIPTOR_TYPE_MUTABLE_EXT
relaxes 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_EXT
have the corresponding dynamic indexing features enabled. -
VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
must be supported. -
VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT
must 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.
VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
depthClipControl
indicates that the implementation supports setting VkPipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOne
toVK_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.
VkPhysicalDeviceDepthClipControlFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
workgroupMemoryExplicitLayout
indicates whether the implementation supports the SPIR-VWorkgroupMemoryExplicitLayoutKHR
capability. -
workgroupMemoryExplicitLayoutScalarBlockLayout
indicates whether the implementation supports scalar alignment for laying out Workgroup Blocks. -
workgroupMemoryExplicitLayout8BitAccess
indicates whether objects in theWorkgroup
storage class with theBlock
decoration 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 theWorkgroupMemoryExplicitLayout8BitAccessKHR
capability. -
workgroupMemoryExplicitLayout16BitAccess
indicates whether objects in theWorkgroup
storage class with theBlock
decoration 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 theWorkgroupMemoryExplicitLayout16BitAccessKHR
capability.
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.
VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
synchronization2
indicates 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.
VkPhysicalDeviceSynchronization2Features
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
vertexInputDynamicState
indicates 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.
VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
primitivesGeneratedQuery
indicates whether the implementation supports theVK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query type. -
primitivesGeneratedQueryWithRasterizerDiscard
indicates whether the implementation supports this query when rasterization discard is enabled. -
primitivesGeneratedQueryWithNonZeroStreams
indicates 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.
VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
pipelineFragmentShadingRate
indicates that the implementation supports the pipeline fragment shading rate. -
primitiveFragmentShadingRate
indicates that the implementation supports the primitive fragment shading rate. -
attachmentFragmentShadingRate
indicates 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.
VkPhysicalDeviceFragmentShadingRateFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
legacyDithering
indicates 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.
VkPhysicalDeviceLegacyDitheringFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
fragmentShadingRateEnums
indicates that the implementation supports specifying fragment shading rates using theVkFragmentShadingRateNV
enumerated type. -
supersampleFragmentShadingRates
indicates that the implementation supports fragment shading rate enum values indicating more than one invocation per fragment. -
noInvocationFragmentShadingRates
indicates 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.
VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
inheritedViewportScissor2D
indicates 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_VIEWPORT
orVK_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.
VkPhysicalDeviceInheritedViewportScissorFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDevicePipelineProtectedAccessFeaturesEXT
structure is
defined as:
// Provided by VK_EXT_pipeline_protected_access
typedef struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 pipelineProtectedAccess;
} VkPhysicalDevicePipelineProtectedAccessFeaturesEXT;
This structure describes the following feature:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
pipelineProtectedAccess
indicates whether the implementation supports specifying protected access on individual pipelines.
If the VkPhysicalDevicePipelineProtectedAccessFeaturesEXT
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.
VkPhysicalDevicePipelineProtectedAccessFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
ycbcr2plane444Formats
indicates 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.
VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
Note
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
colorWriteEnable
indicates 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.
VkPhysicalDeviceColorWriteEnableFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
pipelinePropertiesIdentifier
indicates 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.
VkPhysicalDevicePipelinePropertiesFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
provokingVertexLast
indicates whether the implementation supports theVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
provoking vertex mode for flat shading. -
transformFeedbackPreservesProvokingVertex
indicates 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 whentransformFeedbackPreservesTriangleFanProvokingVertex
isVK_FALSE
.transformFeedbackPreservesProvokingVertex
must beVK_FALSE
when theVK_EXT_transform_feedback
extension 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.
VkPhysicalDeviceProvokingVertexFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
descriptorBuffer
indicates that the implementation supports putting shader-accessible descriptors directly in memory. -
descriptorBufferCaptureReplay
indicates 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_EXT
must be created before resources of the same types without those flags. -
descriptorBufferImageLayoutIgnored
indicates that the implementation will ignoreimageLayout
inVkDescriptorImageInfo
when calling vkGetDescriptorEXT. -
descriptorBufferPushDescriptors
indicates 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.
VkPhysicalDeviceDescriptorBufferFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
pageableDeviceLocalMemory
indicates 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.
VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
multiDraw
indicates 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.
VkPhysicalDeviceMultiDrawFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
rayTracingMotionBlur
indicates whether the implementation supports the motion blur feature. -
rayTracingMotionBlurPipelineTraceRaysIndirect
indicates 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.
VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
micromap
indicates whether the implementation supports the micromap array feature. -
micromapCaptureReplay
indicates whether the implementation supports capture and replay of addresses for micromap arrays. -
micromapHostCommands
indicates 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.
VkPhysicalDeviceOpacityMicromapFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
subpassShading
specifies 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.
VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
externalMemoryRDMA
indicates whether the implementation has support for theVK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV
memory property and theVK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV
external 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.
VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
presentId
indicates that the implementation supports specifying present ID values in theVkPresentIdKHR
extension to theVkPresentInfoKHR
struct.
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.
VkPhysicalDevicePresentIdFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
presentWait
indicates 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.
VkPhysicalDevicePresentWaitFeaturesKHR
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDevicePresentTimingFeaturesEXT
structure is defined as:
// Provided by VK_EXT_present_timing
typedef struct VkPhysicalDevicePresentTimingFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 presentTiming;
VkBool32 presentAtAbsoluteTime;
VkBool32 presentAtRelativeTime;
} VkPhysicalDevicePresentTimingFeaturesEXT;
This structure describes the following feature:
-
sType
is the type of this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
presentTiming
indicates that the implementation supportsvkGetPastPresentationTimingEXT
. -
presentAtAbsoluteTime
indicates that the implementation supports specifying present times withVkPresentTimeEXT
::targetPresentTime
. -
presentAtRelativeTime
indicates that the implementation supports specifying relative present times withVkPresentTimeEXT
::minPresentDuration
.
If the VkPhysicalDevicePresentTimingFeaturesEXT
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.
VkPhysicalDevicePresentTimingFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
presentBarrier
indicates 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.
VkPhysicalDevicePresentBarrierFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or 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.
VkPhysicalDeviceShaderIntegerDotProductFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
maintenance4
indicates that the implementation supports the following:-
The application may destroy a VkPipelineLayout object immediately after using it to create another object.
-
LocalSizeId
can be used as an alternative toLocalSize
to 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.
VkPhysicalDeviceMaintenance4Features
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure.
-
dynamicRendering
specifies 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.
VkPhysicalDeviceDynamicRenderingFeatures
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
formatRgba10x6WithoutYCbCrSampler
indicates thatVK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
can be used with aVkImageView
withsubresourceRange.aspectMask
equal toVK_IMAGE_ASPECT_COLOR_BIT
without 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.
VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDevicePipelineRobustnessFeaturesEXT
structure is defined
as:
// Provided by VK_EXT_pipeline_robustness
typedef struct VkPhysicalDevicePipelineRobustnessFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 pipelineRobustness;
} VkPhysicalDevicePipelineRobustnessFeaturesEXT;
This structure describes the following feature:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
pipelineRobustness
indicates that robustness can be requested on a per-pipeline-stage granularity.
Note
Enabling |
If the VkPhysicalDevicePipelineRobustnessFeaturesEXT
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.
VkPhysicalDevicePipelineRobustnessFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
minLod
indicates 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.
VkPhysicalDeviceImageViewMinLodFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
rasterizationOrderColorAttachmentAccess
indicates that rasterization order access to color and input attachments is supported by the implementation. -
rasterizationOrderDepthAttachmentAccess
indicates that rasterization order access to the depth aspect of depth/stencil and input attachments is supported by the implementation. -
rasterizationOrderStencilAttachmentAccess
indicates 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.
VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
subpassMergeFeedback
indicates 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.
VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
linearColorAttachment
indicates 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.
VkPhysicalDeviceLinearColorAttachmentFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
attachmentFeedbackLoopLayout
indicates whether the implementation supports usingVK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
image layout for images created withVK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
graphicsPipelineLibrary
indicates 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.
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
multisampledRenderToSingleSampled
indicates 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.
VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
image2DViewOf3D
indicates that the implementation supports using a 2D view of a 3D image in a descriptor of typeVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
if the image is created usingVK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
. -
sampler2DViewOf3D
indicates that the implementation supports using a 2D view of a 3D image in a descriptor of typeVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
orVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
if 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.
VkPhysicalDeviceImage2DViewOf3DFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
imageSlicedViewOf3D
indicates that the implementation supports using a sliced view of a 3D image in a descriptor of typeVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
by 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.
VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
imageCompressionControl
indicates 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.
VkPhysicalDeviceImageCompressionControlFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
imageCompressionControlSwapchain
indicates 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.
VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shaderEarlyAndLateFragmentTests
indicates whether the implementation supports theEarlyAndLateFragmentTestsAMD
Execution
Mode
.
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.
VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
nonSeamlessCubeMap
indicates 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.
VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shaderModuleIdentifier
indicates 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.
VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
tileProperties
indicates 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.
VkPhysicalDeviceTilePropertiesFeaturesQCOM
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
textureSampleWeighted
indicates that the implementation supports shader modules that declare theTextureSampleWeightedQCOM
capability. -
textureBoxFilter
indicates that the implementation supports shader modules that declare theTextureBoxFilterQCOM
capability. -
textureBlockMatch
indicates that the implementation supports shader modules that declare theTextureBlockMatchQCOM
capability.
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.
VkPhysicalDeviceImageProcessingFeaturesQCOM
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
The VkPhysicalDeviceDepthClampZeroOneFeaturesEXT
structure is defined
as:
// Provided by VK_EXT_depth_clamp_zero_one
typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthClampZeroOne;
} VkPhysicalDeviceDepthClampZeroOneFeaturesEXT;
This structure describes the following feature:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
depthClampZeroOne
indicates that the implementation supports clamping the depth to a range of0
to1
.
If the VkPhysicalDeviceDepthClampZeroOneFeaturesEXT
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.
VkPhysicalDeviceDepthClampZeroOneFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
reportAddressBinding
indicates 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.
VkPhysicalDeviceAddressBindingReportFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
opticalFlow
indicates 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.
VkPhysicalDeviceOpticalFlowFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
deviceFault
indicates that the implementation supports the reporting of device fault information. -
deviceFaultVendorBinary
indicates 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.
VkPhysicalDeviceFaultFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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.
VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
shaderCoreBuiltins
indicates whether the implementation supports the SPIR-VCoreBuiltinsARM
capability.
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.
VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
swapchainMaintenance1
indicates 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_EXT
flag, 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.
VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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:
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
rayTracingInvocationReorder
indicates 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.
VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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.
VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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.
VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
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;
-
sType
is a VkStructureType value identifying this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
clustercullingShader
specifies whether cluster culling shader is supported. -
multiviewClusterCullingShader
specifies 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.
VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI
can also be used in the pNext
chain of
VkDeviceCreateInfo to selectively enable these features.
45.1. Feature Requirements
All Vulkan graphics implementations must support the following features:
-
robustBufferAccess
, unless theVK_KHR_portability_subset
extension is enabled. -
multiview
, if Vulkan 1.1 is supported. -
shaderDrawParameters
, if theVK_KHR_shader_draw_parameters
extension is supported. -
uniformBufferStandardLayout
, if Vulkan 1.2 or theVK_KHR_uniform_buffer_standard_layout
extension is supported. -
variablePointersStorageBuffer
, if theVK_KHR_variable_pointers
extension is supported. -
storageBuffer8BitAccess
, if theVK_KHR_8bit_storage
extension is supported. -
storageBuffer8BitAccess
, ifuniformAndStorageBuffer8BitAccess
is enabled. -
If the
descriptorIndexing
feature is supported, or if theVK_EXT_descriptor_indexing
extension is supported: -
If Vulkan 1.3 is supported:
-
inlineUniformBlock
, if Vulkan 1.3 or theVK_EXT_inline_uniform_block
extension is supported. -
descriptorBindingInlineUniformBlockUpdateAfterBind
, if Vulkan 1.3 or theVK_EXT_inline_uniform_block
extension is supported; and if thedescriptorIndexing
feature is supported, or theVK_EXT_descriptor_indexing
extension is supported. -
scalarBlockLayout
, if theVK_EXT_scalar_block_layout
extension is supported. -
subgroupBroadcastDynamicId
, if Vulkan 1.2 is supported. -
samplerMirrorClampToEdge
, if theVK_KHR_sampler_mirror_clamp_to_edge
extension is supported. -
drawIndirectCount
, if theVK_KHR_draw_indirect_count
extension is supported. -
samplerFilterMinmax
, if theVK_EXT_sampler_filter_minmax
extension is supported. -
shaderOutputViewportIndex
, if theVK_EXT_shader_viewport_index_layer
extension is supported. -
shaderOutputLayer
, if theVK_EXT_shader_viewport_index_layer
extension is supported. -
subgroupSizeControl
, if Vulkan 1.3 or theVK_EXT_subgroup_size_control
extension is supported. -
computeFullSubgroups
, if Vulkan 1.3 or theVK_EXT_subgroup_size_control
extension is supported. -
deviceMemoryReport
, if theVK_EXT_device_memory_report
extension is supported. -
globalPriorityQuery
, if theVK_EXT_global_priority_query
extension is supported. -
globalPriorityQuery
, if theVK_KHR_global_priority
extension is supported. -
imagelessFramebuffer
, if Vulkan 1.2 or theVK_KHR_imageless_framebuffer
extension is supported. -
separateDepthStencilLayouts
, if Vulkan 1.2 or theVK_KHR_separate_depth_stencil_layouts
extension is supported. -
hostQueryReset
, if Vulkan 1.2 or theVK_EXT_host_query_reset
extension is supported. -
timelineSemaphore
, if Vulkan 1.2 or theVK_KHR_timeline_semaphore
extension is supported. -
If the
VK_KHR_acceleration_structure
extension is supported:-
All the features required by the
descriptorIndexing
feature if Vulkan 1.2 is supported, or theVK_EXT_descriptor_indexing
extension. -
bufferDeviceAddress
from Vulkan 1.2 or theVK_KHR_buffer_device_address
extension.
-
If the
VK_KHR_ray_tracing_pipeline
extension is supported:-
rayTraversalPrimitiveCulling
, ifrayQuery
is supported -
the
VK_KHR_pipeline_library
extension must be supported.
-
rayQuery
, if theVK_KHR_ray_query
extension is supported. -
pipelineCreationCacheControl
, if Vulkan 1.3 or theVK_EXT_pipeline_creation_cache_control
extension is supported. -
shaderSubgroupExtendedTypes
, if Vulkan 1.2 or theVK_KHR_shader_subgroup_extended_types
extension is supported. -
samplerYcbcrConversion
, if theVK_KHR_sampler_ycbcr_conversion
extension is supported. -
pipelineExecutableInfo
, if theVK_KHR_pipeline_executable_properties
extension is supported. -
textureCompressionASTC_HDR
, if theVK_EXT_texture_compression_astc_hdr
extension is supported. -
depthClipEnable
, if theVK_EXT_depth_clip_enable
extension is supported. -
memoryPriority
, if theVK_EXT_memory_priority
extension is supported. -
ycbcrImageArrays
, if theVK_EXT_ycbcr_image_arrays
extension is supported. -
indexTypeUint8
, if theVK_EXT_index_type_uint8
extension is supported. -
primitiveTopologyListRestart
, if theVK_EXT_primitive_topology_list_restart
extension is supported. -
shaderDemoteToHelperInvocation
, if Vulkan 1.3 or theVK_EXT_shader_demote_to_helper_invocation
extension is supported. -
texelBufferAlignment
, if Vulkan 1.3 or theVK_EXT_texel_buffer_alignment
extension is supported. -
vulkanMemoryModel
, if theVK_KHR_vulkan_memory_model
extension is supported. -
bufferDeviceAddress
, if Vulkan 1.3 or theVK_KHR_buffer_device_address
extension is supported. -
performanceCounterQueryPools
, if theVK_KHR_performance_query
extension is supported. -
transformFeedback
, if theVK_EXT_transform_feedback
extension is supported. -
conditionalRendering
, if theVK_EXT_conditional_rendering
extension is supported. -
vertexAttributeInstanceRateDivisor
, if theVK_EXT_vertex_attribute_divisor
extension is supported. -
fragmentDensityMap
, if theVK_EXT_fragment_density_map
extension is supported. -
shaderSubgroupClock
, if theVK_KHR_shader_clock
extension is supported. -
shaderBufferInt64Atomics
, if theVK_KHR_shader_atomic_int64
extension is supported. -
shaderInt64
, if theshaderSharedInt64Atomics
orshaderBufferInt64Atomics
features are supported. -
shaderFloat16
orshaderInt8
, if theVK_KHR_shader_float16_int8
extension is supported. -
fragmentShaderSampleInterlock
orfragmentShaderPixelInterlock
orfragmentShaderShadingRateInterlock
, if theVK_EXT_fragment_shader_interlock
extension is supported. -
rectangularLines
orbresenhamLines
orsmoothLines
orstippledRectangularLines
orstippledBresenhamLines
orstippledSmoothLines
, if theVK_EXT_line_rasterization
extension is supported. -
storageBuffer16BitAccess
, if theVK_KHR_16bit_storage
extension is supported. -
storageBuffer16BitAccess
, ifuniformAndStorageBuffer16BitAccess
is enabled. -
robustImageAccess
, if Vulkan 1.3 or theVK_EXT_image_robustness
extension is supported. -
formatA4R4G4B4
, if theVK_EXT_4444_formats
extension is supported. -
mutableDescriptorType
, if theVK_EXT_mutable_descriptor_type
orVK_VALVE_mutable_descriptor_type
extension is supported. -
shaderInt64
andshaderImageInt64Atomics
, if theVK_EXT_shader_image_atomic_int64
extension is supported. -
shaderImageInt64Atomics
, if thesparseImageInt64Atomics
feature is supported. -
shaderImageFloat32Atomics
, if thesparseImageFloat32Atomics
feature is supported. -
shaderImageFloat32AtomicAdd
, if thesparseImageFloat32AtomicAdd
feature is supported. -
primitivesGeneratedQuery
, if theVK_EXT_primitives_generated_query
extension is supported. -
pipelineFragmentShadingRate
, if theVK_KHR_fragment_shading_rate
extension is supported. -
pipelineProtectedAccess
, if theVK_EXT_pipeline_protected_access
extension is supported. -
legacyDithering
, if theVK_EXT_legacy_dithering
extension is supported. -
shaderTerminateInvocation
if Vulkan 1.3 or theVK_KHR_shader_terminate_invocation
extension is supported. -
shaderZeroInitializeWorkgroupMemory
, if Vulkan 1.3 or theVK_KHR_zero_initialize_workgroup_memory
extension is supported. -
workgroupMemoryExplicitLayout
, if theVK_KHR_workgroup_memory_explicit_layout
extension is supported. -
vertexInputDynamicState
, if theVK_EXT_vertex_input_dynamic_state
extension is supported. -
synchronization2
if Vulkan 1.3 or theVK_KHR_synchronization2
extension is supported. -
provokingVertexLast
, if theVK_EXT_provoking_vertex
extension is supported. -
descriptorBuffer
, if theVK_EXT_descriptor_buffer
extension is supported. -
shaderSubgroupUniformControlFlow
, if theVK_KHR_shader_subgroup_uniform_control_flow
extension is supported. -
borderColorSwizzle
if theVK_EXT_border_color_swizzle
extension is supported. -
multiDraw
, if theVK_EXT_multi_draw
extension is supported. -
shaderImageFloat32AtomicMinMax
, if thesparseImageFloat32AtomicMinMax
feature is supported. -
presentId
, if theVK_KHR_present_id
extension is supported. -
presentWait
, if theVK_KHR_present_wait
extension is supported. -
presentTiming
, if theVK_EXT_present_timing
extension is supported. -
shaderIntegerDotProduct
if Vulkan 1.3 or theVK_KHR_shader_integer_dot_product
extension is supported. -
maintenance4
, if Vulkan 1.3 or theVK_KHR_maintenance4
extension is supported. -
image2DViewOf3D
, if theVK_EXT_image_2d_view_of_3d
extension is supported. -
imageSlicedViewOf3D
, if theVK_EXT_image_sliced_view_of_3d
extension is supported. -
privateData
, if Vulkan 1.3 or theVK_EXT_private_data
extension is supported. -
extendedDynamicState
, if theVK_EXT_extended_dynamic_state
extension is supported. -
extendedDynamicState2
, if theVK_EXT_extended_dynamic_state2
extension is supported. -
depthClipControl
, if theVK_EXT_depth_clip_control
extension is supported. -
minLod
, if theVK_EXT_image_view_min_lod
extension is supported. -
linearColorAttachment
, if theVK_NV_linear_color_attachment
extension is supported. -
presentBarrier
, if theVK_NV_present_barrier
extension is supported. -
graphicsPipelineLibrary
, if theVK_EXT_graphics_pipeline_library
extension is supported. -
dynamicRendering
, if Vulkan 1.3 or theVK_KHR_dynamic_rendering
extension is supported. -
taskShader
andmeshShader
, if theVK_EXT_mesh_shader
extension is supported. -
primitiveFragmentShadingRate
ifprimitiveFragmentShadingRateMeshShader
feature is supported. -
subpassMergeFeedback
, if theVK_EXT_subpass_merge_feedback
extension is supported. -
rayTracingMaintenance1
, if theVK_KHR_ray_tracing_maintenance1
extension is supported. -
colorWriteEnable
, if theVK_EXT_color_write_enable
extension is supported. -
multisampledRenderToSingleSampled
, if theVK_EXT_multisampled_render_to_single_sampled
extension is supported. -
imageCompressionControl
, if theVK_EXT_image_compression_control
extension is supported. -
imageCompressionControlSwapchain
, if theVK_EXT_image_compression_control_swapchain
extension is supported. -
shaderEarlyAndLateFragmentTests
, if theVK_AMD_shader_early_and_late_fragment_tests
extension is supported. -
nonSeamlessCubeMap
, if theVK_EXT_non_seamless_cube_map
extension is supported. -
shaderModuleIdentifier
, ifVK_EXT_shader_module_identifier
extension is supported. -
pipelineRobustness
, if theVK_EXT_pipeline_robustness
extension is supported. -
textureSampleWeighted
,TextureBlockMatch
, andTextureBoxFilter
ifVK_QCOM_image_processing
extension is supported. -
tileProperties
ifVK_QCOM_tile_properties
extension is supported. -
attachmentFeedbackLoopLayout
, if theVK_EXT_attachment_feedback_loop_layout
extension is supported. -
depthClampZeroOne
, if theVK_EXT_depth_clamp_zero_one
extension is supported. -
deviceFault
, if theVK_EXT_device_fault
extension is supported. -
reportAddressBinding
, if theVK_EXT_device_address_binding_report
extension is supported. -
micromap
, if theVK_EXT_opacity_micromap
extension is supported. -
pipelineLibraryGroupHandles
, if theVK_EXT_pipeline_library_group_handles
extension is supported. -
swapchainMaintenance1
, if theVK_EXT_swapchain_maintenance1
extension is supported. -
tessellationShader
, if theextendedDynamicState3TessellationDomainOrigin
feature is supported. -
depthClamp
, if theextendedDynamicState3DepthClampEnable
feature is supported. -
fillModeNonSolid
, if theextendedDynamicState3PolygonMode
feature is supported. -
alphaToOne
, if theextendedDynamicState3AlphaToOneEnable
feature is supported. -
logicOp
, if theextendedDynamicState3LogicOpEnable
feature is supported. -
geometryStreams
, if theextendedDynamicState3RasterizationStream
feature is supported. -
VK_EXT_conservative_rasterization
extension, if theextendedDynamicState3ConservativeRasterizationMode
feature is supported. -
VK_EXT_conservative_rasterization
extension, if theextendedDynamicState3ExtraPrimitiveOverestimationSize
feature is supported. -
VK_EXT_sample_locations
extension, if theextendedDynamicState3SampleLocationsEnable
feature is supported. -
VK_EXT_blend_operation_advanced
extension, if theextendedDynamicState3ColorBlendAdvanced
feature is supported. -
provokingVertexLast
, if theextendedDynamicState3ProvokingVertexMode
feature is supported. -
VK_EXT_line_rasterization
extension, if theextendedDynamicState3LineRasterizationMode
feature is supported. -
VK_EXT_line_rasterization
extension, if theextendedDynamicState3LineStippleEnable
feature is supported. -
depthClipControl
, if theextendedDynamicState3DepthClipNegativeOneToOne
feature is supported. -
VK_NV_clip_space_w_scaling
extension, if theextendedDynamicState3ViewportWScalingEnable
feature is supported. -
VK_NV_viewport_swizzle
extension, if theextendedDynamicState3ViewportSwizzle
feature is supported. -
VK_NV_fragment_coverage_to_color
extension, if theextendedDynamicState3CoverageToColorEnable
feature is supported. -
VK_NV_fragment_coverage_to_color
extension, if theextendedDynamicState3CoverageToColorLocation
feature is supported. -
VK_NV_framebuffer_mixed_samples
extension, if theextendedDynamicState3CoverageModulationMode
feature is supported. -
VK_NV_framebuffer_mixed_samples
extension, if theextendedDynamicState3CoverageModulationTableEnable
feature is supported. -
VK_NV_framebuffer_mixed_samples
extension, if theextendedDynamicState3CoverageModulationTable
feature is supported. -
coverageReductionMode
, if theextendedDynamicState3CoverageReductionMode
feature is supported. -
representativeFragmentTest
, if theextendedDynamicState3RepresentativeFragmentTestEnable
feature is supported. -
shadingRateImage
, if theextendedDynamicState3ShadingRateImageEnable
feature is supported. -
multiviewPerViewViewports
, if theVK_QCOM_multiview_per_view_viewports
extension is supported.
All other features defined in the Specification are optional.
45.2. Profile Features
45.2.1. Roadmap 2022
Implementations that claim support for the Roadmap 2022 profile must support the following features: