特性
特性 会通告可在 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和ImageCubeArraySPIR-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_UINTshaderStorageImageExtendedFormats功能仅添加了格式支持的保证,该支持针对整个物理设备指定。因此,通过 vkCreateDevice 启用或禁用此功能没有实际效果。要查询其他属性,或者如果不支持该功能,则可以使用 vkGetPhysicalDeviceFormatProperties 和 vkGetPhysicalDeviceImageFormatProperties 来检查各个格式的受支持属性,如常用规则所允许。
来自
StorageImageExtendedFormatsSPIR-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 允许Int16SPIR-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 允许Float16SPIR-V 功能的存储类子集:启用在Private、Workgroup(对于非 Block 变量)和Function存储类中声明和使用 16 位浮点数,而不启用在接口存储类(例如,UniformConstant、Uniform、StorageBuffer、Input、Output和PushConstant)中声明它们。 -
shaderInt8指示着色器代码中是否支持 8 位整数(有符号和无符号)。这也表示着色器模块是否可以声明Int8功能。然而,这仅启用 SPIR-V 允许Int8SPIR-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表示实现是否支持ShaderViewportIndexSPIR-V 功能,该功能允许将使用ViewportIndex内置装饰的变量从网格、顶点或曲面细分评估着色器导出。 如果未启用此功能,则必须不在网格、顶点或曲面细分评估着色器中的输出上使用ViewportIndex内置装饰。 -
shaderOutputLayer表示实现是否支持ShaderLayerSPIR-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 允许用于Float16SPIR-V 功能的存储类的一个子集:在Private、Workgroup(对于非 Block 变量)和Function存储类中声明和使用 16 位浮点数是启用的,而允许在接口存储类(例如,UniformConstant、Uniform、StorageBuffer、Input、Output和PushConstant)中声明它们则未启用。 -
shaderInt8指示着色器代码中是否支持 8 位整数(有符号和无符号)。此功能还指示着色器模块是否可以声明Int8功能。但是,这仅启用了 SPIR-V 允许用于Int8SPIR-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表示实现支持ComputeDerivativeGroupQuadsKHRSPIR-V 功能。 -
computeDerivativeGroupLinear表示实现支持ComputeDerivativeGroupLinearKHRSPIR-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和BaryCoordNoPerspKHRSPIR-V 片元着色器内置变量,并且支持片元着色器输入变量上的PerVertexKHRSPIR-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表示实现支持使用着色率图像来导出片元处理的有效着色率。它还表示实现支持ShadingRateNVSPIR-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表示实现支持FragmentShaderSampleInterlockEXTSPIR-V 功能。 -
fragmentShaderPixelInterlock表示实现支持FragmentShaderPixelInterlockEXTSPIR-V 功能。 -
fragmentShaderShadingRateInterlock表示实现支持FragmentShaderShadingRateInterlockEXTSPIR-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表示实现支持CooperativeMatrixReductionsNVSPIR-V 功能。这允许对矩阵执行(行、列、2x2 或所有元素)归约。 -
cooperativeMatrixConversions表示实现支持CooperativeMatrixConversionsNVSPIR-V 功能。这允许将累加器矩阵转换为 A 或 B 矩阵。 -
cooperativeMatrixPerElementOperations表示实现支持CooperativeMatrixPerElementOperationsNVSPIR-V 功能。这允许使用回调函数对矩阵元素执行逐元素操作。 -
cooperativeMatrixTensorAddressing表示实现支持TensorAddressingNV和CooperativeMatrixTensorAddressingNVSPIR-V 功能。这允许为矩阵加载和存储使用张量布局和张量视图类型。 -
cooperativeMatrixBlockLoads表示实现支持CooperativeMatrixBlockLoadsNVSPIR-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表示实现支持IntegerFunctions2INTELSPIR-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_maskSPIR-V 扩展的CullMaskKHRSPIR-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_EXTborderColor的采样器,以及使用非单位分量映射的图像视图时,采样的图像操作返回定义的值,无论是否启用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_EXTprovoking 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表示实现是否支持EarlyAndLateFragmentTestsAMDExecutionMode。
如果 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表示该实现支持TileImageColorReadAccessEXTSPIR-V 功能。 -
shaderTileImageDepthReadAccess表示该实现支持TileImageDepthReadAccessEXTSPIR-V 功能。 -
shaderTileImageStencilReadAccess表示该实现支持TileImageStencilReadAccessEXTSPIR-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功能。
规范中定义的所有其他功能都是可选的。