特性
特性 会通告可在 API 中启用的附加功能。如果物理设备支持某个特性,则在创建 VkDevice 时必须启用该特性,以便在该 VkDevice 中使用其相关功能。如果某个特性是不支持的,则不能在该 VkDevice 中使用该功能。
特性通过基本的 VkPhysicalDeviceFeatures 结构以及可扩展结构 |
为方便起见,新的 Vulkan 核心版本可能会为从扩展提升的特性引入新的统一特性结构。同时,扩展的原始特性结构(如果有)也会被提升到核心 API,并且是扩展结构的别名。这会导致同一个特性有多个名称:在原始扩展的特性结构和提升的结构别名中,以及在统一的特性结构中。当一个特性在扩展中隐式支持和启用,但在提升期间添加了显式名称时,则扩展本身充当下面表格中列出的特性的别名。
核心 API 中同一特性的所有别名必须一致报告:要么全部必须报告为受支持,要么全部不受支持。当提升的扩展可用时,任何相应的特性别名必须受支持。
扩展 | 特性 |
---|---|
要查询支持的特性,请调用
// Provided by VK_VERSION_1_0
void vkGetPhysicalDeviceFeatures(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures* pFeatures);
-
physicalDevice
是从中查询支持的特性的物理设备。 -
pFeatures
是指向 VkPhysicalDeviceFeatures 结构的指针,其中返回物理设备特性。对于每个特性,VK_TRUE
值指定此物理设备支持该特性,而VK_FALSE
值指定不支持该特性。
逻辑设备使用的细粒度特性必须在 VkDevice
创建时启用。如果启用了物理设备不支持的特性,则 VkDevice
创建将失败并返回 VK_ERROR_FEATURE_NOT_PRESENT
。
通过 VkDeviceCreateInfo
结构的 pEnabledFeatures
成员传递指向 VkPhysicalDeviceFeatures
结构的指针来启用细粒度特性,该结构被传递到 vkCreateDevice
调用中。如果 pEnabledFeatures
的成员为 VK_TRUE
或 VK_FALSE
,则将分别启用或禁用指定的特性来创建设备。也可以通过使用 VkPhysicalDeviceFeatures2 结构来启用特性。
如果应用程序希望启用设备支持的所有特性,则它可以简单地传入之前由 vkGetPhysicalDeviceFeatures
返回的 VkPhysicalDeviceFeatures
结构。要禁用某个单独的特性,应用程序可以在同一结构中将所需的成员设置为 VK_FALSE
。将 pEnabledFeatures
设置为 NULL
并且在 VkDeviceCreateInfo 的 pNext
链中不包含 VkPhysicalDeviceFeatures2 等同于将结构的所有成员设置为 VK_FALSE
。
某些特性,例如 |
要查询核心或扩展定义的受支持特性,请调用
// Provided by VK_VERSION_1_1
void vkGetPhysicalDeviceFeatures2(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2* pFeatures);
或等效命令
// Provided by VK_KHR_get_physical_device_properties2
void vkGetPhysicalDeviceFeatures2KHR(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2* pFeatures);
-
physicalDevice
是从中查询支持的特性的物理设备。 -
pFeatures
是指向 VkPhysicalDeviceFeatures2 结构的指针,其中返回物理设备特性。
pFeatures
中的每个结构体及其 pNext
链都包含与细粒度功能相对应的成员。pFeatures
中的每个结构体及其 pNext
链都包含与细粒度功能相对应的 VkBool32
成员。每个这样的成员都返回 VK_TRUE
值,表示该功能在此物理设备上受支持,或者返回 VK_FALSE
值,表示该功能不受支持。
VkPhysicalDeviceFeatures2
结构定义如下:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceFeatures2 {
VkStructureType sType;
void* pNext;
VkPhysicalDeviceFeatures features;
} VkPhysicalDeviceFeatures2;
或者等效地:
// Provided by VK_KHR_get_physical_device_properties2
typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
features
是一个 VkPhysicalDeviceFeatures 结构,描述 Vulkan 1.0 API 的细粒度功能。
此结构的 pNext
链用于使用扩展定义的功能扩展该结构。此结构可以在 vkGetPhysicalDeviceFeatures2 中使用,或者可以包含在 VkDeviceCreateInfo 结构的 pNext
链中,在这种情况下,它控制启用的功能,而不是 pEnabledFeatures
。
VkPhysicalDeviceFeatures
结构定义如下:
// 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;
此结构描述以下功能:
-
robustBufferAccess
指定对缓冲区的访问将根据缓冲区描述符的范围(由VkDescriptorBufferInfo
::range
、VkBufferViewCreateInfo::range
或缓冲区大小确定)进行边界检查。越界访问必须不会导致应用程序终止,并且着色器加载、存储和原子的效果必须符合下述的实现相关的行为。-
如果满足以下任何条件,则认为缓冲区访问越界:
-
指针由
OpImageTexelPointer
形成,并且坐标小于零或大于或等于绑定范围内的完整元素数。 -
指针不是由
OpImageTexelPointer
形成的,并且指向的对象没有完全包含在绑定范围内。这包括通过可变指针执行的访问,在这种情况下,无法静态确定正在访问的缓冲区描述符。未初始化的指针和等于OpConstantNull
的指针被视为指向零大小的对象,因此通过此类指针的所有访问都被视为越界。通过缓冲区设备地址进行的缓冲区访问不进行边界检查。 -
如果未启用
VkPhysicalDeviceCooperativeMatrixFeaturesNV
::cooperativeMatrixRobustBufferAccess
功能,则使用OpCooperativeMatrixLoadNV
和OpCooperativeMatrixStoreNV
的访问可能不进行边界检查。 -
如果未启用
VkPhysicalDeviceCooperativeMatrixFeaturesKHR
::cooperativeMatrixRobustBufferAccess
功能,则使用OpCooperativeMatrixLoadKHR
和OpCooperativeMatrixStoreKHR
的访问可能不进行边界检查。如果 SPIR-V
OpLoad
指令加载一个结构,并且结构的尾部超出范围,则该结构的所有成员都被认为是越界的,即使末尾的成员不是静态使用的。 -
如果未启用
robustBufferAccess2
功能,并且确定任何缓冲区访问越界,则对同一缓冲区进行的相同类型(加载、存储或原子)的任何其他访问,其访问的地址与越界地址相差小于 16 个字节的,也可能被视为越界。 -
如果访问是从与同一着色器调用中先前的存储相同的内存位置读取的加载,并且在该着色器调用中没有其他对同一内存位置的干预访问,则加载的结果可能是由存储指令存储的值,即使访问越界。如果加载是
Volatile
,则越界加载必须返回适当的越界值。
-
-
对使用 VK_NULL_HANDLE 资源或视图写入的描述符的访问不被视为越界。相反,每种类型的描述符访问都为对空描述符的访问定义了特定的行为。
-
越界缓冲区加载将返回以下任何值:
-
如果访问的是统一缓冲区,并且启用了
robustBufferAccess2
功能,则在描述符范围的末尾和描述符范围的末尾向上取整到robustUniformBufferAccessSizeAlignment
字节的倍数之间的偏移量的加载必须返回零值或正在加载的偏移量处的内存内容。加载的偏移量超过描述符范围向上取整到robustUniformBufferAccessSizeAlignment
字节的倍数,必须返回零值。 -
如果访问的是存储缓冲区,并且启用了
robustBufferAccess2
功能,则在描述符范围的末尾和描述符范围的末尾向上取整到robustStorageBufferAccessSizeAlignment
字节的倍数之间的偏移量的加载必须返回零值或正在加载的偏移量处的内存内容。加载的偏移量超过描述符范围向上取整到robustStorageBufferAccessSizeAlignment
字节的倍数,必须返回零值。同样,在描述符范围的末尾和描述符范围的末尾向上取整到robustStorageBufferAccessSizeAlignment
字节的倍数之间的地址的存储可能被丢弃。 -
对存储缓冲区的非原子访问(32 位的倍数)可能被分解为单独进行边界检查的 32 位访问。
-
如果访问的是索引缓冲区,并且启用了
robustBufferAccess2
功能,则必须返回零值。 -
如果访问的是统一纹理缓冲区或存储纹理缓冲区,并且启用了
robustBufferAccess2
功能,则必须返回零值,然后根据缓冲区视图的格式应用 转换为 RGBA。 -
来自绑定到缓冲区的内存范围内的任何位置的值(可能包括缓冲区末尾之后的内存字节,直至绑定范围的末尾)。
-
零值,或向量读取的 (0,0,0,x) 向量,其中 x 是以向量分量的类型表示的有效值,并且可能是以下任何值:
-
0、1 或可表示的最大正整数值(对于有符号或无符号整数分量)
-
0.0 或 1.0(对于浮点分量)
-
-
-
越界写入可能会修改绑定到缓冲区的内存范围内的值,但必须不修改任何其他内存。
-
如果启用了
robustBufferAccess2
特性,则越界写入必须不修改任何内存。
-
-
越界原子操作可能修改绑定到缓冲区的内存范围内的值,但必须不修改任何其他内存,并返回一个未定义的值。
-
如果启用了
robustBufferAccess2
特性,则越界原子操作必须不修改任何内存,并返回一个未定义的值。
-
-
如果未启用
robustBufferAccess2
特性,如果绑定顶点缓冲区范围中属性的偏移量加上属性的大小大于以下任一值,则认为顶点输入属性越界:-
vertexBufferRangeSize
,如果bindingStride
== 0;或者 -
(
vertexBufferRangeSize
- (vertexBufferRangeSize
%bindingStride
))其中
vertexBufferRangeSize
是绑定到顶点缓冲区绑定的内存范围的字节大小,bindingStride
是对应顶点输入绑定的字节步幅。此外,如果使用特定顶点输入绑定的任何顶点输入属性越界,则对于该顶点着色器调用,使用该顶点输入绑定的所有顶点输入属性都将被视为越界。 -
如果顶点输入属性越界,则会为其分配以下值之一:
-
来自绑定到缓冲区的内存范围内的任何位置的值,根据属性的格式进行转换。
-
零值,根据属性的格式进行格式转换。
-
零值,或者如上所述的(0,0,0,x)向量。
-
-
-
如果启用了
robustBufferAccess2
特性,如果绑定顶点缓冲区范围中属性的偏移量加上属性的大小大于绑定到顶点缓冲区绑定的内存范围的字节大小,则认为顶点输入属性越界。 -
如果未启用
robustBufferAccess
,应用程序必须不执行越界访问,除非在pipelineRobustness
特性启用的条件下。
-
-
fullDrawIndexUint32
指定在使用VK_INDEX_TYPE_UINT32
的 VkIndexType 时,索引绘制调用支持完整的 32 位索引范围。maxDrawIndexedIndexValue
是可以使用的最大索引值(除了图元重启索引,当 VkIndexType 为VK_INDEX_TYPE_UINT32
时,它始终为 232-1)。如果支持此特性,则maxDrawIndexedIndexValue
必须为 232-1;否则它必须不小于 224-1。 请参阅maxDrawIndexedIndexValue
。 -
imageCubeArray
指定是否可以创建 VkImageViewType 为VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
的图像视图,并且相应的SampledCubeArray
和ImageCubeArray
SPIR-V 功能可以在着色器代码中使用。 -
independentBlend
指定VkPipelineColorBlendAttachmentState
设置是否由每个附件独立控制。 如果未启用此特性,则所有颜色附件的VkPipelineColorBlendAttachmentState
设置必须相同。 否则,可以为每个绑定的颜色附件提供不同的VkPipelineColorBlendAttachmentState
。 -
geometryShader
指定是否支持几何着色器。如果未启用此特性,则必须不使用VK_SHADER_STAGE_GEOMETRY_BIT
和VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
枚举值。 这也指定着色器模块是否可以声明Geometry
功能。 -
tessellationShader
指定是否支持细分控制和评估着色器。 如果未启用此特性,则必须不使用VK_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
和VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
枚举值。 这也指定着色器模块是否可以声明Tessellation
功能。 -
sampleRateShading
指定是否支持采样着色和多重采样插值。 如果未启用此特性,则 VkPipelineMultisampleStateCreateInfo 结构的sampleShadingEnable
成员必须为VK_FALSE
,并且minSampleShading
成员被忽略。 这也指定着色器模块是否可以声明SampleRateShading
功能。 -
dualSrcBlend
指定是否支持采用两个源的混合操作。 如果未启用此特性,则必须不使用VK_BLEND_FACTOR_SRC1_COLOR
、VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
、VK_BLEND_FACTOR_SRC1_ALPHA
和VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
枚举值作为源或目标混合因子。 请参阅双源混合。 -
logicOp
指定是否支持逻辑操作。 如果未启用此特性,则 VkPipelineColorBlendStateCreateInfo 结构的logicOpEnable
成员必须为VK_FALSE
,并且logicOp
成员被忽略。 -
multiDrawIndirect
指定是否支持多重间接绘制。 如果未启用此特性,则 vkCmdDrawIndirect 和 vkCmdDrawIndexedIndirect 命令的drawCount
参数必须为 0 或 1。 如果不支持此特性,则VkPhysicalDeviceLimits
结构的maxDrawIndirectCount
成员也必须为 1。 请参阅maxDrawIndirectCount
。 -
drawIndirectFirstInstance
指定间接绘制调用是否支持firstInstance
参数。 如果未启用此特性,则提供给 vkCmdDrawIndirect 和 vkCmdDrawIndexedIndirect 命令的所有VkDrawIndirectCommand
和VkDrawIndexedIndirectCommand
结构的firstInstance
成员必须为 0。 -
depthClamp
指定是否支持深度钳制。 如果未启用此特性,则 VkPipelineRasterizationStateCreateInfo 结构的depthClampEnable
成员必须为VK_FALSE
。 否则,将depthClampEnable
设置为VK_TRUE
将启用深度钳制。 -
depthBiasClamp
指定是否支持深度偏移钳制。如果未启用此特性,则 VkPipelineRasterizationStateCreateInfo 结构的depthBiasClamp
成员必须为 0.0,除非启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态,在这种情况下,vkCmdSetDepthBias 的depthBiasClamp
参数必须为 0.0。 -
fillModeNonSolid
指定是否支持点和线框填充模式。如果未启用此特性,则必须不使用VK_POLYGON_MODE_POINT
和VK_POLYGON_MODE_LINE
枚举值。 -
depthBounds
指定是否支持深度边界测试。如果未启用此特性,则 VkPipelineDepthStencilStateCreateInfo 结构的depthBoundsTestEnable
成员必须为VK_FALSE
,除非启用了VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE
动态状态,在这种情况下,vkCmdSetDepthBoundsTestEnable 的depthBoundsTestEnable
参数必须为VK_FALSE
。当depthBoundsTestEnable
为VK_FALSE
时,VkPipelineDepthStencilStateCreateInfo 结构的minDepthBounds
和maxDepthBounds
成员将被忽略。 -
wideLines
指定是否支持宽度不为 1.0 的线条。如果未启用此特性,则 VkPipelineRasterizationStateCreateInfo 结构的lineWidth
成员必须为 1.0,除非启用了VK_DYNAMIC_STATE_LINE_WIDTH
动态状态,在这种情况下,vkCmdSetLineWidth 的lineWidth
参数必须为 1.0。当支持此特性时,支持的线宽的范围和粒度分别由VkPhysicalDeviceLimits
结构的lineWidthRange
和lineWidthGranularity
成员指示。 -
largePoints
指定是否支持大小大于 1.0 的点。如果未启用此特性,则仅支持着色器写入的点大小为 1.0。支持的点大小的范围和粒度分别由VkPhysicalDeviceLimits
结构的pointSizeRange
和pointSizeGranularity
成员指示。 -
alphaToOne
指定实现是否能够在 多重采样覆盖率 片段操作中替换片段着色器颜色输出的 alpha 值。如果未启用此特性,则 VkPipelineMultisampleStateCreateInfo 结构的alphaToOneEnable
成员必须为VK_FALSE
。否则,将alphaToOneEnable
设置为VK_TRUE
将启用 alpha-to-one 行为。 -
multiViewport
指定是否支持多个视口。如果未启用此特性-
VkPipelineViewportStateCreateInfo 结构的
viewportCount
和scissorCount
成员必须为 1。 -
vkCmdSetViewport 命令的
firstViewport
和viewportCount
参数必须分别为 0 和 1。 -
vkCmdSetScissor 命令的
firstScissor
和scissorCount
参数必须分别为 0 和 1。 -
VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构的
exclusiveScissorCount
成员必须为 0 或 1。 -
vkCmdSetExclusiveScissorNV 命令的
firstExclusiveScissor
和exclusiveScissorCount
参数必须分别为 0 和 1。
-
-
samplerAnisotropy
指定是否支持各向异性过滤。如果未启用此特性,则 VkSamplerCreateInfo 结构的anisotropyEnable
成员必须为VK_FALSE
。 -
textureCompressionETC2
指定是否支持所有 ETC2 和 EAC 压缩纹理格式。如果启用了此特性,则对于以下格式,在optimalTilingFeatures
中必须支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
、VK_FORMAT_FEATURE_BLIT_SRC_BIT
和VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
特性-
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
要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatProperties 和 vkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。
-
-
textureCompressionASTC_LDR
指定是否支持所有 ASTC LDR 压缩纹理格式。如果启用了此特性,则对于以下格式,在optimalTilingFeatures
中必须支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
、VK_FORMAT_FEATURE_BLIT_SRC_BIT
和VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
特性-
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
要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatProperties 和 vkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。
-
-
textureCompressionBC
指定是否支持所有 BC 压缩纹理格式。如果启用了此特性,则对于以下格式,在optimalTilingFeatures
中必须支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
、VK_FORMAT_FEATURE_BLIT_SRC_BIT
和VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
特性-
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
要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatProperties 和 vkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。
-
-
occlusionQueryPrecise
指定是否支持返回实际样本计数的遮挡查询。遮挡查询通过在传递给 vkCreateQueryPool 的 VkQueryPoolCreateInfo 结构中指定queryType
为VK_QUERY_TYPE_OCCLUSION
来在VkQueryPool
中创建。如果启用此功能,则此类型的查询可以在 vkCmdBeginQuery 的flags
参数中启用VK_QUERY_CONTROL_PRECISE_BIT
。如果不支持此功能,则实现仅支持布尔遮挡查询。当传递任何样本时,布尔查询将返回一个非零结果值,否则返回零结果值。启用此功能并设置VK_QUERY_CONTROL_PRECISE_BIT
时,遮挡查询将报告传递的实际样本数。 -
pipelineStatisticsQuery
指定是否支持管线统计查询。如果未启用此功能,则不能创建VK_QUERY_TYPE_PIPELINE_STATISTICS
类型的查询,并且在 VkQueryPoolCreateInfo 结构的pipelineStatistics
成员中不能设置任何 VkQueryPipelineStatisticFlagBits 位。 -
vertexPipelineStoresAndAtomics
指定顶点、细分和几何着色器阶段的存储缓冲区和图像是否支持存储和原子操作。如果未启用此功能,则着色器模块中这些阶段使用的所有存储图像、存储纹理缓冲区和存储缓冲区变量必须使用NonWritable
修饰符(或 GLSL 中的readonly
内存限定符)进行修饰。 -
fragmentStoresAndAtomics
指定片段着色器阶段的存储缓冲区和图像是否支持存储和原子操作。如果未启用此功能,则着色器模块中片段阶段使用的所有存储图像、存储纹理缓冲区和存储缓冲区变量必须使用NonWritable
修饰符(或 GLSL 中的readonly
内存限定符)进行修饰。 -
shaderTessellationAndGeometryPointSize
指定细分控制、细分评估和几何着色器阶段是否可以使用内置的PointSize
修饰符。如果未启用此功能,则不能读取或写入使用PointSize
内置修饰符修饰的成员,并且从细分或几何着色器写入的所有点的大小都为 1.0。这还指定了着色器模块是否可以为细分控制和评估着色器声明TessellationPointSize
功能,或者着色器模块是否可以为几何着色器声明GeometryPointSize
功能。支持此功能的实现必须同时支持tessellationShader
或geometryShader
功能中的一个或两个。 -
shaderImageGatherExtended
指定着色器代码中是否可以使用扩展的图像收集指令集。如果未启用此功能,则OpImage*Gather
指令不支持Offset
和ConstOffsets
操作数。这还指定了着色器模块是否可以声明ImageGatherExtended
功能。 -
shaderStorageImageExtendedFormats
指定是否支持以下所有“存储图像扩展格式”;如果支持此功能,则以下格式的optimalTilingFeatures
中必须支持VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
-
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
shaderStorageImageExtendedFormats
功能仅添加了格式支持的保证,该支持针对整个物理设备指定。因此,通过 vkCreateDevice 启用或禁用此功能没有实际效果。要查询其他属性,或者如果不支持该功能,则可以使用 vkGetPhysicalDeviceFormatProperties 和 vkGetPhysicalDeviceImageFormatProperties 来检查各个格式的受支持属性,如常用规则所允许。
来自
StorageImageExtendedFormats
SPIR-V 功能的VK_FORMAT_R32G32_UINT
、VK_FORMAT_R32G32_SINT
和VK_FORMAT_R32G32_SFLOAT
已经包含在核心 Vulkan 强制格式支持中。
-
-
shaderStorageImageMultisample
指定是否支持多采样存储图像。如果未启用此功能,则创建时usage
包含VK_IMAGE_USAGE_STORAGE_BIT
的图像必须使用等于VK_SAMPLE_COUNT_1_BIT
的samples
创建。这还指定了着色器模块是否可以声明StorageImageMultisample
和ImageMSArray
功能。 -
shaderStorageImageReadWithoutFormat
指定存储图像和存储纹理缓冲区在读取时是否需要指定格式限定符。shaderStorageImageReadWithoutFormat
仅适用于无格式存储列表中列出的格式。 -
shaderStorageImageWriteWithoutFormat
指定存储图像和存储纹理缓冲区在写入时是否需要指定格式限定符。shaderStorageImageWriteWithoutFormat
仅适用于无格式存储列表中列出的格式。 -
shaderUniformBufferArrayDynamicIndexing
指定着色器代码中统一缓冲区数组是否可以通过在子组或调用组内动态统一的整数表达式进行索引。如果未启用此功能,则当在着色器代码中聚合到数组中时,描述符类型为VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
或VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
的资源必须仅通过常量整数表达式进行索引。这还指定了着色器模块是否可以声明UniformBufferArrayDynamicIndexing
功能。 -
shaderSampledImageArrayDynamicIndexing
指定着色器代码中,采样器或采样图像的数组是否可以通过子组或调用组内动态统一的整数表达式进行索引。如果未启用此特性,当着色器代码中将描述符类型为VK_DESCRIPTOR_TYPE_SAMPLER
、VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
或VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
的资源聚合到数组中时,必须仅通过常量整数表达式进行索引。这也指定了着色器模块是否可以声明SampledImageArrayDynamicIndexing
能力。 -
shaderStorageBufferArrayDynamicIndexing
指定着色器代码中,存储缓冲区的数组是否可以通过子组或调用组内动态统一的整数表达式进行索引。如果未启用此特性,当着色器代码中将描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
或VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
的资源聚合到数组中时,必须仅通过常量整数表达式进行索引。这也指定了着色器模块是否可以声明StorageBufferArrayDynamicIndexing
能力。 -
shaderStorageImageArrayDynamicIndexing
指定着色器代码中,存储图像的数组是否可以通过子组或调用组内动态统一的整数表达式进行索引。如果未启用此特性,当着色器代码中将描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
的资源聚合到数组中时,必须仅通过常量整数表达式进行索引。这也指定了着色器模块是否可以声明StorageImageArrayDynamicIndexing
能力。 -
shaderClipDistance
指定着色器代码中是否支持裁剪距离。如果未启用此特性,则任何使用ClipDistance
内置修饰符修饰的成员必须不能在着色器模块中读取或写入。这也指定了着色器模块是否可以声明ClipDistance
能力。 -
shaderCullDistance
指定着色器代码中是否支持剔除距离。如果未启用此特性,则任何使用CullDistance
内置修饰符修饰的成员必须不能在着色器模块中读取或写入。这也指定了着色器模块是否可以声明CullDistance
能力。 -
shaderFloat64
指定着色器代码中是否支持 64 位浮点数(双精度)。如果未启用此特性,则必须不在着色器代码中使用 64 位浮点类型。这也指定了着色器模块是否可以声明Float64
能力。 对于 SPIR-V 允许使用Float64
能力的所有存储类,都启用了声明和使用 64 位浮点数的功能。 -
shaderInt64
指定着色器代码中是否支持 64 位整数(有符号和无符号)。如果未启用此特性,则必须不在着色器代码中使用 64 位整数类型。这也指定了着色器模块是否可以声明Int64
能力。对于 SPIR-V 允许使用Int64
能力的所有存储类,都启用了声明和使用 64 位整数的功能。 -
shaderInt16
指定着色器代码中是否支持 16 位整数(有符号和无符号)。如果未启用此特性,则必须不在着色器代码中使用 16 位整数类型。这也指定了着色器模块是否可以声明Int16
能力。然而,这仅启用了 SPIR-V 允许Int16
SPIR-V 能力的存储类的一个子集:启用了在Private
、Workgroup
(对于非 Block 变量)和Function
存储类中声明和使用 16 位整数的功能,而未启用在接口存储类(例如,UniformConstant
、Uniform
、StorageBuffer
、Input
、Output
和PushConstant
)中声明它们的功能。 -
shaderResourceResidency
指定着色器代码中是否支持返回资源驻留信息的图像操作。如果未启用此特性,则必须不在着色器代码中使用OpImageSparse*
指令。这也指定了着色器模块是否可以声明SparseResidency
能力。该特性要求至少支持sparseResidency*
特性中的一个。 -
shaderResourceMinLod
指定着色器代码中是否支持指定最小资源 LOD 的图像操作。如果未启用此特性,则必须不在着色器代码中使用MinLod
图像操作数。这也指定了着色器模块是否可以声明MinLod
能力。 -
sparseBinding
指定资源内存是否可以在不透明稀疏块级别而不是在对象级别进行管理。如果未启用此特性,则资源内存必须仅使用 vkBindBufferMemory 和 vkBindImageMemory 命令按每个对象进行绑定。在这种情况下,缓冲器和图像必须不能分别使用在 VkBufferCreateInfo 和 VkImageCreateInfo 结构的flags
成员中设置的VK_BUFFER_CREATE_SPARSE_BINDING_BIT
和VK_IMAGE_CREATE_SPARSE_BINDING_BIT
创建。否则,资源内存可以如 稀疏资源特性 中所述进行管理。 -
sparseResidencyBuffer
指定设备是否可以访问部分驻留的缓冲区。如果未启用此特性,则必须不能使用在 VkBufferCreateInfo 结构的flags
成员中设置的VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
创建缓冲区。 -
sparseResidencyImage2D
指定设备是否可以访问每个像素 1 个采样的部分驻留的 2D 图像。如果未启用此特性,则对于imageType
为VK_IMAGE_TYPE_2D
且samples
设置为VK_SAMPLE_COUNT_1_BIT
的图像,必须不能使用在 VkImageCreateInfo 结构的flags
成员中设置的VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
创建。 -
sparseResidencyImage3D
指定设备是否可以访问部分驻留的 3D 图像。如果未启用此特性,则对于imageType
为VK_IMAGE_TYPE_3D
的图像,必须不能使用在 VkImageCreateInfo 结构的flags
成员中设置的VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
创建。 -
sparseResidency2Samples
指定物理设备是否可以访问每个像素 2 个采样的部分驻留 2D 图像。如果未启用此功能,则imageType
为VK_IMAGE_TYPE_2D
且samples
设置为VK_SAMPLE_COUNT_2_BIT
的图像,在 VkImageCreateInfo 结构的flags
成员中设置VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
时不得创建。 -
sparseResidency4Samples
指定物理设备是否可以访问每个像素 4 个采样的部分驻留 2D 图像。如果未启用此功能,则imageType
为VK_IMAGE_TYPE_2D
且samples
设置为VK_SAMPLE_COUNT_4_BIT
的图像,在 VkImageCreateInfo 结构的flags
成员中设置VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
时不得创建。 -
sparseResidency8Samples
指定物理设备是否可以访问每个像素 8 个采样的部分驻留 2D 图像。如果未启用此功能,则imageType
为VK_IMAGE_TYPE_2D
且samples
设置为VK_SAMPLE_COUNT_8_BIT
的图像,在 VkImageCreateInfo 结构的flags
成员中设置VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
时不得创建。 -
sparseResidency16Samples
指定物理设备是否可以访问每个像素 16 个采样的部分驻留 2D 图像。如果未启用此功能,则imageType
为VK_IMAGE_TYPE_2D
且samples
设置为VK_SAMPLE_COUNT_16_BIT
的图像,在 VkImageCreateInfo 结构的flags
成员中设置VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
时不得创建。 -
sparseResidencyAliased
指定物理设备是否可以正确访问别名到多个位置的数据。如果未启用此功能,则VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
和VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
枚举值不得分别在 VkBufferCreateInfo 和 VkImageCreateInfo 结构的flags
成员中使用。 -
variableMultisampleRate
指定在不使用任何附件的子通道期间,将绑定到命令缓冲区的所有管线必须具有相同的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples
值。如果设置为VK_TRUE
,则表示实现支持在不使用任何附件的子通道中使用可变多重采样率。如果设置为VK_FALSE
,则此类子通道中绑定的所有管线必须具有相同的多重采样率。这在子通道使用任何附件的情况下不起作用。
VkPhysicalDeviceVulkan11Features
结构定义如下:
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
storageBuffer16BitAccess
指定在StorageBuffer
、ShaderRecordBufferKHR
或PhysicalStorageBuffer
存储类中带有Block
修饰符的对象是否可以拥有 16 位整数和 16 位浮点成员。如果未启用此功能,则不得在此类对象中使用 16 位整数或 16 位浮点成员。这还指定了着色器模块是否可以声明StorageBuffer16BitAccess
功能。 -
uniformAndStorageBuffer16BitAccess
指定在Uniform
存储类中带有Block
修饰符的对象是否可以拥有 16 位整数和 16 位浮点成员。如果未启用此功能,则不得在此类对象中使用 16 位整数或 16 位浮点成员。这还指定了着色器模块是否可以声明UniformAndStorageBuffer16BitAccess
功能。 -
storagePushConstant16
指定在PushConstant
存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果未启用此功能,则不得在此类对象中使用 16 位整数或浮点成员。这还指定了着色器模块是否可以声明StoragePushConstant16
功能。 -
storageInputOutput16
指定在Input
和Output
存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果未启用此功能,则不得在此类对象中使用 16 位整数或 16 位浮点成员。这还指定了着色器模块是否可以声明StorageInputOutput16
功能。 -
multiviewGeometryShader
指定实现是否支持在渲染通道内进行多视图渲染,并且使用几何着色器。如果未启用此功能,则针对具有非零视图掩码的子通道编译的管线不得包含几何着色器。 -
multiviewTessellationShader
指定实现是否支持在渲染通道内进行多视图渲染,并且使用细分着色器。如果未启用此功能,则针对具有非零视图掩码的子通道编译的管线不得包含任何细分着色器。 -
variablePointersStorageBuffer
指定实现是否支持 SPIR-VVariablePointersStorageBuffer
功能。如果未启用此功能,则着色器模块不得声明SPV_KHR_variable_pointers
扩展或VariablePointersStorageBuffer
功能。 -
variablePointers
指定实现是否支持 SPIR-VVariablePointers
功能。如果未启用此功能,则着色器模块不得声明VariablePointers
功能。 -
protectedMemory
指定是否支持受保护内存。 -
samplerYcbcrConversion
指定实现是否支持 采样器 Y′CBCR 转换。如果samplerYcbcrConversion
为VK_FALSE
,则不支持采样器 Y′CBCR 转换,并且不得使用使用采样器 Y′CBCR 转换的采样器。 -
shaderDrawParameters
指定实现是否支持 SPIR-VDrawParameters
功能。如果未启用此功能,则着色器模块不得声明SPV_KHR_shader_draw_parameters
扩展或DrawParameters
功能。
如果 VkPhysicalDeviceVulkan11Features
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个相应的功能。 VkPhysicalDeviceVulkan11Features
也可以 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDeviceVulkan12Features
结构体的定义如下:
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
samplerMirrorClampToEdge
指示实现是否支持VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
采样器寻址模式。如果此功能未启用,则必须不使用VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
采样器寻址模式。 -
drawIndirectCount
指示实现是否支持 vkCmdDrawIndirectCount 和 vkCmdDrawIndexedIndirectCount 函数。如果此功能未启用,则必须不使用这些函数。 -
storageBuffer8BitAccess
指示具有Block
修饰符的StorageBuffer
、ShaderRecordBufferKHR
或PhysicalStorageBuffer
存储类中的对象是否可以具有 8 位整型成员。如果此功能未启用,则在这些对象中必须不使用 8 位整型成员。这也表示着色器模块是否可以声明StorageBuffer8BitAccess
功能。 -
uniformAndStorageBuffer8BitAccess
指示具有Block
修饰符的Uniform
存储类中的对象是否可以具有 8 位整型成员。如果此功能未启用,则在这些对象中必须不使用 8 位整型成员。这也表示着色器模块是否可以声明UniformAndStorageBuffer8BitAccess
功能。 -
storagePushConstant8
指示PushConstant
存储类中的对象是否可以具有 8 位整型成员。如果此功能未启用,则在这些对象中必须不使用 8 位整型成员。这也表示着色器模块是否可以声明StoragePushConstant8
功能。 -
shaderSharedInt64Atomics
指示着色器是否可以对共享和有效负载内存执行 64 位无符号和有符号整数原子操作。 -
shaderFloat16
指示着色器代码中是否支持 16 位浮点数(半精度)。这也表示着色器模块是否可以声明Float16
功能。然而,这仅启用 SPIR-V 允许Float16
SPIR-V 功能的存储类子集:启用在Private
、Workgroup
(对于非 Block 变量)和Function
存储类中声明和使用 16 位浮点数,而不启用在接口存储类(例如,UniformConstant
、Uniform
、StorageBuffer
、Input
、Output
和PushConstant
)中声明它们。 -
shaderInt8
指示着色器代码中是否支持 8 位整数(有符号和无符号)。这也表示着色器模块是否可以声明Int8
功能。然而,这仅启用 SPIR-V 允许Int8
SPIR-V 功能的存储类子集:启用在Private
、Workgroup
(对于非 Block 变量)和Function
存储类中声明和使用 8 位整数,而不启用在接口存储类(例如,UniformConstant
、Uniform
、StorageBuffer
、Input
、Output
和PushConstant
)中声明它们。 -
descriptorIndexing
指示实现是否支持功能需求部分描述的最小描述符索引功能集。当调用 vkCreateDevice 时启用此功能,并不意味着同时启用了其他最小描述符索引功能。其他描述符索引功能必须根据应用程序的需要单独启用。 -
shaderInputAttachmentArrayDynamicIndexing
指示输入附件数组是否可以通过着色器代码中子组或调用组内动态统一的整数表达式进行索引。如果此功能未启用,则当聚合到着色器代码中的数组时,描述符类型为VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的资源必须仅通过常量整数表达式进行索引。这也表示着色器模块是否可以声明InputAttachmentArrayDynamicIndexing
功能。 -
shaderUniformTexelBufferArrayDynamicIndexing
指示统一纹理缓冲区数组是否可以通过着色器代码中子组或调用组内动态统一的整数表达式进行索引。如果此功能未启用,则当聚合到着色器代码中的数组时,描述符类型为VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
的资源必须仅通过常量整数表达式进行索引。这也表示着色器模块是否可以声明UniformTexelBufferArrayDynamicIndexing
功能。 -
shaderStorageTexelBufferArrayDynamicIndexing
指示存储纹理缓冲区数组是否可以通过着色器代码中子组或调用组内动态统一的整数表达式进行索引。如果此功能未启用,则当聚合到着色器代码中的数组时,描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
的资源必须仅通过常量整数表达式进行索引。这也表示着色器模块是否可以声明StorageTexelBufferArrayDynamicIndexing
功能。 -
shaderUniformBufferArrayNonUniformIndexing
指示统一缓冲区数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果此功能未启用,则当聚合到着色器代码中的数组时,描述符类型为VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
或VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
的资源必须不由非统一整数表达式进行索引。这也表示着色器模块是否可以声明UniformBufferArrayNonUniformIndexing
功能。 -
shaderSampledImageArrayNonUniformIndexing
指示采样器或采样图像数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果此功能未启用,则当聚合到着色器代码中的数组时,描述符类型为VK_DESCRIPTOR_TYPE_SAMPLER
、VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
或VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
的资源必须不由非统一整数表达式进行索引。这也表示着色器模块是否可以声明SampledImageArrayNonUniformIndexing
功能。 -
shaderStorageBufferArrayNonUniformIndexing
指示着色器代码中存储缓冲区的数组是否可以通过非一致的整数表达式进行索引。如果未启用此特性,则当着色器代码中将描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
或VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
的资源聚合到数组中时,必须不使用非一致的整数表达式对其进行索引。此特性还指示着色器模块是否可以声明StorageBufferArrayNonUniformIndexing
能力。 -
shaderStorageImageArrayNonUniformIndexing
指示着色器代码中存储图像的数组是否可以通过非一致的整数表达式进行索引。如果未启用此特性,则当着色器代码中将描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
的资源聚合到数组中时,必须不使用非一致的整数表达式对其进行索引。此特性还指示着色器模块是否可以声明StorageImageArrayNonUniformIndexing
能力。 -
shaderInputAttachmentArrayNonUniformIndexing
指示着色器代码中输入附件的数组是否可以通过非一致的整数表达式进行索引。如果未启用此特性,则当着色器代码中将描述符类型为VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的资源聚合到数组中时,必须不使用非一致的整数表达式对其进行索引。此特性还指示着色器模块是否可以声明InputAttachmentArrayNonUniformIndexing
能力。 -
shaderUniformTexelBufferArrayNonUniformIndexing
指示着色器代码中统一纹理缓冲区数组是否可以通过非一致的整数表达式进行索引。如果未启用此特性,则当着色器代码中将描述符类型为VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
的资源聚合到数组中时,必须不使用非一致的整数表达式对其进行索引。此特性还指示着色器模块是否可以声明UniformTexelBufferArrayNonUniformIndexing
能力。 -
shaderStorageTexelBufferArrayNonUniformIndexing
指示着色器代码中存储纹理缓冲区数组是否可以通过非一致的整数表达式进行索引。如果未启用此特性,则当着色器代码中将描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
的资源聚合到数组中时,必须不使用非一致的整数表达式对其进行索引。此特性还指示着色器模块是否可以声明StorageTexelBufferArrayNonUniformIndexing
能力。 -
descriptorBindingUniformBufferUpdateAfterBind
指示实现是否支持在绑定集合后更新统一缓冲区描述符。如果未启用此特性,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
一起使用。 -
descriptorBindingSampledImageUpdateAfterBind
指示实现是否支持在绑定集合后更新采样图像描述符。如果未启用此特性,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_SAMPLER
,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
或VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
一起使用。 -
descriptorBindingStorageImageUpdateAfterBind
指示实现是否支持在绑定集合后更新存储图像描述符。如果未启用此特性,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
一起使用。 -
descriptorBindingStorageBufferUpdateAfterBind
指示实现是否支持在绑定集合后更新存储缓冲区描述符。如果未启用此特性,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
一起使用。 -
descriptorBindingUniformTexelBufferUpdateAfterBind
指示实现是否支持在绑定集合后更新统一纹理缓冲区描述符。如果未启用此特性,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
一起使用。 -
descriptorBindingStorageTexelBufferUpdateAfterBind
指示实现是否支持在绑定集合后更新存储纹理缓冲区描述符。如果未启用此特性,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
一起使用。 -
descriptorBindingUpdateUnusedWhilePending
指示实现是否支持在集合正在使用时更新描述符。如果未启用此特性,则VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
必须不被使用。 -
descriptorBindingPartiallyBound
指示实现是否支持静态使用描述符集中某些描述符无效的绑定。如果未启用此特性,则VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT
必须不被使用。 -
descriptorBindingVariableDescriptorCount
指示实现是否支持具有可变大小的最后一个绑定的描述符集。如果未启用此特性,则VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
必须不被使用。 -
runtimeDescriptorArray
指示实现是否支持 SPIR-V 的RuntimeDescriptorArray
能力。如果未启用此特性,则描述符必须不在运行时数组中声明。 -
samplerFilterMinmax
指示实现是否支持由filterMinmaxSingleComponentFormats
属性的最低要求定义的、支持最小值/最大值过滤的最小格式集。如果未启用此特性,则 VkSamplerReductionModeCreateInfo 必须仅使用VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
。 -
scalarBlockLayout
指示实现支持在着色器中使用 标量对齐 来布局资源块。 -
imagelessFramebuffer
指示实现支持通过 VkRenderPassAttachmentBeginInfo 在渲染通道开始时指定附件的图像视图。 -
uniformBufferStandardLayout
指示实现支持统一缓冲区的布局与存储和其他类型的缓冲区相同。请参见 标准缓冲区布局。 -
shaderSubgroupExtendedTypes
是一个布尔值,指定如果实现支持这些类型,子组操作是否可以在 组操作 中使用 8 位整数、16 位整数、64 位整数、16 位浮点数以及这些类型的向量,并具有 子组范围。 -
separateDepthStencilLayouts
指示实现是否支持仅设置了VK_IMAGE_ASPECT_DEPTH_BIT
或VK_IMAGE_ASPECT_STENCIL_BIT
之一的深度/模板图像的VkImageMemoryBarrier
,以及是否可以使用VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
、VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
、VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
或VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
。 -
hostQueryReset
指示实现支持使用 vkResetQueryPool 从主机重置查询。 -
timelineSemaphore
指示是否支持使用VK_SEMAPHORE_TYPE_TIMELINE
的 VkSemaphoreType 创建的信号量。 -
bufferDeviceAddress
指示实现是否支持通过从 vkGetBufferDeviceAddress 查询的地址,在着色器中以存储缓冲区的方式访问缓冲区内存。 -
bufferDeviceAddressCaptureReplay
表示实现支持保存和重用缓冲区和设备地址,例如用于跟踪捕获和重放。 -
bufferDeviceAddressMultiDevice
表示实现支持为使用多个物理设备创建的逻辑设备使用bufferDeviceAddress
、rayTracingPipeline
和rayQuery
功能。如果不支持此功能,则必须不在使用多个物理设备创建的逻辑设备上查询缓冲区和加速结构地址。 -
vulkanMemoryModelDeviceScope
表示 Vulkan 内存模型是否可以使用Device
范围同步。 这也表示着色器模块可以声明VulkanMemoryModelDeviceScope
功能。 -
vulkanMemoryModelAvailabilityVisibilityChains
表示 Vulkan 内存模型是否可以使用具有多个元素的可用性和可见性链。 -
shaderOutputViewportIndex
表示实现是否支持ShaderViewportIndex
SPIR-V 功能,该功能允许将使用ViewportIndex
内置装饰的变量从网格、顶点或曲面细分评估着色器导出。 如果未启用此功能,则必须不在网格、顶点或曲面细分评估着色器中的输出上使用ViewportIndex
内置装饰。 -
shaderOutputLayer
表示实现是否支持ShaderLayer
SPIR-V 功能,该功能允许将使用Layer
内置装饰的变量从网格、顶点或曲面细分评估着色器导出。 如果未启用此功能,则必须不在网格、顶点或曲面细分评估着色器中的输出上使用Layer
内置装饰。 -
如果
subgroupBroadcastDynamicId
为VK_TRUE
,则OpGroupNonUniformBroadcast
的 “Id” 操作数可以在子组内动态统一,并且OpGroupNonUniformQuadBroadcast
的 “Index” 操作数可以在导数组内动态统一。 如果为VK_FALSE
,则这些操作数必须为常量。
如果 VkPhysicalDeviceVulkan12Features
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceVulkan12Features
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以有选择地启用这些功能。
VkPhysicalDeviceVulkan13Features
结构的定义如下
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
robustImageAccess
表示图像访问是否针对图像视图的维度进行严格的边界检查。 由超出边界的图像加载产生的无效纹素将按照纹素替换中所述进行替换,对于基于格式的丢失的 G、B 或 A 分量,将插入 (0,0,1) 或 (0,0,0) 值。 -
inlineUniformBlock
表示实现是否支持内联统一块描述符。如果未启用此功能,则必须不使用VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
。 -
descriptorBindingInlineUniformBlockUpdateAfterBind
表示实现是否支持在绑定集合后更新内联统一块描述符。如果未启用此功能,则必须不将VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
与VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
一起使用。 -
pipelineCreationCacheControl
表示实现支持-
以下内容可以在
Vk*PipelineCreateInfo
::flags
中使用-
VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
-
VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
-
-
以下内容可以在 VkPipelineCacheCreateInfo::
flags
中使用-
VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
-
-
-
privateData
表示实现是否支持私有数据。请参阅 私有数据。 -
shaderDemoteToHelperInvocation
表示实现是否支持 SPIR-VDemoteToHelperInvocationEXT
功能。 -
shaderTerminateInvocation
指定实现是否支持使用SPV_KHR_terminate_invocation
扩展的 SPIR-V 模块。 -
subgroupSizeControl
表示实现是否支持通过VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
标志和 VkPipelineShaderStageRequiredSubgroupSizeCreateInfo 结构来控制着色器子组大小。 -
computeFullSubgroups
表示实现是否支持通过VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
标志来要求在计算、网格或任务着色器中使用完整子组。 -
synchronization2
表示实现是否支持VK_KHR_synchronization2
中引入的新同步命令集。 -
textureCompressionASTC_HDR
表示是否支持所有 ASTC HDR 压缩纹理格式。如果启用此功能,则对于以下格式,必须在optimalTilingFeatures
中支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
、VK_FORMAT_FEATURE_BLIT_SRC_BIT
和VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
功能-
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
要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatProperties 和 vkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。
-
-
shaderZeroInitializeWorkgroupMemory
指定实现是否支持初始化 Workgroup 存储类中的变量。 -
dynamicRendering
指定实现支持使用 vkCmdBeginRendering 命令的动态渲染过程实例。 -
shaderIntegerDotProduct
指定着色器模块是否可以声明DotProductInputAllKHR
、DotProductInput4x8BitKHR
、DotProductInput4x8BitPackedKHR
和DotProductKHR
功能。 -
-
应用程序可以在使用 VkPipelineLayout 对象创建另一个对象后立即销毁它。
-
LocalSizeId
可以用作LocalSize
的替代方案,以使用专用化常量指定局部工作组大小。 -
使用相同的创建参数创建的图像将始终具有相同的对齐要求。
-
缓冲区或图像的大小内存需求永远不会大于使用更大或相等大小创建的另一个缓冲区或图像。
-
推送常量不必在动态访问之前初始化。
-
接口匹配规则允许较大的输出向量与较小的输入向量匹配,并丢弃其他值。
-
如果 VkPhysicalDeviceVulkan13Features
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。 VkPhysicalDeviceVulkan13Features
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些功能。
VkPhysicalDeviceVulkan14Features
结构定义为
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceVulkan14Features {
VkStructureType sType;
void* pNext;
VkBool32 globalPriorityQuery;
VkBool32 shaderSubgroupRotate;
VkBool32 shaderSubgroupRotateClustered;
VkBool32 shaderFloatControls2;
VkBool32 shaderExpectAssume;
VkBool32 rectangularLines;
VkBool32 bresenhamLines;
VkBool32 smoothLines;
VkBool32 stippledRectangularLines;
VkBool32 stippledBresenhamLines;
VkBool32 stippledSmoothLines;
VkBool32 vertexAttributeInstanceRateDivisor;
VkBool32 vertexAttributeInstanceRateZeroDivisor;
VkBool32 indexTypeUint8;
VkBool32 dynamicRenderingLocalRead;
VkBool32 maintenance5;
VkBool32 maintenance6;
VkBool32 pipelineProtectedAccess;
VkBool32 pipelineRobustness;
VkBool32 hostImageCopy;
VkBool32 pushDescriptor;
} VkPhysicalDeviceVulkan14Features;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
shaderSubgroupRotate
指定着色器模块是否可以声明GroupNonUniformRotateKHR
功能。 -
shaderSubgroupRotateClustered
指定着色器模块是否可以使用ClusterSize
操作数到OpGroupNonUniformRotateKHR
。 -
rectangularLines
指示实现是否支持矩形线光栅化。 -
bresenhamLines
指示实现是否支持 Bresenham 风格的线光栅化。 -
smoothLines
指示实现是否支持 平滑线光栅化。 -
stippledRectangularLines
指示实现是否支持使用VK_LINE_RASTERIZATION_MODE_RECTANGULAR
线条的虚线光栅化。 -
stippledBresenhamLines
指示实现是否支持使用VK_LINE_RASTERIZATION_MODE_BRESENHAM
线条的虚线光栅化。 -
stippledSmoothLines
指示实现是否支持使用VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH
线条的 虚线光栅化。 -
vertexAttributeInstanceRateDivisor
指定在实例化渲染的情况下,是否可以重复顶点属性的获取。 -
vertexAttributeInstanceRateZeroDivisor
指定是否支持 VkVertexInputBindingDivisorDescriptionEXT::divisor
的零值。 -
indexTypeUint8
指示VK_INDEX_TYPE_UINT8
可以与 vkCmdBindIndexBuffer2 和 vkCmdBindIndexBuffer 一起使用。 -
dynamicRenderingLocalRead
指定实现支持使用 vkCmdBeginRendering 命令在动态渲染过程实例内进行本地读取。 -
-
公开可选格式
VK_FORMAT_A1B5G5R5_UNORM_PACK16
的支持能力。 -
公开可选格式
VK_FORMAT_A8_UNORM
的支持能力。 -
一个属性,指示在 EarlyFragmentTests 模式下,多重采样覆盖操作在样本计数之后执行。
-
使用 VkBufferUsageFlags2CreateInfo 创建具有关联
VkBuffer
使用子集的VkBufferView
。 -
一个新的函数 vkCmdBindIndexBuffer2,允许将内存范围绑定为索引缓冲区。
-
对于高于应用程序请求版本的核心函数的函数指针,vkGetDeviceProcAddr 将返回
NULL
。 -
vkCmdBindVertexBuffers2 支持在
pSizes
参数中使用VK_WHOLE_SIZE
。 -
如果未写入
PointSize
,则点的默认大小为1.0
。 -
可以将 VkShaderModuleCreateInfo 作为链式结构添加到通过 VkPipelineShaderStageCreateInfo 创建的管线中,而不是必须创建着色器模块。
-
一个函数 vkGetRenderingAreaGranularity,用于查询动态渲染实例的最佳渲染区域。
-
一个属性,指示具有
VK_COMPONENT_SWIZZLE_ONE
的深度/模板纹理操作具有定义的行为。 -
vkGetDeviceImageSubresourceLayout 允许应用程序执行 vkGetImageSubresourceLayout 查询,而无需创建图像。
-
VK_REMAINING_ARRAY_LAYERS
作为 VkImageSubresourceLayers 的layerCount
成员。 -
一个属性,指示如果 多边形模式 为
VK_POLYGON_MODE_POINT
,PointSize
是否控制多边形的最终光栅化。 -
两个属性,用于指示使用的非严格线条光栅化算法。
-
两个新的标志字 VkPipelineCreateFlagBits2 和 VkBufferUsageFlagBits2。
-
现在可以使用类型有效范围内的任何值(超出已定义的枚举值)来调用物理设备级函数,这样应用程序在查询特定枚举支持的属性之前可以避免检查单独的特性、扩展或版本。
-
允许在任何类型的图像之间进行复制,其中 1D 图像被视为高度为
1
的 2D 图像。
-
-
-
当绑定索引缓冲区时,可以使用VK_NULL_HANDLE
-
VkBindMemoryStatus 可以包含在 VkBindBufferMemoryInfo 和 VkBindImageMemoryInfo 结构的
pNext
链中,使应用程序能够检索各个内存绑定操作的 VkResult 值。 -
VkPhysicalDeviceMaintenance6Properties::
blockTexelViewCompatibleMultipleLayers
属性表示该实现支持创建具有VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
的图像视图,其中subresourceRange
的layerCount
成员大于1
。 -
VkPhysicalDeviceMaintenance6Properties::
maxCombinedImageSamplerDescriptorCount
属性表示实现支持的任何需要采样器 Y′CBCR 转换的格式所需的最大描述符大小。 -
VkPhysicalDeviceMaintenance6Properties::
fragmentShadingRateClampCombinerInputs
属性表示该实现是否钳制片段着色率组合器操作的输入。
-
-
hostImageCopy
表示该实现支持使用 vkCopyMemoryToImage 命令从主机内存复制到图像,使用 vkCopyImageToMemory 命令从图像复制到主机内存,以及使用 vkCopyImageToImage 命令在图像之间复制。
如果 VkPhysicalDeviceVulkan14Features
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceVulkan14Features
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以有选择地启用这些特性。
VkPhysicalDeviceVariablePointersFeatures
结构的定义如下
// 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;
或者等效地:
// Provided by VK_KHR_variable_pointers
typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR;
// Provided by VK_KHR_variable_pointers
typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceVariablePointersFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceVariablePointersFeatures
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以有选择地启用这些特性。
VkPhysicalDeviceMultiviewFeatures
结构的定义如下
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceMultiviewFeatures {
VkStructureType sType;
void* pNext;
VkBool32 multiview;
VkBool32 multiviewGeometryShader;
VkBool32 multiviewTessellationShader;
} VkPhysicalDeviceMultiviewFeatures;
或者等效地:
// Provided by VK_KHR_multiview
typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceMultiviewFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceMultiviewFeatures
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以有选择地启用这些特性。
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
shaderBufferFloat32Atomics
表示着色器是否可以对存储缓冲区执行 32 位浮点加载、存储和交换原子操作。 -
shaderBufferFloat32AtomicAdd
表示着色器是否可以对存储缓冲区执行 32 位浮点加法原子操作。 -
shaderBufferFloat64Atomics
表示着色器是否可以对存储缓冲区执行 64 位浮点加载、存储和交换原子操作。 -
shaderBufferFloat64AtomicAdd
表示着色器是否可以对存储缓冲区执行 64 位浮点加法原子操作。 -
shaderSharedFloat32Atomics
表示着色器是否可以对共享和有效负载内存执行 32 位浮点加载、存储和交换原子操作。 -
shaderSharedFloat32AtomicAdd
表示着色器是否可以对共享和有效负载内存执行 32 位浮点加法原子操作。 -
shaderSharedFloat64Atomics
表示着色器是否可以在共享和有效载荷内存上执行 64 位浮点数的加载、存储和交换原子操作。 -
shaderSharedFloat64AtomicAdd
表示着色器是否可以在共享和有效载荷内存上执行 64 位浮点数的加法原子操作。 -
shaderImageFloat32Atomics
表示着色器是否可以执行 32 位浮点数的加载、存储和交换原子图像操作。 -
sparseImageFloat32Atomics
表示是否可以在稀疏图像上使用 32 位浮点数的加载、存储和交换原子操作。
如果 VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
shaderBufferFloat16Atomics
表示着色器是否可以在存储缓冲区上执行 16 位浮点数的加载、存储和交换原子操作。 -
shaderBufferFloat16AtomicAdd
表示着色器是否可以在存储缓冲区上执行 16 位浮点数的加法原子操作。 -
shaderBufferFloat16AtomicMinMax
表示着色器是否可以在存储缓冲区上执行 16 位浮点数的最小值和最大值原子操作。 -
shaderBufferFloat32AtomicMinMax
表示着色器是否可以在存储缓冲区上执行 32 位浮点数的最小值和最大值原子操作。 -
shaderBufferFloat64AtomicMinMax
表示着色器是否可以在存储缓冲区上执行 64 位浮点数的最小值和最大值原子操作。 -
shaderSharedFloat16Atomics
表示着色器是否可以在共享和有效载荷内存上执行 16 位浮点数的加载、存储和交换原子操作。 -
shaderSharedFloat16AtomicAdd
表示着色器是否可以在共享和有效载荷内存上执行 16 位浮点数的加法原子操作。 -
shaderSharedFloat16AtomicMinMax
表示着色器是否可以在共享和有效载荷内存上执行 16 位浮点数的最小值和最大值原子操作。 -
shaderSharedFloat32AtomicMinMax
表示着色器是否可以在共享和有效载荷内存上执行 32 位浮点数的最小值和最大值原子操作。 -
shaderSharedFloat64AtomicMinMax
表示着色器是否可以在共享和有效载荷内存上执行 64 位浮点数的最小值和最大值原子操作。 -
shaderImageFloat32AtomicMinMax
表示着色器是否可以执行 32 位浮点数的最小值和最大值原子图像操作。 -
sparseImageFloat32AtomicMinMax
表示是否可以在稀疏图像上使用 32 位浮点数的最小值和最大值原子操作。
如果 VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
VkStructureType sType;
void* pNext;
VkBool32 shaderBufferInt64Atomics;
VkBool32 shaderSharedInt64Atomics;
} VkPhysicalDeviceShaderAtomicInt64Features;
或者等效地:
// Provided by VK_KHR_shader_atomic_int64
typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderAtomicInt64Features
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceShaderAtomicInt64Features
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_EXT_shader_image_atomic_int64
typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderImageInt64Atomics;
VkBool32 sparseImageInt64Atomics;
} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderImageInt64Atomics
表示着色器是否可以支持在图像上执行 64 位无符号和有符号整数原子操作。
如果 VkPhysicalDeviceShaderAtomicInt64FeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceShaderAtomicInt64FeaturesEXT
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDevice8BitStorageFeatures {
VkStructureType sType;
void* pNext;
VkBool32 storageBuffer8BitAccess;
VkBool32 uniformAndStorageBuffer8BitAccess;
VkBool32 storagePushConstant8;
} VkPhysicalDevice8BitStorageFeatures;
或者等效地:
// Provided by VK_KHR_8bit_storage
typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
storageBuffer8BitAccess
指示在具有Block
修饰的StorageBuffer
、ShaderRecordBufferKHR
或PhysicalStorageBuffer
存储类中的对象是否可以拥有 8 位整数成员。如果此功能未启用,则在此类对象中必须不使用 8 位整数成员。此功能还指示着色器模块是否可以声明StorageBuffer8BitAccess
功能。 -
uniformAndStorageBuffer8BitAccess
指示在具有Block
修饰的Uniform
存储类中的对象是否可以拥有 8 位整数成员。如果此功能未启用,则在此类对象中必须不使用 8 位整数成员。此功能还指示着色器模块是否可以声明UniformAndStorageBuffer8BitAccess
功能。 -
storagePushConstant8
指示在PushConstant
存储类中的对象是否可以拥有 8 位整数成员。如果此功能未启用,则在此类对象中必须不使用 8 位整数成员。此功能还指示着色器模块是否可以声明StoragePushConstant8
功能。
如果 VkPhysicalDevice8BitStorageFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个相应的功能。VkPhysicalDevice8BitStorageFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDevice16BitStorageFeatures {
VkStructureType sType;
void* pNext;
VkBool32 storageBuffer16BitAccess;
VkBool32 uniformAndStorageBuffer16BitAccess;
VkBool32 storagePushConstant16;
VkBool32 storageInputOutput16;
} VkPhysicalDevice16BitStorageFeatures;
或者等效地:
// Provided by VK_KHR_16bit_storage
typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
storageBuffer16BitAccess
指定在具有Block
修饰的StorageBuffer
、ShaderRecordBufferKHR
或PhysicalStorageBuffer
存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果此功能未启用,则在此类对象中必须不使用 16 位整数或 16 位浮点成员。此功能还指定着色器模块是否可以声明StorageBuffer16BitAccess
功能。 -
uniformAndStorageBuffer16BitAccess
指定在具有Block
修饰的Uniform
存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果此功能未启用,则在此类对象中必须不使用 16 位整数或 16 位浮点成员。此功能还指定着色器模块是否可以声明UniformAndStorageBuffer16BitAccess
功能。 -
storagePushConstant16
指定在PushConstant
存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果此功能未启用,则在此类对象中必须不使用 16 位整数或浮点成员。此功能还指定着色器模块是否可以声明StoragePushConstant16
功能。 -
storageInputOutput16
指定在Input
和Output
存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果此功能未启用,则在此类对象中必须不使用 16 位整数或 16 位浮点成员。此功能还指定着色器模块是否可以声明StorageInputOutput16
功能。
如果 VkPhysicalDevice16BitStorageFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个相应的功能。VkPhysicalDevice16BitStorageFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceShaderFloat16Int8Features
结构定义为
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
VkStructureType sType;
void* pNext;
VkBool32 shaderFloat16;
VkBool32 shaderInt8;
} VkPhysicalDeviceShaderFloat16Int8Features;
或者等效地:
// Provided by VK_KHR_shader_float16_int8
typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
// Provided by VK_KHR_shader_float16_int8
typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
shaderFloat16
指示着色器代码中是否支持 16 位浮点数(半精度浮点数)。此功能还指示着色器模块是否可以声明Float16
功能。但是,这仅启用了 SPIR-V 允许用于Float16
SPIR-V 功能的存储类的一个子集:在Private
、Workgroup
(对于非 Block 变量)和Function
存储类中声明和使用 16 位浮点数是启用的,而允许在接口存储类(例如,UniformConstant
、Uniform
、StorageBuffer
、Input
、Output
和PushConstant
)中声明它们则未启用。 -
shaderInt8
指示着色器代码中是否支持 8 位整数(有符号和无符号)。此功能还指示着色器模块是否可以声明Int8
功能。但是,这仅启用了 SPIR-V 允许用于Int8
SPIR-V 功能的存储类的一个子集:在Private
、Workgroup
(对于非 Block 变量)和Function
存储类中声明和使用 8 位整数是启用的,而允许在接口存储类(例如,UniformConstant
、Uniform
、StorageBuffer
、Input
、Output
和PushConstant
)中声明它们则未启用。
如果 VkPhysicalDeviceShaderFloat16Int8Features
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个相应的功能。VkPhysicalDeviceShaderFloat16Int8Features
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceShaderClockFeaturesKHR
结构定义为
// Provided by VK_KHR_shader_clock
typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderSubgroupClock;
VkBool32 shaderDeviceClock;
} VkPhysicalDeviceShaderClockFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderClockFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个相应的功能。VkPhysicalDeviceShaderClockFeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceSamplerYcbcrConversionFeatures
结构定义为
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
VkStructureType sType;
void* pNext;
VkBool32 samplerYcbcrConversion;
} VkPhysicalDeviceSamplerYcbcrConversionFeatures;
或者等效地:
// Provided by VK_KHR_sampler_ycbcr_conversion
typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
samplerYcbcrConversion
指定实现是否支持采样器 Y′CBCR 转换。如果samplerYcbcrConversion
为VK_FALSE
,则不支持采样器 Y′CBCR 转换,并且必须不使用使用采样器 Y′CBCR 转换的采样器。
如果将 VkPhysicalDeviceSamplerYcbcrConversionFeatures
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceSamplerYcbcrConversionFeatures
也可用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceProtectedMemoryFeatures
结构体定义如下:
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
VkStructureType sType;
void* pNext;
VkBool32 protectedMemory;
} VkPhysicalDeviceProtectedMemoryFeatures;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
protectedMemory
指定是否支持受保护内存。
如果将 VkPhysicalDeviceProtectedMemoryFeatures
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceProtectedMemoryFeatures
也可用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_blend_operation_advanced
typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 advancedBlendCoherentOperations;
} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
advancedBlendCoherentOperations
指定是否保证使用高级混合操作进行混合时以原子方式和图元顺序执行。如果为VK_TRUE
,则VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
的处理方式与VK_ACCESS_COLOR_ATTACHMENT_READ_BIT
相同,并且高级混合操作不需要在基本混合操作上进行额外的同步。如果为VK_FALSE
,则需要内存依赖性来保证在同一采样上发生的两个高级混合操作之间的顺序。
如果将 VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
也可用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceConditionalRenderingFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_conditional_rendering
typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 conditionalRendering;
VkBool32 inheritedConditionalRendering;
} VkPhysicalDeviceConditionalRenderingFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
inheritedConditionalRendering
指定在主命令缓冲区中条件渲染处于活动状态时,是否可以执行辅助命令缓冲区。
如果将 VkPhysicalDeviceConditionalRenderingFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceConditionalRenderingFeaturesEXT
也可用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderDrawParametersFeatures
结构体定义如下:
// 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;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果将 VkPhysicalDeviceShaderDrawParametersFeatures
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceShaderDrawParametersFeatures
也可用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceMeshShaderFeaturesNV
结构体定义如下:
// Provided by VK_NV_mesh_shader
typedef struct VkPhysicalDeviceMeshShaderFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 taskShader;
VkBool32 meshShader;
} VkPhysicalDeviceMeshShaderFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
taskShader
指定是否支持任务着色器。如果未启用此特性,则必须不使用VK_SHADER_STAGE_TASK_BIT_NV
和VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
枚举值。 -
meshShader
指定是否支持网格着色器。如果未启用此特性,则必须不使用VK_SHADER_STAGE_MESH_BIT_NV
和VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
枚举值。
如果将 VkPhysicalDeviceMeshShaderFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceMeshShaderFeaturesNV
也可用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceMeshShaderFeaturesEXT
结构体定义如下:
// 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
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
taskShader
指定是否支持任务着色器。如果未启用此特性,则必须不使用VK_SHADER_STAGE_TASK_BIT_EXT
和VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
枚举值。 -
meshShader
指定是否支持网格着色器。如果未启用此特性,则必须不使用VK_SHADER_STAGE_MESH_BIT_EXT
和VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
枚举值。 -
multiviewMeshShader
指定实现是否支持在渲染通道中通过网格着色器进行multiview
渲染。如果未启用此特性,则针对具有非零视图掩码的子通道编译的管线必须不包含网格着色器。 -
primitiveFragmentShadingRateMeshShader
表示实现支持网格着色器中的图元片段着色率。 -
meshShaderQueries
表示实现支持使用VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT
查询类型创建查询池,以及支持包含VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT
和VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT
标志的统计查询。
如果 VkPhysicalDeviceMeshShaderFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则它会被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMeshShaderFeaturesEXT
也可用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceMeshShaderFeaturesNV
结构中的相应功能必须与 VkPhysicalDeviceMeshShaderFeaturesEXT
中的功能匹配。
VkPhysicalDeviceMemoryDecompressionFeaturesNV
结构定义如下:
// Provided by VK_NV_memory_decompression
typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 memoryDecompression;
} VkPhysicalDeviceMemoryDecompressionFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceMemoryDecompressionFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则它会被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMemoryDecompressionFeaturesNV
也可用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceDescriptorIndexingFeatures
结构定义如下:
// 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;
或者等效地:
// Provided by VK_EXT_descriptor_indexing
typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
shaderInputAttachmentArrayDynamicIndexing
表示输入附件的数组是否可以通过着色器代码中子组或调用组内动态统一的整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的资源,当在着色器代码中聚合到数组中时,必须仅通过常量整数表达式进行索引。 这也表示着色器模块是否可以声明InputAttachmentArrayDynamicIndexing
功能。 -
shaderUniformTexelBufferArrayDynamicIndexing
表示统一纹理缓冲区的数组是否可以通过着色器代码中子组或调用组内动态统一的整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
的资源,当在着色器代码中聚合到数组中时,必须仅通过常量整数表达式进行索引。 这也表示着色器模块是否可以声明UniformTexelBufferArrayDynamicIndexing
功能。 -
shaderStorageTexelBufferArrayDynamicIndexing
表示存储纹理缓冲区的数组是否可以通过着色器代码中子组或调用组内动态统一的整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
的资源,当在着色器代码中聚合到数组中时,必须仅通过常量整数表达式进行索引。 这也表示着色器模块是否可以声明StorageTexelBufferArrayDynamicIndexing
功能。 -
shaderUniformBufferArrayNonUniformIndexing
表示统一缓冲区的数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
或VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
的资源,当在着色器代码中聚合到数组中时,必须不通过非统一整数表达式进行索引。 这也表示着色器模块是否可以声明UniformBufferArrayNonUniformIndexing
功能。 -
shaderSampledImageArrayNonUniformIndexing
表示采样器或采样图像的数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_SAMPLER
、VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
或VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
的资源,当在着色器代码中聚合到数组中时,必须不通过非统一整数表达式进行索引。 这也表示着色器模块是否可以声明SampledImageArrayNonUniformIndexing
功能。 -
shaderStorageBufferArrayNonUniformIndexing
表示存储缓冲区的数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
或VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
的资源,当在着色器代码中聚合到数组中时,必须不通过非统一整数表达式进行索引。 这也表示着色器模块是否可以声明StorageBufferArrayNonUniformIndexing
功能。 -
shaderStorageImageArrayNonUniformIndexing
表示存储图像的数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
的资源,当在着色器代码中聚合到数组中时,必须不通过非统一整数表达式进行索引。 这也表示着色器模块是否可以声明StorageImageArrayNonUniformIndexing
功能。 -
shaderInputAttachmentArrayNonUniformIndexing
表示输入附件的数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的资源,当在着色器代码中聚合到数组中时,必须不通过非统一整数表达式进行索引。 这也表示着色器模块是否可以声明InputAttachmentArrayNonUniformIndexing
功能。 -
shaderUniformTexelBufferArrayNonUniformIndexing
表示统一纹理缓冲区的数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果未启用此功能,则描述符类型为VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
的资源,当在着色器代码中聚合到数组中时,必须不通过非统一整数表达式进行索引。 这也表示着色器模块是否可以声明UniformTexelBufferArrayNonUniformIndexing
功能。 -
shaderStorageTexelBufferArrayNonUniformIndexing
表示着色器代码中存储纹理缓冲区的数组是否可以通过非均匀整数表达式进行索引。如果未启用此功能,则当具有VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
描述符类型的资源在着色器代码中聚合到数组中时,必须不使用非均匀整数表达式进行索引。这也表示着色器模块是否可以声明StorageTexelBufferArrayNonUniformIndexing
功能。 -
descriptorBindingUniformBufferUpdateAfterBind
表示实现是否支持在绑定集合后更新 Uniform 缓冲区描述符。如果未启用此功能,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
一起使用。 -
descriptorBindingSampledImageUpdateAfterBind
表示实现是否支持在绑定集合后更新采样图像描述符。如果未启用此功能,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_SAMPLER
、VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
或VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
一起使用。 -
descriptorBindingStorageImageUpdateAfterBind
表示实现是否支持在绑定集合后更新存储图像描述符。如果未启用此功能,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
一起使用。 -
descriptorBindingStorageBufferUpdateAfterBind
表示实现是否支持在绑定集合后更新存储缓冲区描述符。如果未启用此功能,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
一起使用。 -
descriptorBindingUniformTexelBufferUpdateAfterBind
表示实现是否支持在绑定集合后更新 Uniform 纹理缓冲区描述符。如果未启用此功能,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
一起使用。 -
descriptorBindingStorageTexelBufferUpdateAfterBind
表示实现是否支持在绑定集合后更新存储纹理缓冲区描述符。如果未启用此功能,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
必须不与VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
一起使用。 -
descriptorBindingUpdateUnusedWhilePending
表示实现是否支持在使用集合时更新描述符。如果未启用此功能,则VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
必须不使用。 -
descriptorBindingPartiallyBound
表示实现是否支持静态使用描述符集合绑定,其中某些描述符无效。如果未启用此功能,则VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT
必须不使用。 -
descriptorBindingVariableDescriptorCount
表示实现是否支持具有可变大小的最后绑定的描述符集合。如果未启用此功能,则VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
必须不使用。 -
runtimeDescriptorArray
表示实现是否支持 SPIR-V 的RuntimeDescriptorArray
功能。如果未启用此功能,则描述符必须不在运行时数组中声明。
如果 VkPhysicalDeviceDescriptorIndexingFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceDescriptorIndexingFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceCopyMemoryIndirectFeaturesNV
结构的定义如下:
// Provided by VK_NV_copy_memory_indirect
typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 indirectCopy;
} VkPhysicalDeviceCopyMemoryIndirectFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
indirectCopy
指示是否支持间接复制。
如果 VkPhysicalDeviceCopyMemoryIndirectFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceCopyMemoryIndirectFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceVertexAttributeDivisorFeatures
结构的定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceVertexAttributeDivisorFeatures {
VkStructureType sType;
void* pNext;
VkBool32 vertexAttributeInstanceRateDivisor;
VkBool32 vertexAttributeInstanceRateZeroDivisor;
} VkPhysicalDeviceVertexAttributeDivisorFeatures;
或者等效地:
// Provided by VK_KHR_vertex_attribute_divisor
typedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR;
或者等效地:
// Provided by VK_EXT_vertex_attribute_divisor
typedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
vertexAttributeInstanceRateDivisor
指定在实例化渲染的情况下,是否可以重复顶点属性的获取。 -
vertexAttributeInstanceRateZeroDivisor
指定是否支持 VkVertexInputBindingDivisorDescriptionEXT::divisor
的零值。
如果 VkPhysicalDeviceVertexAttributeDivisorFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceVertexAttributeDivisorFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceASTCDecodeFeaturesEXT
结构的定义如下:
// Provided by VK_EXT_astc_decode_mode
typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 decodeModeSharedExponent;
} VkPhysicalDeviceASTCDecodeFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
decodeModeSharedExponent
指示实现是否支持将 ASTC 压缩格式解码为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
内部精度。
如果 VkPhysicalDeviceASTCDecodeFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceASTCDecodeFeaturesEXT
也可在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDeviceTransformFeedbackFeaturesEXT
结构定义如下:
// Provided by VK_EXT_transform_feedback
typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 transformFeedback;
VkBool32 geometryStreams;
} VkPhysicalDeviceTransformFeedbackFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
transformFeedback
表示实现是否支持变换反馈,以及着色器模块可以声明TransformFeedback
功能。
如果 VkPhysicalDeviceTransformFeedbackFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceTransformFeedbackFeaturesEXT
也可在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDeviceVulkanMemoryModelFeatures
结构定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
VkStructureType sType;
void* pNext;
VkBool32 vulkanMemoryModel;
VkBool32 vulkanMemoryModelDeviceScope;
VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
} VkPhysicalDeviceVulkanMemoryModelFeatures;
或者等效地:
// Provided by VK_KHR_vulkan_memory_model
typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
vulkanMemoryModelDeviceScope
表示 Vulkan 内存模型是否可以使用Device
范围同步。这也表示着色器模块可以声明VulkanMemoryModelDeviceScope
功能。 -
vulkanMemoryModelAvailabilityVisibilityChains
表示 Vulkan 内存模型是否可以使用具有多个元素的可用性和可见性链。
如果 VkPhysicalDeviceVulkanMemoryModelFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceVulkanMemoryModelFeaturesKHR
也可在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDeviceInlineUniformBlockFeatures
结构定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceInlineUniformBlockFeatures {
VkStructureType sType;
void* pNext;
VkBool32 inlineUniformBlock;
VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind;
} VkPhysicalDeviceInlineUniformBlockFeatures;
或者等效地:
// Provided by VK_EXT_inline_uniform_block
typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceInlineUniformBlockFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceInlineUniformBlockFeatures
也可在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
结构定义如下:
// Provided by VK_NV_representative_fragment_test
typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 representativeFragmentTest;
} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
representativeFragmentTest
表示实现是否支持代表性片段测试。请参阅 代表性片段测试。
如果 VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
也可在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDeviceExclusiveScissorFeaturesNV
结构定义如下:
// Provided by VK_NV_scissor_exclusive
typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 exclusiveScissor;
} VkPhysicalDeviceExclusiveScissorFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
有关更多信息,请参阅 独占裁剪测试。
如果 VkPhysicalDeviceExclusiveScissorFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceExclusiveScissorFeaturesNV
也可在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDeviceCornerSampledImageFeaturesNV
结构定义如下:
// Provided by VK_NV_corner_sampled_image
typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cornerSampledImage;
} VkPhysicalDeviceCornerSampledImageFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
cornerSampledImage
指定是否可以使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建图像。请参阅 角采样图像。
如果 VkPhysicalDeviceCornerSampledImageFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceCornerSampledImageFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR
结构体定义如下:
// Provided by VK_KHR_compute_shader_derivatives
typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 computeDerivativeGroupQuads;
VkBool32 computeDerivativeGroupLinear;
} VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR;
或者等效地:
// Provided by VK_NV_compute_shader_derivatives
typedef VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
computeDerivativeGroupQuads
表示实现支持ComputeDerivativeGroupQuadsKHR
SPIR-V 功能。 -
computeDerivativeGroupLinear
表示实现支持ComputeDerivativeGroupLinearKHR
SPIR-V 功能。
有关更多信息,请参阅四边形着色器范围。
如果 VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
结构体定义如下:
// Provided by VK_KHR_fragment_shader_barycentric
typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 fragmentShaderBarycentric;
} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
或者等效地:
// Provided by VK_NV_fragment_shader_barycentric
typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
fragmentShaderBarycentric
表示实现支持BaryCoordKHR
和BaryCoordNoPerspKHR
SPIR-V 片元着色器内置变量,并且支持片元着色器输入变量上的PerVertexKHR
SPIR-V 修饰符。
有关更多信息,请参阅重心插值。
如果 VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceShaderImageFootprintFeaturesNV
结构体定义如下:
// Provided by VK_NV_shader_image_footprint
typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 imageFootprint;
} VkPhysicalDeviceShaderImageFootprintFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
有关更多信息,请参阅纹素足迹评估。
如果 VkPhysicalDeviceShaderImageFootprintFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceShaderImageFootprintFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceShadingRateImageFeaturesNV
结构体定义如下:
// Provided by VK_NV_shading_rate_image
typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 shadingRateImage;
VkBool32 shadingRateCoarseSampleOrder;
} VkPhysicalDeviceShadingRateImageFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shadingRateImage
表示实现支持使用着色率图像来导出片元处理的有效着色率。它还表示实现支持ShadingRateNV
SPIR-V 执行模式。 -
shadingRateCoarseSampleOrder
表示实现支持在一个像素以上的片元中,应用程序可配置的覆盖采样顺序。
有关更多信息,请参阅着色率图像。
如果 VkPhysicalDeviceShadingRateImageFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceShadingRateImageFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceFragmentDensityMapFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_fragment_density_map
typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 fragmentDensityMap;
VkBool32 fragmentDensityMapDynamic;
VkBool32 fragmentDensityMapNonSubsampledImages;
} VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
fragmentDensityMap
指定实现是否支持具有片元密度图附件的渲染通道。如果未启用此特性,并且 VkRenderPassCreateInfo 的pNext
链包含 VkRenderPassFragmentDensityMapCreateInfoEXT 结构体,则fragmentDensityMapAttachment
必须为VK_ATTACHMENT_UNUSED
。 -
fragmentDensityMapDynamic
指定实现是否支持动态片元密度图图像视图。如果未启用此特性,则 VkImageViewCreateInfo::flags
中不能包含VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT
。 -
fragmentDensityMapNonSubsampledImages
指定实现是否支持具有片元密度图渲染通道的常规非子采样图像附件。如果未启用此特性,则具有片元密度图附件的渲染通道必须只绑定子采样附件。
如果 VkPhysicalDeviceFragmentDensityMapFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceFragmentDensityMapFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
结构定义如下:
// Provided by VK_EXT_fragment_density_map2
typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 fragmentDensityMapDeferred;
} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
fragmentDensityMapDeferred
指定了实现是否支持延迟读取片段密度图图像视图。如果未启用此功能,则VkImageViewCreateInfo
::flags
中必须不包含VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT
。
如果 VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
可以也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
结构定义如下:
// Provided by VK_QCOM_fragment_density_map_offset
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 fragmentDensityMapOffset;
} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
fragmentDensityMapOffset
指定了实现是否支持片段密度图偏移。
如果 VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
可以也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
结构定义如下:
// Provided by VK_HUAWEI_invocation_mask
typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 invocationMask;
} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
可以也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceScalarBlockLayoutFeatures
结构定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
VkStructureType sType;
void* pNext;
VkBool32 scalarBlockLayout;
} VkPhysicalDeviceScalarBlockLayoutFeatures;
或者等效地:
// Provided by VK_EXT_scalar_block_layout
typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
scalarBlockLayout
表示实现支持使用标量对齐在着色器中布局资源块。
如果 VkPhysicalDeviceScalarBlockLayoutFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceScalarBlockLayoutFeatures
可以也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceUniformBufferStandardLayoutFeatures
结构定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
VkStructureType sType;
void* pNext;
VkBool32 uniformBufferStandardLayout;
} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
或者等效地:
// Provided by VK_KHR_uniform_buffer_standard_layout
typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
uniformBufferStandardLayout
表示实现支持 uniform 缓冲区与存储和其他类型的缓冲区相同的布局。请参阅标准缓冲区布局。
如果 VkPhysicalDeviceUniformBufferStandardLayoutFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceUniformBufferStandardLayoutFeatures
可以也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceDepthClipEnableFeaturesEXT
结构定义如下:
// Provided by VK_EXT_depth_clip_enable
typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthClipEnable;
} VkPhysicalDeviceDepthClipEnableFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
depthClipEnable
表示实现支持通过 VkPipelineRasterizationDepthClipStateCreateInfoEXT 管线状态显式设置深度裁剪操作。否则,只有在 VkPipelineRasterizationStateCreateInfo::depthClampEnable
为VK_FALSE
时,深度裁剪才会启用。
如果 VkPhysicalDeviceDepthClipEnableFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceDepthClipEnableFeaturesEXT
可以也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceMemoryPriorityFeaturesEXT
结构定义如下:
// Provided by VK_EXT_memory_priority
typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 memoryPriority;
} VkPhysicalDeviceMemoryPriorityFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
memoryPriority
表示实现支持通过 VkMemoryPriorityAllocateInfoEXT 在内存分配时指定的内存优先级。
如果 VkPhysicalDeviceMemoryPriorityFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceMemoryPriorityFeaturesEXT
可以也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceBufferDeviceAddressFeatures
结构定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
VkStructureType sType;
void* pNext;
VkBool32 bufferDeviceAddress;
VkBool32 bufferDeviceAddressCaptureReplay;
VkBool32 bufferDeviceAddressMultiDevice;
} VkPhysicalDeviceBufferDeviceAddressFeatures;
或者等效地:
// Provided by VK_KHR_buffer_device_address
typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
bufferDeviceAddress
表示实现支持在着色器中通过从 vkGetBufferDeviceAddress 查询的地址访问作为存储缓冲区的缓冲区内存。 -
bufferDeviceAddressCaptureReplay
表示实现支持保存和重用缓冲区和设备地址,例如用于跟踪捕获和重放。 -
bufferDeviceAddressMultiDevice
表示实现支持为使用多个物理设备创建的逻辑设备启用bufferDeviceAddress
、rayTracingPipeline
和rayQuery
功能。如果不支持此功能,则必须不从使用多个物理设备创建的逻辑设备查询缓冲区和加速结构地址。
|
有关更多信息,请参阅 vkGetBufferDeviceAddress。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceBufferDeviceAddressFeatures
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceBufferDeviceAddressFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
结构定义如下:
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
bufferDeviceAddress
表示实现支持通过从 vkGetBufferDeviceAddressEXT 查询的地址,在着色器中将缓冲区内存作为存储缓冲区进行访问。 -
bufferDeviceAddressCaptureReplay
表示实现支持保存和重用缓冲区地址,例如用于跟踪捕获和重放。 -
bufferDeviceAddressMultiDevice
表示实现支持为使用多个物理设备创建的逻辑设备启用bufferDeviceAddress
功能。如果不支持此功能,则必须不在使用多个物理设备创建的逻辑设备上查询缓冲区地址。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
|
VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
结构定义如下:
// Provided by VK_NV_dedicated_allocation_image_aliasing
typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 dedicatedAllocationImageAliasing;
} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
dedicatedAllocationImageAliasing
表示实现支持在专用分配上对兼容的图像对象进行别名化处理。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceImagelessFramebufferFeatures
结构定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
VkStructureType sType;
void* pNext;
VkBool32 imagelessFramebuffer;
} VkPhysicalDeviceImagelessFramebufferFeatures;
或者等效地:
// Provided by VK_KHR_imageless_framebuffer
typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
imagelessFramebuffer
表示实现支持在渲染过程开始时通过 VkRenderPassAttachmentBeginInfo 指定附件的图像视图。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceImagelessFramebufferFeatures
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceImagelessFramebufferFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
结构定义如下:
// Provided by VK_EXT_fragment_shader_interlock
typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 fragmentShaderSampleInterlock;
VkBool32 fragmentShaderPixelInterlock;
VkBool32 fragmentShaderShadingRateInterlock;
} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
fragmentShaderSampleInterlock
表示实现支持FragmentShaderSampleInterlockEXT
SPIR-V 功能。 -
fragmentShaderPixelInterlock
表示实现支持FragmentShaderPixelInterlockEXT
SPIR-V 功能。 -
fragmentShaderShadingRateInterlock
表示实现支持FragmentShaderShadingRateInterlockEXT
SPIR-V 功能。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceCooperativeMatrixFeaturesNV
结构定义如下:
// Provided by VK_NV_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cooperativeMatrix;
VkBool32 cooperativeMatrixRobustBufferAccess;
} VkPhysicalDeviceCooperativeMatrixFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
cooperativeMatrixRobustBufferAccess
表示实现支持 SPIR-VOpCooperativeMatrixLoadNV
和OpCooperativeMatrixStoreNV
指令的健壮缓冲区访问。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceCooperativeMatrixFeaturesNV
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceCooperativeMatrixFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceCooperativeMatrixFeaturesKHR
结构的定义如下:
// Provided by VK_KHR_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 cooperativeMatrix;
VkBool32 cooperativeMatrixRobustBufferAccess;
} VkPhysicalDeviceCooperativeMatrixFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
cooperativeMatrixRobustBufferAccess
表示实现支持 SPIR-VOpCooperativeMatrixLoadKHR
和OpCooperativeMatrixStoreKHR
指令的稳健缓冲区访问。
如果 VkPhysicalDeviceCooperativeMatrixFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceCooperativeMatrixFeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些功能。
VkPhysicalDeviceCooperativeMatrix2FeaturesNV
结构的定义如下:
// Provided by VK_NV_cooperative_matrix2
typedef struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cooperativeMatrixWorkgroupScope;
VkBool32 cooperativeMatrixFlexibleDimensions;
VkBool32 cooperativeMatrixReductions;
VkBool32 cooperativeMatrixConversions;
VkBool32 cooperativeMatrixPerElementOperations;
VkBool32 cooperativeMatrixTensorAddressing;
VkBool32 cooperativeMatrixBlockLoads;
} VkPhysicalDeviceCooperativeMatrix2FeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
cooperativeMatrixFlexibleDimensions
表示实现支持大小是 VkCooperativeMatrixFlexibleDimensionsPropertiesNV 中通告的粒度的倍数的协作矩阵。 -
cooperativeMatrixReductions
表示实现支持CooperativeMatrixReductionsNV
SPIR-V 功能。这允许对矩阵执行(行、列、2x2 或所有元素)归约。 -
cooperativeMatrixConversions
表示实现支持CooperativeMatrixConversionsNV
SPIR-V 功能。这允许将累加器矩阵转换为 A 或 B 矩阵。 -
cooperativeMatrixPerElementOperations
表示实现支持CooperativeMatrixPerElementOperationsNV
SPIR-V 功能。这允许使用回调函数对矩阵元素执行逐元素操作。 -
cooperativeMatrixTensorAddressing
表示实现支持TensorAddressingNV
和CooperativeMatrixTensorAddressingNV
SPIR-V 功能。这允许为矩阵加载和存储使用张量布局和张量视图类型。 -
cooperativeMatrixBlockLoads
表示实现支持CooperativeMatrixBlockLoadsNV
SPIR-V 功能。这允许为加载设置块大小,并使用回调函数解码块元素。
如果 VkPhysicalDeviceCooperativeMatrix2FeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceCooperativeMatrix2FeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些功能。
VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
结构的定义如下:
// Provided by VK_EXT_ycbcr_image_arrays
typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 ycbcrImageArrays;
} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
ycbcrImageArrays
表示实现支持创建具有需要 Y′CBCR 转换并且具有多个数组层的格式的图像。
如果 VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些功能。
VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
结构的定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderSubgroupExtendedTypes;
} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
或者等效地:
// Provided by VK_KHR_shader_subgroup_extended_types
typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些功能。
VkPhysicalDeviceHostQueryResetFeatures
结构的定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceHostQueryResetFeatures {
VkStructureType sType;
void* pNext;
VkBool32 hostQueryReset;
} VkPhysicalDeviceHostQueryResetFeatures;
或者等效地:
// Provided by VK_EXT_host_query_reset
typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
hostQueryReset
表示实现支持使用 vkResetQueryPool 从主机重置查询。
如果 VkPhysicalDeviceHostQueryResetFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceHostQueryResetFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些功能。
VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
结构的定义如下:
// Provided by VK_INTEL_shader_integer_functions2
typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
VkStructureType sType;
void* pNext;
VkBool32 shaderIntegerFunctions2;
} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderIntegerFunctions2
表示实现支持IntegerFunctions2INTEL
SPIR-V 功能。
如果 VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures
. 结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures
. 也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些功能。
VkPhysicalDeviceCoverageReductionModeFeaturesNV
结构的定义如下:
// Provided by VK_NV_coverage_reduction_mode
typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 coverageReductionMode;
} VkPhysicalDeviceCoverageReductionModeFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
coverageReductionMode
表示实现是否支持覆盖率缩减模式。请参阅覆盖率缩减。
如果 VkPhysicalDeviceCoverageReductionModeFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceCoverageReductionModeFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceTimelineSemaphoreFeatures
结构体定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
VkStructureType sType;
void* pNext;
VkBool32 timelineSemaphore;
} VkPhysicalDeviceTimelineSemaphoreFeatures;
或者等效地:
// Provided by VK_KHR_timeline_semaphore
typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
timelineSemaphore
指示是否支持使用VK_SEMAPHORE_TYPE_TIMELINE
的 VkSemaphoreType 创建的信号量。
如果 VkPhysicalDeviceTimelineSemaphoreFeatures
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceTimelineSemaphoreFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
结构体定义如下:
// Provided by VK_QNX_external_memory_screen_buffer
typedef struct VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
VkStructureType sType;
void* pNext;
VkBool32 screenBufferImport;
} VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
结构体的成员描述了以下特性:
-
screenBufferImport
指示是否支持 QNX Screen 缓冲区导入功能。如果screenBufferImport
为VK_TRUE
,则 VkDeviceMemory 支持从应用程序导入_screen_buffer
。在这种情况下,应用程序负责_screen_buffer
的资源管理。
特性 |
功能 |
|
|
始终支持1 |
vkGetScreenBufferPropertiesQNX, VkScreenBufferPropertiesQNX, VkScreenBufferFormatPropertiesQNX, VkExternalFormatQNX |
- 1
-
此行中的功能始终可用。
QNX Screen 缓冲区特性支持的功能 表总结了 VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
结构体启用的功能。 表格主体中的每个条目总结了当支持并启用给定特性时可以使用的功能。 这总结了本规范中其他地方添加的有效使用语句。
如果 VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceIndexTypeUint8Features
结构体定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceIndexTypeUint8Features {
VkStructureType sType;
void* pNext;
VkBool32 indexTypeUint8;
} VkPhysicalDeviceIndexTypeUint8Features;
或者等效地:
// Provided by VK_KHR_index_type_uint8
typedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesKHR;
或者等效地:
// Provided by VK_EXT_index_type_uint8
typedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
indexTypeUint8
指示VK_INDEX_TYPE_UINT8
可以与 vkCmdBindIndexBuffer2 和 vkCmdBindIndexBuffer 一起使用。
如果 VkPhysicalDeviceIndexTypeUint8Features
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceIndexTypeUint8Features
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_primitive_topology_list_restart
typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 primitiveTopologyListRestart;
VkBool32 primitiveTopologyPatchListRestart;
} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
primitiveTopologyListRestart
指示列表类型图元,VK_PRIMITIVE_TOPOLOGY_POINT_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
和VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,可以在索引缓冲区中使用图元重启索引值。 -
primitiveTopologyPatchListRestart
指示VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
拓扑可以在索引缓冲区中使用图元重启索引值。
如果 VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
结构体定义如下:
// Provided by VK_NV_shader_sm_builtins
typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 shaderSMBuiltins;
} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
结构体定义如下:
// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
VkStructureType sType;
void* pNext;
VkBool32 separateDepthStencilLayouts;
} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
或者等效地:
// Provided by VK_KHR_separate_depth_stencil_layouts
typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
separateDepthStencilLayouts
指示实现是否支持针对仅设置了VK_IMAGE_ASPECT_DEPTH_BIT
或VK_IMAGE_ASPECT_STENCIL_BIT
其中之一的深度/模板图像的VkImageMemoryBarrier
,以及是否可以使用VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
、VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
、VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
或VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
。
如果 VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
结构定义如下:
// Provided by VK_KHR_pipeline_executable_properties
typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 pipelineExecutableInfo;
} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
结构定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderDemoteToHelperInvocation;
} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;
或者等效地:
// Provided by VK_EXT_shader_demote_to_helper_invocation
typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
结构定义如下:
// Provided by VK_EXT_texel_buffer_alignment
typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 texelBufferAlignment;
} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
texelBufferAlignment
指示实现是否使用在 VkPhysicalDeviceTexelBufferAlignmentProperties 中声明的更具体的对齐要求,而不是 VkPhysicalDeviceLimits::minTexelBufferOffsetAlignment
。
如果 VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
结构定义如下:
// Provided by VK_EXT_attachment_feedback_loop_dynamic_state
typedef struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 attachmentFeedbackLoopDynamicState;
} VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT
结构定义如下:
// Provided by VK_EXT_legacy_vertex_attributes
typedef struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 legacyVertexAttributes;
} VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceTextureCompressionASTCHDRFeatures
结构定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures {
VkStructureType sType;
void* pNext;
VkBool32 textureCompressionASTC_HDR;
} VkPhysicalDeviceTextureCompressionASTCHDRFeatures;
或者等效地:
// Provided by VK_EXT_texture_compression_astc_hdr
typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
textureCompressionASTC_HDR
指示是否支持所有 ASTC HDR 压缩纹理格式。如果启用了此特性,则对于以下格式,optimalTilingFeatures
中必须支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
、VK_FORMAT_FEATURE_BLIT_SRC_BIT
和VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
特性:-
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
要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatProperties 和 vkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。
-
如果 VkPhysicalDeviceTextureCompressionASTCHDRFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceTextureCompressionASTCHDRFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceLineRasterizationFeatures
结构定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceLineRasterizationFeatures {
VkStructureType sType;
void* pNext;
VkBool32 rectangularLines;
VkBool32 bresenhamLines;
VkBool32 smoothLines;
VkBool32 stippledRectangularLines;
VkBool32 stippledBresenhamLines;
VkBool32 stippledSmoothLines;
} VkPhysicalDeviceLineRasterizationFeatures;
或者等效地:
// Provided by VK_KHR_line_rasterization
typedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesKHR;
或者等效地:
// Provided by VK_EXT_line_rasterization
typedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
rectangularLines
表示实现是否支持矩形线光栅化。 -
bresenhamLines
表示实现是否支持Bresenham 风格的线光栅化。 -
smoothLines
表示实现是否支持平滑线光栅化。 -
stippledRectangularLines
表示实现是否支持使用VK_LINE_RASTERIZATION_MODE_RECTANGULAR
线进行点画线光栅化。 -
stippledBresenhamLines
表示实现是否支持使用VK_LINE_RASTERIZATION_MODE_BRESENHAM
线进行点画线光栅化。 -
stippledSmoothLines
表示实现是否支持使用VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH
线进行点画线光栅化。
如果 VkPhysicalDeviceLineRasterizationFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceLineRasterizationFeatures
可以 也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceSubgroupSizeControlFeatures
结构定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures {
VkStructureType sType;
void* pNext;
VkBool32 subgroupSizeControl;
VkBool32 computeFullSubgroups;
} VkPhysicalDeviceSubgroupSizeControlFeatures;
或者等效地:
// Provided by VK_EXT_subgroup_size_control
typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
subgroupSizeControl
表示实现是否支持通过VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
标志和 VkPipelineShaderStageRequiredSubgroupSizeCreateInfo 结构控制着色器子组大小。 -
computeFullSubgroups
表示实现是否支持通过VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
标志要求计算、网格或任务着色器中的完整子组。
如果 VkPhysicalDeviceSubgroupSizeControlFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceSubgroupSizeControlFeatures
可以 也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
Vulkan 1.3 实现始终支持特性结构。 |
VkPhysicalDeviceCoherentMemoryFeaturesAMD
结构定义如下:
// Provided by VK_AMD_device_coherent_memory
typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD {
VkStructureType sType;
void* pNext;
VkBool32 deviceCoherentMemory;
} VkPhysicalDeviceCoherentMemoryFeaturesAMD;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
deviceCoherentMemory
表示实现支持设备一致内存。
如果 VkPhysicalDeviceCoherentMemoryFeaturesAMD
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceCoherentMemoryFeaturesAMD
可以 也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceAccelerationStructureFeaturesKHR
结构定义如下:
// Provided by VK_KHR_acceleration_structure
typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 accelerationStructure;
VkBool32 accelerationStructureCaptureReplay;
VkBool32 accelerationStructureIndirectBuild;
VkBool32 accelerationStructureHostCommands;
VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind;
} VkPhysicalDeviceAccelerationStructureFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
accelerationStructure
表示实现是否支持加速结构功能。请参阅 加速结构。 -
accelerationStructureCaptureReplay
表示实现是否支持保存和重用加速结构设备地址,例如用于跟踪捕获和重放。 -
accelerationStructureIndirectBuild
表示实现是否支持间接加速结构构建命令,例如 vkCmdBuildAccelerationStructuresIndirectKHR。 -
accelerationStructureHostCommands
表示实现是否支持主机端加速结构命令,例如 vkBuildAccelerationStructuresKHR、vkCopyAccelerationStructureKHR、vkCopyAccelerationStructureToMemoryKHR、vkCopyMemoryToAccelerationStructureKHR、vkWriteAccelerationStructuresPropertiesKHR。 -
descriptorBindingAccelerationStructureUpdateAfterBind
表示实现是否支持在绑定集合后更新加速结构描述符。如果未启用此特性,则VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
不得 与VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
一起使用。
如果 VkPhysicalDeviceAccelerationStructureFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceAccelerationStructureFeaturesKHR
可以 也用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceRayTracingPipelineFeaturesKHR
结构定义如下:
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
rayTracingPipeline
表示实现是否支持光线追踪管道功能。请参阅 光线追踪。 -
rayTracingPipelineShaderGroupHandleCaptureReplay
指示实现是否支持保存和重用着色器组句柄,例如用于跟踪捕获和重放。 -
rayTracingPipelineShaderGroupHandleCaptureReplayMixed
指示实现是否支持重用着色器组句柄与创建不重用的着色器组句柄任意混合使用。如果此值为VK_FALSE
,则所有重用的着色器组句柄 **必须** 在创建任何不重用的句柄 **之前** 指定。 -
rayTracingPipelineTraceRaysIndirect
指示实现是否支持间接光线追踪命令,例如 vkCmdTraceRaysIndirectKHR。 -
rayTraversalPrimitiveCulling
指示实现是否支持 光线遍历期间的图元剔除。
如果 VkPhysicalDeviceRayTracingPipelineFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceRayTracingPipelineFeaturesKHR
**也** 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceRayQueryFeaturesKHR
结构定义为
// Provided by VK_KHR_ray_query
typedef struct VkPhysicalDeviceRayQueryFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayQuery;
} VkPhysicalDeviceRayQueryFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceRayQueryFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceRayQueryFeaturesKHR
**也** 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
结构定义为
// Provided by VK_KHR_ray_tracing_maintenance1
typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingMaintenance1;
VkBool32 rayTracingPipelineTraceRaysIndirect2;
} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
rayTracingMaintenance1
指示实现支持以下内容-
使用
SPV_KHR_ray_cull_mask
SPIR-V 扩展的CullMaskKHR
SPIR-V 内置。 -
额外的加速结构属性查询:
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
和VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR
。 -
新的访问标志
VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
。 -
新的管线阶段标志位
VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR
-
-
rayTracingPipelineTraceRaysIndirect2
指示实现是否支持扩展的间接光线追踪命令 vkCmdTraceRaysIndirect2KHR。
如果 VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
**也** 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR
结构定义为
// Provided by VK_KHR_video_encode_quantization_map
typedef struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 videoEncodeQuantizationMap;
} VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
videoEncodeQuantizationMap
指示实现是否支持 视频编码量化图。对
videoEncodeQuantizationMap
的支持并不表示所有视频编码配置文件都支持量化图。对任何特定视频编码配置文件的量化图的支持取决于视频配置文件特定的功能。
如果 VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR
**也** 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceVideoMaintenance1FeaturesKHR
结构定义为
// Provided by VK_KHR_video_maintenance1
typedef struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 videoMaintenance1;
} VkPhysicalDeviceVideoMaintenance1FeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
-
新的缓冲区创建标志
VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR
。 -
新的图像创建标志
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR
。 -
新的视频会话创建标志
VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR
。
-
如果 VkPhysicalDeviceVideoMaintenance1FeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceVideoMaintenance1FeaturesKHR
**也** 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceVideoEncodeAV1FeaturesKHR
结构定义为
// Provided by VK_KHR_video_encode_av1
typedef struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 videoEncodeAV1;
} VkPhysicalDeviceVideoEncodeAV1FeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
videoEncodeAV1
指示实现是否支持 AV1 编码操作。
如果 VkPhysicalDeviceVideoEncodeAV1FeaturesKHR
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它会被填充以指示每个相应的功能是否受支持。VkPhysicalDeviceVideoEncodeAV1FeaturesKHR
可以 也被用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
结构体定义如下
// Provided by VK_EXT_extended_dynamic_state
typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 extendedDynamicState;
} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
extendedDynamicState
指示实现支持以下动态状态-
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
-
如果 VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它会被填充以指示每个相应的功能是否受支持。VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
可以 也被用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
结构体定义如下
// Provided by VK_EXT_extended_dynamic_state2
typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 extendedDynamicState2;
VkBool32 extendedDynamicState2LogicOp;
VkBool32 extendedDynamicState2PatchControlPoints;
} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
extendedDynamicState2
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
-
VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
-
VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
-
-
extendedDynamicState2LogicOp
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_LOGIC_OP_EXT
-
-
extendedDynamicState2PatchControlPoints
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
-
如果 VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它会被填充以指示每个相应的功能是否受支持。VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
可以 也被用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
结构体定义如下
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
extendedDynamicState3TessellationDomainOrigin
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
-
-
extendedDynamicState3DepthClampEnable
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
-
-
extendedDynamicState3PolygonMode
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_POLYGON_MODE_EXT
-
-
extendedDynamicState3RasterizationSamples
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
-
-
extendedDynamicState3SampleMask
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
-
-
extendedDynamicState3AlphaToCoverageEnable
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
-
-
extendedDynamicState3AlphaToOneEnable
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
-
-
extendedDynamicState3LogicOpEnable
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendEnable
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendEquation
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
-
-
extendedDynamicState3ColorWriteMask
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
-
-
extendedDynamicState3RasterizationStream
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
-
-
extendedDynamicState3ConservativeRasterizationMode
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
-
-
extendedDynamicState3ExtraPrimitiveOverestimationSize
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
-
-
extendedDynamicState3DepthClipEnable
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
-
-
extendedDynamicState3SampleLocationsEnable
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
-
-
extendedDynamicState3ColorBlendAdvanced
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
-
-
extendedDynamicState3ProvokingVertexMode
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
-
-
extendedDynamicState3LineRasterizationMode
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
-
-
extendedDynamicState3LineStippleEnable
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
-
-
extendedDynamicState3DepthClipNegativeOneToOne
指示实现支持以下动态状态-
VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
-
-
extendedDynamicState3ViewportWScalingEnable
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
-
-
extendedDynamicState3ViewportSwizzle
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
-
-
extendedDynamicState3CoverageToColorEnable
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
-
-
extendedDynamicState3CoverageToColorLocation
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
-
-
extendedDynamicState3CoverageModulationMode
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
-
-
extendedDynamicState3CoverageModulationTableEnable
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
-
-
extendedDynamicState3CoverageModulationTable
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
-
-
extendedDynamicState3CoverageReductionMode
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
-
-
extendedDynamicState3RepresentativeFragmentTestEnable
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
-
-
extendedDynamicState3ShadingRateImageEnable
表示该实现支持以下动态状态-
VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
-
如果 VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
也 可以用于 VkDeviceCreateInfo 的 pNext
链中以选择性地启用这些功能。
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
结构定义如下
// Provided by VK_NV_device_generated_commands
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 deviceGeneratedCommands;
} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
deviceGeneratedCommands
表示该实现是否支持在设备上生成命令的功能。请参阅 设备生成命令。
如果 VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
也 可以用于 VkDeviceCreateInfo 的 pNext
链中以选择性地启用这些功能。
VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
结构定义如下
// Provided by VK_NV_device_generated_commands_compute
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 deviceGeneratedCompute;
VkBool32 deviceGeneratedComputePipelines;
VkBool32 deviceGeneratedComputeCaptureReplay;
} VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
deviceGeneratedCompute
表示该实现是否支持在设备上为计算管线生成调度命令和推送常量功能。请参阅 设备生成命令。 -
deviceGeneratedComputePipelines
表示该实现是否支持在设备上生成绑定计算管线的命令功能。请参阅 设备生成命令。 -
deviceGeneratedComputeCaptureReplay
表示该实现是否支持捕获计算管线地址并稍后在 设备生成命令 中重放的功能。
如果 VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
也 可以用于 VkDeviceCreateInfo 的 pNext
链中以选择性地启用这些功能。
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
结构定义如下
// Provided by VK_EXT_device_generated_commands
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 deviceGeneratedCommands;
VkBool32 dynamicGeneratedPipelineLayout;
} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
dynamicGeneratedPipelineLayout
表示该实现允许 VkIndirectCommandsLayoutCreateInfoEXT 的pipelineLayout
成员为 VK_NULL_HANDLE,并且 VkPipelineLayoutCreateInfo 可以 链接到这些结构的pNext
。
如果 VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
也 可以用于 VkDeviceCreateInfo 的 pNext
链中以选择性地启用这些功能。
VkPhysicalDeviceDiagnosticsConfigFeaturesNV
结构定义如下
// Provided by VK_NV_device_diagnostics_config
typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 diagnosticsConfig;
} VkPhysicalDeviceDiagnosticsConfigFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceDiagnosticsConfigFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDiagnosticsConfigFeaturesNV
也 可以用于 VkDeviceCreateInfo 的 pNext
链中以选择性地启用这些功能。
VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
结构定义如下
// Provided by VK_EXT_device_memory_report
typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 deviceMemoryReport;
} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
也 可以用于 VkDeviceCreateInfo 的 pNext
链中以选择性地启用这些功能。
VkPhysicalDeviceGlobalPriorityQueryFeatures
结构体的定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceGlobalPriorityQueryFeatures {
VkStructureType sType;
void* pNext;
VkBool32 globalPriorityQuery;
} VkPhysicalDeviceGlobalPriorityQueryFeatures;
或者等效地:
// Provided by VK_KHR_global_priority
typedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;
或者等效地:
// Provided by VK_EXT_global_priority_query
typedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceGlobalPriorityQueryFeatures
结构体被包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceGlobalPriorityQueryFeatures
也可用 在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDevicePipelineCreationCacheControlFeatures
结构体的定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures {
VkStructureType sType;
void* pNext;
VkBool32 pipelineCreationCacheControl;
} VkPhysicalDevicePipelineCreationCacheControlFeatures;
或者等效地:
// Provided by VK_EXT_pipeline_creation_cache_control
typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
pipelineCreationCacheControl
表示该实现支持-
以下内容可以在
Vk*PipelineCreateInfo
::flags
中使用-
VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
-
VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
-
-
以下内容可以在 VkPipelineCacheCreateInfo::
flags
中使用-
VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
-
-
如果 VkPhysicalDevicePipelineCreationCacheControlFeatures
结构体被包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDevicePipelineCreationCacheControlFeatures
也可用 在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
结构体的定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderZeroInitializeWorkgroupMemory;
} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
或者等效地:
// Provided by VK_KHR_zero_initialize_workgroup_memory
typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
结构体被包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
也可用 在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDevicePrivateDataFeatures
结构体的定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDevicePrivateDataFeatures {
VkStructureType sType;
void* pNext;
VkBool32 privateData;
} VkPhysicalDevicePrivateDataFeatures;
或者等效地:
// Provided by VK_EXT_private_data
typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
privateData
表示该实现是否支持私有数据。参见 私有数据。
如果 VkPhysicalDevicePrivateDataFeatures
结构体被包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDevicePrivateDataFeatures
也可用 在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
结构体的定义如下:
// Provided by VK_KHR_shader_subgroup_uniform_control_flow
typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderSubgroupUniformControlFlow;
} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderSubgroupUniformControlFlow
指定该实现是否支持着色器执行模式SubgroupUniformControlFlowKHR
。
如果 VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
结构体被包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
也可用 在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceRobustness2FeaturesEXT
结构体的定义如下:
// Provided by VK_EXT_robustness2
typedef struct VkPhysicalDeviceRobustness2FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 robustBufferAccess2;
VkBool32 robustImageAccess2;
VkBool32 nullDescriptor;
} VkPhysicalDeviceRobustness2FeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
robustBufferAccess2
表示缓冲区访问是否严格按照描述符的范围进行边界检查。Uniform 缓冲区必须按照描述符的范围进行边界检查,其中范围向上取整为robustUniformBufferAccessSizeAlignment
的倍数。Storage 缓冲区必须按照描述符的范围进行边界检查,其中范围向上取整为robustStorageBufferAccessSizeAlignment
的倍数。越界的缓冲区加载将返回零值,并且来自纹理缓冲区的 图像加载、采样和原子操作 将根据格式插入缺失的 G、B 或 A 分量,其值为 (0,0,1)。 -
robustImageAccess2
表示图像访问是否严格按照图像视图的尺寸进行边界检查。来自图像的越界 图像加载、采样和原子操作 将返回零值,并根据格式插入缺失的 G、B 或 A 分量,其值为 (0,0,1)。 -
nullDescriptor
表示描述符可以使用 VK_NULL_HANDLE 资源或视图写入,这些资源或视图被认为是有效的访问,并且表现得好像该描述符没有绑定到任何东西。
如果 VkPhysicalDeviceRobustness2FeaturesEXT
结构体被包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceRobustness2FeaturesEXT
也可用 在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceImageRobustnessFeatures
结构体的定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceImageRobustnessFeatures {
VkStructureType sType;
void* pNext;
VkBool32 robustImageAccess;
} VkPhysicalDeviceImageRobustnessFeatures;
或者等效地:
// Provided by VK_EXT_image_robustness
typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceImageRobustnessFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceImageRobustnessFeatures
可以 也用在 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceShaderTerminateInvocationFeatures
结构定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderTerminateInvocation;
} VkPhysicalDeviceShaderTerminateInvocationFeatures;
或者等效地:
// Provided by VK_KHR_shader_terminate_invocation
typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderTerminateInvocationFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceShaderTerminateInvocationFeatures
可以 也用在 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceCustomBorderColorFeaturesEXT
结构定义如下:
// Provided by VK_EXT_custom_border_color
typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 customBorderColors;
VkBool32 customBorderColorWithoutFormat;
} VkPhysicalDeviceCustomBorderColorFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
customBorderColors
指示实现支持在采样器创建时提供以下值的borderColor
值之一:-
VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
-
VK_BORDER_COLOR_INT_CUSTOM_EXT
-
-
customBorderColorWithoutFormat
指示自定义边框颜色不需要显式格式,并且 VkSamplerCustomBorderColorCreateInfoEXT 结构的format
成员的取值可以为VK_FORMAT_UNDEFINED
。如果未设置此特性位,则应用程序必须在 VkSamplerCustomBorderColorCreateInfoEXT 结构的format
成员中提供此采样器采样的图像视图的 VkFormat。
如果 VkPhysicalDeviceCustomBorderColorFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceCustomBorderColorFeaturesEXT
可以 也用在 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
结构定义如下:
// Provided by VK_EXT_border_color_swizzle
typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 borderColorSwizzle;
VkBool32 borderColorSwizzleFromImage;
} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
borderColorSwizzle
指示在使用VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK
、VK_BORDER_COLOR_INT_OPAQUE_BLACK
、VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
或VK_BORDER_COLOR_INT_CUSTOM_EXT
borderColor
的采样器,以及使用非单位分量映射的图像视图时,采样的图像操作返回定义的值,无论是否启用borderColorSwizzleFromImage
,或者是否指定了 VkSamplerBorderColorComponentMappingCreateInfoEXT。 -
borderColorSwizzleFromImage
指示在上述条件下,当采样器不使用 VkSamplerBorderColorComponentMappingCreateInfoEXT 结构时,实现将从采样的图像操作返回正确的边框颜色值。如果未设置此特性位,则应用程序可以在创建用于不具有单位交换的图像视图的采样器时,链接一个 VkSamplerBorderColorComponentMappingCreateInfoEXT 结构,并且当这些采样器与使用相同分量映射的图像视图组合时,使用不透明黑色或自定义边框颜色的采样的图像操作将返回正确的边框颜色值。
如果 VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
可以 也用在 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDevicePortabilitySubsetFeaturesKHR
结构定义如下:
// 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;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
constantAlphaColorBlendFactors
指示此实现是否支持用作源或目标颜色 混合的常量alpha 混合因子。 -
events
指示此实现是否支持使用事件进行同步。 -
imageViewFormatReinterpretation
指示此实现是否支持使用包含不同数量的分量,或每个分量中不同数量的位,来创建VkImageView
,而不是底层VkImage
的纹素格式。 -
imageViewFormatSwizzle
指示此实现是否支持使用 VkImageViewCreateInfo::components
重新映射格式分量。 -
imageView2DOn3DImage
指示此实现是否支持使用设置的VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
标志来创建VkImage
,允许在 3DVkImage
上创建 2D 或 2D 数组图像视图。 -
multisampleArrayImage
指示此实现是否支持将VkImage
创建为每个纹素具有多个采样的 2D 数组。 -
mutableComparisonSamplers
指示此实现是否允许更新具有比较采样器的描述符。 -
samplerMipLodBias
表示此实现是否支持在创建采样器时设置mipmap LOD 偏移值。 -
separateStencilMaskRef
表示此实现是否支持单独的前后模板测试参考值。 -
shaderSampleRateInterpolationFunctions
表示此实现是否支持使用InterpolationFunction
功能以及来自GLSL.std.450
扩展指令集的扩展指令InterpolateAtCentroid
、InterpolateAtOffset
和InterpolateAtSample
的片元着色器。仅当支持sampleRateShading
功能时,此成员才有意义。 -
tessellationIsolines
表示此实现是否支持从图形管线的细分阶段输出等值线。仅当支持tessellationShader
功能时,此成员才有意义。 -
tessellationPointMode
表示此实现是否支持从图形管线的细分阶段输出点。仅当支持tessellationShader
功能时,此成员才有意义。 -
triangleFans
表示此实现是否支持三角形扇图元拓扑。 -
vertexAttributeAccessBeyondStride
表示此实现是否支持访问超出相应顶点输入绑定的步长的顶点输入属性。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDevicePortabilitySubsetFeaturesKHR
结构,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDevicePortabilitySubsetFeaturesKHR
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDevicePerformanceQueryFeaturesKHR
结构的定义如下:
// Provided by VK_KHR_performance_query
typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 performanceCounterQueryPools;
VkBool32 performanceCounterMultipleQueryPools;
} VkPhysicalDevicePerformanceQueryFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
performanceCounterMultipleQueryPools
表示此实现在主命令缓冲区及其内执行的辅助命令缓冲区中是否支持使用多个性能查询池。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDevicePerformanceQueryFeaturesKHR
结构,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDevicePerformanceQueryFeaturesKHR
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
VkPhysicalDevice4444FormatsFeaturesEXT
结构的定义如下:
// Provided by VK_EXT_4444_formats
typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 formatA4R4G4B4;
VkBool32 formatA4B4G4R4;
} VkPhysicalDevice4444FormatsFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
formatA4R4G4B4
表示此实现必须支持使用VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT
的VkFormat,并且至少具有以下VkFormatFeatureFlagBits:-
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
-
VK_FORMAT_FEATURE_BLIT_SRC_BIT
-
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
-
formatA4B4G4R4
表示此实现必须支持使用VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT
的VkFormat,并且至少具有以下VkFormatFeatureFlagBits:-
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
-
VK_FORMAT_FEATURE_BLIT_SRC_BIT
-
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDevice4444FormatsFeaturesEXT
结构,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDevice4444FormatsFeaturesEXT
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些功能。
尽管由 |
VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT
结构的定义如下:
// Provided by VK_EXT_mutable_descriptor_type
typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 mutableDescriptorType;
} VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;
或者等效地:
// Provided by VK_VALVE_mutable_descriptor_type
typedef VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
mutableDescriptorType
表示此实现必须支持使用VK_DESCRIPTOR_TYPE_MUTABLE_EXT
的VkDescriptorType,并且至少具有以下描述符类型,其中必须支持这些类型的任意组合:-
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
-
-
此外,
mutableDescriptorType
表示:-
如果 VkMutableDescriptorTypeListEXT 中用于
VK_DESCRIPTOR_TYPE_MUTABLE_EXT
的所有描述符类型都在 VkPhysicalDeviceDescriptorIndexingFeatures 中启用了相应的非统一索引功能,则必须支持非统一描述符索引。 -
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
与VK_DESCRIPTOR_TYPE_MUTABLE_EXT
的descriptorType
结合使用时,会将所需描述符类型的列表放宽到在 VkPhysicalDeviceDescriptorIndexingFeatures 中启用了相应更新后绑定功能的描述符类型。 -
如果
VK_DESCRIPTOR_TYPE_MUTABLE_EXT
的 VkMutableDescriptorTypeListEXT 中的所有描述符类型都启用了相应的动态索引特性,则必须支持动态统一描述符索引。 -
必须支持
VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
。 -
必须支持
VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT
。
-
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT
可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceDepthClipControlFeaturesEXT
结构的定义如下:
// Provided by VK_EXT_depth_clip_control
typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthClipControl;
} VkPhysicalDeviceDepthClipControlFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
depthClipControl
指示实现支持将 VkPipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOne
设置为VK_TRUE
。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceDepthClipControlFeaturesEXT
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceDepthClipControlFeaturesEXT
可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceDepthClampControlFeaturesEXT
结构的定义如下:
// Provided by VK_EXT_depth_clamp_control
typedef struct VkPhysicalDeviceDepthClampControlFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthClampControl;
} VkPhysicalDeviceDepthClampControlFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
depthClampControl
指示实现支持将 VkPipelineViewportDepthClampControlCreateInfoEXT::depthClampMode
设置为VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT
。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceDepthClampControlFeaturesEXT
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceDepthClampControlFeaturesEXT
可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
结构的定义如下:
// Provided by VK_KHR_workgroup_memory_explicit_layout
typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 workgroupMemoryExplicitLayout;
VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout;
VkBool32 workgroupMemoryExplicitLayout8BitAccess;
VkBool32 workgroupMemoryExplicitLayout16BitAccess;
} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
workgroupMemoryExplicitLayout
指示实现是否支持 SPIR-V 的WorkgroupMemoryExplicitLayoutKHR
功能。 -
workgroupMemoryExplicitLayoutScalarBlockLayout
指示实现是否支持用于布局 Workgroup Blocks 的标量对齐。 -
workgroupMemoryExplicitLayout8BitAccess
指示带有Block
修饰符的Workgroup
存储类中的对象可以拥有 8 位整数成员。如果未启用此特性,则在这些对象中必须不使用 8 位整数成员。这也表示着色器模块可以声明WorkgroupMemoryExplicitLayout8BitAccessKHR
功能。 -
workgroupMemoryExplicitLayout16BitAccess
指示带有Block
修饰符的Workgroup
存储类中的对象可以拥有 16 位整数和 16 位浮点成员。如果未启用此特性,则在这些对象中必须不使用 16 位整数或 16 位浮点成员。这也表示着色器模块可以声明WorkgroupMemoryExplicitLayout16BitAccessKHR
功能。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceSynchronization2Features
结构的定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceSynchronization2Features {
VkStructureType sType;
void* pNext;
VkBool32 synchronization2;
} VkPhysicalDeviceSynchronization2Features;
或者等效地:
// Provided by VK_KHR_synchronization2
typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
synchronization2
指示实现是否支持VK_KHR_synchronization2
中引入的新同步命令集。
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceSynchronization2Features
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceSynchronization2Features
可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
结构的定义如下:
// Provided by VK_EXT_vertex_input_dynamic_state
typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 vertexInputDynamicState;
} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
vertexInputDynamicState
指示实现是否支持以下动态状态:-
VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
-
如果 VkPhysicalDeviceFeatures2 结构的 pNext
链中包含 VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
结构的定义如下:
// Provided by VK_EXT_primitives_generated_query
typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 primitivesGeneratedQuery;
VkBool32 primitivesGeneratedQueryWithRasterizerDiscard;
VkBool32 primitivesGeneratedQueryWithNonZeroStreams;
} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
primitivesGeneratedQuery
指示实现是否支持VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
查询类型。 -
primitivesGeneratedQueryWithRasterizerDiscard
指示在启用光栅化丢弃时,实现是否支持此查询。 -
primitivesGeneratedQueryWithNonZeroStreams
指示在 vkCmdBeginQueryIndexedEXT 中使用非零索引时,实现是否支持此查询。
如果 VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceFragmentShadingRateFeaturesKHR
结构体定义如下:
// Provided by VK_KHR_fragment_shading_rate
typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 pipelineFragmentShadingRate;
VkBool32 primitiveFragmentShadingRate;
VkBool32 attachmentFragmentShadingRate;
} VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
pipelineFragmentShadingRate
表示实现支持管线片段着色率。 -
primitiveFragmentShadingRate
表示实现支持图元片段着色率。 -
attachmentFragmentShadingRate
表示实现支持附件片段着色率。
如果 VkPhysicalDeviceFragmentShadingRateFeaturesKHR
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceFragmentShadingRateFeaturesKHR
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceLegacyDitheringFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_legacy_dithering
typedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 legacyDithering;
} VkPhysicalDeviceLegacyDitheringFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
legacyDithering
指示实现是否支持 传统抖动。
如果 VkPhysicalDeviceLegacyDitheringFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceLegacyDitheringFeaturesEXT
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
结构体定义如下:
// Provided by VK_NV_fragment_shading_rate_enums
typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 fragmentShadingRateEnums;
VkBool32 supersampleFragmentShadingRates;
VkBool32 noInvocationFragmentShadingRates;
} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
fragmentShadingRateEnums
表示实现支持使用VkFragmentShadingRateNV
枚举类型指定片段着色率。 -
noInvocationFragmentShadingRates
表示实现支持指示在使用该着色率时不应调用任何片段着色器的片段着色率枚举值。
如果 VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceInheritedViewportScissorFeaturesNV
结构体定义如下:
// Provided by VK_NV_inherited_viewport_scissor
typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 inheritedViewportScissor2D;
} VkPhysicalDeviceInheritedViewportScissorFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
inheritedViewportScissor2D
指示二级命令缓冲区是否可以从主命令缓冲区继承受VK_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
或VK_DYNAMIC_STATE_SCISSOR
影响的大部分动态状态。
如果 VkPhysicalDeviceInheritedViewportScissorFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceInheritedViewportScissorFeaturesNV
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDevicePipelineProtectedAccessFeatures
结构体定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDevicePipelineProtectedAccessFeatures {
VkStructureType sType;
void* pNext;
VkBool32 pipelineProtectedAccess;
} VkPhysicalDevicePipelineProtectedAccessFeatures;
或者等效地:
// Provided by VK_EXT_pipeline_protected_access
typedef VkPhysicalDevicePipelineProtectedAccessFeatures VkPhysicalDevicePipelineProtectedAccessFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDevicePipelineProtectedAccessFeatures
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDevicePipelineProtectedAccessFeatures
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_ycbcr_2plane_444_formats
typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 ycbcr2plane444Formats;
} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
ycbcr2plane444Formats
表示实现支持以下 2 平面 444 Y′CBCR 格式-
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
-
如果 VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
也可以在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
尽管由 |
VkPhysicalDeviceColorWriteEnableFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_color_write_enable
typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 colorWriteEnable;
} VkPhysicalDeviceColorWriteEnableFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
colorWriteEnable
表示实现支持动态状态VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
。
如果 VkPhysicalDeviceColorWriteEnableFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceColorWriteEnableFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDevicePipelinePropertiesFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_pipeline_properties
typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 pipelinePropertiesIdentifier;
} VkPhysicalDevicePipelinePropertiesFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDevicePipelinePropertiesFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDevicePipelinePropertiesFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceProvokingVertexFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_provoking_vertex
typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 provokingVertexLast;
VkBool32 transformFeedbackPreservesProvokingVertex;
} VkPhysicalDeviceProvokingVertexFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
provokingVertexLast
指示该实现是否支持用于平面着色的VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
provoking vertex mode。 -
transformFeedbackPreservesProvokingVertex
指示由变换反馈写入的每个图元内的顶点顺序将保留激发顶点。当transformFeedbackPreservesTriangleFanProvokingVertex
为VK_FALSE
时,这不适用于三角形扇形图元。当不支持VK_EXT_transform_feedback
扩展时,transformFeedbackPreservesProvokingVertex
必须为VK_FALSE
。
如果 VkPhysicalDeviceProvokingVertexFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceProvokingVertexFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
当 VkPhysicalDeviceProvokingVertexFeaturesEXT
在 VkDeviceCreateInfo 的 pNext
链中,但 transformFeedback
特性未启用时,transformFeedbackPreservesProvokingVertex
的值将被忽略。
VkPhysicalDeviceDescriptorBufferFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_descriptor_buffer
typedef struct VkPhysicalDeviceDescriptorBufferFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 descriptorBuffer;
VkBool32 descriptorBufferCaptureReplay;
VkBool32 descriptorBufferImageLayoutIgnored;
VkBool32 descriptorBufferPushDescriptors;
} VkPhysicalDeviceDescriptorBufferFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
descriptorBufferCaptureReplay
表示在使用描述符缓冲区时,该实现支持捕获和重放。如果此值为VK_TRUE
,则所有使用VK_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
或VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
创建的资源 必须在不带这些标志的相同类型的资源之前创建。 -
descriptorBufferImageLayoutIgnored
表示该实现在调用 vkGetDescriptorEXT 时将忽略VkDescriptorImageInfo
中的imageLayout
。 -
descriptorBufferPushDescriptors
表示该实现支持将 push descriptors 与描述符缓冲区一起使用。
如果 VkPhysicalDeviceDescriptorBufferFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceDescriptorBufferFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_pageable_device_local_memory
typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 pageableDeviceLocalMemory;
} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
pageableDeviceLocalMemory
指示该实现支持可分页的设备本地内存,并且 可能 透明地将设备本地内存分配移动到主机本地内存,以便更好地与其他应用程序共享设备本地内存。
如果 VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceMultiDrawFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_multi_draw
typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 multiDraw;
} VkPhysicalDeviceMultiDrawFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
multiDraw
指示该实现支持 vkCmdDrawMultiEXT 和 vkCmdDrawMultiIndexedEXT。
如果 VkPhysicalDeviceMultiDrawFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceMultiDrawFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
结构体定义如下:
// Provided by VK_NV_ray_tracing_motion_blur
typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingMotionBlur;
VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect;
} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
rayTracingMotionBlurPipelineTraceRaysIndirect
指示该实现是否支持启用运动模糊特性的间接光线追踪命令。
如果 VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceOpacityMicromapFeaturesEXT
结构定义如下:
// Provided by VK_EXT_opacity_micromap
typedef struct VkPhysicalDeviceOpacityMicromapFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 micromap;
VkBool32 micromapCaptureReplay;
VkBool32 micromapHostCommands;
} VkPhysicalDeviceOpacityMicromapFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceOpacityMicromapFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceOpacityMicromapFeaturesEXT
也能够 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceDisplacementMicromapFeaturesNV
结构定义如下:
// Provided by VK_NV_displacement_micromap
typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 displacementMicromap;
} VkPhysicalDeviceDisplacementMicromapFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceDisplacementMicromapFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceDisplacementMicromapFeaturesNV
也能够 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceRayTracingValidationFeaturesNV
结构定义如下:
// Provided by VK_NV_ray_tracing_validation
typedef struct VkPhysicalDeviceRayTracingValidationFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingValidation;
} VkPhysicalDeviceRayTracingValidationFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceRayTracingValidationFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceRayTracingValidationFeaturesNV
也能够 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
结构定义如下:
// Provided by VK_HUAWEI_subpass_shading
typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 subpassShading;
} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
也能够 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
结构定义如下:
// Provided by VK_NV_external_memory_rdma
typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 externalMemoryRDMA;
} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
externalMemoryRDMA
指示实现是否支持VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV
内存属性和VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV
外部内存句柄类型。
如果 VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
也能够 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDevicePresentIdFeaturesKHR
结构定义如下:
// Provided by VK_KHR_present_id
typedef struct VkPhysicalDevicePresentIdFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 presentId;
} VkPhysicalDevicePresentIdFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
presentId
指示实现是否支持在VkPresentInfoKHR
结构的VkPresentIdKHR
扩展中指定呈现 ID 值。
如果 VkPhysicalDevicePresentIdFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDevicePresentIdFeaturesKHR
也能够 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDevicePresentWaitFeaturesKHR
结构定义如下:
// Provided by VK_KHR_present_wait
typedef struct VkPhysicalDevicePresentWaitFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 presentWait;
} VkPhysicalDevicePresentWaitFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDevicePresentWaitFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDevicePresentWaitFeaturesKHR
也能够 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceHostImageCopyFeatures
结构定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceHostImageCopyFeatures {
VkStructureType sType;
void* pNext;
VkBool32 hostImageCopy;
} VkPhysicalDeviceHostImageCopyFeatures;
或者等效地:
// Provided by VK_EXT_host_image_copy
typedef VkPhysicalDeviceHostImageCopyFeatures VkPhysicalDeviceHostImageCopyFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
hostImageCopy
指示实现是否支持使用 vkCopyMemoryToImage 命令从主机内存复制到图像,使用 vkCopyImageToMemory 命令从图像复制到主机内存,以及使用 vkCopyImageToImage 命令在图像之间复制。
如果 VkPhysicalDeviceHostImageCopyFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceHostImageCopyFeatures
也能够 在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDevicePresentBarrierFeaturesNV
结构体定义如下:
// Provided by VK_NV_present_barrier
typedef struct VkPhysicalDevicePresentBarrierFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 presentBarrier;
} VkPhysicalDevicePresentBarrierFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDevicePresentBarrierFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDevicePresentBarrierFeaturesNV
也 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceShaderIntegerDotProductFeatures
结构体定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderIntegerDotProduct;
} VkPhysicalDeviceShaderIntegerDotProductFeatures;
或者等效地:
// Provided by VK_KHR_shader_integer_dot_product
typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderIntegerDotProductFeatures
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceShaderIntegerDotProductFeatures
也 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceMaintenance4Features
结构体定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceMaintenance4Features {
VkStructureType sType;
void* pNext;
VkBool32 maintenance4;
} VkPhysicalDeviceMaintenance4Features;
或者等效地:
// Provided by VK_KHR_maintenance4
typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
-
应用程序可以在使用 VkPipelineLayout 对象创建另一个对象后立即销毁它。
-
LocalSizeId
可以用作LocalSize
的替代方案,以使用专用化常量指定局部工作组大小。 -
使用相同的创建参数创建的图像将始终具有相同的对齐要求。
-
缓冲区或图像的大小内存需求永远不会大于使用更大或相等大小创建的另一个缓冲区或图像。
-
推送常量不必在动态访问之前初始化。
-
接口匹配规则允许较大的输出向量与较小的输入向量匹配,并丢弃其他值。
-
如果 VkPhysicalDeviceMaintenance4Features
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMaintenance4Features
也 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceMaintenance5Features
结构体定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceMaintenance5Features {
VkStructureType sType;
void* pNext;
VkBool32 maintenance5;
} VkPhysicalDeviceMaintenance5Features;
或者等效地:
// Provided by VK_KHR_maintenance5
typedef VkPhysicalDeviceMaintenance5Features VkPhysicalDeviceMaintenance5FeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
-
公开可选格式
VK_FORMAT_A1B5G5R5_UNORM_PACK16
的支持能力。 -
公开可选格式
VK_FORMAT_A8_UNORM
的支持能力。 -
一个属性,指示在 EarlyFragmentTests 模式下,多重采样覆盖操作在样本计数之后执行。
-
使用 VkBufferUsageFlags2CreateInfo 创建具有关联
VkBuffer
使用子集的VkBufferView
。 -
一个新的函数 vkCmdBindIndexBuffer2,允许将内存范围绑定为索引缓冲区。
-
对于高于应用程序请求版本的核心函数的函数指针,vkGetDeviceProcAddr 将返回
NULL
。 -
vkCmdBindVertexBuffers2 支持在
pSizes
参数中使用VK_WHOLE_SIZE
。 -
如果未写入
PointSize
,则点的默认大小为1.0
。 -
可以将 VkShaderModuleCreateInfo 作为链式结构添加到通过 VkPipelineShaderStageCreateInfo 创建的管线中,而不是必须创建着色器模块。
-
一个函数 vkGetRenderingAreaGranularity,用于查询动态渲染实例的最佳渲染区域。
-
一个属性,指示具有
VK_COMPONENT_SWIZZLE_ONE
的深度/模板纹理操作具有定义的行为。 -
vkGetDeviceImageSubresourceLayout 允许应用程序执行 vkGetImageSubresourceLayout 查询,而无需创建图像。
-
VK_REMAINING_ARRAY_LAYERS
作为 VkImageSubresourceLayers 的layerCount
成员。 -
一个属性,指示如果 多边形模式 为
VK_POLYGON_MODE_POINT
,PointSize
是否控制多边形的最终光栅化。 -
两个属性,用于指示使用的非严格线条光栅化算法。
-
两个新的标志字 VkPipelineCreateFlagBits2 和 VkBufferUsageFlagBits2。
-
现在可以使用类型有效范围内的任何值(超出已定义的枚举值)来调用物理设备级函数,这样应用程序在查询特定枚举支持的属性之前可以避免检查单独的特性、扩展或版本。
-
允许在任何类型的图像之间进行复制,其中 1D 图像被视为高度为
1
的 2D 图像。
-
如果 VkPhysicalDeviceMaintenance5Features
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMaintenance5Features
也 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceMaintenance6Features
结构体定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceMaintenance6Features {
VkStructureType sType;
void* pNext;
VkBool32 maintenance6;
} VkPhysicalDeviceMaintenance6Features;
或者等效地:
// Provided by VK_KHR_maintenance6
typedef VkPhysicalDeviceMaintenance6Features VkPhysicalDeviceMaintenance6FeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
-
当绑定索引缓冲区时,可以使用VK_NULL_HANDLE
-
VkBindMemoryStatus 可以包含在 VkBindBufferMemoryInfo 和 VkBindImageMemoryInfo 结构的
pNext
链中,使应用程序能够检索各个内存绑定操作的 VkResult 值。 -
VkPhysicalDeviceMaintenance6Properties::
blockTexelViewCompatibleMultipleLayers
属性表示该实现支持创建具有VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
的图像视图,其中subresourceRange
的layerCount
成员大于1
。 -
VkPhysicalDeviceMaintenance6Properties::
maxCombinedImageSamplerDescriptorCount
属性表示实现支持的任何需要采样器 Y′CBCR 转换的格式所需的最大描述符大小。 -
VkPhysicalDeviceMaintenance6Properties::
fragmentShadingRateClampCombinerInputs
属性表示该实现是否钳制片段着色率组合器操作的输入。
-
如果 VkPhysicalDeviceMaintenance6Features
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMaintenance6Features
也 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceMaintenance7FeaturesKHR
结构体定义如下:
// Provided by VK_KHR_maintenance7
typedef struct VkPhysicalDeviceMaintenance7FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 maintenance7;
} VkPhysicalDeviceMaintenance7FeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
-
VK_RENDERING_CONTENTS_INLINE_BIT_KHR
和VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR
标志可以用于在渲染通道实例中记录命令,包括动态渲染的内联命令和使用 vkCmdExecuteCommands 执行的旧式渲染通道的辅助命令缓冲区。 -
查询通过分层实现提供的 Vulkan 实现中的底层设备的信息。这通过将 VkPhysicalDeviceLayeredApiPropertiesListKHR 链接到 VkPhysicalDeviceProperties2 来完成。
-
新的限制,指示管道布局中可以包含的动态 uniform 缓冲区和动态存储缓冲区的最大总数。
-
32 位时间戳查询必须在溢出时回绕。
-
一个属性,指示片段着色率附件的大小是否太小而无法覆盖指定的渲染区域。
-
一个属性,指示是否支持在不执行对另一个方面进行读-修改-写操作的情况下写入深度/模板附件的一个方面。
-
如果 VkPhysicalDeviceMaintenance7FeaturesKHR
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMaintenance7FeaturesKHR
也 可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceMaintenance8FeaturesKHR
结构体定义如下:
// Provided by VK_KHR_maintenance8
typedef struct VkPhysicalDeviceMaintenance8FeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 maintenance8;
} VkPhysicalDeviceMaintenance8FeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。-
允许在深度/模板附件和“匹配”的颜色附件之间进行复制。
-
允许
vkMergePipelineCaches
中的dstCache
进行隐式同步。 -
要求在进行队列族所有权转移时,src/dst 同步范围起作用。
-
支持纹理采样和获取操作中的
Offset
(作为ConstOffset
的替代方案) 图像操作数。 -
使用 OpSRem 和 OpSMod 的 SPIR-V 定义,使这些操作为负操作数产生明确定义的结果。
-
放宽从 3D 图像到其他图像类型进行 blit 操作时的图层限制。
-
为与 VkMemoryBarrier2、VkBufferMemoryBarrier2 和 VkImageMemoryBarrier2 一起使用的额外 64 个访问标志添加空间。
如果 VkPhysicalDeviceMaintenance8FeaturesKHR
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceMaintenance8FeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceDynamicRenderingFeatures
结构体的定义如下:
// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceDynamicRenderingFeatures {
VkStructureType sType;
void* pNext;
VkBool32 dynamicRendering;
} VkPhysicalDeviceDynamicRenderingFeatures;
或者等效地:
// Provided by VK_KHR_dynamic_rendering
typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
dynamicRendering
指定实现支持使用 vkCmdBeginRendering 命令的动态渲染通道实例。
如果 VkPhysicalDeviceDynamicRenderingFeatures
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceDynamicRenderingFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
结构体的定义如下:
// Provided by VK_EXT_rgba10x6_formats
typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 formatRgba10x6WithoutYCbCrSampler;
} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
formatRgba10x6WithoutYCbCrSampler
表示VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
可以与subresourceRange.aspectMask
等于VK_IMAGE_ASPECT_COLOR_BIT
的VkImageView
一起使用,而无需启用采样器 Y′CBCR 转换。
如果 VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDevicePipelineRobustnessFeatures
结构体的定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDevicePipelineRobustnessFeatures {
VkStructureType sType;
void* pNext;
VkBool32 pipelineRobustness;
} VkPhysicalDevicePipelineRobustnessFeatures;
或者等效地:
// Provided by VK_EXT_pipeline_robustness
typedef VkPhysicalDevicePipelineRobustnessFeatures VkPhysicalDevicePipelineRobustnessFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
在某些平台上,启用 |
如果 VkPhysicalDevicePipelineRobustnessFeatures
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDevicePipelineRobustnessFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceImageViewMinLodFeaturesEXT
结构体的定义如下:
// Provided by VK_EXT_image_view_min_lod
typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 minLod;
} VkPhysicalDeviceImageViewMinLodFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
minLod
表示实现是否支持在 图像层级选择、纹素收集和 整数纹素坐标操作期间,通过给定的 VkImageView,使用 VkImageViewMinLodCreateInfoEXT::minLod
限制最小 LOD 值。
如果 VkPhysicalDeviceImageViewMinLodFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceImageViewMinLodFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
结构体的定义如下:
// Provided by VK_EXT_rasterization_order_attachment_access
typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 rasterizationOrderColorAttachmentAccess;
VkBool32 rasterizationOrderDepthAttachmentAccess;
VkBool32 rasterizationOrderStencilAttachmentAccess;
} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
或者等效地:
// Provided by VK_ARM_rasterization_order_attachment_access
typedef VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
rasterizationOrderColorAttachmentAccess
表示实现支持对颜色和输入附件进行光栅化顺序访问。 -
rasterizationOrderDepthAttachmentAccess
表示实现支持对深度/模板和输入附件的深度方面进行光栅化顺序访问。 -
rasterizationOrderStencilAttachmentAccess
表示实现支持对深度/模板和输入附件的模板方面进行光栅化顺序访问。
如果 VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT
结构体的定义如下:
// Provided by VK_EXT_subpass_merge_feedback
typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 subpassMergeFeedback;
} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以有选择地启用这些特性。
VkPhysicalDeviceLinearColorAttachmentFeaturesNV
结构体的定义如下:
// Provided by VK_NV_linear_color_attachment
typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 linearColorAttachment;
} VkPhysicalDeviceLinearColorAttachmentFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
linearColorAttachment
表示实现是否支持可渲染的 线性颜色附件
如果 VkPhysicalDeviceLinearColorAttachmentFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceLinearColorAttachmentFeaturesNV
也可以用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT
结构定义如下:
// Provided by VK_EXT_attachment_feedback_loop_layout
typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 attachmentFeedbackLoopLayout;
} VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
attachmentFeedbackLoopLayout
指示实现是否支持将VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
图像布局用于使用VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
创建的图像。
VkPhysicalDeviceNestedCommandBufferFeaturesEXT
结构定义如下:
// Provided by VK_EXT_nested_command_buffer
typedef struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 nestedCommandBuffer;
VkBool32 nestedCommandBufferRendering;
VkBool32 nestedCommandBufferSimultaneousUse;
} VkPhysicalDeviceNestedCommandBufferFeaturesEXT;
此结构描述以下功能:
-
nestedCommandBufferRendering
指示在以VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
记录的二级命令缓冲区内调用 vkCmdExecuteCommands 是有效的。 -
nestedCommandBufferSimultaneousUse
指示实现是否支持使用以VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
记录的命令缓冲区的嵌套命令缓冲区。
如果 VkPhysicalDeviceNestedCommandBufferFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceNestedCommandBufferFeaturesEXT
也可以用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
结构定义如下:
// Provided by VK_EXT_graphics_pipeline_library
typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 graphicsPipelineLibrary;
} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
graphicsPipelineLibrary
指示实现是否支持图形管线库。
如果 VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
也可以用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDevicePipelineBinaryFeaturesKHR
结构定义如下:
// Provided by VK_KHR_pipeline_binary
typedef struct VkPhysicalDevicePipelineBinaryFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 pipelineBinaries;
} VkPhysicalDevicePipelineBinaryFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
pipelineBinaries
指示实现是否支持管线二进制文件。
如果 VkPhysicalDevicePipelineBinaryFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDevicePipelineBinaryFeaturesKHR
也可以用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
结构定义如下:
// Provided by VK_EXT_multisampled_render_to_single_sampled
typedef struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 multisampledRenderToSingleSampled;
} VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
也可以用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceImage2DViewOf3DFeaturesEXT
结构定义如下:
// Provided by VK_EXT_image_2d_view_of_3d
typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 image2DViewOf3D;
VkBool32 sampler2DViewOf3D;
} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
image2DViewOf3D
指示如果图像是使用VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
创建的,则实现是否支持在VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
类型的描述符中使用 3D 图像的 2D 视图。 -
sampler2DViewOf3D
指示如果图像是使用VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
创建的,则实现是否支持在VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
或VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
类型的描述符中使用 3D 图像的 2D 视图。
如果 VkPhysicalDeviceImage2DViewOf3DFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceImage2DViewOf3DFeaturesEXT
也可以用在 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
结构定义如下:
// Provided by VK_EXT_image_sliced_view_of_3d
typedef struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 imageSlicedViewOf3D;
} VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
结构的成员描述以下功能:
-
imageSlicedViewOf3D
表示实现支持在VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
类型的描述符中使用 3D 图像的切片视图,通过在创建视图时使用 VkImageViewSlicedCreateInfoEXT 结构体来实现。
如果 VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceImageCompressionControlFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_image_compression_control
typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 imageCompressionControl;
} VkPhysicalDeviceImageCompressionControlFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceImageCompressionControlFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceImageCompressionControlFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_image_compression_control_swapchain
typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 imageCompressionControlSwapchain;
} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
imageCompressionControlSwapchain
表示实现支持每个交换链控制图像控制,并查询每个表面的图像压缩属性。
如果 VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR
结构体定义如下:
// Provided by VK_KHR_ray_tracing_position_fetch
typedef struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingPositionFetch;
} VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderFloatControls2Features
结构体定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceShaderFloatControls2Features {
VkStructureType sType;
void* pNext;
VkBool32 shaderFloatControls2;
} VkPhysicalDeviceShaderFloatControls2Features;
或者等效地:
// Provided by VK_KHR_shader_float_controls2
typedef VkPhysicalDeviceShaderFloatControls2Features VkPhysicalDeviceShaderFloatControls2FeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderFloatControls2Features
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderFloatControls2Features
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
结构体定义如下:
// Provided by VK_AMD_shader_early_and_late_fragment_tests
typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
VkStructureType sType;
void* pNext;
VkBool32 shaderEarlyAndLateFragmentTests;
} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderEarlyAndLateFragmentTests
表示实现是否支持EarlyAndLateFragmentTestsAMD
Execution
Mode
。
如果 VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceAntiLagFeaturesAMD
结构体定义如下:
// Provided by VK_AMD_anti_lag
typedef struct VkPhysicalDeviceAntiLagFeaturesAMD {
VkStructureType sType;
void* pNext;
VkBool32 antiLag;
} VkPhysicalDeviceAntiLagFeaturesAMD;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
antiLag
表示实现是否支持 AMD Radeon™ Anti-Lag 功能。antiLag
特性仅支持单个 GPU,如果 VkDeviceGroupDeviceCreateInfo::physicalDeviceCount
大于 1,则必须禁用此功能。
如果 VkPhysicalDeviceAntiLagFeaturesAMD
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceAntiLagFeaturesAMD
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_non_seamless_cube_map
typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 nonSeamlessCubeMap;
} VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
nonSeamlessCubeMap
表示实现支持VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT
。
如果 VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_shader_module_identifier
typedef struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderModuleIdentifier;
} VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderModuleIdentifier
表示实现是否支持查询 VkShaderModule 或 VkShaderModuleCreateInfo 结构的标识符,以及仅从标识符创建管线。
如果 VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceTilePropertiesFeaturesQCOM
结构定义如下:
// Provided by VK_QCOM_tile_properties
typedef struct VkPhysicalDeviceTilePropertiesFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 tileProperties;
} VkPhysicalDeviceTilePropertiesFeaturesQCOM;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceTilePropertiesFeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceTilePropertiesFeaturesQCOM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceImageProcessingFeaturesQCOM
结构定义如下:
// Provided by VK_QCOM_image_processing
typedef struct VkPhysicalDeviceImageProcessingFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 textureSampleWeighted;
VkBool32 textureBoxFilter;
VkBool32 textureBlockMatch;
} VkPhysicalDeviceImageProcessingFeaturesQCOM;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
textureSampleWeighted
表示该实现支持声明了TextureSampleWeightedQCOM
功能的着色器模块。 -
textureBlockMatch
表示该实现支持声明了TextureBlockMatchQCOM
功能的着色器模块。
如果 VkPhysicalDeviceImageProcessingFeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceImageProcessingFeaturesQCOM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceImageProcessing2FeaturesQCOM
结构定义如下:
// Provided by VK_QCOM_image_processing2
typedef struct VkPhysicalDeviceImageProcessing2FeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 textureBlockMatch2;
} VkPhysicalDeviceImageProcessing2FeaturesQCOM;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
textureBlockMatch2
表示该实现支持声明了TextureBlockMatch2QCOM
功能的着色器模块。
如果 VkPhysicalDeviceImageProcessing2FeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceImageProcessing2FeaturesQCOM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceDepthClampZeroOneFeaturesKHR
结构定义如下:
// Provided by VK_KHR_depth_clamp_zero_one
typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 depthClampZeroOne;
} VkPhysicalDeviceDepthClampZeroOneFeaturesKHR;
或者等效地:
// Provided by VK_EXT_depth_clamp_zero_one
typedef VkPhysicalDeviceDepthClampZeroOneFeaturesKHR VkPhysicalDeviceDepthClampZeroOneFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceDepthClampZeroOneFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceDepthClampZeroOneFeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderTileImageFeaturesEXT
结构定义如下:
// Provided by VK_EXT_shader_tile_image
typedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderTileImageColorReadAccess;
VkBool32 shaderTileImageDepthReadAccess;
VkBool32 shaderTileImageStencilReadAccess;
} VkPhysicalDeviceShaderTileImageFeaturesEXT;
VkPhysicalDeviceShaderTileImageFeaturesEXT
结构的成员描述了以下特性:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderTileImageColorReadAccess
表示该实现支持TileImageColorReadAccessEXT
SPIR-V 功能。 -
shaderTileImageDepthReadAccess
表示该实现支持TileImageDepthReadAccessEXT
SPIR-V 功能。 -
shaderTileImageStencilReadAccess
表示该实现支持TileImageStencilReadAccessEXT
SPIR-V 功能。
如果 VkPhysicalDeviceShaderTileImageFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceShaderTileImageFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceDepthBiasControlFeaturesEXT
结构定义如下:
// Provided by VK_EXT_depth_bias_control
typedef struct VkPhysicalDeviceDepthBiasControlFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 depthBiasControl;
VkBool32 leastRepresentableValueForceUnormRepresentation;
VkBool32 floatRepresentation;
VkBool32 depthBiasExact;
} VkPhysicalDeviceDepthBiasControlFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
depthBiasControl
表示该实现是否支持vkCmdSetDepthBias2EXT
命令和VkDepthBiasRepresentationInfoEXT
结构。 -
leastRepresentableValueForceUnormRepresentation
表示该实现是否支持使用VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT
深度偏差表示。 -
floatRepresentation
表示该实现是否支持使用VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT
深度偏差表示。 -
depthBiasExact
表示该实现是否支持强制深度偏差不被缩放,以确保使用VkDepthBiasRepresentationInfoEXT
::depthBiasExact
的最小可分辨差异。
VkPhysicalDeviceAddressBindingReportFeaturesEXT
结构定义如下:
// Provided by VK_EXT_device_address_binding_report
typedef struct VkPhysicalDeviceAddressBindingReportFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 reportAddressBinding;
} VkPhysicalDeviceAddressBindingReportFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceAddressBindingReportFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceAddressBindingReportFeaturesEXT
可以 也被用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceOpticalFlowFeaturesNV
结构体定义如下:
// Provided by VK_NV_optical_flow
typedef struct VkPhysicalDeviceOpticalFlowFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 opticalFlow;
} VkPhysicalDeviceOpticalFlowFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceOpticalFlowFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceOpticalFlowFeaturesNV
可以 也被用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceFaultFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_device_fault
typedef struct VkPhysicalDeviceFaultFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 deviceFault;
VkBool32 deviceFaultVendorBinary;
} VkPhysicalDeviceFaultFeaturesEXT;
VkPhysicalDeviceFaultFeaturesEXT
结构体的成员描述了以下功能:
如果 VkPhysicalDeviceFaultFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceFaultFeaturesEXT
可以 也被用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_pipeline_library_group_handles
typedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 pipelineLibraryGroupHandles;
} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
此结构描述以下功能:
如果 VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
可以 也被用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceShaderObjectFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_shader_object
typedef struct VkPhysicalDeviceShaderObjectFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderObject;
} VkPhysicalDeviceShaderObjectFeaturesEXT;
此结构描述了以下功能
-
shaderObject
指示实现是否支持着色器对象。
如果 VkPhysicalDeviceShaderObjectFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceShaderObjectFeaturesEXT
可以 也被用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM
结构体定义如下:
// Provided by VK_ARM_shader_core_builtins
typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM {
VkStructureType sType;
void* pNext;
VkBool32 shaderCoreBuiltins;
} VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM
可以 也被用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceFrameBoundaryFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_frame_boundary
typedef struct VkPhysicalDeviceFrameBoundaryFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 frameBoundary;
} VkPhysicalDeviceFrameBoundaryFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceFrameBoundaryFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceFrameBoundaryFeaturesEXT
可以 也被用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些功能。
VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT
结构体定义如下:
// Provided by VK_EXT_swapchain_maintenance1
typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 swapchainMaintenance1;
} VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
swapchainMaintenance1
指示实现是否支持以下内容:-
VkSwapchainPresentFenceInfoEXT,指定一个栅栏,该栅栏在与呈现操作关联的资源可以被安全销毁时发出信号。
-
VkSwapchainPresentModesCreateInfoEXT 和 VkSwapchainPresentModeInfoEXT,允许交换链在无需重新创建的情况下切换呈现模式。
-
VkSwapchainPresentScalingCreateInfoEXT,指定在窗口调整大小时交换链的缩放行为。
-
VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT
标志,允许实现延迟交换链图像内存的分配,直到第一次获取时。 -
vkReleaseSwapchainImagesEXT,允许在不呈现它们的情况下释放已获取的交换链图像。
-
如果 VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_present_mode_fifo_latest_ready
typedef struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 presentModeFifoLatestReady;
} VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
presentModeFifoLatestReady
指定实现是否支持VK_PRESENT_MODE_FIFO_LATEST_READY_EXT
显示模式。
如果 VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
结构体定义如下:
// Provided by VK_EXT_dynamic_rendering_unused_attachments
typedef struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 dynamicRenderingUnusedAttachments;
} VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
dynamicRenderingUnusedAttachments
表示实现在渲染过程中支持绑定图形管线,其中任何管线 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
元素(格式不为VK_FORMAT_UNDEFINED
)都可以与对应的 VkRenderingInfo::pColorAttachments
元素(imageView
等于 VK_NULL_HANDLE)一起使用;或者任何管线 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
元素(格式为VK_FORMAT_UNDEFINED
)都可以与对应的 VkRenderingInfo::pColorAttachments
元素(imageView
不为 VK_NULL_HANDLE)一起使用。 此外,VkPipelineRenderingCreateInfo::depthAttachmentFormat
(不为VK_FORMAT_UNDEFINED
)允许与 VK_NULL_HANDLE VkRenderingInfo::pDepthAttachment
一起使用,或者 VkPipelineRenderingCreateInfo::depthAttachmentFormat
(为VK_FORMAT_UNDEFINED
)允许与不为 VK_NULL_HANDLE 的 VkRenderingInfo::pDepthAttachment
一起使用。 同样,VkPipelineRenderingCreateInfo::stencilAttachmentFormat
(不为VK_FORMAT_UNDEFINED
)允许与 VK_NULL_HANDLE 的 VkRenderingInfo::pStencilAttachment
一起使用,或者 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
(为VK_FORMAT_UNDEFINED
)允许与不为 VK_NULL_HANDLE 的 VkRenderingInfo::pStencilAttachment
一起使用。 任何写入到 VkRenderingInfo::pColorAttachments
、VkRenderingInfo::pDepthAttachment
或 VkRenderingInfo::pStencilAttachment
且 VK_NULL_HANDLE 的数据都将被丢弃。
如果 VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV
结构体定义如下:
// Provided by VK_NV_ray_tracing_invocation_reorder
typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingInvocationReorder;
} VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
rayTracingInvocationReorder
表示实现支持SPV_NV_shader_invocation_reorder
。
如果 VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
结构体定义如下:
// Provided by VK_NV_extended_sparse_address_space
typedef struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 extendedSparseAddressSpace;
} VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
extendedSparseAddressSpace
表示实现支持允许稀疏内存资源的某些用法超出VkPhysicalDeviceLimits
::sparseAddressSpaceSize
。 请参阅 VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV。
如果 VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
结构体定义如下:
// Provided by VK_QCOM_multiview_per_view_viewports
typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 multiviewPerViewViewports;
} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
此结构描述以下功能:
如果 VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
结构定义如下:
// Provided by VK_QCOM_multiview_per_view_render_areas
typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 multiviewPerViewRenderAreas;
} VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
此结构描述以下功能:
如果 VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI
结构定义如下:
// Provided by VK_HUAWEI_cluster_culling_shader
typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 clustercullingShader;
VkBool32 multiviewClusterCullingShader;
} VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
要查询集群剔除着色器是否支持每个集群的着色率特性,请将 VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI
结构包含在 VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI
结构的 pNext
链中。此结构定义如下:
// Provided by VK_HUAWEI_cluster_culling_shader
typedef struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 clusterShadingRate;
} VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
VkPhysicalDeviceHdrVividFeaturesHUAWEI
结构定义如下:
// Provided by VK_HUAWEI_hdr_vivid
typedef struct VkPhysicalDeviceHdrVividFeaturesHUAWEI {
VkStructureType sType;
void* pNext;
VkBool32 hdrVivid;
} VkPhysicalDeviceHdrVividFeaturesHUAWEI;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceHdrVividFeaturesHUAWEI
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceHdrVividFeaturesHUAWEI
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderEnqueueFeaturesAMDX
结构定义如下:
// Provided by VK_AMDX_shader_enqueue
typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX {
VkStructureType sType;
void* pNext;
VkBool32 shaderEnqueue;
VkBool32 shaderMeshEnqueue;
} VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
此结构描述了以下功能
如果 VkPhysicalDeviceShaderEnqueueFeaturesAMDX
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceShaderEnqueueFeaturesAMDX
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceCubicClampFeaturesQCOM
结构定义如下:
// Provided by VK_QCOM_filter_cubic_clamp
typedef struct VkPhysicalDeviceCubicClampFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 cubicRangeClamp;
} VkPhysicalDeviceCubicClampFeaturesQCOM;
此结构描述以下功能:
-
cubicRangeClamp
表示该实现支持立方滤波与纹素范围钳位的组合。
如果 VkPhysicalDeviceCubicClampFeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceCubicClampFeaturesQCOM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceYcbcrDegammaFeaturesQCOM
结构定义如下:
// Provided by VK_QCOM_ycbcr_degamma
typedef struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 ycbcrDegamma;
} VkPhysicalDeviceYcbcrDegammaFeaturesQCOM;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
ycbcrDegamma
表示该实现是否支持Y′CBCR 反伽马。
如果 VkPhysicalDeviceYcbcrDegammaFeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceYcbcrDegammaFeaturesQCOM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceCubicWeightsFeaturesQCOM
结构定义如下:
// Provided by VK_QCOM_filter_cubic_weights
typedef struct VkPhysicalDeviceCubicWeightsFeaturesQCOM {
VkStructureType sType;
void* pNext;
VkBool32 selectableCubicWeights;
} VkPhysicalDeviceCubicWeightsFeaturesQCOM;
此结构描述了以下功能
如果 VkPhysicalDeviceCubicWeightsFeaturesQCOM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceCubicWeightsFeaturesQCOM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV
结构体定义如下:
// Provided by VK_NV_descriptor_pool_overallocation
typedef struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 descriptorPoolOverallocation;
} VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
descriptorPoolOverallocation
表示实现允许应用程序通过使用VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV
和/或VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV
标志创建描述符池来选择加入描述符池的过度分配。
如果 VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDevicePerStageDescriptorSetFeaturesNV
结构体定义如下:
// Provided by VK_NV_per_stage_descriptor_set
typedef struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 perStageDescriptorSet;
VkBool32 dynamicPipelineLayout;
} VkPhysicalDevicePerStageDescriptorSetFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
perStageDescriptorSet
表示实现允许使用VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV
描述符集布局创建标志,以便绑定是按阶段指定的,而不是跨所有阶段。 -
dynamicPipelineLayout
表示实现允许 VkBindDescriptorSetsInfo, VkPushConstantsInfo, VkPushDescriptorSetInfo, VkPushDescriptorSetWithTemplateInfo, VkSetDescriptorBufferOffsetsInfoEXT 和 VkBindDescriptorBufferEmbeddedSamplersInfoEXT 的layout
成员为 VK_NULL_HANDLE,并且 VkPipelineLayoutCreateInfo 可以链接到这些结构的pNext
。
如果 VkPhysicalDevicePerStageDescriptorSetFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDevicePerStageDescriptorSetFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceCudaKernelLaunchFeaturesNV
结构体定义如下:
// Provided by VK_NV_cuda_kernel_launch
typedef struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 cudaKernelLaunchFeatures;
} VkPhysicalDeviceCudaKernelLaunchFeaturesNV;
此结构描述以下功能:
如果 VkPhysicalDeviceCudaKernelLaunchFeaturesNV
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceCudaKernelLaunchFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR
结构体定义如下:
// Provided by VK_KHR_shader_maximal_reconvergence
typedef struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderMaximalReconvergence;
} VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderMaximalReconvergence
指定实现是否支持着色器执行模式MaximallyReconvergesKHR
。
如果 VkPhysicalDevicePrivateDataFeaturesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDevicePrivateDataFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceExternalFormatResolveFeaturesANDROID
结构体定义如下:
// Provided by VK_ANDROID_external_format_resolve
typedef struct VkPhysicalDeviceExternalFormatResolveFeaturesANDROID {
VkStructureType sType;
void* pNext;
VkBool32 externalFormatResolve;
} VkPhysicalDeviceExternalFormatResolveFeaturesANDROID;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceExternalFormatResolveFeaturesANDROID
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceExternalFormatResolveFeaturesANDROID
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceSchedulingControlsFeaturesARM
结构体定义如下:
// Provided by VK_ARM_scheduling_controls
typedef struct VkPhysicalDeviceSchedulingControlsFeaturesARM {
VkStructureType sType;
void* pNext;
VkBool32 schedulingControls;
} VkPhysicalDeviceSchedulingControlsFeaturesARM;
此结构描述以下功能:
如果 VkPhysicalDeviceSchedulingControlsFeaturesARM
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceSchedulingControlsFeaturesARM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG
结构体定义如下:
// Provided by VK_IMG_relaxed_line_rasterization
typedef struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
VkStructureType sType;
void* pNext;
VkBool32 relaxedLineRasterization;
} VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceRenderPassStripedFeaturesARM
结构体定义如下:
// Provided by VK_ARM_render_pass_striped
typedef struct VkPhysicalDeviceRenderPassStripedFeaturesARM {
VkStructureType sType;
void* pNext;
VkBool32 renderPassStriped;
} VkPhysicalDeviceRenderPassStripedFeaturesARM;
VkPhysicalDeviceRenderPassStripedFeaturesARM
结构的成员描述了以下特性:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceRenderPassStripedFeaturesARM
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceRenderPassStripedFeaturesARM
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderSubgroupRotateFeatures
结构定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceShaderSubgroupRotateFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderSubgroupRotate;
VkBool32 shaderSubgroupRotateClustered;
} VkPhysicalDeviceShaderSubgroupRotateFeatures;
或者等效地:
// Provided by VK_KHR_shader_subgroup_rotate
typedef VkPhysicalDeviceShaderSubgroupRotateFeatures VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderSubgroupRotateFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderSubgroupRotateFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderExpectAssumeFeatures
结构定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceShaderExpectAssumeFeatures {
VkStructureType sType;
void* pNext;
VkBool32 shaderExpectAssume;
} VkPhysicalDeviceShaderExpectAssumeFeatures;
或者等效地:
// Provided by VK_KHR_shader_expect_assume
typedef VkPhysicalDeviceShaderExpectAssumeFeatures VkPhysicalDeviceShaderExpectAssumeFeaturesKHR;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderExpectAssumeFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderExpectAssumeFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceDynamicRenderingLocalReadFeatures
结构定义如下:
// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures {
VkStructureType sType;
void* pNext;
VkBool32 dynamicRenderingLocalRead;
} VkPhysicalDeviceDynamicRenderingLocalReadFeatures;
或者等效地:
// Provided by VK_KHR_dynamic_rendering_local_read
typedef VkPhysicalDeviceDynamicRenderingLocalReadFeatures VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
dynamicRenderingLocalRead
指定实现支持使用 vkCmdBeginRendering 命令在动态渲染通道实例内部进行本地读取。
如果 VkPhysicalDeviceDynamicRenderingLocalReadFeatures
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceDynamicRenderingLocalReadFeatures
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceShaderQuadControlFeaturesKHR
结构定义如下:
// Provided by VK_KHR_shader_quad_control
typedef struct VkPhysicalDeviceShaderQuadControlFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderQuadControl;
} VkPhysicalDeviceShaderQuadControlFeaturesKHR;
此结构描述以下功能:
如果 VkPhysicalDeviceShaderQuadControlFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderQuadControlFeaturesKHR
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
VkPhysicalDeviceMapMemoryPlacedFeaturesEXT
结构定义如下:
// Provided by VK_EXT_map_memory_placed
typedef struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 memoryMapPlaced;
VkBool32 memoryMapRangePlaced;
VkBool32 memoryUnmapReserve;
} VkPhysicalDeviceMapMemoryPlacedFeaturesEXT;
此结构描述以下功能:
如果 VkPhysicalDeviceMapMemoryPlacedFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceMapMemoryPlacedFeaturesEXT
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
// Provided by VK_NV_shader_atomic_float16_vector
typedef struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 shaderFloat16VectorAtomics;
} VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构的 pNext
链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
也可以用于 VkDeviceCreateInfo 的 pNext
链中,以选择性地启用这些特性。
// Provided by VK_ARM_pipeline_opacity_micromap
typedef struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM {
VkStructureType sType;
void* pNext;
VkBool32 pipelineOpacityMicromap;
} VkPhysicalDevicePipelineOpacityMicromapFeaturesARM;
此结构描述以下功能:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDevicePipelineOpacityMicromapFeaturesARM
结构包含在传递给 vkGetPhysicalDeviceFeatures2
的 VkPhysicalDeviceFeatures2
结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDevicePipelineOpacityMicromapFeaturesARM
也可以在 VkDeviceCreateInfo
的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_NV_raw_access_chains
typedef struct VkPhysicalDeviceRawAccessChainsFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 shaderRawAccessChains;
} VkPhysicalDeviceRawAccessChainsFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceRawAccessChainsFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2
的 VkPhysicalDeviceFeatures2
结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceRawAccessChainsFeaturesNV
也可以在 VkDeviceCreateInfo
的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_NV_command_buffer_inheritance
typedef struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 commandBufferInheritance;
} VkPhysicalDeviceCommandBufferInheritanceFeaturesNV;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
commandBufferInheritance
表示在队列中执行的命令缓冲区会从该队列中先前执行的命令缓冲区继承图形和计算状态。
如果 VkPhysicalDeviceCommandBufferInheritanceFeaturesNV
结构包含在传递给 vkGetPhysicalDeviceFeatures2
的 VkPhysicalDeviceFeatures2
结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceCommandBufferInheritanceFeaturesNV
也可以在 VkDeviceCreateInfo
的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_MESA_image_alignment_control
typedef struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA {
VkStructureType sType;
void* pNext;
VkBool32 imageAlignmentControl;
} VkPhysicalDeviceImageAlignmentControlFeaturesMESA;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
imageAlignmentControl
指定VkImageAlignmentControlCreateInfoMESA
可以链接到VkImageCreateInfo
中。
如果 VkPhysicalDeviceImageAlignmentControlFeaturesMESA
结构包含在传递给 vkGetPhysicalDeviceFeatures2
的 VkPhysicalDeviceFeatures2
结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceImageAlignmentControlFeaturesMESA
也可以在 VkDeviceCreateInfo
的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_EXT_shader_replicated_composites
typedef struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 shaderReplicatedComposites;
} VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderReplicatedComposites
指定着色器模块是否可以声明ReplicatedCompositesEXT
功能。
如果 VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2
的 VkPhysicalDeviceFeatures2
结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT
也可以在 VkDeviceCreateInfo
的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_KHR_shader_relaxed_extended_instruction
typedef struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 shaderRelaxedExtendedInstruction;
} VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderRelaxedExtendedInstruction
指定实现是否支持使用SPV_KHR_relaxed_extended_instruction
扩展的 SPIR-V 模块。
如果 VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR
结构包含在传递给 vkGetPhysicalDeviceFeatures2
的 VkPhysicalDeviceFeatures2
结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR
也可以在 VkDeviceCreateInfo
的 pNext
链中使用,以选择性地启用这些功能。
// Provided by VK_EXT_vertex_attribute_robustness
typedef struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
VkStructureType sType;
void* pNext;
VkBool32 vertexAttributeRobustness;
} VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT;
此结构描述了以下功能
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
vertexAttributeRobustness
表示顶点着色器可以读取没有顶点属性描述的顶点属性位置,并且返回的值为 (0,0,0,0) 或 (0,0,0,1)。
如果 VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT
结构包含在传递给 vkGetPhysicalDeviceFeatures2
的 VkPhysicalDeviceFeatures2
结构的 pNext
链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT
也可以在 VkDeviceCreateInfo
的 pNext
链中使用,以选择性地启用这些功能。
功能要求
所有 Vulkan 图形实现必须支持以下功能
-
如果支持 Vulkan 1.0,如果未声明
VK_KHR_portability_subset
,则必须支持robustBufferAccess
-
如果支持 Vulkan 1.1,则必须支持以下功能
-
如果支持 Vulkan 1.2,则必须支持以下特性
-
如果支持
VK_KHR_sampler_mirror_clamp_to_edge
,则必须支持samplerMirrorClampToEdge
-
如果支持
VK_KHR_draw_indirect_count
,则必须支持drawIndirectCount
-
如果支持
uniformAndStorageBuffer8BitAccess
,则必须支持storageBuffer8BitAccess
-
如果支持
shaderSharedInt64Atomics
或shaderBufferInt64Atomics
,则必须支持shaderInt64
-
如果支持
VK_EXT_descriptor_indexing
,则必须支持descriptorIndexing
-
如果支持
descriptorIndexing
,则必须支持shaderSampledImageArrayDynamicIndexing
-
如果支持
descriptorIndexing
,则必须支持shaderStorageBufferArrayDynamicIndexing
-
如果支持
descriptorIndexing
,则必须支持shaderUniformTexelBufferArrayDynamicIndexing
-
如果支持
descriptorIndexing
,则必须支持shaderStorageTexelBufferArrayDynamicIndexing
-
如果支持
descriptorIndexing
,则必须支持shaderSampledImageArrayNonUniformIndexing
-
如果支持
descriptorIndexing
,则必须支持shaderStorageBufferArrayNonUniformIndexing
-
如果支持
descriptorIndexing
,则必须支持shaderUniformTexelBufferArrayNonUniformIndexing
-
如果支持
descriptorIndexing
,则必须支持descriptorBindingSampledImageUpdateAfterBind
-
如果支持
descriptorIndexing
,则必须支持descriptorBindingStorageImageUpdateAfterBind
-
如果支持
descriptorIndexing
,则必须支持descriptorBindingStorageBufferUpdateAfterBind
-
如果支持
descriptorIndexing
,则必须支持descriptorBindingUniformTexelBufferUpdateAfterBind
-
如果支持
descriptorIndexing
,则必须支持descriptorBindingStorageTexelBufferUpdateAfterBind
-
如果支持
descriptorIndexing
,则必须支持descriptorBindingUpdateUnusedWhilePending
-
如果支持
descriptorIndexing
,则必须支持descriptorBindingPartiallyBound
-
如果支持
descriptorIndexing
,则必须支持runtimeDescriptorArray
-
如果支持
VK_EXT_shader_viewport_index_layer
,则必须支持shaderOutputViewportIndex
-
如果支持
VK_EXT_shader_viewport_index_layer
,则必须支持shaderOutputLayer
-
如果支持
VK_EXT_sampler_filter_minmax
,则必须支持samplerFilterMinmax
-
如果支持 Vulkan 1.3,则必须支持以下特性
-
如果支持 Vulkan 1.4,则必须支持以下特性
-
如果支持
protectedMemory
,则必须支持pipelineProtectedAccess
-
如果支持
VK_KHR_dynamic_rendering
,则必须支持dynamicRendering
-
如果支持
VK_KHR_multiview
,则必须支持multiview
-
如果支持
VK_KHR_shader_float16_int8
,则必须支持shaderFloat16
或shaderInt8
-
如果支持
VK_KHR_16bit_storage
,则必须支持storageBuffer16BitAccess
-
如果支持
VK_KHR_imageless_framebuffer
,则必须支持imagelessFramebuffer
-
如果支持
VK_KHR_performance_query
,则必须支持performanceCounterQueryPools
-
如果支持
VK_KHR_variable_pointers
,则必须支持variablePointersStorageBuffer
-
如果支持
VK_KHR_sampler_ycbcr_conversion
,则 必须 支持samplerYcbcrConversion
。 -
如果支持
VK_KHR_shader_subgroup_extended_types
,则 必须 支持shaderSubgroupExtendedTypes
。 -
如果支持
VK_KHR_8bit_storage
,则 必须 支持storageBuffer8BitAccess
。 -
如果支持
VK_KHR_shader_atomic_int64
,则 必须 支持shaderBufferInt64Atomics
。 -
如果支持
VK_KHR_shader_clock
,则 必须 支持shaderSubgroupClock
。 -
如果支持
VK_KHR_global_priority
,则 必须 支持globalPriorityQuery
。 -
如果支持
VK_KHR_timeline_semaphore
,则 必须 支持timelineSemaphore
。 -
如果支持
VK_KHR_vulkan_memory_model
,则 必须 支持vulkanMemoryModel
。 -
如果支持
VK_KHR_shader_terminate_invocation
,则 必须 支持shaderTerminateInvocation
。 -
如果支持
VK_KHR_fragment_shading_rate
,则 必须 支持pipelineFragmentShadingRate
。 -
如果支持
VK_KHR_dynamic_rendering_local_read
,则 必须 支持dynamicRenderingLocalRead
。 -
如果支持
VK_KHR_shader_quad_control
,则 必须 支持shaderQuadControl
。 -
如果支持
VK_KHR_separate_depth_stencil_layouts
,则 必须 支持separateDepthStencilLayouts
。 -
如果支持
VK_KHR_present_wait
,则 必须 支持presentWait
。 -
如果支持
VK_KHR_uniform_buffer_standard_layout
,则 必须 支持uniformBufferStandardLayout
。 -
如果支持
VK_KHR_buffer_device_address
,则 必须 支持bufferDeviceAddress
。 -
如果支持
VK_KHR_pipeline_executable_properties
,则 必须 支持pipelineExecutableInfo
。 -
如果支持
VK_KHR_shader_integer_dot_product
,则 必须 支持shaderIntegerDotProduct
。 -
如果支持
VK_KHR_present_id
,则 必须 支持presentId
。 -
如果支持
VK_KHR_synchronization2
,则 必须 支持synchronization2
。 -
如果支持
VK_KHR_fragment_shader_barycentric
,则 必须 支持fragmentShaderBarycentric
。 -
如果支持
VK_KHR_shader_subgroup_uniform_control_flow
,则 必须 支持shaderSubgroupUniformControlFlow
。 -
如果支持
VK_KHR_zero_initialize_workgroup_memory
,则 必须 支持shaderZeroInitializeWorkgroupMemory
。 -
如果支持
VK_KHR_workgroup_memory_explicit_layout
,则 必须 支持workgroupMemoryExplicitLayout
。 -
如果支持
VK_KHR_ray_tracing_maintenance1
,则 必须 支持rayTracingMaintenance1
。 -
如果支持
VK_KHR_maintenance4
,则 必须 支持maintenance4
。 -
如果支持
VK_KHR_shader_subgroup_rotate
,则 必须 支持shaderSubgroupRotate
。 -
如果支持
VK_KHR_shader_maximal_reconvergence
,则 必须 支持shaderMaximalReconvergence
。 -
如果支持
VK_KHR_maintenance5
,则 必须 支持maintenance5
。 -
如果支持
VK_KHR_ray_tracing_position_fetch
,则 必须 支持rayTracingPositionFetch
。 -
如果支持
VK_KHR_pipeline_binary
,则 必须 支持pipelineBinaries
。 -
如果支持
VK_KHR_cooperative_matrix
,则 必须 支持cooperativeMatrix
。 -
如果支持
VK_KHR_compute_shader_derivatives
,则 必须 支持computeDerivativeGroupLinear
。 -
如果支持
VK_KHR_video_encode_av1
,则 必须 支持videoEncodeAV1
。 -
如果支持
VK_KHR_video_maintenance1
,则 必须 支持videoMaintenance1
。 -
如果支持
VK_KHR_vertex_attribute_divisor
,则 必须 支持vertexAttributeInstanceRateDivisor
。 -
如果支持
VK_KHR_shader_float_controls2
,则 必须 支持shaderFloatControls2
。 -
如果支持
VK_KHR_index_type_uint8
,则 必须 支持indexTypeUint8
。 -
如果支持
VK_KHR_line_rasterization
,则 必须 支持rectangularLines
、bresenhamLines
、smoothLines
、stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的至少一个。 -
如果支持
VK_KHR_shader_expect_assume
,则 必须 支持shaderExpectAssume
。 -
如果支持
VK_KHR_maintenance6
,则 必须 支持maintenance6
。 -
如果支持
VK_KHR_video_encode_quantization_map
,则 必须 支持videoEncodeQuantizationMap
。 -
如果支持
VK_KHR_shader_relaxed_extended_instruction
,则必须支持shaderRelaxedExtendedInstruction
-
如果支持
VK_KHR_maintenance7
,则必须支持maintenance7
-
如果支持
VK_KHR_maintenance8
,则必须支持maintenance8
-
如果支持
VK_KHR_depth_clamp_zero_one
,则必须支持depthClampZeroOne
-
如果支持
VK_EXT_transform_feedback
,则必须支持transformFeedback
-
如果支持
VK_NV_corner_sampled_image
,则必须支持cornerSampledImage
-
如果支持
VK_EXT_texture_compression_astc_hdr
,则必须支持textureCompressionASTC_HDR
-
如果支持
VK_EXT_pipeline_robustness
,则必须支持pipelineRobustness
-
如果支持
VK_EXT_conditional_rendering
,则必须支持conditionalRendering
-
如果支持
VK_EXT_depth_clip_enable
,则必须支持depthClipEnable
-
如果支持
VK_IMG_relaxed_line_rasterization
,则必须支持relaxedLineRasterization
-
如果支持
VK_AMDX_shader_enqueue
,则必须支持以下特性 -
如果支持
VK_EXT_inline_uniform_block
,则必须支持以下特性-
如果支持
VK_EXT_descriptor_indexing
,或者如果支持 Vulkan 1.2 和descriptorIndexing
,则descriptorBindingInlineUniformBlockUpdateAfterBind
-
如果支持
VK_NV_shader_sm_builtins
,则必须支持shaderSMBuiltins
-
如果支持
VK_EXT_descriptor_indexing
,则必须支持以下特性 -
如果支持
VK_NV_shading_rate_image
,则必须支持shadingRateImage
-
如果支持
VK_NV_representative_fragment_test
,则必须支持representativeFragmentTest
-
如果支持
VK_EXT_vertex_attribute_divisor
,则必须支持vertexAttributeInstanceRateDivisor
-
如果支持
VK_NV_compute_shader_derivatives
,则必须支持computeDerivativeGroupQuads
或computeDerivativeGroupLinear
-
如果支持
VK_NV_mesh_shader
,则必须支持VkPhysicalDeviceMeshShaderFeaturesNV
::meshShader
-
如果支持
VK_NV_shader_image_footprint
,则必须支持imageFootprint
-
如果支持
VK_NV_scissor_exclusive
,则必须支持exclusiveScissor
-
如果支持
VK_INTEL_shader_integer_functions2
,则必须支持shaderIntegerFunctions2
-
如果支持
VK_EXT_fragment_density_map
,则必须支持fragmentDensityMap
-
如果支持
VK_EXT_scalar_block_layout
,则必须支持scalarBlockLayout
-
如果支持
VK_EXT_subgroup_size_control
,则必须支持以下特性 -
如果支持
VK_AMD_device_coherent_memory
,则必须支持deviceCoherentMemory
-
如果支持
VK_EXT_shader_image_atomic_int64
,则必须支持以下特性 -
如果支持
VK_EXT_memory_priority
,则必须支持memoryPriority
-
如果支持
VK_NV_dedicated_allocation_image_aliasing
,则必须支持dedicatedAllocationImageAliasing
-
如果支持
VK_EXT_buffer_device_address
,则必须支持VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
::bufferDeviceAddress
-
如果支持
VK_NV_cooperative_matrix
,则必须支持VkPhysicalDeviceCooperativeMatrixFeaturesNV
::cooperativeMatrix
-
如果支持
VK_NV_coverage_reduction_mode
,则必须支持coverageReductionMode
-
如果支持
VK_EXT_fragment_shader_interlock
,则必须支持fragmentShaderSampleInterlock
、fragmentShaderPixelInterlock
或fragmentShaderShadingRateInterlock
-
如果支持
VK_EXT_ycbcr_image_arrays
,则必须支持ycbcrImageArrays
-
如果支持
VK_EXT_provoking_vertex
,则必须支持provokingVertexLast
-
如果支持
VK_EXT_line_rasterization
,则必须支持rectangularLines
、bresenhamLines
、smoothLines
、stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
-
如果支持
VK_EXT_shader_atomic_float
,则必须支持以下特性-
shaderBufferFloat32Atomics
、shaderBufferFloat32AtomicAdd
、shaderBufferFloat64Atomics
、shaderBufferFloat64AtomicAdd
、shaderSharedFloat32Atomics
、shaderSharedFloat32AtomicAdd
、shaderSharedFloat64Atomics
、shaderSharedFloat64AtomicAdd
、shaderImageFloat32Atomics
或shaderImageFloat32AtomicAdd
-
如果支持
sparseImageFloat32Atomics
,则必须支持shaderImageFloat32Atomics
-
如果支持
sparseImageFloat32AtomicAdd
,则必须支持shaderImageFloat32AtomicAdd
-
-
如果支持
VK_EXT_host_query_reset
,则 必须 支持hostQueryReset
-
如果支持
VK_EXT_index_type_uint8
,则 必须 支持indexTypeUint8
-
如果支持
VK_EXT_extended_dynamic_state
,则 必须 支持extendedDynamicState
-
如果支持
VK_EXT_host_image_copy
,则 必须 支持hostImageCopy
-
如果支持
VK_EXT_map_memory_placed
,则 必须 支持memoryMapPlaced
-
如果支持
VK_EXT_shader_atomic_float2
,则 必须 支持以下功能-
shaderBufferFloat16Atomics
、shaderBufferFloat16AtomicAdd
、shaderBufferFloat16AtomicMinMax
、shaderBufferFloat32AtomicMinMax
、shaderBufferFloat64AtomicMinMax
、shaderSharedFloat16Atomics
、shaderSharedFloat16AtomicAdd
、shaderSharedFloat16AtomicMinMax
、shaderSharedFloat32AtomicMinMax
、shaderSharedFloat64AtomicMinMax
或shaderImageFloat32AtomicMinMax
-
如果支持
sparseImageFloat32AtomicMinMax
,则必须支持shaderImageFloat32AtomicMinMax
-
-
如果支持
VK_EXT_swapchain_maintenance1
,则 必须 支持swapchainMaintenance1
-
如果支持
VK_EXT_shader_demote_to_helper_invocation
,则 必须 支持shaderDemoteToHelperInvocation
-
如果支持
VK_NV_device_generated_commands
,则 必须 支持VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
::deviceGeneratedCommands
-
如果支持
VK_NV_inherited_viewport_scissor
,则 必须 支持inheritedViewportScissor2D
-
如果支持
VK_EXT_texel_buffer_alignment
,则 必须 支持texelBufferAlignment
-
如果支持
VK_EXT_depth_bias_control
,则 必须 支持depthBiasControl
-
如果支持
VK_EXT_device_memory_report
,则 必须 支持deviceMemoryReport
-
如果支持
VK_EXT_robustness2
,则 必须 支持robustBufferAccess2
、robustImageAccess2
或nullDescriptor
-
如果支持
VK_EXT_custom_border_color
,则 必须 支持customBorderColors
-
如果支持
VK_NV_present_barrier
,则 必须 支持presentBarrier
-
如果支持
VK_EXT_private_data
,则 必须 支持privateData
-
如果支持
VK_EXT_pipeline_creation_cache_control
,则 必须 支持pipelineCreationCacheControl
-
如果支持
VK_NV_device_diagnostics_config
,则 必须 支持diagnosticsConfig
-
如果支持
VK_NV_cuda_kernel_launch
,则 必须 支持cudaKernelLaunchFeatures
-
如果支持
VK_EXT_descriptor_buffer
,则 必须 支持descriptorBuffer
-
如果支持
VK_EXT_graphics_pipeline_library
,则 必须 支持graphicsPipelineLibrary
-
如果支持
VK_AMD_shader_early_and_late_fragment_tests
,则 必须 支持shaderEarlyAndLateFragmentTests
-
如果支持
VK_NV_fragment_shading_rate_enums
,则 必须 支持fragmentShadingRateEnums
-
如果支持
VK_NV_ray_tracing_motion_blur
,则 必须 支持rayTracingMotionBlur
-
如果支持
VK_EXT_ycbcr_2plane_444_formats
,则 必须 支持ycbcr2plane444Formats
-
如果支持
VK_EXT_fragment_density_map2
,则 必须 支持fragmentDensityMapDeferred
-
如果支持
VK_EXT_image_robustness
,则 必须 支持robustImageAccess
-
如果支持
VK_EXT_image_compression_control
,则 必须 支持imageCompressionControl
-
如果支持
VK_EXT_attachment_feedback_loop_layout
,则 必须 支持attachmentFeedbackLoopLayout
-
如果支持
VK_EXT_4444_formats
,则 必须 支持formatA4R4G4B4
-
如果支持
VK_EXT_device_fault
,则必须支持deviceFault
功能。 -
如果支持
VK_EXT_rgba10x6_formats
,则必须支持formatRgba10x6WithoutYCbCrSampler
功能。 -
如果支持
VK_VALVE_mutable_descriptor_type
,则必须支持mutableDescriptorType
功能。 -
如果支持
VK_EXT_vertex_input_dynamic_state
,则必须支持vertexInputDynamicState
功能。 -
如果支持
VK_EXT_device_address_binding_report
,则必须支持reportAddressBinding
功能。 -
如果支持
VK_EXT_depth_clip_control
,则必须支持depthClipControl
功能。 -
如果支持
VK_EXT_primitive_topology_list_restart
,则必须支持primitiveTopologyListRestart
功能。 -
如果支持
VK_EXT_present_mode_fifo_latest_ready
,则必须支持presentModeFifoLatestReady
功能。 -
如果支持
VK_HUAWEI_subpass_shading
,则必须支持subpassShading
功能。 -
如果支持
VK_HUAWEI_invocation_mask
,则必须支持invocationMask
功能。 -
如果支持
VK_NV_external_memory_rdma
,则必须支持externalMemoryRDMA
功能。 -
如果支持
VK_EXT_pipeline_properties
,则必须支持pipelinePropertiesIdentifier
功能。 -
如果支持
VK_EXT_frame_boundary
,则必须支持frameBoundary
功能。 -
如果支持
VK_EXT_multisampled_render_to_single_sampled
,则必须支持multisampledRenderToSingleSampled
功能。 -
如果支持
VK_EXT_extended_dynamic_state2
,则必须支持extendedDynamicState2
功能。 -
如果支持
VK_EXT_color_write_enable
,则必须支持colorWriteEnable
功能。 -
如果支持
VK_EXT_primitives_generated_query
,则必须支持primitivesGeneratedQuery
功能。 -
如果支持
VK_EXT_global_priority_query
,则必须支持globalPriorityQuery
功能。 -
如果支持
VK_EXT_image_view_min_lod
,则必须支持minLod
功能。 -
如果支持
VK_EXT_multi_draw
,则必须支持multiDraw
功能。 -
如果支持
VK_EXT_image_2d_view_of_3d
,则必须支持image2DViewOf3D
功能。 -
如果支持
VK_EXT_shader_tile_image
,则必须支持shaderTileImageColorReadAccess
功能。 -
如果支持
VK_EXT_opacity_micromap
,则必须支持micromap
功能。 -
如果支持
VK_NV_displacement_micromap
,则必须支持displacementMicromap
功能。 -
如果支持
VK_HUAWEI_cluster_culling_shader
,则必须支持clustercullingShader
功能。 -
如果支持
VK_EXT_border_color_swizzle
,则必须支持borderColorSwizzle
功能。 -
如果支持
VK_EXT_pageable_device_local_memory
,则必须支持pageableDeviceLocalMemory
功能。 -
如果支持
VK_ARM_scheduling_controls
,则必须支持schedulingControls
功能。 -
如果支持
VK_EXT_image_sliced_view_of_3d
,则必须支持imageSlicedViewOf3D
功能。 -
如果支持
VK_VALVE_descriptor_set_host_mapping
,则必须支持descriptorSetHostMapping
功能。 -
如果支持
VK_EXT_depth_clamp_zero_one
,则必须支持depthClampZeroOne
功能。 -
如果支持
VK_EXT_non_seamless_cube_map
,则必须支持nonSeamlessCubeMap
功能。 -
如果支持
VK_ARM_render_pass_striped
,则必须支持renderPassStriped
功能。 -
如果支持
VK_QCOM_fragment_density_map_offset
,则必须支持fragmentDensityMapOffset
功能。 -
如果支持
VK_NV_copy_memory_indirect
,则必须支持indirectCopy
功能。 -
如果支持
VK_NV_memory_decompression
,则必须支持memoryDecompression
功能。 -
如果支持
VK_NV_device_generated_commands_compute
,则必须支持deviceGeneratedCompute
功能。 -
如果支持
VK_NV_linear_color_attachment
,则必须支持linearColorAttachment
功能。 -
如果支持
VK_EXT_image_compression_control_swapchain
,则必须支持imageCompressionControlSwapchain
。 -
如果支持
VK_QCOM_image_processing
,则必须支持以下特性: -
如果支持
VK_EXT_nested_command_buffer
,则必须支持nestedCommandBuffer
。 -
如果支持
VK_EXT_extended_dynamic_state3
,则必须支持以下特性: -
如果支持
VK_EXT_subpass_merge_feedback
,则必须支持subpassMergeFeedback
。 -
如果支持
VK_EXT_shader_module_identifier
,则必须支持shaderModuleIdentifier
。 -
如果支持
VK_NV_optical_flow
,则必须支持opticalFlow
。 -
如果支持
VK_EXT_legacy_dithering
,则必须支持legacyDithering
。 -
如果支持
VK_EXT_pipeline_protected_access
,则必须支持pipelineProtectedAccess
。 -
如果支持
VK_ANDROID_external_format_resolve
,则必须支持externalFormatResolve
。 -
如果支持
VK_AMD_anti_lag
,则必须支持antiLag
。 -
如果支持
VK_EXT_shader_object
,则必须支持shaderObject
。 -
如果支持
VK_QCOM_tile_properties
,则必须支持tileProperties
。 -
如果支持
VK_SEC_amigo_profiling
,则必须支持amigoProfiling
。 -
如果支持
VK_QCOM_multiview_per_view_viewports
,则必须支持multiviewPerViewViewports
。 -
如果支持
VK_NV_ray_tracing_invocation_reorder
,则必须支持rayTracingInvocationReorder
。 -
如果支持
VK_NV_extended_sparse_address_space
,则必须支持extendedSparseAddressSpace
。 -
如果支持
VK_EXT_mutable_descriptor_type
,则必须支持mutableDescriptorType
。 -
如果支持
VK_EXT_legacy_vertex_attributes
,则必须支持legacyVertexAttributes
。 -
如果支持
VK_ARM_shader_core_builtins
,则必须支持shaderCoreBuiltins
。 -
如果支持
VK_EXT_pipeline_library_group_handles
,则必须支持pipelineLibraryGroupHandles
。 -
如果支持
VK_EXT_dynamic_rendering_unused_attachments
,则必须支持dynamicRenderingUnusedAttachments
。 -
如果支持
VK_QCOM_multiview_per_view_render_areas
,则必须支持multiviewPerViewRenderAreas
。 -
如果支持
VK_NV_per_stage_descriptor_set
,则必须支持perStageDescriptorSet
。 -
如果支持
VK_QCOM_image_processing2
,则必须支持textureBlockMatch2
。 -
如果支持
VK_QCOM_filter_cubic_weights
,则必须支持selectableCubicWeights
。 -
如果支持
VK_QCOM_ycbcr_degamma
,则必须支持ycbcrDegamma
。 -
如果支持
VK_QCOM_filter_cubic_clamp
,则必须支持cubicRangeClamp
。 -
如果支持
VK_EXT_attachment_feedback_loop_dynamic_state
,则必须支持attachmentFeedbackLoopDynamicState
。 -
如果支持
VK_QNX_external_memory_screen_buffer
,则必须支持screenBufferImport
。 -
如果支持
VK_NV_descriptor_pool_overallocation
,则必须支持descriptorPoolOverallocation
。 -
如果支持
VK_NV_raw_access_chains
,则必须支持shaderRawAccessChains
。 -
如果支持
VK_NV_command_buffer_inheritance
,则必须支持commandBufferInheritance
。 -
如果支持
VK_NV_shader_atomic_float16_vector
,则必须支持shaderFloat16VectorAtomics
。 -
如果支持
VK_EXT_shader_replicated_composites
,则必须支持shaderReplicatedComposites
。 -
如果支持
VK_NV_ray_tracing_validation
,则必须支持rayTracingValidation
。 -
如果支持
VK_EXT_device_generated_commands
,则必须支持deviceGeneratedCommands
。 -
如果支持
VK_MESA_image_alignment_control
,则必须支持imageAlignmentControl
。 -
如果支持
VK_EXT_depth_clamp_control
,则必须支持depthClampControl
。 -
如果支持
VK_HUAWEI_hdr_vivid
,则必须支持hdrVivid
。 -
如果支持
VK_NV_cooperative_matrix2
,则必须支持cooperativeMatrixWorkgroupScope
、cooperativeMatrixFlexibleDimensions
、cooperativeMatrixReductions
、cooperativeMatrixConversions
、cooperativeMatrixPerElementOperations
、cooperativeMatrixTensorAddressing
或cooperativeMatrixBlockLoads
。 -
如果支持
VK_ARM_pipeline_opacity_micromap
,则必须支持pipelineOpacityMicromap
。 -
如果支持
VK_EXT_vertex_attribute_robustness
,则必须支持vertexAttributeRobustness
。 -
如果支持
VK_KHR_acceleration_structure
,则必须支持以下特性: -
如果支持
VK_KHR_ray_tracing_pipeline
,则必须支持以下特性: -
如果支持
VK_KHR_ray_query
,则必须支持rayQuery
。 -
如果支持
VK_EXT_mesh_shader
,则必须支持以下特性: -
如果支持
primitiveFragmentShadingRateMeshShader
特性,则支持VK_KHR_fragment_shading_rate
。 -
如果支持
extendedDynamicState3RasterizationStream
特性,则支持VK_EXT_transform_feedback
。 -
如果支持
extendedDynamicState3ConservativeRasterizationMode
特性,则支持VK_EXT_conservative_rasterization
扩展。 -
如果支持
extendedDynamicState3ExtraPrimitiveOverestimationSize
特性,则支持VK_EXT_conservative_rasterization
扩展。 -
如果支持
extendedDynamicState3SampleLocationsEnable
特性,则支持VK_EXT_sample_locations
扩展。 -
如果支持
extendedDynamicState3ColorBlendAdvanced
特性,则支持VK_EXT_blend_operation_advanced
扩展。 -
如果支持
extendedDynamicState3ProvokingVertexMode
特性,则支持VK_EXT_provoking_vertex
。 -
如果支持
extendedDynamicState3LineRasterizationMode
特性,则支持 Vulkan 1.4 或 VK_KHR_line_rasterization 扩展或 VK_EXT_line_rasterization 扩展。 -
如果支持
extendedDynamicState3LineStippleEnable
特性,则支持VK_KHR_line_rasterization
或VK_EXT_line_rasterization
扩展。 -
如果支持
extendedDynamicState3DepthClipNegativeOneToOne
特性,则支持VK_EXT_depth_clip_control
。 -
如果支持
extendedDynamicState3ViewportWScalingEnable
特性,则支持VK_NV_clip_space_w_scaling
扩展。 -
如果支持
extendedDynamicState3ViewportSwizzle
特性,则支持VK_NV_viewport_swizzle
扩展。 -
如果支持
extendedDynamicState3CoverageToColorEnable
特性,则支持VK_NV_fragment_coverage_to_color
扩展。 -
如果支持
extendedDynamicState3CoverageToColorLocation
特性,则支持VK_NV_fragment_coverage_to_color
扩展。 -
如果支持
extendedDynamicState3CoverageModulationMode
特性,则支持VK_NV_framebuffer_mixed_samples
扩展。 -
如果支持
extendedDynamicState3CoverageModulationTableEnable
特性,则支持VK_NV_framebuffer_mixed_samples
扩展。 -
如果支持
extendedDynamicState3CoverageModulationTable
特性,则支持VK_NV_framebuffer_mixed_samples
扩展。 -
如果支持
extendedDynamicState3CoverageReductionMode
功能,则必须支持VK_NV_coverage_reduction_mode
。 -
如果支持
extendedDynamicState3RepresentativeFragmentTestEnable
功能,则必须支持VK_NV_representative_fragment_test
。 -
如果支持
extendedDynamicState3ShadingRateImageEnable
功能,则必须支持VK_NV_shading_rate_image
。 -
如果支持 Vulkan 1.4,并且 vkGetPhysicalDeviceQueueFamilyProperties 报告至少有一个队列族包含
VK_QUEUE_GRAPHICS_BIT
标志,且没有额外的队列族支持VK_QUEUE_TRANSFER_BIT
标志,则 必须 支持hostImageCopy
功能。
规范中定义的所有其他功能都是可选的。