特性

特性 会通告可在 API 中启用的附加功能。如果物理设备支持某个特性,则在创建 VkDevice必须启用该特性,以便在该 VkDevice 中使用其相关功能。如果某个特性是不支持的,则不能在该 VkDevice 中使用该功能。

特性通过基本的 VkPhysicalDeviceFeatures 结构以及可扩展结构 VkPhysicalDeviceFeatures2 进行报告,该结构在 VK_KHR_get_physical_device_properties2 扩展中添加,并包含在 Vulkan 1.1 中。当在未来的 Vulkan 版本或扩展中添加新特性时,每个扩展应该引入一个新的特性结构(如果需要)。此结构可以添加到 VkPhysicalDeviceFeatures2 结构的 pNext 链中。

为方便起见,新的 Vulkan 核心版本可能会为从扩展提升的特性引入新的统一特性结构。同时,扩展的原始特性结构(如果有)也会被提升到核心 API,并且是扩展结构的别名。这会导致同一个特性有多个名称:在原始扩展的特性结构和提升的结构别名中,以及在统一的特性结构中。当一个特性在扩展中隐式支持和启用,但在提升期间添加了显式名称时,则扩展本身充当下面表格中列出的特性的别名。

核心 API 中同一特性的所有别名必须一致报告:要么全部必须报告为受支持,要么全部不受支持。当提升的扩展可用时,任何相应的特性别名必须受支持。

表 1. 扩展特性别名
扩展 特性

VK_KHR_shader_draw_parameters

shaderDrawParameters

VK_KHR_draw_indirect_count

drawIndirectCount

VK_KHR_sampler_mirror_clamp_to_edge

samplerMirrorClampToEdge

VK_EXT_descriptor_indexing

descriptorIndexing

VK_EXT_sampler_filter_minmax

samplerFilterMinmax

VK_EXT_shader_viewport_index_layer

shaderOutputViewportIndex, shaderOutputLayer

VK_KHR_push_descriptor

pushDescriptor

要查询支持的特性,请调用

// Provided by VK_VERSION_1_0
void vkGetPhysicalDeviceFeatures(
    VkPhysicalDevice                            physicalDevice,
    VkPhysicalDeviceFeatures*                   pFeatures);
  • physicalDevice 是从中查询支持的特性的物理设备。

  • pFeatures 是指向 VkPhysicalDeviceFeatures 结构的指针,其中返回物理设备特性。对于每个特性,VK_TRUE 值指定此物理设备支持该特性,而 VK_FALSE 值指定不支持该特性。

有效用法(隐式)
  • VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter
    physicalDevice 必须是有效的 VkPhysicalDevice 句柄

  • VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter
    pFeatures 必须是指向 VkPhysicalDeviceFeatures 结构的有效指针

逻辑设备使用的细粒度特性必须VkDevice 创建时启用。如果启用了物理设备不支持的特性,则 VkDevice 创建将失败并返回 VK_ERROR_FEATURE_NOT_PRESENT

通过 VkDeviceCreateInfo 结构的 pEnabledFeatures 成员传递指向 VkPhysicalDeviceFeatures 结构的指针来启用细粒度特性,该结构被传递到 vkCreateDevice 调用中。如果 pEnabledFeatures 的成员为 VK_TRUEVK_FALSE,则将分别启用或禁用指定的特性来创建设备。也可以通过使用 VkPhysicalDeviceFeatures2 结构来启用特性。

如果应用程序希望启用设备支持的所有特性,则它可以简单地传入之前由 vkGetPhysicalDeviceFeatures 返回的 VkPhysicalDeviceFeatures 结构。要禁用某个单独的特性,应用程序可以在同一结构中将所需的成员设置为 VK_FALSE。将 pEnabledFeatures 设置为 NULL 并且在 VkDeviceCreateInfopNext 链中不包含 VkPhysicalDeviceFeatures2 等同于将结构的所有成员设置为 VK_FALSE

某些特性,例如 robustBufferAccess可能会产生运行时性能成本。应用程序编写者应该仔细考虑启用所有受支持特性的影响。

要查询核心或扩展定义的受支持特性,请调用

// 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 值,表示该功能不受支持。

有效用法(隐式)
  • VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter
    physicalDevice 必须是有效的 VkPhysicalDevice 句柄

  • VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter
    pFeatures 必须是指向 VkPhysicalDeviceFeatures2 结构的有效指针

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • features 是一个 VkPhysicalDeviceFeatures 结构,描述 Vulkan 1.0 API 的细粒度功能。

此结构的 pNext 链用于使用扩展定义的功能扩展该结构。此结构可以vkGetPhysicalDeviceFeatures2 中使用,或者可以包含在 VkDeviceCreateInfo 结构的 pNext 链中,在这种情况下,它控制启用的功能,而不是 pEnabledFeatures

有效用法(隐式)
  • VUID-VkPhysicalDeviceFeatures2-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2

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::rangeVkBufferViewCreateInfo::range 或缓冲区大小确定)进行边界检查。越界访问必须不会导致应用程序终止,并且着色器加载、存储和原子的效果必须符合下述的实现相关的行为。

    • 如果满足以下任何条件,则认为缓冲区访问越界:

      • 指针由 OpImageTexelPointer 形成,并且坐标小于零或大于或等于绑定范围内的完整元素数。

      • 指针不是由 OpImageTexelPointer 形成的,并且指向的对象没有完全包含在绑定范围内。这包括通过可变指针执行的访问,在这种情况下,无法静态确定正在访问的缓冲区描述符。未初始化的指针和等于 OpConstantNull 的指针被视为指向零大小的对象,因此通过此类指针的所有访问都被视为越界。通过缓冲区设备地址进行的缓冲区访问不进行边界检查。

      • 如果未启用 VkPhysicalDeviceCooperativeMatrixFeaturesNV::cooperativeMatrixRobustBufferAccess 功能,则使用 OpCooperativeMatrixLoadNVOpCooperativeMatrixStoreNV 的访问可能不进行边界检查。

      • 如果未启用 VkPhysicalDeviceCooperativeMatrixFeaturesKHR::cooperativeMatrixRobustBufferAccess 功能,则使用 OpCooperativeMatrixLoadKHROpCooperativeMatrixStoreKHR 的访问可能不进行边界检查。

        如果 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特性,如果绑定顶点缓冲区范围中属性的偏移量加上属性的大小大于以下任一值,则认为顶点输入属性越界:

      • vertexBufferRangeSize,如果bindingStride == 0;或者

      • (vertexBufferRangeSize - (vertexBufferRangeSize % bindingStride))

        其中vertexBufferRangeSize是绑定到顶点缓冲区绑定的内存范围的字节大小,bindingStride是对应顶点输入绑定的字节步幅。此外,如果使用特定顶点输入绑定的任何顶点输入属性越界,则对于该顶点着色器调用,使用该顶点输入绑定的所有顶点输入属性都将被视为越界。

      • 如果顶点输入属性越界,则会为其分配以下值之一:

        • 来自绑定到缓冲区的内存范围内的任何位置的值,根据属性的格式进行转换。

        • 零值,根据属性的格式进行格式转换。

        • 零值,或者如上所述的(0,0,0,x)向量。

    • 如果启用了robustBufferAccess2特性,如果绑定顶点缓冲区范围中属性的偏移量加上属性的大小大于绑定到顶点缓冲区绑定的内存范围的字节大小,则认为顶点输入属性越界。

      • 如果顶点输入属性越界,则提取的原始数据为零值,并且缺失的 G、B 或 A 分量将填充为(0

    • 如果未启用robustBufferAccess,应用程序必须不执行越界访问,除非在pipelineRobustness特性启用的条件下。

  • fullDrawIndexUint32 指定在使用 VK_INDEX_TYPE_UINT32VkIndexType 时,索引绘制调用支持完整的 32 位索引范围。 maxDrawIndexedIndexValue可以使用的最大索引值(除了图元重启索引,当 VkIndexTypeVK_INDEX_TYPE_UINT32 时,它始终为 232-1)。如果支持此特性,则 maxDrawIndexedIndexValue 必须为 232-1;否则它必须不小于 224-1。 请参阅maxDrawIndexedIndexValue

  • imageCubeArray 指定是否可以创建 VkImageViewTypeVK_IMAGE_VIEW_TYPE_CUBE_ARRAY 的图像视图,并且相应的 SampledCubeArrayImageCubeArray SPIR-V 功能可以在着色器代码中使用。

  • independentBlend 指定 VkPipelineColorBlendAttachmentState 设置是否由每个附件独立控制。 如果未启用此特性,则所有颜色附件的 VkPipelineColorBlendAttachmentState 设置必须相同。 否则,可以为每个绑定的颜色附件提供不同的 VkPipelineColorBlendAttachmentState

  • geometryShader 指定是否支持几何着色器。如果未启用此特性,则必须不使用 VK_SHADER_STAGE_GEOMETRY_BITVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT 枚举值。 这也指定着色器模块是否可以声明 Geometry 功能。

  • tessellationShader 指定是否支持细分控制和评估着色器。 如果未启用此特性,则必须不使用 VK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BITVK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO 枚举值。 这也指定着色器模块是否可以声明 Tessellation 功能。

  • sampleRateShading 指定是否支持采样着色和多重采样插值。 如果未启用此特性,则 VkPipelineMultisampleStateCreateInfo 结构的 sampleShadingEnable 成员必须VK_FALSE,并且 minSampleShading 成员被忽略。 这也指定着色器模块是否可以声明 SampleRateShading 功能。

  • dualSrcBlend 指定是否支持采用两个源的混合操作。 如果未启用此特性,则必须不使用 VK_BLEND_FACTOR_SRC1_COLORVK_BLEND_FACTOR_ONE_MINUS_SRC1_COLORVK_BLEND_FACTOR_SRC1_ALPHAVK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA 枚举值作为源或目标混合因子。 请参阅双源混合

  • logicOp 指定是否支持逻辑操作。 如果未启用此特性,则 VkPipelineColorBlendStateCreateInfo 结构的 logicOpEnable 成员必须VK_FALSE,并且 logicOp 成员被忽略。

  • multiDrawIndirect 指定是否支持多重间接绘制。 如果未启用此特性,则 vkCmdDrawIndirectvkCmdDrawIndexedIndirect 命令的 drawCount 参数必须为 0 或 1。 如果不支持此特性,则 VkPhysicalDeviceLimits 结构的 maxDrawIndirectCount 成员也必须为 1。 请参阅maxDrawIndirectCount

  • drawIndirectFirstInstance 指定间接绘制调用是否支持 firstInstance 参数。 如果未启用此特性,则提供给 vkCmdDrawIndirectvkCmdDrawIndexedIndirect 命令的所有 VkDrawIndirectCommandVkDrawIndexedIndirectCommand 结构的 firstInstance 成员必须为 0。

  • depthClamp 指定是否支持深度钳制。 如果未启用此特性,则 VkPipelineRasterizationStateCreateInfo 结构的 depthClampEnable 成员必须VK_FALSE。 否则,将 depthClampEnable 设置为 VK_TRUE 将启用深度钳制。

  • depthBiasClamp 指定是否支持深度偏移钳制。如果未启用此特性,则 VkPipelineRasterizationStateCreateInfo 结构的 depthBiasClamp 成员必须为 0.0,除非启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态,在这种情况下,vkCmdSetDepthBiasdepthBiasClamp 参数必须为 0.0。

  • fillModeNonSolid 指定是否支持点和线框填充模式。如果未启用此特性,则必须不使用 VK_POLYGON_MODE_POINTVK_POLYGON_MODE_LINE 枚举值。

  • depthBounds 指定是否支持深度边界测试。如果未启用此特性,则 VkPipelineDepthStencilStateCreateInfo 结构的 depthBoundsTestEnable 成员必须VK_FALSE,除非启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,在这种情况下,vkCmdSetDepthBoundsTestEnabledepthBoundsTestEnable 参数必须VK_FALSE。当 depthBoundsTestEnableVK_FALSE 时,VkPipelineDepthStencilStateCreateInfo 结构的 minDepthBoundsmaxDepthBounds 成员将被忽略。

  • wideLines 指定是否支持宽度不为 1.0 的线条。如果未启用此特性,则 VkPipelineRasterizationStateCreateInfo 结构的 lineWidth 成员必须为 1.0,除非启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,在这种情况下,vkCmdSetLineWidthlineWidth 参数必须为 1.0。当支持此特性时,支持的线宽的范围和粒度分别由 VkPhysicalDeviceLimits 结构的 lineWidthRangelineWidthGranularity 成员指示。

  • largePoints 指定是否支持大小大于 1.0 的点。如果未启用此特性,则仅支持着色器写入的点大小为 1.0。支持的点大小的范围和粒度分别由 VkPhysicalDeviceLimits 结构的 pointSizeRangepointSizeGranularity 成员指示。

  • alphaToOne 指定实现是否能够在 多重采样覆盖率 片段操作中替换片段着色器颜色输出的 alpha 值。如果未启用此特性,则 VkPipelineMultisampleStateCreateInfo 结构的 alphaToOneEnable 成员必须VK_FALSE。否则,将 alphaToOneEnable 设置为 VK_TRUE 将启用 alpha-to-one 行为。

  • multiViewport 指定是否支持多个视口。如果未启用此特性

  • samplerAnisotropy 指定是否支持各向异性过滤。如果未启用此特性,则 VkSamplerCreateInfo 结构的 anisotropyEnable 成员必须VK_FALSE

  • textureCompressionETC2 指定是否支持所有 ETC2 和 EAC 压缩纹理格式。如果启用了此特性,则对于以下格式,在 optimalTilingFeatures必须支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BITVK_FORMAT_FEATURE_BLIT_SRC_BITVK_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

      要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatPropertiesvkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。

  • textureCompressionASTC_LDR 指定是否支持所有 ASTC LDR 压缩纹理格式。如果启用了此特性,则对于以下格式,在 optimalTilingFeatures必须支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BITVK_FORMAT_FEATURE_BLIT_SRC_BITVK_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

      要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatPropertiesvkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。

  • textureCompressionBC 指定是否支持所有 BC 压缩纹理格式。如果启用了此特性,则对于以下格式,在 optimalTilingFeatures必须支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BITVK_FORMAT_FEATURE_BLIT_SRC_BITVK_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

      要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatPropertiesvkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。

  • occlusionQueryPrecise 指定是否支持返回实际样本计数的遮挡查询。遮挡查询通过在传递给 vkCreateQueryPoolVkQueryPoolCreateInfo 结构中指定 queryTypeVK_QUERY_TYPE_OCCLUSION 来在 VkQueryPool 中创建。如果启用此功能,则此类型的查询可以vkCmdBeginQueryflags 参数中启用 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 功能。支持此功能的实现必须同时支持 tessellationShadergeometryShader 功能中的一个或两个。

  • shaderImageGatherExtended 指定着色器代码中是否可以使用扩展的图像收集指令集。如果未启用此功能,则 OpImage*Gather 指令不支持 OffsetConstOffsets 操作数。这还指定了着色器模块是否可以声明 ImageGatherExtended 功能。

  • shaderStorageImageExtendedFormats 指定是否支持以下所有“存储图像扩展格式”;如果支持此功能,则以下格式的 optimalTilingFeatures必须支持 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT

    • VK_FORMAT_R16G16_SFLOAT

    • VK_FORMAT_B10G11R11_UFLOAT_PACK32

    • VK_FORMAT_R16_SFLOAT

    • VK_FORMAT_R16G16B16A16_UNORM

    • VK_FORMAT_A2B10G10R10_UNORM_PACK32

    • VK_FORMAT_R16G16_UNORM

    • VK_FORMAT_R8G8_UNORM

    • VK_FORMAT_R16_UNORM

    • VK_FORMAT_R8_UNORM

    • VK_FORMAT_R16G16B16A16_SNORM

    • VK_FORMAT_R16G16_SNORM

    • VK_FORMAT_R8G8_SNORM

    • VK_FORMAT_R16_SNORM

    • VK_FORMAT_R8_SNORM

    • VK_FORMAT_R16G16_SINT

    • VK_FORMAT_R8G8_SINT

    • VK_FORMAT_R16_SINT

    • VK_FORMAT_R8_SINT

    • VK_FORMAT_A2B10G10R10_UINT_PACK32

    • VK_FORMAT_R16G16_UINT

    • VK_FORMAT_R8G8_UINT

    • VK_FORMAT_R16_UINT

    • VK_FORMAT_R8_UINT

      shaderStorageImageExtendedFormats 功能仅添加了格式支持的保证,该支持针对整个物理设备指定。因此,通过 vkCreateDevice 启用或禁用此功能没有实际效果。

      要查询其他属性,或者如果不支持该功能,则可以使用 vkGetPhysicalDeviceFormatPropertiesvkGetPhysicalDeviceImageFormatProperties 来检查各个格式的受支持属性,如常用规则所允许。

      来自 StorageImageExtendedFormats SPIR-V 功能的 VK_FORMAT_R32G32_UINTVK_FORMAT_R32G32_SINTVK_FORMAT_R32G32_SFLOAT 已经包含在核心 Vulkan 强制格式支持中。

  • shaderStorageImageMultisample 指定是否支持多采样存储图像。如果未启用此功能,则创建时 usage 包含 VK_IMAGE_USAGE_STORAGE_BIT 的图像必须使用等于 VK_SAMPLE_COUNT_1_BITsamples 创建。这还指定了着色器模块是否可以声明 StorageImageMultisampleImageMSArray 功能。

  • shaderStorageImageReadWithoutFormat 指定存储图像和存储纹理缓冲区在读取时是否需要指定格式限定符。shaderStorageImageReadWithoutFormat 仅适用于无格式存储列表中列出的格式。

  • shaderStorageImageWriteWithoutFormat 指定存储图像和存储纹理缓冲区在写入时是否需要指定格式限定符。shaderStorageImageWriteWithoutFormat 仅适用于无格式存储列表中列出的格式。

  • shaderUniformBufferArrayDynamicIndexing 指定着色器代码中统一缓冲区数组是否可以通过在子组或调用组内动态统一的整数表达式进行索引。如果未启用此功能,则当在着色器代码中聚合到数组中时,描述符类型为 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的资源必须仅通过常量整数表达式进行索引。这还指定了着色器模块是否可以声明 UniformBufferArrayDynamicIndexing 功能。

  • shaderSampledImageArrayDynamicIndexing 指定着色器代码中,采样器或采样图像的数组是否可以通过子组或调用组内动态统一的整数表达式进行索引。如果未启用此特性,当着色器代码中将描述符类型为 VK_DESCRIPTOR_TYPE_SAMPLERVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE 的资源聚合到数组中时,必须仅通过常量整数表达式进行索引。这也指定了着色器模块是否可以声明 SampledImageArrayDynamicIndexing 能力。

  • shaderStorageBufferArrayDynamicIndexing 指定着色器代码中,存储缓冲区的数组是否可以通过子组或调用组内动态统一的整数表达式进行索引。如果未启用此特性,当着色器代码中将描述符类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFERVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 的资源聚合到数组中时,必须仅通过常量整数表达式进行索引。这也指定了着色器模块是否可以声明 StorageBufferArrayDynamicIndexing 能力。

  • shaderStorageImageArrayDynamicIndexing 指定着色器代码中,存储图像的数组是否可以通过子组或调用组内动态统一的整数表达式进行索引。如果未启用此特性,当着色器代码中将描述符类型为 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE 的资源聚合到数组中时,必须仅通过常量整数表达式进行索引。这也指定了着色器模块是否可以声明 StorageImageArrayDynamicIndexing 能力。

  • shaderClipDistance 指定着色器代码中是否支持裁剪距离。如果未启用此特性,则任何使用 ClipDistance 内置修饰符修饰的成员必须不能在着色器模块中读取或写入。这也指定了着色器模块是否可以声明 ClipDistance 能力。

  • shaderCullDistance 指定着色器代码中是否支持剔除距离。如果未启用此特性,则任何使用 CullDistance 内置修饰符修饰的成员必须不能在着色器模块中读取或写入。这也指定了着色器模块是否可以声明 CullDistance 能力。

  • shaderFloat64 指定着色器代码中是否支持 64 位浮点数(双精度)。如果未启用此特性,则必须不在着色器代码中使用 64 位浮点类型。这也指定了着色器模块是否可以声明 Float64 能力。 对于 SPIR-V 允许使用 Float64 能力的所有存储类,都启用了声明和使用 64 位浮点数的功能。

  • shaderInt64 指定着色器代码中是否支持 64 位整数(有符号和无符号)。如果未启用此特性,则必须不在着色器代码中使用 64 位整数类型。这也指定了着色器模块是否可以声明 Int64 能力。对于 SPIR-V 允许使用 Int64 能力的所有存储类,都启用了声明和使用 64 位整数的功能。

  • shaderInt16 指定着色器代码中是否支持 16 位整数(有符号和无符号)。如果未启用此特性,则必须不在着色器代码中使用 16 位整数类型。这也指定了着色器模块是否可以声明 Int16 能力。然而,这仅启用了 SPIR-V 允许 Int16 SPIR-V 能力的存储类的一个子集:启用了在 PrivateWorkgroup(对于非 Block 变量)和 Function 存储类中声明和使用 16 位整数的功能,而未启用在接口存储类(例如,UniformConstantUniformStorageBufferInputOutputPushConstant)中声明它们的功能。

  • shaderResourceResidency 指定着色器代码中是否支持返回资源驻留信息的图像操作。如果未启用此特性,则必须不在着色器代码中使用 OpImageSparse* 指令。这也指定了着色器模块是否可以声明 SparseResidency 能力。该特性要求至少支持 sparseResidency* 特性中的一个。

  • shaderResourceMinLod 指定着色器代码中是否支持指定最小资源 LOD 的图像操作。如果未启用此特性,则必须不在着色器代码中使用 MinLod 图像操作数。这也指定了着色器模块是否可以声明 MinLod 能力。

  • sparseBinding 指定资源内存是否可以在不透明稀疏块级别而不是在对象级别进行管理。如果未启用此特性,则资源内存必须仅使用 vkBindBufferMemoryvkBindImageMemory 命令按每个对象进行绑定。在这种情况下,缓冲器和图像必须不能分别使用在 VkBufferCreateInfoVkImageCreateInfo 结构的 flags 成员中设置的 VK_BUFFER_CREATE_SPARSE_BINDING_BITVK_IMAGE_CREATE_SPARSE_BINDING_BIT 创建。否则,资源内存可以稀疏资源特性 中所述进行管理。

  • sparseResidencyBuffer 指定设备是否可以访问部分驻留的缓冲区。如果未启用此特性,则必须不能使用在 VkBufferCreateInfo 结构的 flags 成员中设置的 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT 创建缓冲区。

  • sparseResidencyImage2D 指定设备是否可以访问每个像素 1 个采样的部分驻留的 2D 图像。如果未启用此特性,则对于 imageTypeVK_IMAGE_TYPE_2Dsamples 设置为 VK_SAMPLE_COUNT_1_BIT 的图像,必须不能使用在 VkImageCreateInfo 结构的 flags 成员中设置的 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT 创建。

  • sparseResidencyImage3D 指定设备是否可以访问部分驻留的 3D 图像。如果未启用此特性,则对于 imageTypeVK_IMAGE_TYPE_3D 的图像,必须不能使用在 VkImageCreateInfo 结构的 flags 成员中设置的 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT 创建。

  • sparseResidency2Samples 指定物理设备是否可以访问每个像素 2 个采样的部分驻留 2D 图像。如果未启用此功能,则 imageTypeVK_IMAGE_TYPE_2Dsamples 设置为 VK_SAMPLE_COUNT_2_BIT 的图像,在 VkImageCreateInfo 结构的 flags 成员中设置 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT不得创建。

  • sparseResidency4Samples 指定物理设备是否可以访问每个像素 4 个采样的部分驻留 2D 图像。如果未启用此功能,则 imageTypeVK_IMAGE_TYPE_2Dsamples 设置为 VK_SAMPLE_COUNT_4_BIT 的图像,在 VkImageCreateInfo 结构的 flags 成员中设置 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT不得创建。

  • sparseResidency8Samples 指定物理设备是否可以访问每个像素 8 个采样的部分驻留 2D 图像。如果未启用此功能,则 imageTypeVK_IMAGE_TYPE_2Dsamples 设置为 VK_SAMPLE_COUNT_8_BIT 的图像,在 VkImageCreateInfo 结构的 flags 成员中设置 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT不得创建。

  • sparseResidency16Samples 指定物理设备是否可以访问每个像素 16 个采样的部分驻留 2D 图像。如果未启用此功能,则 imageTypeVK_IMAGE_TYPE_2Dsamples 设置为 VK_SAMPLE_COUNT_16_BIT 的图像,在 VkImageCreateInfo 结构的 flags 成员中设置 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT不得创建。

  • sparseResidencyAliased 指定物理设备是否可以正确访问别名到多个位置的数据。如果未启用此功能,则 VK_BUFFER_CREATE_SPARSE_ALIASED_BITVK_IMAGE_CREATE_SPARSE_ALIASED_BIT 枚举值不得分别在 VkBufferCreateInfoVkImageCreateInfo 结构的 flags 成员中使用。

  • variableMultisampleRate 指定在不使用任何附件的子通道期间,将绑定到命令缓冲区的所有管线必须具有相同的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 值。如果设置为 VK_TRUE,则表示实现支持在不使用任何附件的子通道中使用可变多重采样率。如果设置为 VK_FALSE,则此类子通道中绑定的所有管线必须具有相同的多重采样率。这在子通道使用任何附件的情况下不起作用。

  • inheritedQueries 指定在查询处于活动状态时,是否可以执行二级命令缓冲区。

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • storageBuffer16BitAccess 指定在 StorageBufferShaderRecordBufferKHRPhysicalStorageBuffer 存储类中带有 Block 修饰符的对象是否可以拥有 16 位整数和 16 位浮点成员。如果未启用此功能,则不得在此类对象中使用 16 位整数或 16 位浮点成员。这还指定了着色器模块是否可以声明 StorageBuffer16BitAccess 功能。

  • uniformAndStorageBuffer16BitAccess 指定在 Uniform 存储类中带有 Block 修饰符的对象是否可以拥有 16 位整数和 16 位浮点成员。如果未启用此功能,则不得在此类对象中使用 16 位整数或 16 位浮点成员。这还指定了着色器模块是否可以声明 UniformAndStorageBuffer16BitAccess 功能。

  • storagePushConstant16 指定在 PushConstant 存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果未启用此功能,则不得在此类对象中使用 16 位整数或浮点成员。这还指定了着色器模块是否可以声明 StoragePushConstant16 功能。

  • storageInputOutput16 指定在 InputOutput 存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果未启用此功能,则不得在此类对象中使用 16 位整数或 16 位浮点成员。这还指定了着色器模块是否可以声明 StorageInputOutput16 功能。

  • multiview 指定实现是否支持渲染通道内的多视图渲染。如果未启用此功能,则每个子通道的视图掩码必须始终为零。

  • multiviewGeometryShader 指定实现是否支持在渲染通道内进行多视图渲染,并且使用几何着色器。如果未启用此功能,则针对具有非零视图掩码的子通道编译的管线不得包含几何着色器。

  • multiviewTessellationShader 指定实现是否支持在渲染通道内进行多视图渲染,并且使用细分着色器。如果未启用此功能,则针对具有非零视图掩码的子通道编译的管线不得包含任何细分着色器。

  • variablePointersStorageBuffer 指定实现是否支持 SPIR-V VariablePointersStorageBuffer 功能。如果未启用此功能,则着色器模块不得声明 SPV_KHR_variable_pointers 扩展或 VariablePointersStorageBuffer 功能。

  • variablePointers 指定实现是否支持 SPIR-V VariablePointers 功能。如果未启用此功能,则着色器模块不得声明 VariablePointers 功能。

  • protectedMemory 指定是否支持受保护内存

  • samplerYcbcrConversion 指定实现是否支持 采样器 Y′CBCR 转换。如果 samplerYcbcrConversionVK_FALSE,则不支持采样器 Y′CBCR 转换,并且不得使用使用采样器 Y′CBCR 转换的采样器。

  • shaderDrawParameters 指定实现是否支持 SPIR-V DrawParameters 功能。如果未启用此功能,则着色器模块不得声明 SPV_KHR_shader_draw_parameters 扩展或 DrawParameters 功能。

如果 VkPhysicalDeviceVulkan11Features 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个相应的功能。 VkPhysicalDeviceVulkan11Features 也可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVulkan11Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • samplerMirrorClampToEdge 指示实现是否支持 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE 采样器寻址模式。如果此功能未启用,则必须不使用 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE 采样器寻址模式。

  • drawIndirectCount 指示实现是否支持 vkCmdDrawIndirectCountvkCmdDrawIndexedIndirectCount 函数。如果此功能未启用,则必须不使用这些函数。

  • storageBuffer8BitAccess 指示具有 Block 修饰符的 StorageBufferShaderRecordBufferKHRPhysicalStorageBuffer 存储类中的对象是否可以具有 8 位整型成员。如果此功能未启用,则在这些对象中必须不使用 8 位整型成员。这也表示着色器模块是否可以声明 StorageBuffer8BitAccess 功能。

  • uniformAndStorageBuffer8BitAccess 指示具有 Block 修饰符的 Uniform 存储类中的对象是否可以具有 8 位整型成员。如果此功能未启用,则在这些对象中必须不使用 8 位整型成员。这也表示着色器模块是否可以声明 UniformAndStorageBuffer8BitAccess 功能。

  • storagePushConstant8 指示 PushConstant 存储类中的对象是否可以具有 8 位整型成员。如果此功能未启用,则在这些对象中必须不使用 8 位整型成员。这也表示着色器模块是否可以声明 StoragePushConstant8 功能。

  • shaderBufferInt64Atomics 指示着色器是否可以对缓冲区执行 64 位无符号和有符号整数原子操作。

  • shaderSharedInt64Atomics 指示着色器是否可以对共享和有效负载内存执行 64 位无符号和有符号整数原子操作。

  • shaderFloat16 指示着色器代码中是否支持 16 位浮点数(半精度)。这也表示着色器模块是否可以声明 Float16 功能。然而,这仅启用 SPIR-V 允许 Float16 SPIR-V 功能的存储类子集:启用在 PrivateWorkgroup(对于非 Block 变量)和 Function 存储类中声明和使用 16 位浮点数,而不启用在接口存储类(例如,UniformConstantUniformStorageBufferInputOutputPushConstant)中声明它们。

  • shaderInt8 指示着色器代码中是否支持 8 位整数(有符号和无符号)。这也表示着色器模块是否可以声明 Int8 功能。然而,这仅启用 SPIR-V 允许 Int8 SPIR-V 功能的存储类子集:启用在 PrivateWorkgroup(对于非 Block 变量)和 Function 存储类中声明和使用 8 位整数,而不启用在接口存储类(例如,UniformConstantUniformStorageBufferInputOutputPushConstant)中声明它们。

  • 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_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的资源必须不由非统一整数表达式进行索引。这也表示着色器模块是否可以声明 UniformBufferArrayNonUniformIndexing 功能。

  • shaderSampledImageArrayNonUniformIndexing 指示采样器或采样图像数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果此功能未启用,则当聚合到着色器代码中的数组时,描述符类型为 VK_DESCRIPTOR_TYPE_SAMPLERVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE 的资源必须不由非统一整数表达式进行索引。这也表示着色器模块是否可以声明 SampledImageArrayNonUniformIndexing 功能。

  • shaderStorageBufferArrayNonUniformIndexing 指示着色器代码中存储缓冲区的数组是否可以通过非一致的整数表达式进行索引。如果未启用此特性,则当着色器代码中将描述符类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFERVK_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_SAMPLERVK_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_BITVK_IMAGE_ASPECT_STENCIL_BIT 之一的深度/模板图像的 VkImageMemoryBarrier,以及是否可以使用 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMALVK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMALVK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMALVK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL

  • hostQueryReset 指示实现支持使用 vkResetQueryPool 从主机重置查询。

  • timelineSemaphore 指示是否支持使用 VK_SEMAPHORE_TYPE_TIMELINEVkSemaphoreType 创建的信号量。

  • bufferDeviceAddress 指示实现是否支持通过从 vkGetBufferDeviceAddress 查询的地址,在着色器中以存储缓冲区的方式访问缓冲区内存。

  • bufferDeviceAddressCaptureReplay 表示实现支持保存和重用缓冲区和设备地址,例如用于跟踪捕获和重放。

  • bufferDeviceAddressMultiDevice 表示实现支持为使用多个物理设备创建的逻辑设备使用 bufferDeviceAddressrayTracingPipelinerayQuery 功能。如果不支持此功能,则必须不在使用多个物理设备创建的逻辑设备上查询缓冲区和加速结构地址。

  • vulkanMemoryModel 表示着色器模块可以声明 VulkanMemoryModel 功能。

  • vulkanMemoryModelDeviceScope 表示 Vulkan 内存模型是否可以使用 Device 范围同步。 这也表示着色器模块可以声明 VulkanMemoryModelDeviceScope 功能。

  • vulkanMemoryModelAvailabilityVisibilityChains 表示 Vulkan 内存模型是否可以使用具有多个元素的可用性和可见性链

  • shaderOutputViewportIndex 表示实现是否支持 ShaderViewportIndex SPIR-V 功能,该功能允许将使用 ViewportIndex 内置装饰的变量从网格、顶点或曲面细分评估着色器导出。 如果未启用此功能,则必须不在网格、顶点或曲面细分评估着色器中的输出上使用 ViewportIndex 内置装饰。

  • shaderOutputLayer 表示实现是否支持 ShaderLayer SPIR-V 功能,该功能允许将使用 Layer 内置装饰的变量从网格、顶点或曲面细分评估着色器导出。 如果未启用此功能,则必须不在网格、顶点或曲面细分评估着色器中的输出上使用 Layer 内置装饰。

  • 如果 subgroupBroadcastDynamicIdVK_TRUE,则 OpGroupNonUniformBroadcast 的 “Id” 操作数可以在子组内动态统一,并且 OpGroupNonUniformQuadBroadcast 的 “Index” 操作数可以在导数组内动态统一。 如果为 VK_FALSE,则这些操作数必须为常量。

如果 VkPhysicalDeviceVulkan12Features 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceVulkan12Features 可以在 VkDeviceCreateInfopNext 链中使用,以有选择地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVulkan12Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • robustImageAccess 表示图像访问是否针对图像视图的维度进行严格的边界检查。 由超出边界的图像加载产生的无效纹素将按照纹素替换中所述进行替换,对于基于格式的丢失的 G、B 或 A 分量,将插入 (0,0,1)(0,0,0) 值。

  • inlineUniformBlock 表示实现是否支持内联统一块描述符。如果未启用此功能,则必须不使用 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK

  • descriptorBindingInlineUniformBlockUpdateAfterBind 表示实现是否支持在绑定集合后更新内联统一块描述符。如果未启用此功能,则必须不将 VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITVK_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-V DemoteToHelperInvocationEXT 功能。

  • 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_BITVK_FORMAT_FEATURE_BLIT_SRC_BITVK_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

      要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatPropertiesvkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。

  • shaderZeroInitializeWorkgroupMemory 指定实现是否支持初始化 Workgroup 存储类中的变量。

  • dynamicRendering 指定实现支持使用 vkCmdBeginRendering 命令的动态渲染过程实例。

  • shaderIntegerDotProduct 指定着色器模块是否可以声明 DotProductInputAllKHRDotProductInput4x8BitKHRDotProductInput4x8BitPackedKHRDotProductKHR 功能。

  • maintenance4 指示实现支持以下功能:

    • 应用程序可以在使用 VkPipelineLayout 对象创建另一个对象后立即销毁它。

    • LocalSizeId 可以用作 LocalSize 的替代方案,以使用专用化常量指定局部工作组大小。

    • 使用相同的创建参数创建的图像将始终具有相同的对齐要求。

    • 缓冲区或图像的大小内存需求永远不会大于使用更大或相等大小创建的另一个缓冲区或图像。

    • 推送常量不必在动态访问之前初始化。

    • 接口匹配规则允许较大的输出向量与较小的输入向量匹配,并丢弃其他值。

如果 VkPhysicalDeviceVulkan13Features 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。 VkPhysicalDeviceVulkan13Features 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVulkan13Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • globalPriorityQuery 指示实现是否支持查询全局队列优先级的能力。

  • shaderSubgroupRotate 指定着色器模块是否可以声明 GroupNonUniformRotateKHR 功能。

  • shaderSubgroupRotateClustered 指定着色器模块是否可以使用 ClusterSize 操作数到 OpGroupNonUniformRotateKHR

  • shaderFloatControls2 指定着色器模块是否可以声明 FloatControls2 功能。

  • shaderExpectAssume 指定着色器模块是否可以声明 ExpectAssumeKHR 功能。

  • 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 可以与 vkCmdBindIndexBuffer2vkCmdBindIndexBuffer 一起使用。

  • dynamicRenderingLocalRead 指定实现支持使用 vkCmdBeginRendering 命令在动态渲染过程实例内进行本地读取。

  • maintenance5 指示实现支持以下功能:

    • 公开可选格式 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 作为 VkImageSubresourceLayerslayerCount 成员。

    • 一个属性,指示如果 多边形模式VK_POLYGON_MODE_POINTPointSize 是否控制多边形的最终光栅化。

    • 两个属性,用于指示使用的非严格线条光栅化算法。

    • 两个新的标志字 VkPipelineCreateFlagBits2VkBufferUsageFlagBits2

    • 现在可以使用类型有效范围内的任何值(超出已定义的枚举值)来调用物理设备级函数,这样应用程序在查询特定枚举支持的属性之前可以避免检查单独的特性、扩展或版本。

    • 允许在任何类型的图像之间进行复制,其中 1D 图像被视为高度为 1 的 2D 图像。

  • maintenance6 表示实现支持以下特性

  • pipelineProtectedAccess 表示该实现是否支持在单独的管线上指定受保护的访问。

  • pipelineRobustness 表示可以按每个管线阶段的粒度请求鲁棒性。

  • hostImageCopy 表示该实现支持使用 vkCopyMemoryToImage 命令从主机内存复制到图像,使用 vkCopyImageToMemory 命令从图像复制到主机内存,以及使用 vkCopyImageToImage 命令在图像之间复制。

  • pushDescriptor 表示该实现支持推送描述符。

如果 VkPhysicalDeviceVulkan14Features 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceVulkan14Features 也可以在 VkDeviceCreateInfopNext 链中使用,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVulkan14Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • variablePointersStorageBuffer 指定实现是否支持 SPIR-V 的 VariablePointersStorageBuffer 功能。当此特性未启用时,着色器模块必须不声明 SPV_KHR_variable_pointers 扩展或 VariablePointersStorageBuffer 功能。

  • variablePointers 指定实现是否支持 SPIR-V 的 VariablePointers 功能。当此特性未启用时,着色器模块必须不声明 VariablePointers 功能。

如果 VkPhysicalDeviceVariablePointersFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceVariablePointersFeatures 也可以在 VkDeviceCreateInfopNext 链中使用,以有选择地启用这些特性。

有效用法
  • VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431
    如果启用了 variablePointers,则也必须启用 variablePointersStorageBuffer

有效用法(隐式)
  • VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • multiview 指定实现是否支持渲染通道内的多视图渲染。如果此特性未启用,则每个子通道的视图掩码必须始终为零。

  • multiviewGeometryShader 指定实现是否支持渲染通道内的多视图渲染,以及几何着色器。如果此特性未启用,则针对具有非零视图掩码的子通道编译的管线必须不包含几何着色器。

  • multiviewTessellationShader 指定实现是否支持渲染通道内的多视图渲染,以及细分着色器。如果此特性未启用,则针对具有非零视图掩码的子通道编译的管线必须不包含任何细分着色器。

如果 VkPhysicalDeviceMultiviewFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceMultiviewFeatures 也可以在 VkDeviceCreateInfopNext 链中使用,以有选择地启用这些特性。

有效用法
  • VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580
    如果启用了 multiviewGeometryShader,则也必须启用 multiview

  • VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581
    如果启用了 multiviewTessellationShader,则也必须启用 multiview

有效用法(隐式)
  • VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES

// 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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderBufferFloat32Atomics 表示着色器是否可以对存储缓冲区执行 32 位浮点加载、存储和交换原子操作。

  • shaderBufferFloat32AtomicAdd 表示着色器是否可以对存储缓冲区执行 32 位浮点加法原子操作。

  • shaderBufferFloat64Atomics 表示着色器是否可以对存储缓冲区执行 64 位浮点加载、存储和交换原子操作。

  • shaderBufferFloat64AtomicAdd 表示着色器是否可以对存储缓冲区执行 64 位浮点加法原子操作。

  • shaderSharedFloat32Atomics 表示着色器是否可以对共享和有效负载内存执行 32 位浮点加载、存储和交换原子操作。

  • shaderSharedFloat32AtomicAdd 表示着色器是否可以对共享和有效负载内存执行 32 位浮点加法原子操作。

  • shaderSharedFloat64Atomics 表示着色器是否可以在共享和有效载荷内存上执行 64 位浮点数的加载、存储和交换原子操作。

  • shaderSharedFloat64AtomicAdd 表示着色器是否可以在共享和有效载荷内存上执行 64 位浮点数的加法原子操作。

  • shaderImageFloat32Atomics 表示着色器是否可以执行 32 位浮点数的加载、存储和交换原子图像操作。

  • shaderImageFloat32AtomicAdd 表示着色器是否可以执行 32 位浮点数的加法原子图像操作。

  • sparseImageFloat32Atomics 表示是否可以在稀疏图像上使用 32 位浮点数的加载、存储和交换原子操作。

  • sparseImageFloat32AtomicAdd 表示是否可以在稀疏图像上使用 32 位浮点数的加法原子操作。

如果 VkPhysicalDeviceShaderAtomicFloatFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceShaderAtomicFloatFeaturesEXT 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderAtomicFloatFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT

// 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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT

// 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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderBufferInt64Atomics 表示着色器是否可以在缓冲区上执行 64 位无符号和有符号整数原子操作。

  • shaderSharedInt64Atomics 表示着色器是否可以在共享和有效载荷内存上执行 64 位无符号和有符号整数原子操作。

如果 VkPhysicalDeviceShaderAtomicInt64Features 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceShaderAtomicInt64Features 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderAtomicInt64Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES

// Provided by VK_EXT_shader_image_atomic_int64
typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderImageInt64Atomics;
    VkBool32           sparseImageInt64Atomics;
} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderImageInt64Atomics 表示着色器是否可以支持在图像上执行 64 位无符号和有符号整数原子操作。

  • sparseImageInt64Atomics 表示是否可以在稀疏图像上使用 64 位整数原子操作。

如果 VkPhysicalDeviceShaderAtomicInt64FeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceShaderAtomicInt64FeaturesEXT 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT

VkPhysicalDevice8BitStorageFeatures 结构定义如下:

// 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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • storageBuffer8BitAccess 指示在具有 Block 修饰的 StorageBufferShaderRecordBufferKHRPhysicalStorageBuffer 存储类中的对象是否可以拥有 8 位整数成员。如果此功能未启用,则在此类对象中必须不使用 8 位整数成员。此功能还指示着色器模块是否可以声明 StorageBuffer8BitAccess 功能。

  • uniformAndStorageBuffer8BitAccess 指示在具有 Block 修饰的 Uniform 存储类中的对象是否可以拥有 8 位整数成员。如果此功能未启用,则在此类对象中必须不使用 8 位整数成员。此功能还指示着色器模块是否可以声明 UniformAndStorageBuffer8BitAccess 功能。

  • storagePushConstant8 指示在 PushConstant 存储类中的对象是否可以拥有 8 位整数成员。如果此功能未启用,则在此类对象中必须不使用 8 位整数成员。此功能还指示着色器模块是否可以声明 StoragePushConstant8 功能。

如果 VkPhysicalDevice8BitStorageFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个相应的功能。VkPhysicalDevice8BitStorageFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevice8BitStorageFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES

// 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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • storageBuffer16BitAccess 指定在具有 Block 修饰的 StorageBufferShaderRecordBufferKHRPhysicalStorageBuffer 存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果此功能未启用,则在此类对象中必须不使用 16 位整数或 16 位浮点成员。此功能还指定着色器模块是否可以声明 StorageBuffer16BitAccess 功能。

  • uniformAndStorageBuffer16BitAccess 指定在具有 Block 修饰的 Uniform 存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果此功能未启用,则在此类对象中必须不使用 16 位整数或 16 位浮点成员。此功能还指定着色器模块是否可以声明 UniformAndStorageBuffer16BitAccess 功能。

  • storagePushConstant16 指定在 PushConstant 存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果此功能未启用,则在此类对象中必须不使用 16 位整数或浮点成员。此功能还指定着色器模块是否可以声明 StoragePushConstant16 功能。

  • storageInputOutput16 指定在 InputOutput 存储类中的对象是否可以拥有 16 位整数和 16 位浮点成员。如果此功能未启用,则在此类对象中必须不使用 16 位整数或 16 位浮点成员。此功能还指定着色器模块是否可以声明 StorageInputOutput16 功能。

如果 VkPhysicalDevice16BitStorageFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个相应的功能。VkPhysicalDevice16BitStorageFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderFloat16 指示着色器代码中是否支持 16 位浮点数(半精度浮点数)。此功能还指示着色器模块是否可以声明 Float16 功能。但是,这仅启用了 SPIR-V 允许用于 Float16 SPIR-V 功能的存储类的一个子集:在 PrivateWorkgroup(对于非 Block 变量)和 Function 存储类中声明和使用 16 位浮点数是启用的,而允许在接口存储类(例如,UniformConstantUniformStorageBufferInputOutputPushConstant)中声明它们则未启用。

  • shaderInt8 指示着色器代码中是否支持 8 位整数(有符号和无符号)。此功能还指示着色器模块是否可以声明 Int8 功能。但是,这仅启用了 SPIR-V 允许用于 Int8 SPIR-V 功能的存储类的一个子集:在 PrivateWorkgroup(对于非 Block 变量)和 Function 存储类中声明和使用 8 位整数是启用的,而允许在接口存储类(例如,UniformConstantUniformStorageBufferInputOutputPushConstant)中声明它们则未启用。

如果 VkPhysicalDeviceShaderFloat16Int8Features 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个相应的功能。VkPhysicalDeviceShaderFloat16Int8Features 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderFloat16Int8Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES

VkPhysicalDeviceShaderClockFeaturesKHR 结构定义为

// Provided by VK_KHR_shader_clock
typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderSubgroupClock;
    VkBool32           shaderDeviceClock;
} VkPhysicalDeviceShaderClockFeaturesKHR;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderSubgroupClock 指示着色器是否可以执行 Subgroup 范围的时钟读取。

  • shaderDeviceClock 指示着色器是否可以执行 Device 范围的时钟读取。

如果 VkPhysicalDeviceShaderClockFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个相应的功能。VkPhysicalDeviceShaderClockFeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderClockFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • samplerYcbcrConversion 指定实现是否支持采样器 Y′CBCR 转换。如果 samplerYcbcrConversionVK_FALSE,则不支持采样器 Y′CBCR 转换,并且必须不使用使用采样器 Y′CBCR 转换的采样器。

如果将 VkPhysicalDeviceSamplerYcbcrConversionFeatures 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceSamplerYcbcrConversionFeatures 也可用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES

VkPhysicalDeviceProtectedMemoryFeatures 结构体定义如下:

// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           protectedMemory;
} VkPhysicalDeviceProtectedMemoryFeatures;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

如果将 VkPhysicalDeviceProtectedMemoryFeatures 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceProtectedMemoryFeatures 也可用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES

VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_blend_operation_advanced
typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           advancedBlendCoherentOperations;
} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • advancedBlendCoherentOperations 指定是否保证使用高级混合操作进行混合时以原子方式和图元顺序执行。如果为 VK_TRUE,则 VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT 的处理方式与 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT 相同,并且高级混合操作不需要在基本混合操作上进行额外的同步。如果为 VK_FALSE,则需要内存依赖性来保证在同一采样上发生的两个高级混合操作之间的顺序。

如果将 VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT 也可用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT

VkPhysicalDeviceConditionalRenderingFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_conditional_rendering
typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           conditionalRendering;
    VkBool32           inheritedConditionalRendering;
} VkPhysicalDeviceConditionalRenderingFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • conditionalRendering 指定是否支持条件渲染。

  • inheritedConditionalRendering 指定在主命令缓冲区中条件渲染处于活动状态时,是否可以执行辅助命令缓冲区。

如果将 VkPhysicalDeviceConditionalRenderingFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceConditionalRenderingFeaturesEXT 也可用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderDrawParameters 指定实现是否支持 SPIR-V DrawParameters 能力。如果未启用此特性,则着色器模块必须不声明 SPV_KHR_shader_draw_parameters 扩展或 DrawParameters 能力。

如果将 VkPhysicalDeviceShaderDrawParametersFeatures 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceShaderDrawParametersFeatures 也可用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderDrawParametersFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES

VkPhysicalDeviceMeshShaderFeaturesNV 结构体定义如下:

// Provided by VK_NV_mesh_shader
typedef struct VkPhysicalDeviceMeshShaderFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           taskShader;
    VkBool32           meshShader;
} VkPhysicalDeviceMeshShaderFeaturesNV;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • taskShader 指定是否支持任务着色器。如果未启用此特性,则必须不使用 VK_SHADER_STAGE_TASK_BIT_NVVK_PIPELINE_STAGE_TASK_SHADER_BIT_NV 枚举值。

  • meshShader 指定是否支持网格着色器。如果未启用此特性,则必须不使用 VK_SHADER_STAGE_MESH_BIT_NVVK_PIPELINE_STAGE_MESH_SHADER_BIT_NV 枚举值。

如果将 VkPhysicalDeviceMeshShaderFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceMeshShaderFeaturesNV 也可用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • taskShader 指定是否支持任务着色器。如果未启用此特性,则必须不使用 VK_SHADER_STAGE_TASK_BIT_EXTVK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT 枚举值。

  • meshShader 指定是否支持网格着色器。如果未启用此特性,则必须不使用 VK_SHADER_STAGE_MESH_BIT_EXTVK_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_EXTVK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT 标志的统计查询。

如果 VkPhysicalDeviceMeshShaderFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则它会被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMeshShaderFeaturesEXT 也可用VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

VkPhysicalDeviceMeshShaderFeaturesNV 结构中的相应功能必须VkPhysicalDeviceMeshShaderFeaturesEXT 中的功能匹配。

有效用法
  • VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-multiviewMeshShader-07032
    如果启用了 multiviewMeshShader,则 VkPhysicalDeviceMultiviewFeaturesKHR::multiview 也必须启用

  • VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-primitiveFragmentShadingRateMeshShader-07033
    如果启用了 primitiveFragmentShadingRateMeshShader,则 VkPhysicalDeviceFragmentShadingRateFeaturesKHR::primitiveFragmentShadingRate 也必须启用

有效用法(隐式)
  • VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT

VkPhysicalDeviceMemoryDecompressionFeaturesNV 结构定义如下:

// Provided by VK_NV_memory_decompression
typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           memoryDecompression;
} VkPhysicalDeviceMemoryDecompressionFeaturesNV;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • memoryDecompression 表示是否支持内存解压缩。

如果 VkPhysicalDeviceMemoryDecompressionFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则它会被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMemoryDecompressionFeaturesNV 也可用VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMemoryDecompressionFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的资源,当在着色器代码中聚合到数组中时,必须不通过非统一整数表达式进行索引。 这也表示着色器模块是否可以声明 UniformBufferArrayNonUniformIndexing 功能。

  • shaderSampledImageArrayNonUniformIndexing 表示采样器或采样图像的数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果未启用此功能,则描述符类型为 VK_DESCRIPTOR_TYPE_SAMPLERVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE 的资源,当在着色器代码中聚合到数组中时,必须不通过非统一整数表达式进行索引。 这也表示着色器模块是否可以声明 SampledImageArrayNonUniformIndexing 功能。

  • shaderStorageBufferArrayNonUniformIndexing 表示存储缓冲区的数组是否可以通过着色器代码中的非统一整数表达式进行索引。如果未启用此功能,则描述符类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFERVK_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_SAMPLERVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERVK_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 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceDescriptorIndexingFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDescriptorIndexingFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES

VkPhysicalDeviceCopyMemoryIndirectFeaturesNV 结构的定义如下:

// Provided by VK_NV_copy_memory_indirect
typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           indirectCopy;
} VkPhysicalDeviceCopyMemoryIndirectFeaturesNV;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • indirectCopy 指示是否支持间接复制

如果 VkPhysicalDeviceCopyMemoryIndirectFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceCopyMemoryIndirectFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCopyMemoryIndirectFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • vertexAttributeInstanceRateDivisor 指定在实例化渲染的情况下,是否可以重复顶点属性的获取。

  • vertexAttributeInstanceRateZeroDivisor 指定是否支持 VkVertexInputBindingDivisorDescriptionEXT::divisor 的零值。

如果 VkPhysicalDeviceVertexAttributeDivisorFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceVertexAttributeDivisorFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVertexAttributeDivisorFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES

VkPhysicalDeviceASTCDecodeFeaturesEXT 结构的定义如下:

// Provided by VK_EXT_astc_decode_mode
typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           decodeModeSharedExponent;
} VkPhysicalDeviceASTCDecodeFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • decodeModeSharedExponent 指示实现是否支持将 ASTC 压缩格式解码为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 内部精度。

如果 VkPhysicalDeviceASTCDecodeFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceASTCDecodeFeaturesEXT 也可VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT

VkPhysicalDeviceTransformFeedbackFeaturesEXT 结构定义如下:

// Provided by VK_EXT_transform_feedback
typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           transformFeedback;
    VkBool32           geometryStreams;
} VkPhysicalDeviceTransformFeedbackFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • transformFeedback 表示实现是否支持变换反馈,以及着色器模块可以声明 TransformFeedback 功能。

  • geometryStreams 表示实现是否支持 GeometryStreams SPIR-V 功能。

如果 VkPhysicalDeviceTransformFeedbackFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceTransformFeedbackFeaturesEXT 也可VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • vulkanMemoryModel 表示着色器模块可以声明 VulkanMemoryModel 功能。

  • vulkanMemoryModelDeviceScope 表示 Vulkan 内存模型是否可以使用 Device 范围同步。这也表示着色器模块可以声明 VulkanMemoryModelDeviceScope 功能。

  • vulkanMemoryModelAvailabilityVisibilityChains 表示 Vulkan 内存模型是否可以使用具有多个元素的可用性和可见性链

如果 VkPhysicalDeviceVulkanMemoryModelFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceVulkanMemoryModelFeaturesKHR 也可VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVulkanMemoryModelFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • inlineUniformBlock 表示实现是否支持内联统一块描述符。如果未启用此功能,则必须不使用 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK

  • descriptorBindingInlineUniformBlockUpdateAfterBind 表示实现是否支持在绑定集合后更新内联统一块描述符。如果未启用此功能,则必须不将 VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITVK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK 一起使用。

如果 VkPhysicalDeviceInlineUniformBlockFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceInlineUniformBlockFeatures 也可VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceInlineUniformBlockFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES

VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV 结构定义如下:

// Provided by VK_NV_representative_fragment_test
typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           representativeFragmentTest;
} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • representativeFragmentTest 表示实现是否支持代表性片段测试。请参阅 代表性片段测试

如果 VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV 也可VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV

VkPhysicalDeviceExclusiveScissorFeaturesNV 结构定义如下:

// Provided by VK_NV_scissor_exclusive
typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           exclusiveScissor;
} VkPhysicalDeviceExclusiveScissorFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • exclusiveScissor 表示实现是否支持独占裁剪测试。

有关更多信息,请参阅 独占裁剪测试

如果 VkPhysicalDeviceExclusiveScissorFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceExclusiveScissorFeaturesNV 也可VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV

VkPhysicalDeviceCornerSampledImageFeaturesNV 结构定义如下:

// Provided by VK_NV_corner_sampled_image
typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           cornerSampledImage;
} VkPhysicalDeviceCornerSampledImageFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • cornerSampledImage 指定是否可以使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建图像。请参阅 角采样图像

如果 VkPhysicalDeviceCornerSampledImageFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceCornerSampledImageFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • computeDerivativeGroupQuads 表示实现支持 ComputeDerivativeGroupQuadsKHR SPIR-V 功能。

  • computeDerivativeGroupLinear 表示实现支持 ComputeDerivativeGroupLinearKHR SPIR-V 功能。

有关更多信息,请参阅四边形着色器范围

如果 VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • fragmentShaderBarycentric 表示实现支持 BaryCoordKHRBaryCoordNoPerspKHR SPIR-V 片元着色器内置变量,并且支持片元着色器输入变量上的 PerVertexKHR SPIR-V 修饰符。

有关更多信息,请参阅重心插值

如果 VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR

VkPhysicalDeviceShaderImageFootprintFeaturesNV 结构体定义如下:

// Provided by VK_NV_shader_image_footprint
typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           imageFootprint;
} VkPhysicalDeviceShaderImageFootprintFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • imageFootprint 指定实现是否支持 ImageFootprintNV SPIR-V 功能。

有关更多信息,请参阅纹素足迹评估

如果 VkPhysicalDeviceShaderImageFootprintFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceShaderImageFootprintFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV

VkPhysicalDeviceShadingRateImageFeaturesNV 结构体定义如下:

// Provided by VK_NV_shading_rate_image
typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shadingRateImage;
    VkBool32           shadingRateCoarseSampleOrder;
} VkPhysicalDeviceShadingRateImageFeaturesNV;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shadingRateImage 表示实现支持使用着色率图像来导出片元处理的有效着色率。它还表示实现支持 ShadingRateNV SPIR-V 执行模式。

  • shadingRateCoarseSampleOrder 表示实现支持在一个像素以上的片元中,应用程序可配置的覆盖采样顺序。

有关更多信息,请参阅着色率图像

如果 VkPhysicalDeviceShadingRateImageFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceShadingRateImageFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV

VkPhysicalDeviceFragmentDensityMapFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_fragment_density_map
typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           fragmentDensityMap;
    VkBool32           fragmentDensityMapDynamic;
    VkBool32           fragmentDensityMapNonSubsampledImages;
} VkPhysicalDeviceFragmentDensityMapFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • fragmentDensityMap 指定实现是否支持具有片元密度图附件的渲染通道。如果未启用此特性,并且 VkRenderPassCreateInfopNext 链包含 VkRenderPassFragmentDensityMapCreateInfoEXT 结构体,则 fragmentDensityMapAttachment 必须VK_ATTACHMENT_UNUSED

  • fragmentDensityMapDynamic 指定实现是否支持动态片元密度图图像视图。如果未启用此特性,则 VkImageViewCreateInfo::flags不能包含 VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT

  • fragmentDensityMapNonSubsampledImages 指定实现是否支持具有片元密度图渲染通道的常规非子采样图像附件。如果未启用此特性,则具有片元密度图附件的渲染通道必须只绑定子采样附件

如果 VkPhysicalDeviceFragmentDensityMapFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceFragmentDensityMapFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT

VkPhysicalDeviceFragmentDensityMap2FeaturesEXT 结构定义如下:

// Provided by VK_EXT_fragment_density_map2
typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           fragmentDensityMapDeferred;
} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • fragmentDensityMapDeferred 指定了实现是否支持延迟读取片段密度图图像视图。如果未启用此功能,则 VkImageViewCreateInfo::flags必须不包含 VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT

如果 VkPhysicalDeviceFragmentDensityMap2FeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceFragmentDensityMap2FeaturesEXT 可以也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentDensityMap2FeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT

VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM 结构定义如下:

// Provided by VK_QCOM_fragment_density_map_offset
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           fragmentDensityMapOffset;
} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • fragmentDensityMapOffset 指定了实现是否支持片段密度图偏移

如果 VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM 可以也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM

VkPhysicalDeviceInvocationMaskFeaturesHUAWEI 结构定义如下:

// Provided by VK_HUAWEI_invocation_mask
typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           invocationMask;
} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • invocationMask 表示实现支持使用调用掩码图像来优化光线调度。

如果 VkPhysicalDeviceInvocationMaskFeaturesHUAWEI 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceInvocationMaskFeaturesHUAWEI 可以也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceInvocationMaskFeaturesHUAWEI-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • scalarBlockLayout 表示实现支持使用标量对齐在着色器中布局资源块。

如果 VkPhysicalDeviceScalarBlockLayoutFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceScalarBlockLayoutFeatures 可以也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceScalarBlockLayoutFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • uniformBufferStandardLayout 表示实现支持 uniform 缓冲区与存储和其他类型的缓冲区相同的布局。请参阅标准缓冲区布局

如果 VkPhysicalDeviceUniformBufferStandardLayoutFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceUniformBufferStandardLayoutFeatures 可以也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceUniformBufferStandardLayoutFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES

VkPhysicalDeviceDepthClipEnableFeaturesEXT 结构定义如下:

// Provided by VK_EXT_depth_clip_enable
typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           depthClipEnable;
} VkPhysicalDeviceDepthClipEnableFeaturesEXT;

此结构描述了以下功能

如果 VkPhysicalDeviceDepthClipEnableFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceDepthClipEnableFeaturesEXT 可以也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT

VkPhysicalDeviceMemoryPriorityFeaturesEXT 结构定义如下:

// Provided by VK_EXT_memory_priority
typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           memoryPriority;
} VkPhysicalDeviceMemoryPriorityFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • memoryPriority 表示实现支持通过 VkMemoryPriorityAllocateInfoEXT 在内存分配时指定的内存优先级。

如果 VkPhysicalDeviceMemoryPriorityFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceMemoryPriorityFeaturesEXT 可以也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • bufferDeviceAddress 表示实现支持在着色器中通过从 vkGetBufferDeviceAddress 查询的地址访问作为存储缓冲区的缓冲区内存。

  • bufferDeviceAddressCaptureReplay 表示实现支持保存和重用缓冲区和设备地址,例如用于跟踪捕获和重放。

  • bufferDeviceAddressMultiDevice 表示实现支持为使用多个物理设备创建的逻辑设备启用 bufferDeviceAddressrayTracingPipelinerayQuery 功能。如果不支持此功能,则必须不从使用多个物理设备创建的逻辑设备查询缓冲区和加速结构地址。

bufferDeviceAddressMultiDevice 的存在是为了让某些旧平台能够支持 bufferDeviceAddress,而无需为多设备配置支持共享 GPU 虚拟地址。

有关更多信息,请参阅 vkGetBufferDeviceAddress

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceBufferDeviceAddressFeatures 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceBufferDeviceAddressFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceBufferDeviceAddressFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • bufferDeviceAddress 表示实现支持通过从 vkGetBufferDeviceAddressEXT 查询的地址,在着色器中将缓冲区内存作为存储缓冲区进行访问。

  • bufferDeviceAddressCaptureReplay 表示实现支持保存和重用缓冲区地址,例如用于跟踪捕获和重放。

  • bufferDeviceAddressMultiDevice 表示实现支持为使用多个物理设备创建的逻辑设备启用 bufferDeviceAddress 功能。如果不支持此功能,则必须不在使用多个物理设备创建的逻辑设备上查询缓冲区地址。

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceBufferDeviceAddressFeaturesEXT 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceBufferDeviceAddressFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

VkPhysicalDeviceBufferDeviceAddressFeaturesEXT 结构具有与 VkPhysicalDeviceBufferDeviceAddressFeatures 结构相同的成员,但成员指示的功能表达方式不同。 VkPhysicalDeviceBufferDeviceAddressFeatures 结构指示的功能需要在内存分配时传递额外的标志,并且捕获和重放机制是围绕缓冲区和内存对象的不透明捕获地址构建的。

有效用法(隐式)
  • VUID-VkPhysicalDeviceBufferDeviceAddressFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT

VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV 结构定义如下:

// Provided by VK_NV_dedicated_allocation_image_aliasing
typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           dedicatedAllocationImageAliasing;
} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • dedicatedAllocationImageAliasing 表示实现支持在专用分配上对兼容的图像对象进行别名化处理。

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceImagelessFramebufferFeatures 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceImagelessFramebufferFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImagelessFramebufferFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES

VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT 结构定义如下:

// Provided by VK_EXT_fragment_shader_interlock
typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           fragmentShaderSampleInterlock;
    VkBool32           fragmentShaderPixelInterlock;
    VkBool32           fragmentShaderShadingRateInterlock;
} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • fragmentShaderSampleInterlock 表示实现支持 FragmentShaderSampleInterlockEXT SPIR-V 功能。

  • fragmentShaderPixelInterlock 表示实现支持 FragmentShaderPixelInterlockEXT SPIR-V 功能。

  • fragmentShaderShadingRateInterlock 表示实现支持 FragmentShaderShadingRateInterlockEXT SPIR-V 功能。

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT

VkPhysicalDeviceCooperativeMatrixFeaturesNV 结构定义如下:

// Provided by VK_NV_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           cooperativeMatrix;
    VkBool32           cooperativeMatrixRobustBufferAccess;
} VkPhysicalDeviceCooperativeMatrixFeaturesNV;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • cooperativeMatrix 表示实现支持 CooperativeMatrixNV SPIR-V 功能。

  • cooperativeMatrixRobustBufferAccess 表示实现支持 SPIR-V OpCooperativeMatrixLoadNVOpCooperativeMatrixStoreNV 指令的健壮缓冲区访问。

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceCooperativeMatrixFeaturesNV 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceCooperativeMatrixFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV

VkPhysicalDeviceCooperativeMatrixFeaturesKHR 结构的定义如下:

// Provided by VK_KHR_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           cooperativeMatrix;
    VkBool32           cooperativeMatrixRobustBufferAccess;
} VkPhysicalDeviceCooperativeMatrixFeaturesKHR;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • cooperativeMatrix 表示实现支持 CooperativeMatrixKHR SPIR-V 功能。

  • cooperativeMatrixRobustBufferAccess 表示实现支持 SPIR-V OpCooperativeMatrixLoadKHROpCooperativeMatrixStoreKHR 指令的稳健缓冲区访问。

如果 VkPhysicalDeviceCooperativeMatrixFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceCooperativeMatrixFeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCooperativeMatrixFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • cooperativeMatrixWorkgroupScope 表示实现支持工作组范围的协作矩阵。

  • cooperativeMatrixFlexibleDimensions 表示实现支持大小是 VkCooperativeMatrixFlexibleDimensionsPropertiesNV 中通告的粒度的倍数的协作矩阵。

  • cooperativeMatrixReductions 表示实现支持 CooperativeMatrixReductionsNV SPIR-V 功能。这允许对矩阵执行(行、列、2x2 或所有元素)归约。

  • cooperativeMatrixConversions 表示实现支持 CooperativeMatrixConversionsNV SPIR-V 功能。这允许将累加器矩阵转换为 A 或 B 矩阵。

  • cooperativeMatrixPerElementOperations 表示实现支持 CooperativeMatrixPerElementOperationsNV SPIR-V 功能。这允许使用回调函数对矩阵元素执行逐元素操作。

  • cooperativeMatrixTensorAddressing 表示实现支持 TensorAddressingNVCooperativeMatrixTensorAddressingNV SPIR-V 功能。这允许为矩阵加载和存储使用张量布局和张量视图类型。

  • cooperativeMatrixBlockLoads 表示实现支持 CooperativeMatrixBlockLoadsNV SPIR-V 功能。这允许为加载设置块大小,并使用回调函数解码块元素。

如果 VkPhysicalDeviceCooperativeMatrix2FeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceCooperativeMatrix2FeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCooperativeMatrix2FeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV

VkPhysicalDeviceYcbcrImageArraysFeaturesEXT 结构的定义如下:

// Provided by VK_EXT_ycbcr_image_arrays
typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           ycbcrImageArrays;
} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • ycbcrImageArrays 表示实现支持创建具有需要 Y′CBCR 转换并且具有多个数组层的格式的图像。

如果 VkPhysicalDeviceYcbcrImageArraysFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceYcbcrImageArraysFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderSubgroupExtendedTypes 是一个布尔值,指定如果实现支持这些类型,子组操作是否可以在具有 子组范围组操作中使用 8 位整数、16 位整数、64 位整数、16 位浮点数以及这些类型的向量。

如果 VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • hostQueryReset 表示实现支持使用 vkResetQueryPool 从主机重置查询。

如果 VkPhysicalDeviceHostQueryResetFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceHostQueryResetFeatures 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceHostQueryResetFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES

VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL 结构的定义如下:

// Provided by VK_INTEL_shader_integer_functions2
typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderIntegerFunctions2;
} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderIntegerFunctions2 表示实现支持 IntegerFunctions2INTEL SPIR-V 功能。

如果 VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures. 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures. 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL

VkPhysicalDeviceCoverageReductionModeFeaturesNV 结构的定义如下:

// Provided by VK_NV_coverage_reduction_mode
typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           coverageReductionMode;
} VkPhysicalDeviceCoverageReductionModeFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • coverageReductionMode 表示实现是否支持覆盖率缩减模式。请参阅覆盖率缩减

如果 VkPhysicalDeviceCoverageReductionModeFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceCoverageReductionModeFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCoverageReductionModeFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • timelineSemaphore 指示是否支持使用 VK_SEMAPHORE_TYPE_TIMELINEVkSemaphoreType 创建的信号量。

如果 VkPhysicalDeviceTimelineSemaphoreFeatures 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceTimelineSemaphoreFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceTimelineSemaphoreFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES

VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX 结构体定义如下:

// Provided by VK_QNX_external_memory_screen_buffer
typedef struct VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           screenBufferImport;
} VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;

VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX 结构体的成员描述了以下特性:

  • screenBufferImport 指示是否支持 QNX Screen 缓冲区导入功能。如果 screenBufferImportVK_TRUE,则 VkDeviceMemory 支持从应用程序导入 _screen_buffer。在这种情况下,应用程序负责 _screen_buffer 的资源管理。

表 2. QNX Screen 缓冲区特性支持的功能

特性

功能

screenBufferImport

VkImportScreenBufferInfoQNX

始终支持1

vkGetScreenBufferPropertiesQNX, VkScreenBufferPropertiesQNX, VkScreenBufferFormatPropertiesQNX, VkExternalFormatQNX

1

此行中的功能始终可用。

QNX Screen 缓冲区特性支持的功能 表总结了 VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX 结构体启用的功能。 表格主体中的每个条目总结了当支持并启用给定特性时可以使用的功能。 这总结了本规范中其他地方添加的有效使用语句。

如果 VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

如果 VkPhysicalDeviceIndexTypeUint8Features 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceIndexTypeUint8Features 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceIndexTypeUint8Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES

VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_primitive_topology_list_restart
typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           primitiveTopologyListRestart;
    VkBool32           primitiveTopologyPatchListRestart;
} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • primitiveTopologyListRestart 指示列表类型图元,VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY可以在索引缓冲区中使用图元重启索引值。

  • primitiveTopologyPatchListRestart 指示 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST 拓扑可以在索引缓冲区中使用图元重启索引值。

如果 VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT

VkPhysicalDeviceShaderSMBuiltinsFeaturesNV 结构体定义如下:

// Provided by VK_NV_shader_sm_builtins
typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderSMBuiltins;
} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderSMBuiltins 指示实现是否支持 SPIR-V ShaderSMBuiltinsNV 能力。

如果 VkPhysicalDeviceShaderSMBuiltinsFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。 VkPhysicalDeviceShaderSMBuiltinsFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderSMBuiltinsFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • separateDepthStencilLayouts 指示实现是否支持针对仅设置了 VK_IMAGE_ASPECT_DEPTH_BITVK_IMAGE_ASPECT_STENCIL_BIT 其中之一的深度/模板图像的 VkImageMemoryBarrier,以及是否可以使用 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMALVK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMALVK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMALVK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL

如果 VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES

VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR 结构定义如下:

// Provided by VK_KHR_pipeline_executable_properties
typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           pipelineExecutableInfo;
} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • pipelineExecutableInfo 指示实现支持报告与已编译管线关联的管线可执行文件的属性和统计信息。

如果 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderDemoteToHelperInvocation 指示实现是否支持 SPIR-V DemoteToHelperInvocationEXT 能力。

如果 VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES

VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT 结构定义如下:

// Provided by VK_EXT_texel_buffer_alignment
typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           texelBufferAlignment;
} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;

此结构描述了以下功能

如果 VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT

VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT 结构定义如下:

// Provided by VK_EXT_attachment_feedback_loop_dynamic_state
typedef struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           attachmentFeedbackLoopDynamicState;
} VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • attachmentFeedbackLoopDynamicState 指定是否支持动态反馈循环。

如果 VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT

VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT 结构定义如下:

// Provided by VK_EXT_legacy_vertex_attributes
typedef struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           legacyVertexAttributes;
} VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • legacyVertexAttributes 指定在使用动态顶点输入状态时是否支持顶点属性的兼容性特性。

如果 VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • textureCompressionASTC_HDR 指示是否支持所有 ASTC HDR 压缩纹理格式。如果启用了此特性,则对于以下格式,optimalTilingFeatures必须支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BITVK_FORMAT_FEATURE_BLIT_SRC_BITVK_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

      要查询其他属性,或者如果未启用此特性,则可以使用 vkGetPhysicalDeviceFormatPropertiesvkGetPhysicalDeviceImageFormatProperties 来像往常一样检查各个格式的受支持属性。

如果 VkPhysicalDeviceTextureCompressionASTCHDRFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。 VkPhysicalDeviceTextureCompressionASTCHDRFeatures 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceTextureCompressionASTCHDRFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

如果 VkPhysicalDeviceLineRasterizationFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceLineRasterizationFeatures 可以 也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceLineRasterizationFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • subgroupSizeControl 表示实现是否支持通过 VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT 标志和 VkPipelineShaderStageRequiredSubgroupSizeCreateInfo 结构控制着色器子组大小。

  • computeFullSubgroups 表示实现是否支持通过 VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT 标志要求计算、网格或任务着色器中的完整子组。

如果 VkPhysicalDeviceSubgroupSizeControlFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceSubgroupSizeControlFeatures 可以 也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

VkPhysicalDeviceSubgroupSizeControlFeaturesEXT 结构是在 VK_EXT_subgroup_size_control 扩展的第 2 版中添加的。此扩展的第 1 版实现不会填充特性结构,但如果支持该扩展,应用程序可以假设支持 subgroupSizeControlcomputeFullSubgroups。(另请参见特性要求部分。)建议应用程序向 VkDeviceCreateInfopNext 链中添加 VkPhysicalDeviceSubgroupSizeControlFeaturesEXT 结构,以便启用这些特性,而不管实现支持的扩展版本如何。如果实现仅支持第 1 版,它将安全地忽略 VkPhysicalDeviceSubgroupSizeControlFeaturesEXT 结构。

Vulkan 1.3 实现始终支持特性结构。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSubgroupSizeControlFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES

VkPhysicalDeviceCoherentMemoryFeaturesAMD 结构定义如下:

// Provided by VK_AMD_device_coherent_memory
typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           deviceCoherentMemory;
} VkPhysicalDeviceCoherentMemoryFeaturesAMD;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • deviceCoherentMemory 表示实现支持设备一致内存

如果 VkPhysicalDeviceCoherentMemoryFeaturesAMD 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceCoherentMemoryFeaturesAMD 可以 也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCoherentMemoryFeaturesAMD-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD

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;

此结构描述以下功能:

如果 VkPhysicalDeviceAccelerationStructureFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceAccelerationStructureFeaturesKHR 可以 也用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceAccelerationStructureFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • rayTracingPipeline 表示实现是否支持光线追踪管道功能。请参阅 光线追踪

  • rayTracingPipelineShaderGroupHandleCaptureReplay 指示实现是否支持保存和重用着色器组句柄,例如用于跟踪捕获和重放。

  • rayTracingPipelineShaderGroupHandleCaptureReplayMixed 指示实现是否支持重用着色器组句柄与创建不重用的着色器组句柄任意混合使用。如果此值为 VK_FALSE,则所有重用的着色器组句柄 **必须** 在创建任何不重用的句柄 **之前** 指定。

  • rayTracingPipelineTraceRaysIndirect 指示实现是否支持间接光线追踪命令,例如 vkCmdTraceRaysIndirectKHR

  • rayTraversalPrimitiveCulling 指示实现是否支持 光线遍历期间的图元剔除

如果 VkPhysicalDeviceRayTracingPipelineFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceRayTracingPipelineFeaturesKHR **也** 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法
  • VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575
    如果 rayTracingPipelineShaderGroupHandleCaptureReplayMixedVK_TRUE,则 rayTracingPipelineShaderGroupHandleCaptureReplay **必须** 也为 VK_TRUE

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-sType-sType
    sType **必须** 为 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR

VkPhysicalDeviceRayQueryFeaturesKHR 结构定义为

// Provided by VK_KHR_ray_query
typedef struct VkPhysicalDeviceRayQueryFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           rayQuery;
} VkPhysicalDeviceRayQueryFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • rayQuery 指示实现是否支持光线查询 (OpRayQueryProceedKHR) 功能。

如果 VkPhysicalDeviceRayQueryFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceRayQueryFeaturesKHR **也** 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayQueryFeaturesKHR-sType-sType
    sType **必须** 为 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR

VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR 结构定义为

// Provided by VK_KHR_ray_tracing_maintenance1
typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           rayTracingMaintenance1;
    VkBool32           rayTracingPipelineTraceRaysIndirect2;
} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • rayTracingMaintenance1 指示实现支持以下内容

    • 使用 SPV_KHR_ray_cull_mask SPIR-V 扩展的 CullMaskKHR SPIR-V 内置。

    • 额外的加速结构属性查询:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHRVK_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 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR **也** 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR-sType-sType
    sType **必须** 为 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR

VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR 结构定义为

// Provided by VK_KHR_video_encode_quantization_map
typedef struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           videoEncodeQuantizationMap;
} VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • videoEncodeQuantizationMap 指示实现是否支持 视频编码量化图

    videoEncodeQuantizationMap 的支持并不表示所有视频编码配置文件都支持量化图。对任何特定视频编码配置文件的量化图的支持取决于视频配置文件特定的功能。

如果 VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR **也** 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR-sType-sType
    sType **必须** 为 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR

VkPhysicalDeviceVideoMaintenance1FeaturesKHR 结构定义为

// Provided by VK_KHR_video_maintenance1
typedef struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           videoMaintenance1;
} VkPhysicalDeviceVideoMaintenance1FeaturesKHR;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • videoMaintenance1 指示实现支持以下内容

    • 新的缓冲区创建标志 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 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDeviceVideoMaintenance1FeaturesKHR **也** 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVideoMaintenance1FeaturesKHR-sType-sType
    sType **必须** 为 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR

VkPhysicalDeviceVideoEncodeAV1FeaturesKHR 结构定义为

// Provided by VK_KHR_video_encode_av1
typedef struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           videoEncodeAV1;
} VkPhysicalDeviceVideoEncodeAV1FeaturesKHR;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • videoEncodeAV1 指示实现是否支持 AV1 编码操作

如果 VkPhysicalDeviceVideoEncodeAV1FeaturesKHR 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它会被填充以指示每个相应的功能是否受支持。VkPhysicalDeviceVideoEncodeAV1FeaturesKHR 可以 也被用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVideoEncodeAV1FeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR

VkPhysicalDeviceExtendedDynamicStateFeaturesEXT 结构体定义如下

// Provided by VK_EXT_extended_dynamic_state
typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           extendedDynamicState;
} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它会被填充以指示每个相应的功能是否受支持。VkPhysicalDeviceExtendedDynamicStateFeaturesEXT 可以 也被用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExtendedDynamicStateFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT

VkPhysicalDeviceExtendedDynamicState2FeaturesEXT 结构体定义如下

// Provided by VK_EXT_extended_dynamic_state2
typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           extendedDynamicState2;
    VkBool32           extendedDynamicState2LogicOp;
    VkBool32           extendedDynamicState2PatchControlPoints;
} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它会被填充以指示每个相应的功能是否受支持。VkPhysicalDeviceExtendedDynamicState2FeaturesEXT 可以 也被用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExtendedDynamicState2FeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceExtendedDynamicState3FeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExtendedDynamicState3FeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT

VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV 结构定义如下

// Provided by VK_NV_device_generated_commands
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           deviceGeneratedCommands;
} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • deviceGeneratedCommands 表示该实现是否支持在设备上生成命令的功能。请参阅 设备生成命令

如果 VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • deviceGeneratedCompute 表示该实现是否支持在设备上为计算管线生成调度命令和推送常量功能。请参阅 设备生成命令

  • deviceGeneratedComputePipelines 表示该实现是否支持在设备上生成绑定计算管线的命令功能。请参阅 设备生成命令

  • deviceGeneratedComputeCaptureReplay 表示该实现是否支持捕获计算管线地址并稍后在 设备生成命令 中重放的功能。

如果 VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV

VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT 结构定义如下

// Provided by VK_EXT_device_generated_commands
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           deviceGeneratedCommands;
    VkBool32           dynamicGeneratedPipelineLayout;
} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT;

此结构描述以下功能:

如果 VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT

VkPhysicalDeviceDiagnosticsConfigFeaturesNV 结构定义如下

// Provided by VK_NV_device_diagnostics_config
typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           diagnosticsConfig;
} VkPhysicalDeviceDiagnosticsConfigFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • diagnosticsConfig 表示该实现是否支持配置诊断工具的能力。

如果 VkPhysicalDeviceDiagnosticsConfigFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDiagnosticsConfigFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDiagnosticsConfigFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV

VkPhysicalDeviceDeviceMemoryReportFeaturesEXT 结构定义如下

// Provided by VK_EXT_device_memory_report
typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           deviceMemoryReport;
} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • deviceMemoryReport 表示该实现是否支持注册设备内存报告回调的能力。

如果 VkPhysicalDeviceDeviceMemoryReportFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的功能。VkPhysicalDeviceDeviceMemoryReportFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDeviceMemoryReportFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • globalPriorityQuery 表示该实现是否支持查询全局队列优先级的能力。

如果 VkPhysicalDeviceGlobalPriorityQueryFeatures 结构体被包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceGlobalPriorityQueryFeatures 也可用VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceGlobalPriorityQueryFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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 结构体被包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDevicePipelineCreationCacheControlFeatures 也可用VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineCreationCacheControlFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderZeroInitializeWorkgroupMemory 指定该实现是否支持在 Workgroup 存储类中初始化一个变量。

如果 VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures 结构体被包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures 也可用VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • privateData 表示该实现是否支持私有数据。参见 私有数据

如果 VkPhysicalDevicePrivateDataFeatures 结构体被包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDevicePrivateDataFeatures 也可用VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePrivateDataFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES

VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR 结构体的定义如下:

// Provided by VK_KHR_shader_subgroup_uniform_control_flow
typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderSubgroupUniformControlFlow;
} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderSubgroupUniformControlFlow 指定该实现是否支持着色器执行模式 SubgroupUniformControlFlowKHR

如果 VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR 结构体被包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR 也可用VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR

VkPhysicalDeviceRobustness2FeaturesEXT 结构体的定义如下:

// Provided by VK_EXT_robustness2
typedef struct VkPhysicalDeviceRobustness2FeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           robustBufferAccess2;
    VkBool32           robustImageAccess2;
    VkBool32           nullDescriptor;
} VkPhysicalDeviceRobustness2FeaturesEXT;

此结构描述以下功能:

如果 VkPhysicalDeviceRobustness2FeaturesEXT 结构体被包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceRobustness2FeaturesEXT 也可用VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法
  • VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000
    如果启用了 robustBufferAccess2,则 robustBufferAccess 必须 也要启用

有效用法(隐式)
  • VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • robustImageAccess 指示是否对图像视图的维度进行严格的边界检查。由于超出边界的图像加载导致的无效纹素将按照纹素替换中的描述进行替换,对于缺失的 G、B 或 A 分量,将根据格式插入 (0,0,1)(0,0,0) 值。

如果 VkPhysicalDeviceImageRobustnessFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceImageRobustnessFeatures 可以 也用在 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageRobustnessFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderTerminateInvocation 指定实现是否支持使用 SPV_KHR_terminate_invocation 扩展的 SPIR-V 模块。

如果 VkPhysicalDeviceShaderTerminateInvocationFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceShaderTerminateInvocationFeatures 可以 也用在 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderTerminateInvocationFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES

VkPhysicalDeviceCustomBorderColorFeaturesEXT 结构定义如下:

// Provided by VK_EXT_custom_border_color
typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           customBorderColors;
    VkBool32           customBorderColorWithoutFormat;
} VkPhysicalDeviceCustomBorderColorFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • customBorderColors 指示实现支持在采样器创建时提供以下值的 borderColor 值之一:

    • VK_BORDER_COLOR_FLOAT_CUSTOM_EXT

    • VK_BORDER_COLOR_INT_CUSTOM_EXT

  • customBorderColorWithoutFormat 指示自定义边框颜色不需要显式格式,并且 VkSamplerCustomBorderColorCreateInfoEXT 结构的 format 成员的取值可以VK_FORMAT_UNDEFINED。如果未设置此特性位,则应用程序必须VkSamplerCustomBorderColorCreateInfoEXT 结构的 format 成员中提供此采样器采样的图像视图的 VkFormat

如果 VkPhysicalDeviceCustomBorderColorFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceCustomBorderColorFeaturesEXT 可以 也用在 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCustomBorderColorFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT

VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 结构定义如下:

// Provided by VK_EXT_border_color_swizzle
typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           borderColorSwizzle;
    VkBool32           borderColorSwizzleFromImage;
} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • borderColorSwizzle 指示在使用 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACKVK_BORDER_COLOR_INT_OPAQUE_BLACKVK_BORDER_COLOR_FLOAT_CUSTOM_EXTVK_BORDER_COLOR_INT_CUSTOM_EXT borderColor 的采样器,以及使用非单位分量映射的图像视图时,采样的图像操作返回定义的值,无论是否启用 borderColorSwizzleFromImage,或者是否指定了 VkSamplerBorderColorComponentMappingCreateInfoEXT

  • borderColorSwizzleFromImage 指示在上述条件下,当采样器不使用 VkSamplerBorderColorComponentMappingCreateInfoEXT 结构时,实现将从采样的图像操作返回正确的边框颜色值。如果未设置此特性位,则应用程序可以在创建用于不具有单位交换的图像视图的采样器时,链接一个 VkSamplerBorderColorComponentMappingCreateInfoEXT 结构,并且当这些采样器与使用相同分量映射的图像视图组合时,使用不透明黑色或自定义边框颜色的采样的图像操作将返回正确的边框颜色值。

如果 VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 可以 也用在 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceBorderColorSwizzleFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • constantAlphaColorBlendFactors 指示此实现是否支持用作源或目标颜色 混合的常量alpha 混合因子

  • events 指示此实现是否支持使用事件进行同步。

  • imageViewFormatReinterpretation 指示此实现是否支持使用包含不同数量的分量,或每个分量中不同数量的位,来创建 VkImageView ,而不是底层 VkImage 的纹素格式。

  • imageViewFormatSwizzle 指示此实现是否支持使用 VkImageViewCreateInfo::components重新映射格式分量。

  • imageView2DOn3DImage 指示此实现是否支持使用设置的 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT 标志来创建 VkImage,允许在 3D VkImage 上创建 2D 或 2D 数组图像视图。

  • multisampleArrayImage 指示此实现是否支持将 VkImage 创建为每个纹素具有多个采样的 2D 数组。

  • mutableComparisonSamplers 指示此实现是否允许更新具有比较采样器的描述符。

  • pointPolygons 表示此实现是否支持使用光栅化 多边形模式

  • samplerMipLodBias 表示此实现是否支持在创建采样器时设置mipmap LOD 偏移值

  • separateStencilMaskRef 表示此实现是否支持单独的前后模板测试参考值。

  • shaderSampleRateInterpolationFunctions 表示此实现是否支持使用 InterpolationFunction 功能以及来自 GLSL.std.450 扩展指令集的扩展指令 InterpolateAtCentroidInterpolateAtOffsetInterpolateAtSample 的片元着色器。仅当支持 sampleRateShading 功能时,此成员才有意义。

  • tessellationIsolines 表示此实现是否支持从图形管线的细分阶段输出等值线。仅当支持 tessellationShader 功能时,此成员才有意义。

  • tessellationPointMode 表示此实现是否支持从图形管线的细分阶段输出。仅当支持 tessellationShader 功能时,此成员才有意义。

  • triangleFans 表示此实现是否支持三角形扇图元拓扑。

  • vertexAttributeAccessBeyondStride 表示此实现是否支持访问超出相应顶点输入绑定的步长的顶点输入属性。

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDevicePortabilitySubsetFeaturesKHR 结构,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDevicePortabilitySubsetFeaturesKHR 也可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevicePortabilitySubsetFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR

VkPhysicalDevicePerformanceQueryFeaturesKHR 结构的定义如下:

// Provided by VK_KHR_performance_query
typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           performanceCounterQueryPools;
    VkBool32           performanceCounterMultipleQueryPools;
} VkPhysicalDevicePerformanceQueryFeaturesKHR;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • performanceCounterQueryPools 表示此实现是否支持性能计数器查询池。

  • performanceCounterMultipleQueryPools 表示此实现在主命令缓冲区及其内执行的辅助命令缓冲区中是否支持使用多个性能查询池。

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDevicePerformanceQueryFeaturesKHR 结构,则会填充该结构以指示是否支持每个相应的功能。VkPhysicalDevicePerformanceQueryFeaturesKHR 也可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevicePerformanceQueryFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR

VkPhysicalDevice4444FormatsFeaturesEXT 结构的定义如下:

// Provided by VK_EXT_4444_formats
typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           formatA4R4G4B4;
    VkBool32           formatA4B4G4R4;
} VkPhysicalDevice4444FormatsFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • formatA4R4G4B4 表示此实现必须支持使用 VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXTVkFormat,并且至少具有以下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_EXTVkFormat,并且至少具有以下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 也可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevice4444FormatsFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT

尽管由 VK_EXT_4444_formats 扩展定义的格式作为可选格式被提升为 Vulkan 1.3,但 VkPhysicalDevice4444FormatsFeaturesEXT 结构没有被提升到 Vulkan 1.3。

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • mutableDescriptorType 表示此实现必须支持使用 VK_DESCRIPTOR_TYPE_MUTABLE_EXTVkDescriptorType,并且至少具有以下描述符类型,其中必须支持这些类型的任意组合:

    • 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_BITVK_DESCRIPTOR_TYPE_MUTABLE_EXTdescriptorType 结合使用时,会将所需描述符类型的列表放宽到在 VkPhysicalDeviceDescriptorIndexingFeatures 中启用了相应更新后绑定功能的描述符类型。

    • 如果 VK_DESCRIPTOR_TYPE_MUTABLE_EXTVkMutableDescriptorTypeListEXT 中的所有描述符类型都启用了相应的动态索引特性,则必须支持动态统一描述符索引。

    • 必须支持 VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT

    • 必须支持 VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT 可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT

VkPhysicalDeviceDepthClipControlFeaturesEXT 结构的定义如下:

// Provided by VK_EXT_depth_clip_control
typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           depthClipControl;
} VkPhysicalDeviceDepthClipControlFeaturesEXT;

此结构描述了以下功能

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceDepthClipControlFeaturesEXT 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceDepthClipControlFeaturesEXT 可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDepthClipControlFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT

VkPhysicalDeviceDepthClampControlFeaturesEXT 结构的定义如下:

// Provided by VK_EXT_depth_clamp_control
typedef struct VkPhysicalDeviceDepthClampControlFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           depthClampControl;
} VkPhysicalDeviceDepthClampControlFeaturesEXT;

此结构描述了以下功能

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceDepthClampControlFeaturesEXT 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceDepthClampControlFeaturesEXT 可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDepthClampControlFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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 可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceSynchronization2Features 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceSynchronization2Features 可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSynchronization2Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES

VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT 结构的定义如下:

// Provided by VK_EXT_vertex_input_dynamic_state
typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           vertexInputDynamicState;
} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • vertexInputDynamicState 指示实现是否支持以下动态状态:

    • VK_DYNAMIC_STATE_VERTEX_INPUT_EXT

如果 VkPhysicalDeviceFeatures2 结构的 pNext 链中包含 VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT 结构,并传递给 vkGetPhysicalDeviceFeatures2,则会填充该结构以指示是否支持每个相应的特性。 VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT 可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT

VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT 结构的定义如下:

// Provided by VK_EXT_primitives_generated_query
typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           primitivesGeneratedQuery;
    VkBool32           primitivesGeneratedQueryWithRasterizerDiscard;
    VkBool32           primitivesGeneratedQueryWithNonZeroStreams;
} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • primitivesGeneratedQuery 指示实现是否支持 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询类型。

  • primitivesGeneratedQueryWithRasterizerDiscard 指示在启用光栅化丢弃时,实现是否支持此查询。

  • primitivesGeneratedQueryWithNonZeroStreams 指示在 vkCmdBeginQueryIndexedEXT 中使用非零索引时,实现是否支持此查询。

如果 VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT

VkPhysicalDeviceFragmentShadingRateFeaturesKHR 结构体定义如下:

// Provided by VK_KHR_fragment_shading_rate
typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           pipelineFragmentShadingRate;
    VkBool32           primitiveFragmentShadingRate;
    VkBool32           attachmentFragmentShadingRate;
} VkPhysicalDeviceFragmentShadingRateFeaturesKHR;

此结构描述以下功能:

如果 VkPhysicalDeviceFragmentShadingRateFeaturesKHR 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceFragmentShadingRateFeaturesKHR 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentShadingRateFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR

VkPhysicalDeviceLegacyDitheringFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_legacy_dithering
typedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           legacyDithering;
} VkPhysicalDeviceLegacyDitheringFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • legacyDithering 指示实现是否支持 传统抖动

如果 VkPhysicalDeviceLegacyDitheringFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceLegacyDitheringFeaturesEXT 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceLegacyDitheringFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • fragmentShadingRateEnums 表示实现支持使用 VkFragmentShadingRateNV 枚举类型指定片段着色率。

  • supersampleFragmentShadingRates 表示实现支持指示每个片段多次调用的片段着色率枚举值。

  • noInvocationFragmentShadingRates 表示实现支持指示在使用该着色率时不应调用任何片段着色器的片段着色率枚举值。

如果 VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV

VkPhysicalDeviceInheritedViewportScissorFeaturesNV 结构体定义如下:

// Provided by VK_NV_inherited_viewport_scissor
typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           inheritedViewportScissor2D;
} VkPhysicalDeviceInheritedViewportScissorFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • inheritedViewportScissor2D 指示二级命令缓冲区是否可以从主命令缓冲区继承受 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXTVK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXTVK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXTVK_DYNAMIC_STATE_VIEWPORTVK_DYNAMIC_STATE_SCISSOR 影响的大部分动态状态。

如果 VkPhysicalDeviceInheritedViewportScissorFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceInheritedViewportScissorFeaturesNV 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceInheritedViewportScissorFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • pipelineProtectedAccess 指示实现是否支持在单独的管线上指定受保护的访问。

如果 VkPhysicalDevicePipelineProtectedAccessFeatures 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDevicePipelineProtectedAccessFeatures 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineProtectedAccessFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES

VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_ycbcr_2plane_444_formats
typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           ycbcr2plane444Formats;
} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充此结构体以指示是否支持每个对应的特性。VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT 可以在 VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT

尽管由 VK_EXT_ycbcr_2plane_444_formats 定义的格式已作为可选格式推广到 Vulkan 1.3,但 VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT 结构体并未推广到 Vulkan 1.3。

VkPhysicalDeviceColorWriteEnableFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_color_write_enable
typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           colorWriteEnable;
} VkPhysicalDeviceColorWriteEnableFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • colorWriteEnable 表示实现支持动态状态 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT

如果 VkPhysicalDeviceColorWriteEnableFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceColorWriteEnableFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceColorWriteEnableFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT

VkPhysicalDevicePipelinePropertiesFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_pipeline_properties
typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           pipelinePropertiesIdentifier;
} VkPhysicalDevicePipelinePropertiesFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • pipelinePropertiesIdentifier 表示该实现支持查询唯一的管线标识符。

如果 VkPhysicalDevicePipelinePropertiesFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDevicePipelinePropertiesFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelinePropertiesFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT

VkPhysicalDeviceProvokingVertexFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_provoking_vertex
typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           provokingVertexLast;
    VkBool32           transformFeedbackPreservesProvokingVertex;
} VkPhysicalDeviceProvokingVertexFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • provokingVertexLast 指示该实现是否支持用于平面着色的 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT provoking vertex mode

  • transformFeedbackPreservesProvokingVertex 指示由变换反馈写入的每个图元内的顶点顺序将保留激发顶点。当 transformFeedbackPreservesTriangleFanProvokingVertexVK_FALSE 时,这不适用于三角形扇形图元。当不支持 VK_EXT_transform_feedback 扩展时,transformFeedbackPreservesProvokingVertex 必须VK_FALSE

如果 VkPhysicalDeviceProvokingVertexFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceProvokingVertexFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

VkPhysicalDeviceProvokingVertexFeaturesEXTVkDeviceCreateInfopNext 链中,但 transformFeedback 特性未启用时,transformFeedbackPreservesProvokingVertex 的值将被忽略。

有效用法(隐式)
  • VUID-VkPhysicalDeviceProvokingVertexFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • descriptorBuffer 表示该实现支持将着色器可访问的描述符直接放置在内存中。

  • descriptorBufferCaptureReplay 表示在使用描述符缓冲区时,该实现支持捕获和重放。如果此值为 VK_TRUE,则所有使用 VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTVK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTVK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTVK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTVK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT 创建的资源 必须在不带这些标志的相同类型的资源之前创建。

  • descriptorBufferImageLayoutIgnored 表示该实现在调用 vkGetDescriptorEXT 时将忽略 VkDescriptorImageInfo 中的 imageLayout

  • descriptorBufferPushDescriptors 表示该实现支持将 push descriptors 与描述符缓冲区一起使用。

如果 VkPhysicalDeviceDescriptorBufferFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceDescriptorBufferFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDescriptorBufferFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT

VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_pageable_device_local_memory
typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           pageableDeviceLocalMemory;
} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • pageableDeviceLocalMemory 指示该实现支持可分页的设备本地内存,并且 可能 透明地将设备本地内存分配移动到主机本地内存,以便更好地与其他应用程序共享设备本地内存。

如果 VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT

VkPhysicalDeviceMultiDrawFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_multi_draw
typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           multiDraw;
} VkPhysicalDeviceMultiDrawFeaturesEXT;

此结构描述以下功能:

如果 VkPhysicalDeviceMultiDrawFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceMultiDrawFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMultiDrawFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT

VkPhysicalDeviceRayTracingMotionBlurFeaturesNV 结构体定义如下:

// Provided by VK_NV_ray_tracing_motion_blur
typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           rayTracingMotionBlur;
    VkBool32           rayTracingMotionBlurPipelineTraceRaysIndirect;
} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • rayTracingMotionBlur 指示该实现是否支持运动模糊特性。

  • rayTracingMotionBlurPipelineTraceRaysIndirect 指示该实现是否支持启用运动模糊特性的间接光线追踪命令。

如果 VkPhysicalDeviceRayTracingMotionBlurFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceRayTracingMotionBlurFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingMotionBlurFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV

VkPhysicalDeviceOpacityMicromapFeaturesEXT 结构定义如下:

// Provided by VK_EXT_opacity_micromap
typedef struct VkPhysicalDeviceOpacityMicromapFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           micromap;
    VkBool32           micromapCaptureReplay;
    VkBool32           micromapHostCommands;
} VkPhysicalDeviceOpacityMicromapFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • micromap 指示实现是否支持微映射数组特性。

  • micromapCaptureReplay 指示实现是否支持微映射数组地址的捕获和重放。

  • micromapHostCommands 指示实现是否支持主机端微映射数组命令。

如果 VkPhysicalDeviceOpacityMicromapFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceOpacityMicromapFeaturesEXT 也能够VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceOpacityMicromapFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT

VkPhysicalDeviceDisplacementMicromapFeaturesNV 结构定义如下:

// Provided by VK_NV_displacement_micromap
typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           displacementMicromap;
} VkPhysicalDeviceDisplacementMicromapFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • displacementMicromap 指示实现是否支持位移微映射特性。

如果 VkPhysicalDeviceDisplacementMicromapFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceDisplacementMicromapFeaturesNV 也能够VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDisplacementMicromapFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV

VkPhysicalDeviceRayTracingValidationFeaturesNV 结构定义如下:

// Provided by VK_NV_ray_tracing_validation
typedef struct VkPhysicalDeviceRayTracingValidationFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           rayTracingValidation;
} VkPhysicalDeviceRayTracingValidationFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • rayTracingValidation 指示实现是否支持光线追踪验证特性。

如果 VkPhysicalDeviceRayTracingValidationFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceRayTracingValidationFeaturesNV 也能够VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingValidationFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV

VkPhysicalDeviceSubpassShadingFeaturesHUAWEI 结构定义如下:

// Provided by VK_HUAWEI_subpass_shading
typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           subpassShading;
} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • subpassShading 指定是否支持子通道着色。

如果 VkPhysicalDeviceSubpassShadingFeaturesHUAWEI 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceSubpassShadingFeaturesHUAWEI 也能够VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSubpassShadingFeaturesHUAWEI-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI

VkPhysicalDeviceExternalMemoryRDMAFeaturesNV 结构定义如下:

// Provided by VK_NV_external_memory_rdma
typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           externalMemoryRDMA;
} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • externalMemoryRDMA 指示实现是否支持 VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV 内存属性和 VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV 外部内存句柄类型。

如果 VkPhysicalDeviceExternalMemoryRDMAFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceExternalMemoryRDMAFeaturesNV 也能够VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExternalMemoryRDMAFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV

VkPhysicalDevicePresentIdFeaturesKHR 结构定义如下:

// Provided by VK_KHR_present_id
typedef struct VkPhysicalDevicePresentIdFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           presentId;
} VkPhysicalDevicePresentIdFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • presentId 指示实现是否支持在 VkPresentInfoKHR 结构的 VkPresentIdKHR 扩展中指定呈现 ID 值。

如果 VkPhysicalDevicePresentIdFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDevicePresentIdFeaturesKHR 也能够VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePresentIdFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR

VkPhysicalDevicePresentWaitFeaturesKHR 结构定义如下:

// Provided by VK_KHR_present_wait
typedef struct VkPhysicalDevicePresentWaitFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           presentWait;
} VkPhysicalDevicePresentWaitFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • presentWait 指示实现是否支持 vkWaitForPresentKHR

如果 VkPhysicalDevicePresentWaitFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDevicePresentWaitFeaturesKHR 也能够VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePresentWaitFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

如果 VkPhysicalDeviceHostImageCopyFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充它以指示是否支持每个对应的特性。VkPhysicalDeviceHostImageCopyFeatures 也能够VkDeviceCreateInfopNext 链中使用,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceHostImageCopyFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES

VkPhysicalDevicePresentBarrierFeaturesNV 结构体定义如下:

// Provided by VK_NV_present_barrier
typedef struct VkPhysicalDevicePresentBarrierFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           presentBarrier;
} VkPhysicalDevicePresentBarrierFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • presentBarrier 表示实现支持 present barrier 功能。

如果 VkPhysicalDevicePresentBarrierFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDevicePresentBarrierFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevicePresentBarrierFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderIntegerDotProduct 指定着色器模块是否可以声明 DotProductInputAllKHRDotProductInput4x8BitKHRDotProductInput4x8BitPackedKHRDotProductKHR 功能。

如果 VkPhysicalDeviceShaderIntegerDotProductFeatures 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceShaderIntegerDotProductFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderIntegerDotProductFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • maintenance4 表示实现支持以下功能:

    • 应用程序可以在使用 VkPipelineLayout 对象创建另一个对象后立即销毁它。

    • LocalSizeId 可以用作 LocalSize 的替代方案,以使用专用化常量指定局部工作组大小。

    • 使用相同的创建参数创建的图像将始终具有相同的对齐要求。

    • 缓冲区或图像的大小内存需求永远不会大于使用更大或相等大小创建的另一个缓冲区或图像。

    • 推送常量不必在动态访问之前初始化。

    • 接口匹配规则允许较大的输出向量与较小的输入向量匹配,并丢弃其他值。

如果 VkPhysicalDeviceMaintenance4Features 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMaintenance4Features 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance4Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • maintenance5 表示实现支持以下功能:

    • 公开可选格式 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 作为 VkImageSubresourceLayerslayerCount 成员。

    • 一个属性,指示如果 多边形模式VK_POLYGON_MODE_POINTPointSize 是否控制多边形的最终光栅化。

    • 两个属性,用于指示使用的非严格线条光栅化算法。

    • 两个新的标志字 VkPipelineCreateFlagBits2VkBufferUsageFlagBits2

    • 现在可以使用类型有效范围内的任何值(超出已定义的枚举值)来调用物理设备级函数,这样应用程序在查询特定枚举支持的属性之前可以避免检查单独的特性、扩展或版本。

    • 允许在任何类型的图像之间进行复制,其中 1D 图像被视为高度为 1 的 2D 图像。

如果 VkPhysicalDeviceMaintenance5Features 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMaintenance5Features 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance5Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

如果 VkPhysicalDeviceMaintenance6Features 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMaintenance6Features 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance6Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES

VkPhysicalDeviceMaintenance7FeaturesKHR 结构体定义如下:

// Provided by VK_KHR_maintenance7
typedef struct VkPhysicalDeviceMaintenance7FeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           maintenance7;
} VkPhysicalDeviceMaintenance7FeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • maintenance7 表示实现支持以下功能:

    • VK_RENDERING_CONTENTS_INLINE_BIT_KHRVK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR 标志可以用于在渲染通道实例中记录命令,包括动态渲染的内联命令和使用 vkCmdExecuteCommands 执行的旧式渲染通道的辅助命令缓冲区。

    • 查询通过分层实现提供的 Vulkan 实现中的底层设备的信息。这通过将 VkPhysicalDeviceLayeredApiPropertiesListKHR 链接到 VkPhysicalDeviceProperties2 来完成。

    • 新的限制,指示管道布局中可以包含的动态 uniform 缓冲区和动态存储缓冲区的最大总数。

    • 32 位时间戳查询必须在溢出时回绕。

    • 一个属性,指示片段着色率附件的大小是否太小而无法覆盖指定的渲染区域。

    • 一个属性,指示是否支持在不执行对另一个方面进行读-修改-写操作的情况下写入深度/模板附件的一个方面。

如果 VkPhysicalDeviceMaintenance7FeaturesKHR 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。VkPhysicalDeviceMaintenance7FeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance7FeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR

VkPhysicalDeviceMaintenance8FeaturesKHR 结构体定义如下:

// Provided by VK_KHR_maintenance8
typedef struct VkPhysicalDeviceMaintenance8FeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           maintenance8;
} VkPhysicalDeviceMaintenance8FeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

    • maintenance8 表示实现支持以下功能:

    • 允许在深度/模板附件和“匹配”的颜色附件之间进行复制。

    • 允许 vkMergePipelineCaches 中的 dstCache 进行隐式同步。

    • 要求在进行队列族所有权转移时,src/dst 同步范围起作用。

    • 支持纹理采样和获取操作中的 Offset (作为 ConstOffset 的替代方案) 图像操作数。

    • 使用 OpSRem 和 OpSMod 的 SPIR-V 定义,使这些操作为负操作数产生明确定义的结果。

    • 放宽从 3D 图像到其他图像类型进行 blit 操作时的图层限制。

    • 为与 VkMemoryBarrier2、VkBufferMemoryBarrier2 和 VkImageMemoryBarrier2 一起使用的额外 64 个访问标志添加空间。

如果 VkPhysicalDeviceMaintenance8FeaturesKHR 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceMaintenance8FeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance8FeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • dynamicRendering 指定实现支持使用 vkCmdBeginRendering 命令的动态渲染通道实例。

如果 VkPhysicalDeviceDynamicRenderingFeatures 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceDynamicRenderingFeatures 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDynamicRenderingFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES

VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT 结构体的定义如下:

// Provided by VK_EXT_rgba10x6_formats
typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           formatRgba10x6WithoutYCbCrSampler;
} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • formatRgba10x6WithoutYCbCrSampler 表示 VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 可以subresourceRange.aspectMask 等于 VK_IMAGE_ASPECT_COLOR_BITVkImageView 一起使用,而无需启用采样器 Y′CBCR 转换

如果 VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • pipelineRobustness 表示可以按每个管线阶段粒度请求鲁棒性。

在某些平台上,启用 pipelineRobustness 特性可能会产生轻微的性能开销,即使对于不使用任何鲁棒性特性的管线,当 robustBufferAccess 特性未启用时也是如此。如果不需要鲁棒性,应用程序不应启用 pipelineRobustness 特性。

如果 VkPhysicalDevicePipelineRobustnessFeatures 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDevicePipelineRobustnessFeatures 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineRobustnessFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES

VkPhysicalDeviceImageViewMinLodFeaturesEXT 结构体的定义如下:

// Provided by VK_EXT_image_view_min_lod
typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           minLod;
} VkPhysicalDeviceImageViewMinLodFeaturesEXT;

此结构描述了以下功能

如果 VkPhysicalDeviceImageViewMinLodFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceImageViewMinLodFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageViewMinLodFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • rasterizationOrderColorAttachmentAccess 表示实现支持对颜色和输入附件进行光栅化顺序访问。

  • rasterizationOrderDepthAttachmentAccess 表示实现支持对深度/模板和输入附件的深度方面进行光栅化顺序访问。

  • rasterizationOrderStencilAttachmentAccess 表示实现支持对深度/模板和输入附件的模板方面进行光栅化顺序访问。

如果 VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT

VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT 结构体的定义如下:

// Provided by VK_EXT_subpass_merge_feedback
typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           subpassMergeFeedback;
} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • subpassMergeFeedback 表示实现是否支持子通道合并的反馈。

如果 VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以有选择地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT

VkPhysicalDeviceLinearColorAttachmentFeaturesNV 结构体的定义如下:

// Provided by VK_NV_linear_color_attachment
typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           linearColorAttachment;
} VkPhysicalDeviceLinearColorAttachmentFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • linearColorAttachment 表示实现是否支持可渲染的 线性颜色附件

如果 VkPhysicalDeviceLinearColorAttachmentFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceLinearColorAttachmentFeaturesNV 可以用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceLinearColorAttachmentFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV

VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT 结构定义如下:

// Provided by VK_EXT_attachment_feedback_loop_layout
typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           attachmentFeedbackLoopLayout;
} VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • attachmentFeedbackLoopLayout 指示实现是否支持将 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局用于使用 VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT 创建的图像。

有效用法(隐式)
  • VUID-VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT

VkPhysicalDeviceNestedCommandBufferFeaturesEXT 结构定义如下:

// Provided by VK_EXT_nested_command_buffer
typedef struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           nestedCommandBuffer;
    VkBool32           nestedCommandBufferRendering;
    VkBool32           nestedCommandBufferSimultaneousUse;
} VkPhysicalDeviceNestedCommandBufferFeaturesEXT;

此结构描述以下功能:

  • nestedCommandBuffer 指示实现是否支持嵌套的命令缓冲区,这允许二级命令缓冲区执行其他二级命令缓冲区

  • nestedCommandBufferRendering 指示在以 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT 记录的二级命令缓冲区内调用 vkCmdExecuteCommands 是有效的。

  • nestedCommandBufferSimultaneousUse 指示实现是否支持使用以 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT 记录的命令缓冲区的嵌套命令缓冲区。

如果 VkPhysicalDeviceNestedCommandBufferFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceNestedCommandBufferFeaturesEXT 可以用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceNestedCommandBufferFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT

VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT 结构定义如下:

// Provided by VK_EXT_graphics_pipeline_library
typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           graphicsPipelineLibrary;
} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • graphicsPipelineLibrary 指示实现是否支持图形管线库

如果 VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT 可以用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT

VkPhysicalDevicePipelineBinaryFeaturesKHR 结构定义如下:

// Provided by VK_KHR_pipeline_binary
typedef struct VkPhysicalDevicePipelineBinaryFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           pipelineBinaries;
} VkPhysicalDevicePipelineBinaryFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • pipelineBinaries 指示实现是否支持管线二进制文件

如果 VkPhysicalDevicePipelineBinaryFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDevicePipelineBinaryFeaturesKHR 可以用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineBinaryFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR

VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT 结构定义如下:

// Provided by VK_EXT_multisampled_render_to_single_sampled
typedef struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           multisampledRenderToSingleSampled;
} VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • multisampledRenderToSingleSampled 指示实现是否支持多采样渲染到单采样渲染过程附件。

如果 VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT 可以用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT

VkPhysicalDeviceImage2DViewOf3DFeaturesEXT 结构定义如下:

// Provided by VK_EXT_image_2d_view_of_3d
typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           image2DViewOf3D;
    VkBool32           sampler2DViewOf3D;
} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • 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_IMAGEVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER 类型的描述符中使用 3D 图像的 2D 视图。

如果 VkPhysicalDeviceImage2DViewOf3DFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。VkPhysicalDeviceImage2DViewOf3DFeaturesEXT 可以用在 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImage2DViewOf3DFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT

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 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT

VkPhysicalDeviceImageCompressionControlFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_image_compression_control
typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           imageCompressionControl;
} VkPhysicalDeviceImageCompressionControlFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • imageCompressionControl 表示实现支持在图像创建时提供图像压缩的控制。

如果 VkPhysicalDeviceImageCompressionControlFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceImageCompressionControlFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageCompressionControlFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT

VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_image_compression_control_swapchain
typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           imageCompressionControlSwapchain;
} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • imageCompressionControlSwapchain 表示实现支持每个交换链控制图像控制,并查询每个表面的图像压缩属性。

如果 VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT

VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR 结构体定义如下:

// Provided by VK_KHR_ray_tracing_position_fetch
typedef struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           rayTracingPositionFetch;
} VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • rayTracingPositionFetch 表示实现支持获取命中三角形的物体空间顶点位置。

如果 VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderFloatControls2 指定着色器模块是否可以声明 FloatControls2 功能。

如果 VkPhysicalDeviceShaderFloatControls2Features 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderFloatControls2Features 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderFloatControls2Features-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES

VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD 结构体定义如下:

// Provided by VK_AMD_shader_early_and_late_fragment_tests
typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderEarlyAndLateFragmentTests;
} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderEarlyAndLateFragmentTests 表示实现是否支持 EarlyAndLateFragmentTestsAMD Execution Mode

如果 VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD

VkPhysicalDeviceAntiLagFeaturesAMD 结构体定义如下:

// Provided by VK_AMD_anti_lag
typedef struct VkPhysicalDeviceAntiLagFeaturesAMD {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           antiLag;
} VkPhysicalDeviceAntiLagFeaturesAMD;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • antiLag 表示实现是否支持 AMD Radeon™ Anti-Lag 功能。antiLag 特性仅支持单个 GPU,如果 VkDeviceGroupDeviceCreateInfo::physicalDeviceCount 大于 1,则必须禁用此功能。

如果 VkPhysicalDeviceAntiLagFeaturesAMD 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceAntiLagFeaturesAMD 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceAntiLagFeaturesAMD-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD

VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_non_seamless_cube_map
typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           nonSeamlessCubeMap;
} VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • nonSeamlessCubeMap 表示实现支持 VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT

如果 VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT

VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_shader_module_identifier
typedef struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderModuleIdentifier;
} VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderModuleIdentifier 表示实现是否支持查询 VkShaderModuleVkShaderModuleCreateInfo 结构的标识符,以及仅从标识符创建管线。

如果 VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT

VkPhysicalDeviceTilePropertiesFeaturesQCOM 结构定义如下:

// Provided by VK_QCOM_tile_properties
typedef struct VkPhysicalDeviceTilePropertiesFeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           tileProperties;
} VkPhysicalDeviceTilePropertiesFeaturesQCOM;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • tileProperties 表示该实现支持查询以返回图块属性。

如果 VkPhysicalDeviceTilePropertiesFeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceTilePropertiesFeaturesQCOM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceTilePropertiesFeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM

VkPhysicalDeviceImageProcessingFeaturesQCOM 结构定义如下:

// Provided by VK_QCOM_image_processing
typedef struct VkPhysicalDeviceImageProcessingFeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           textureSampleWeighted;
    VkBool32           textureBoxFilter;
    VkBool32           textureBlockMatch;
} VkPhysicalDeviceImageProcessingFeaturesQCOM;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • textureSampleWeighted 表示该实现支持声明了 TextureSampleWeightedQCOM 功能的着色器模块。

  • textureBoxFilter 表示该实现支持声明了 TextureBoxFilterQCOM 功能的着色器模块。

  • textureBlockMatch 表示该实现支持声明了 TextureBlockMatchQCOM 功能的着色器模块。

如果 VkPhysicalDeviceImageProcessingFeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceImageProcessingFeaturesQCOM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageProcessingFeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM

VkPhysicalDeviceImageProcessing2FeaturesQCOM 结构定义如下:

// Provided by VK_QCOM_image_processing2
typedef struct VkPhysicalDeviceImageProcessing2FeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           textureBlockMatch2;
} VkPhysicalDeviceImageProcessing2FeaturesQCOM;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • textureBlockMatch2 表示该实现支持声明了 TextureBlockMatch2QCOM 功能的着色器模块。

如果 VkPhysicalDeviceImageProcessing2FeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceImageProcessing2FeaturesQCOM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageProcessing2FeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • depthClampZeroOne 表示该实现支持将深度钳制到 01 的范围。

如果 VkPhysicalDeviceDepthClampZeroOneFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceDepthClampZeroOneFeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDepthClampZeroOneFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderTileImageColorReadAccess 表示该实现支持 TileImageColorReadAccessEXT SPIR-V 功能。

  • shaderTileImageDepthReadAccess 表示该实现支持 TileImageDepthReadAccessEXT SPIR-V 功能。

  • shaderTileImageStencilReadAccess 表示该实现支持 TileImageStencilReadAccessEXT SPIR-V 功能。

如果 VkPhysicalDeviceShaderTileImageFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceShaderTileImageFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderTileImageFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • depthBiasControl 表示该实现是否支持 vkCmdSetDepthBias2EXT 命令和 VkDepthBiasRepresentationInfoEXT 结构。

  • leastRepresentableValueForceUnormRepresentation 表示该实现是否支持使用 VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT 深度偏差表示。

  • floatRepresentation 表示该实现是否支持使用 VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT 深度偏差表示。

  • depthBiasExact 表示该实现是否支持强制深度偏差不被缩放,以确保使用 VkDepthBiasRepresentationInfoEXT::depthBiasExact 的最小可分辨差异。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDepthBiasControlFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT

VkPhysicalDeviceAddressBindingReportFeaturesEXT 结构定义如下:

// Provided by VK_EXT_device_address_binding_report
typedef struct VkPhysicalDeviceAddressBindingReportFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           reportAddressBinding;
} VkPhysicalDeviceAddressBindingReportFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • reportAddressBinding 表示此实现是否支持报告 GPU 虚拟地址范围到 Vulkan 对象的绑定。

如果 VkPhysicalDeviceAddressBindingReportFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceAddressBindingReportFeaturesEXT 可以 也被用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceAddressBindingReportFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT

VkPhysicalDeviceOpticalFlowFeaturesNV 结构体定义如下:

// Provided by VK_NV_optical_flow
typedef struct VkPhysicalDeviceOpticalFlowFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           opticalFlow;
} VkPhysicalDeviceOpticalFlowFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • opticalFlow 指示实现是否支持光流。

如果 VkPhysicalDeviceOpticalFlowFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceOpticalFlowFeaturesNV 可以 也被用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceOpticalFlowFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV

VkPhysicalDeviceFaultFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_device_fault
typedef struct VkPhysicalDeviceFaultFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           deviceFault;
    VkBool32           deviceFaultVendorBinary;
} VkPhysicalDeviceFaultFeaturesEXT;

VkPhysicalDeviceFaultFeaturesEXT 结构体的成员描述了以下功能:

  • deviceFault 指示实现是否支持设备故障信息的报告。

  • deviceFaultVendorBinary 指示实现是否支持生成供应商特定的二进制崩溃转储。当导入到供应商特定的外部工具中时,这些转储可以提供额外的信息。

如果 VkPhysicalDeviceFaultFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceFaultFeaturesEXT 可以 也被用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFaultFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT

VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_pipeline_library_group_handles
typedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           pipelineLibraryGroupHandles;
} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;

此结构描述以下功能:

  • pipelineLibraryGroupHandles 指示实现是否支持直接从光线追踪管线库查询组句柄,并保证当这些库链接到其他管线时,组句柄是按位相同的。

如果 VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT 可以 也被用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT

VkPhysicalDeviceShaderObjectFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_shader_object
typedef struct VkPhysicalDeviceShaderObjectFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderObject;
} VkPhysicalDeviceShaderObjectFeaturesEXT;

此结构描述了以下功能

如果 VkPhysicalDeviceShaderObjectFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceShaderObjectFeaturesEXT 可以 也被用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderObjectFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT

VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM 结构体定义如下:

// Provided by VK_ARM_shader_core_builtins
typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderCoreBuiltins;
} VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderCoreBuiltins 指示实现是否支持 SPIR-V CoreBuiltinsARM 功能。

如果 VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM 可以 也被用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM

VkPhysicalDeviceFrameBoundaryFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_frame_boundary
typedef struct VkPhysicalDeviceFrameBoundaryFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           frameBoundary;
} VkPhysicalDeviceFrameBoundaryFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • frameBoundary 指示实现是否支持帧边界信息。

如果 VkPhysicalDeviceFrameBoundaryFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个相应的功能。 VkPhysicalDeviceFrameBoundaryFeaturesEXT 可以 也被用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFrameBoundaryFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT

VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT 结构体定义如下:

// Provided by VK_EXT_swapchain_maintenance1
typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           swapchainMaintenance1;
} VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;

此结构描述了以下功能

如果 VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT

VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_present_mode_fifo_latest_ready
typedef struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           presentModeFifoLatestReady;
} VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • presentModeFifoLatestReady 指定实现是否支持 VK_PRESENT_MODE_FIFO_LATEST_READY_EXT 显示模式。

如果 VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT

VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT 结构体定义如下:

// Provided by VK_EXT_dynamic_rendering_unused_attachments
typedef struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           dynamicRenderingUnusedAttachments;
} VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;

此结构描述了以下功能

如果 VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT

VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV 结构体定义如下:

// Provided by VK_NV_ray_tracing_invocation_reorder
typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           rayTracingInvocationReorder;
} VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • rayTracingInvocationReorder 表示实现支持 SPV_NV_shader_invocation_reorder

如果 VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV

VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV 结构体定义如下:

// Provided by VK_NV_extended_sparse_address_space
typedef struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           extendedSparseAddressSpace;
} VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;

此结构描述了以下功能

如果 VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,则会填充该结构体以指示是否支持每个对应的特性。 VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV

VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM 结构体定义如下:

// Provided by VK_QCOM_multiview_per_view_viewports
typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           multiviewPerViewViewports;
} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;

此结构描述以下功能:

  • multiviewPerViewViewports 表示该实现支持每个视图的多视口。

如果 VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM

VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM 结构定义如下:

// Provided by VK_QCOM_multiview_per_view_render_areas
typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           multiviewPerViewRenderAreas;
} VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;

此结构描述以下功能:

  • multiviewPerViewRenderAreas 表示该实现支持每个视图的多视口渲染区域。

如果 VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM

VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 结构定义如下:

// Provided by VK_HUAWEI_cluster_culling_shader
typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           clustercullingShader;
    VkBool32           multiviewClusterCullingShader;
} VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • clustercullingShader 指定是否支持集群剔除着色器。

  • multiviewClusterCullingShader 指定是否支持多视图。

如果 VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI

要查询集群剔除着色器是否支持每个集群的着色率特性,请将 VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI 结构包含在 VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 结构的 pNext 链中。此结构定义如下:

// Provided by VK_HUAWEI_cluster_culling_shader
typedef struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           clusterShadingRate;
} VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • clusterShadingRate 指定是否支持每个集群的着色率。

有效用法(隐式)
  • VUID-VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI

VkPhysicalDeviceHdrVividFeaturesHUAWEI 结构定义如下:

// Provided by VK_HUAWEI_hdr_vivid
typedef struct VkPhysicalDeviceHdrVividFeaturesHUAWEI {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           hdrVivid;
} VkPhysicalDeviceHdrVividFeaturesHUAWEI;
  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • hdrVivid 指定是否支持 HDR Vivid 元数据。

如果 VkPhysicalDeviceHdrVividFeaturesHUAWEI 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceHdrVividFeaturesHUAWEI 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceHdrVividFeaturesHUAWEI-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI

VkPhysicalDeviceShaderEnqueueFeaturesAMDX 结构定义如下:

// Provided by VK_AMDX_shader_enqueue
typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderEnqueue;
    VkBool32           shaderMeshEnqueue;
} VkPhysicalDeviceShaderEnqueueFeaturesAMDX;

此结构描述了以下功能

如果 VkPhysicalDeviceShaderEnqueueFeaturesAMDX 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceShaderEnqueueFeaturesAMDX 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderEnqueueFeaturesAMDX-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX

VkPhysicalDeviceCubicClampFeaturesQCOM 结构定义如下:

// Provided by VK_QCOM_filter_cubic_clamp
typedef struct VkPhysicalDeviceCubicClampFeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           cubicRangeClamp;
} VkPhysicalDeviceCubicClampFeaturesQCOM;

此结构描述以下功能:

如果 VkPhysicalDeviceCubicClampFeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceCubicClampFeaturesQCOM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCubicClampFeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM

VkPhysicalDeviceYcbcrDegammaFeaturesQCOM 结构定义如下:

// Provided by VK_QCOM_ycbcr_degamma
typedef struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           ycbcrDegamma;
} VkPhysicalDeviceYcbcrDegammaFeaturesQCOM;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • ycbcrDegamma 表示该实现是否支持Y′CBCR 反伽马

如果 VkPhysicalDeviceYcbcrDegammaFeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceYcbcrDegammaFeaturesQCOM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceYcbcrDegammaFeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM

VkPhysicalDeviceCubicWeightsFeaturesQCOM 结构定义如下:

// Provided by VK_QCOM_filter_cubic_weights
typedef struct VkPhysicalDeviceCubicWeightsFeaturesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           selectableCubicWeights;
} VkPhysicalDeviceCubicWeightsFeaturesQCOM;

此结构描述了以下功能

  • selectableCubicWeights 表示该实现支持选择滤镜立方权重。

如果 VkPhysicalDeviceCubicWeightsFeaturesQCOM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的特性。VkPhysicalDeviceCubicWeightsFeaturesQCOM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCubicWeightsFeaturesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM

VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV 结构体定义如下:

// Provided by VK_NV_descriptor_pool_overallocation
typedef struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           descriptorPoolOverallocation;
} VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • descriptorPoolOverallocation 表示实现允许应用程序通过使用 VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV 和/或 VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV 标志创建描述符池来选择加入描述符池的过度分配。

如果 VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV

VkPhysicalDevicePerStageDescriptorSetFeaturesNV 结构体定义如下:

// Provided by VK_NV_per_stage_descriptor_set
typedef struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           perStageDescriptorSet;
    VkBool32           dynamicPipelineLayout;
} VkPhysicalDevicePerStageDescriptorSetFeaturesNV;

此结构描述了以下功能

如果 VkPhysicalDevicePerStageDescriptorSetFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDevicePerStageDescriptorSetFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePerStageDescriptorSetFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV

VkPhysicalDeviceCudaKernelLaunchFeaturesNV 结构体定义如下:

// Provided by VK_NV_cuda_kernel_launch
typedef struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           cudaKernelLaunchFeatures;
} VkPhysicalDeviceCudaKernelLaunchFeaturesNV;

此结构描述以下功能:

  • 如果支持 CUDA 内核启动,则 cudaKernelLaunchFeatures 为非零值。

如果 VkPhysicalDeviceCudaKernelLaunchFeaturesNV 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceCudaKernelLaunchFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCudaKernelLaunchFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV

VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR 结构体定义如下:

// Provided by VK_KHR_shader_maximal_reconvergence
typedef struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderMaximalReconvergence;
} VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderMaximalReconvergence 指定实现是否支持着色器执行模式 MaximallyReconvergesKHR

如果 VkPhysicalDevicePrivateDataFeaturesEXT 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDevicePrivateDataFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR

VkPhysicalDeviceExternalFormatResolveFeaturesANDROID 结构体定义如下:

// Provided by VK_ANDROID_external_format_resolve
typedef struct VkPhysicalDeviceExternalFormatResolveFeaturesANDROID {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           externalFormatResolve;
} VkPhysicalDeviceExternalFormatResolveFeaturesANDROID;
  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • externalFormatResolve 指定是否支持外部格式解析。

如果 VkPhysicalDeviceExternalFormatResolveFeaturesANDROID 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceExternalFormatResolveFeaturesANDROID 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExternalFormatResolveFeaturesANDROID-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID

VkPhysicalDeviceSchedulingControlsFeaturesARM 结构体定义如下:

// Provided by VK_ARM_scheduling_controls
typedef struct VkPhysicalDeviceSchedulingControlsFeaturesARM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           schedulingControls;
} VkPhysicalDeviceSchedulingControlsFeaturesARM;

此结构描述以下功能:

  • schedulingControls 表示实现支持调度控制。

如果 VkPhysicalDeviceSchedulingControlsFeaturesARM 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceSchedulingControlsFeaturesARM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSchedulingControlsFeaturesARM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM

VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG 结构体定义如下:

// Provided by VK_IMG_relaxed_line_rasterization
typedef struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           relaxedLineRasterization;
} VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • relaxedLineRasterization 表示实现支持宽松的线光栅化控制。

如果 VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG 结构体包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构体的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG

VkPhysicalDeviceRenderPassStripedFeaturesARM 结构体定义如下:

// Provided by VK_ARM_render_pass_striped
typedef struct VkPhysicalDeviceRenderPassStripedFeaturesARM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           renderPassStriped;
} VkPhysicalDeviceRenderPassStripedFeaturesARM;

VkPhysicalDeviceRenderPassStripedFeaturesARM 结构的成员描述了以下特性:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • renderPassStriped 表示实现支持条纹渲染。

如果 VkPhysicalDeviceRenderPassStripedFeaturesARM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceRenderPassStripedFeaturesARM 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRenderPassStripedFeaturesARM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderSubgroupRotate 指定着色器模块是否可以声明 GroupNonUniformRotateKHR 功能。

  • shaderSubgroupRotateClustered 指定着色器模块是否可以使用 ClusterSize 操作数执行 OpGroupNonUniformRotateKHR

如果 VkPhysicalDeviceShaderSubgroupRotateFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderSubgroupRotateFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderSubgroupRotateFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderExpectAssume 指定着色器模块是否可以声明 ExpectAssumeKHR 功能。

如果 VkPhysicalDeviceShaderExpectAssumeFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderExpectAssumeFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderExpectAssumeFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES

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 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • dynamicRenderingLocalRead 指定实现支持使用 vkCmdBeginRendering 命令在动态渲染通道实例内部进行本地读取。

如果 VkPhysicalDeviceDynamicRenderingLocalReadFeatures 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceDynamicRenderingLocalReadFeatures 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDynamicRenderingLocalReadFeatures-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES

VkPhysicalDeviceShaderQuadControlFeaturesKHR 结构定义如下:

// Provided by VK_KHR_shader_quad_control
typedef struct VkPhysicalDeviceShaderQuadControlFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderQuadControl;
} VkPhysicalDeviceShaderQuadControlFeaturesKHR;

此结构描述以下功能:

  • shaderQuadControl 指示实现是否支持具有 QuadControlKHR 功能的着色器。

如果 VkPhysicalDeviceShaderQuadControlFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderQuadControlFeaturesKHR 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderQuadControlFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR

VkPhysicalDeviceMapMemoryPlacedFeaturesEXT 结构定义如下:

// Provided by VK_EXT_map_memory_placed
typedef struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           memoryMapPlaced;
    VkBool32           memoryMapRangePlaced;
    VkBool32           memoryUnmapReserve;
} VkPhysicalDeviceMapMemoryPlacedFeaturesEXT;

此结构描述以下功能:

  • memoryMapPlaced 表示实现支持将内存映射放置在应用程序指定的虚拟地址处。

  • memoryMapRangePlaced 表示实现支持将内存对象的子范围的内存映射放置在应用程序指定的虚拟地址处。

  • memoryUnmapReserve 表示实现支持在取消映射内存对象时保留内存范围。

如果 VkPhysicalDeviceMapMemoryPlacedFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceMapMemoryPlacedFeaturesEXT 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMapMemoryPlacedFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT

// Provided by VK_NV_shader_atomic_float16_vector
typedef struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderFloat16VectorAtomics;
} VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderFloat16VectorAtomics 指示着色器是否可以执行 16 位浮点、2 分量和 4 分量向量原子操作。

如果 VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,它将被填充以指示是否支持每个对应的特性。VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV 可以用于 VkDeviceCreateInfopNext 链中,以选择性地启用这些特性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV

// Provided by VK_ARM_pipeline_opacity_micromap
typedef struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           pipelineOpacityMicromap;
} VkPhysicalDevicePipelineOpacityMicromapFeaturesARM;

此结构描述以下功能:

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • pipelineOpacityMicromap 表示管线是否可以声明它是否可以与引用不透明度微型映射的加速结构一起使用。

如果 VkPhysicalDevicePipelineOpacityMicromapFeaturesARM 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDevicePipelineOpacityMicromapFeaturesARM可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineOpacityMicromapFeaturesARM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM

// Provided by VK_NV_raw_access_chains
typedef struct VkPhysicalDeviceRawAccessChainsFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderRawAccessChains;
} VkPhysicalDeviceRawAccessChainsFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderRawAccessChains 指定着色器模块是否可以声明 RawAccessChainsNV 功能。

如果 VkPhysicalDeviceRawAccessChainsFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceRawAccessChainsFeaturesNV可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRawAccessChainsFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV

// Provided by VK_NV_command_buffer_inheritance
typedef struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           commandBufferInheritance;
} VkPhysicalDeviceCommandBufferInheritanceFeaturesNV;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • commandBufferInheritance 表示在队列中执行的命令缓冲区会从该队列中先前执行的命令缓冲区继承图形和计算状态。

如果 VkPhysicalDeviceCommandBufferInheritanceFeaturesNV 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceCommandBufferInheritanceFeaturesNV可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCommandBufferInheritanceFeaturesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV

// Provided by VK_MESA_image_alignment_control
typedef struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           imageAlignmentControl;
} VkPhysicalDeviceImageAlignmentControlFeaturesMESA;

此结构描述了以下功能

如果 VkPhysicalDeviceImageAlignmentControlFeaturesMESA 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceImageAlignmentControlFeaturesMESA可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageAlignmentControlFeaturesMESA-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA

// Provided by VK_EXT_shader_replicated_composites
typedef struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderReplicatedComposites;
} VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderReplicatedComposites 指定着色器模块是否可以声明 ReplicatedCompositesEXT 功能。

如果 VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT

// Provided by VK_KHR_shader_relaxed_extended_instruction
typedef struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           shaderRelaxedExtendedInstruction;
} VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • shaderRelaxedExtendedInstruction 指定实现是否支持使用 SPV_KHR_relaxed_extended_instruction 扩展的 SPIR-V 模块。

如果 VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR

// Provided by VK_EXT_vertex_attribute_robustness
typedef struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           vertexAttributeRobustness;
} VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT;

此结构描述了以下功能

  • sType 是一个 VkStructureType 值,用于标识此结构。

  • pNextNULL 或指向扩展此结构的结构的指针。

  • vertexAttributeRobustness 表示顶点着色器可以读取没有顶点属性描述的顶点属性位置,并且返回的值为 (0,0,0,0) 或 (0,0,0,1)。

如果 VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT 结构包含在传递给 vkGetPhysicalDeviceFeatures2VkPhysicalDeviceFeatures2 结构的 pNext 链中,则会填充该结构以指示是否支持每个对应的功能。 VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT可以VkDeviceCreateInfopNext 链中使用,以选择性地启用这些功能。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT

功能要求

所有 Vulkan 图形实现必须支持以下功能

规范中定义的所有其他功能都是可选的

配置文件功能