限制

限制是实现相关的最小值、最大值和其他设备特性,应用程序可能需要了解这些特性。

限制通过基本的 VkPhysicalDeviceLimits 结构以及可扩展结构 VkPhysicalDeviceProperties2 报告,后者在 VK_KHR_get_physical_device_properties2 中添加并包含在 Vulkan 1.1 中。当在未来的 Vulkan 版本或扩展中添加限制时,如果需要,每个扩展应该引入一个新的限制结构。此结构可以添加到 VkPhysicalDeviceProperties2 结构的 pNext 链中。

VkPhysicalDeviceLimits 结构定义为

// Provided by VK_VERSION_1_0
typedef struct VkPhysicalDeviceLimits {
    uint32_t              maxImageDimension1D;
    uint32_t              maxImageDimension2D;
    uint32_t              maxImageDimension3D;
    uint32_t              maxImageDimensionCube;
    uint32_t              maxImageArrayLayers;
    uint32_t              maxTexelBufferElements;
    uint32_t              maxUniformBufferRange;
    uint32_t              maxStorageBufferRange;
    uint32_t              maxPushConstantsSize;
    uint32_t              maxMemoryAllocationCount;
    uint32_t              maxSamplerAllocationCount;
    VkDeviceSize          bufferImageGranularity;
    VkDeviceSize          sparseAddressSpaceSize;
    uint32_t              maxBoundDescriptorSets;
    uint32_t              maxPerStageDescriptorSamplers;
    uint32_t              maxPerStageDescriptorUniformBuffers;
    uint32_t              maxPerStageDescriptorStorageBuffers;
    uint32_t              maxPerStageDescriptorSampledImages;
    uint32_t              maxPerStageDescriptorStorageImages;
    uint32_t              maxPerStageDescriptorInputAttachments;
    uint32_t              maxPerStageResources;
    uint32_t              maxDescriptorSetSamplers;
    uint32_t              maxDescriptorSetUniformBuffers;
    uint32_t              maxDescriptorSetUniformBuffersDynamic;
    uint32_t              maxDescriptorSetStorageBuffers;
    uint32_t              maxDescriptorSetStorageBuffersDynamic;
    uint32_t              maxDescriptorSetSampledImages;
    uint32_t              maxDescriptorSetStorageImages;
    uint32_t              maxDescriptorSetInputAttachments;
    uint32_t              maxVertexInputAttributes;
    uint32_t              maxVertexInputBindings;
    uint32_t              maxVertexInputAttributeOffset;
    uint32_t              maxVertexInputBindingStride;
    uint32_t              maxVertexOutputComponents;
    uint32_t              maxTessellationGenerationLevel;
    uint32_t              maxTessellationPatchSize;
    uint32_t              maxTessellationControlPerVertexInputComponents;
    uint32_t              maxTessellationControlPerVertexOutputComponents;
    uint32_t              maxTessellationControlPerPatchOutputComponents;
    uint32_t              maxTessellationControlTotalOutputComponents;
    uint32_t              maxTessellationEvaluationInputComponents;
    uint32_t              maxTessellationEvaluationOutputComponents;
    uint32_t              maxGeometryShaderInvocations;
    uint32_t              maxGeometryInputComponents;
    uint32_t              maxGeometryOutputComponents;
    uint32_t              maxGeometryOutputVertices;
    uint32_t              maxGeometryTotalOutputComponents;
    uint32_t              maxFragmentInputComponents;
    uint32_t              maxFragmentOutputAttachments;
    uint32_t              maxFragmentDualSrcAttachments;
    uint32_t              maxFragmentCombinedOutputResources;
    uint32_t              maxComputeSharedMemorySize;
    uint32_t              maxComputeWorkGroupCount[3];
    uint32_t              maxComputeWorkGroupInvocations;
    uint32_t              maxComputeWorkGroupSize[3];
    uint32_t              subPixelPrecisionBits;
    uint32_t              subTexelPrecisionBits;
    uint32_t              mipmapPrecisionBits;
    uint32_t              maxDrawIndexedIndexValue;
    uint32_t              maxDrawIndirectCount;
    float                 maxSamplerLodBias;
    float                 maxSamplerAnisotropy;
    uint32_t              maxViewports;
    uint32_t              maxViewportDimensions[2];
    float                 viewportBoundsRange[2];
    uint32_t              viewportSubPixelBits;
    size_t                minMemoryMapAlignment;
    VkDeviceSize          minTexelBufferOffsetAlignment;
    VkDeviceSize          minUniformBufferOffsetAlignment;
    VkDeviceSize          minStorageBufferOffsetAlignment;
    int32_t               minTexelOffset;
    uint32_t              maxTexelOffset;
    int32_t               minTexelGatherOffset;
    uint32_t              maxTexelGatherOffset;
    float                 minInterpolationOffset;
    float                 maxInterpolationOffset;
    uint32_t              subPixelInterpolationOffsetBits;
    uint32_t              maxFramebufferWidth;
    uint32_t              maxFramebufferHeight;
    uint32_t              maxFramebufferLayers;
    VkSampleCountFlags    framebufferColorSampleCounts;
    VkSampleCountFlags    framebufferDepthSampleCounts;
    VkSampleCountFlags    framebufferStencilSampleCounts;
    VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
    uint32_t              maxColorAttachments;
    VkSampleCountFlags    sampledImageColorSampleCounts;
    VkSampleCountFlags    sampledImageIntegerSampleCounts;
    VkSampleCountFlags    sampledImageDepthSampleCounts;
    VkSampleCountFlags    sampledImageStencilSampleCounts;
    VkSampleCountFlags    storageImageSampleCounts;
    uint32_t              maxSampleMaskWords;
    VkBool32              timestampComputeAndGraphics;
    float                 timestampPeriod;
    uint32_t              maxClipDistances;
    uint32_t              maxCullDistances;
    uint32_t              maxCombinedClipAndCullDistances;
    uint32_t              discreteQueuePriorities;
    float                 pointSizeRange[2];
    float                 lineWidthRange[2];
    float                 pointSizeGranularity;
    float                 lineWidthGranularity;
    VkBool32              strictLines;
    VkBool32              standardSampleLocations;
    VkDeviceSize          optimalBufferCopyOffsetAlignment;
    VkDeviceSize          optimalBufferCopyRowPitchAlignment;
    VkDeviceSize          nonCoherentAtomSize;
} VkPhysicalDeviceLimits;

VkPhysicalDeviceLimits 是物理设备的属性。这些属性可在 VkPhysicalDeviceProperties 结构的 limits 成员中使用,该结构从 vkGetPhysicalDeviceProperties 返回。

  • maxImageDimension1D 是保证支持的所有使用 imageTypeVK_IMAGE_TYPE_1D 创建的图像的最大维度 (width)。某些图像参数(格式、用途等)的组合可能允许支持更大的维度,这可以使用 vkGetPhysicalDeviceImageFormatProperties 查询。

  • maxImageDimension2D 是保证支持的所有使用 imageTypeVK_IMAGE_TYPE_2D 创建的且在 flags 中未设置 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT 的图像的最大维度 (widthheight)。某些图像参数(格式、用途等)的组合可能允许支持更大的维度,这可以使用 vkGetPhysicalDeviceImageFormatProperties 查询。

  • maxImageDimension3D 是保证支持的所有使用 imageTypeVK_IMAGE_TYPE_3D 创建的图像的最大维度 (widthheightdepth)。某些图像参数(格式、用途等)的组合可能允许支持更大的维度,这可以使用 vkGetPhysicalDeviceImageFormatProperties 查询。

  • maxImageDimensionCube 是保证支持的所有使用 imageTypeVK_IMAGE_TYPE_2D 创建的且在 flags 中设置了 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT 的图像的最大维度 (widthheight)。某些图像参数(格式、用途等)的组合可能允许支持更大的维度,这可以使用 vkGetPhysicalDeviceImageFormatProperties 查询。

  • maxImageArrayLayers 是图像的最大层数 (arrayLayers)。

  • maxTexelBufferElements 是为使用 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT 设置在 VkBufferCreateInfo 结构的 usage 成员中创建的缓冲区上创建的缓冲区视图可寻址的最大纹素数。

  • maxUniformBufferRange 是可以指定在传递给 vkUpdateDescriptorSets 的类型为 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的描述符的 VkDescriptorBufferInfo 结构的 range 成员中的最大值。

  • maxStorageBufferRange 是可以指定在传递给 vkUpdateDescriptorSets 的类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFERVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 的描述符的 VkDescriptorBufferInfo 结构的 range 成员中的最大值。

  • maxPushConstantsSize 是推送常量内存池的最大大小(以字节为单位)。对于 VkPipelineLayoutCreateInfo 结构的 pPushConstantRanges 成员指示的每个推送常量范围,(offset + size) 必须小于或等于此限制。

  • maxMemoryAllocationCount 是设备内存分配的最大数量,这些内存分配是通过 vkAllocateMemory 创建的,并且可以同时存在。

  • maxSamplerAllocationCount 是采样器对象(通过 vkCreateSampler 创建)的最大数量,这些采样器对象可以同时存在于设备上。

  • bufferImageGranularity 是以字节为单位的粒度,在该粒度下,缓冲或线性图像资源以及最佳图像资源可以绑定到同一 VkDeviceMemory 对象中的相邻偏移量,而不会发生别名。有关更多详细信息,请参阅 缓冲图像粒度

  • sparseAddressSpaceSize 是稀疏内存资源可用的总地址空间大小(以字节为单位)。这是所有稀疏资源大小的总和的上限,无论是否将任何内存绑定到它们。如果启用了 extendedSparseAddressSpace 功能,则 extendedSparseAddressSpaceSizesparseAddressSpaceSize 之间的差值也可以使用,通过使用 VkImage 创建,该 VkImageVkImageCreateInfousage 成员仅包含 extendedSparseImageUsageFlags 中的位,并且 VkBuffer 是使用 VkBufferCreateInfousage 成员创建的,该成员仅包含 extendedSparseBufferUsageFlags 中的位。

  • maxBoundDescriptorSets 是一个管道可以同时使用的描述符集的最大数量。着色器模块中的所有 DescriptorSet 修饰符的数值必须小于 maxBoundDescriptorSets。请参阅 描述符集

  • maxPerStageDescriptorSamplers 是一个管道布局中单个着色器阶段可以访问的采样器的最大数量。类型为 VK_DESCRIPTOR_TYPE_SAMPLERVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER 的描述符会影响此限制。只有在创建时未设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的描述符集布局中的描述符会影响此限制。当 VkDescriptorSetLayoutBinding 结构的 stageFlags 成员设置了该着色器阶段的位时,该描述符即可被着色器阶段访问。请参阅 采样器组合图像采样器

  • maxPerStageDescriptorUniformBuffers 是一个管道布局中单个着色器阶段可以访问的统一缓冲区最大数量。类型为 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的描述符会影响此限制。只有在创建时未设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的描述符集布局中的描述符会影响此限制。当 VkDescriptorSetLayoutBinding 结构的 stageFlags 成员设置了该着色器阶段的位时,该描述符即可被着色器阶段访问。请参阅 统一缓冲区动态统一缓冲区

  • maxPerStageDescriptorStorageBuffers 是一个管道布局中单个着色器阶段可以访问的存储缓冲区的最大数量。类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFERVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 的描述符会影响此限制。只有在创建时未设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的描述符集布局中的描述符会影响此限制。当 VkDescriptorSetLayoutBinding 结构的 stageFlags 成员设置了该着色器阶段的位时,该描述符即可被管道着色器阶段访问。请参阅 存储缓冲区动态存储缓冲区

  • maxPerStageDescriptorSampledImages 是一个管道布局中单个着色器阶段可以访问的采样图像的最大数量。类型为 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER 的描述符会影响此限制。只有在创建时未设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的描述符集布局中的描述符会影响此限制。当 VkDescriptorSetLayoutBinding 结构的 stageFlags 成员设置了该着色器阶段的位时,该描述符即可被管道着色器阶段访问。请参阅 组合图像采样器采样图像统一纹理缓冲区

  • maxPerStageDescriptorStorageImages 是一个管道布局中单个着色器阶段可以访问的存储图像的最大数量。类型为 VK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 的描述符会影响此限制。只有在创建时未设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的描述符集布局中的描述符会影响此限制。当 VkDescriptorSetLayoutBinding 结构的 stageFlags 成员设置了该着色器阶段的位时,该描述符即可被管道着色器阶段访问。请参阅 存储图像存储纹理缓冲区

  • maxPerStageDescriptorInputAttachments 是一个管道布局中单个着色器阶段可以访问的输入附件的最大数量。类型为 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符会影响此限制。只有在创建时未设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的描述符集布局中的描述符会影响此限制。当 VkDescriptorSetLayoutBinding 结构的 stageFlags 成员设置了该着色器阶段的位时,该描述符即可被管道着色器阶段访问。这些仅支持片段阶段。请参阅 输入附件

  • maxPerStageResources 是一个管线布局中单个着色器阶段可以访问的最大资源数量。类型为 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERVK_DESCRIPTOR_TYPE_STORAGE_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。对于片段着色器阶段,帧缓冲颜色附件也会计入此限制。

  • maxDescriptorSetSamplers 是一个管线布局中可以包含的最大采样器数量。类型为 VK_DESCRIPTOR_TYPE_SAMPLERVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。请参阅 采样器组合图像采样器

  • maxDescriptorSetUniformBuffers 是一个管线布局中可以包含的最大统一缓冲区数量。类型为 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。请参阅 统一缓冲区动态统一缓冲区

  • maxDescriptorSetUniformBuffersDynamic 是一个管线布局中可以包含的最大动态统一缓冲区数量。类型为 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。请参阅 动态统一缓冲区

  • maxDescriptorSetStorageBuffers 是一个管线布局中可以包含的最大存储缓冲区数量。类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFERVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。请参阅 存储缓冲区动态存储缓冲区

  • maxDescriptorSetStorageBuffersDynamic 是一个管线布局中可以包含的最大动态存储缓冲区数量。类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。请参阅 动态存储缓冲区

  • maxDescriptorSetSampledImages 是一个管线布局中可以包含的最大采样图像数量。类型为 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。请参阅 组合图像采样器采样图像统一纹理缓冲区

  • maxDescriptorSetStorageImages 是一个管线布局中可以包含的最大存储图像数量。类型为 VK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。请参阅 存储图像存储纹理缓冲区

  • maxDescriptorSetInputAttachments 是一个管线布局中可以包含的最大输入附件数量。类型为 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,这些描述符才会计入此限制。请参阅 输入附件

  • maxVertexInputAttributes 是一个图形管线可以指定的顶点输入属性的最大数量。这些属性在通过 VkPipelineVertexInputStateCreateInfo 结构的 pVertexAttributeDescriptions 成员在图形管线创建时提供的 VkVertexInputAttributeDescription 结构数组中进行描述。请参阅 顶点属性顶点输入描述

  • maxVertexInputBindings 是可以为图形管线提供顶点属性而指定的最大顶点缓冲区数量。这些缓冲区在通过 VkPipelineVertexInputStateCreateInfo 结构的 pVertexBindingDescriptions 成员在图形管线创建时提供的 VkVertexInputBindingDescription 结构数组中进行描述。VkVertexInputBindingDescriptionbinding 成员必须小于此限制。请参阅 顶点输入描述

  • maxVertexInputAttributeOffset 是可以添加到顶点输入绑定步长的最大顶点输入属性偏移量。VkVertexInputAttributeDescription 结构的 offset 成员必须小于或等于此限制。请参阅 顶点输入描述

  • maxVertexInputBindingStride 是可以在顶点输入绑定中指定的最大顶点输入绑定步长。VkVertexInputBindingDescription 结构的 stride 成员必须小于或等于此限制。请参阅 顶点输入描述

  • maxVertexOutputComponents 是顶点着色器可以输出的输出变量的最大组件数量。请参阅 顶点着色器

  • maxTessellationGenerationLevel 是固定功能细分图元生成器支持的最大细分生成级别。请参阅 细分

  • maxTessellationPatchSize 是细分控制着色器和细分图元生成器可以处理的图块的最大大小(以顶点为单位)。在管线创建时指定的 VkPipelineTessellationStateCreateInfo 结构的 patchControlPoints 成员和着色器模块的 OutputVertices 执行模式中提供的值必须小于或等于此限制。请参阅 细分

  • maxTessellationControlPerVertexInputComponents可以作为每个顶点的输入提供给细分控制着色器阶段的输入变量的最大组件数。

  • maxTessellationControlPerVertexOutputComponents可以从细分控制着色器阶段输出的每个顶点输出变量的最大组件数。

  • maxTessellationControlPerPatchOutputComponents可以从细分控制着色器阶段输出的每个图块输出变量的最大组件数。

  • maxTessellationControlTotalOutputComponents可以从细分控制着色器阶段输出的每个顶点和每个图块输出变量的最大总组件数。

  • maxTessellationEvaluationInputComponents可以作为每个顶点的输入提供给细分评估着色器阶段的输入变量的最大组件数。

  • maxTessellationEvaluationOutputComponents可以从细分评估着色器阶段输出的每个顶点输出变量的最大组件数。

  • maxGeometryShaderInvocations 是实例化几何着色器支持的最大调用计数。着色器模块的 Invocations 执行模式中提供的值必须小于或等于此限制。请参阅 几何着色

  • maxGeometryInputComponents可以作为输入提供给几何着色器阶段的输入变量的最大组件数。

  • maxGeometryOutputComponents可以从几何着色器阶段输出的输出变量的最大组件数。

  • maxGeometryOutputVertices 是任何几何着色器可以发射的最大顶点数。

  • maxGeometryTotalOutputComponents 是所有发射的顶点中,可以从几何着色器阶段输出的输出变量的最大总组件数。

  • maxFragmentInputComponents可以作为输入提供给片段着色器阶段的输入变量的最大组件数。

  • maxFragmentOutputAttachments 是片段着色器阶段可以写入的最大输出附件数。

  • maxFragmentDualSrcAttachments 是启用混合并且正在使用双源混合模式之一时,片段着色器阶段可以写入的最大输出附件数。请参阅 双源混合 dualSrcBlend

  • maxFragmentCombinedOutputResources 是片段着色器阶段可以使用的存储缓冲区、存储图像和输出 Location 修饰的颜色附件(在 片段输出接口 中描述)的总数。

  • maxComputeSharedMemorySize 是着色器模块中声明为 Workgroup 存储类(或在 GLSL 中使用 shared 存储限定符)的变量在计算着色器阶段可用的最大总存储大小(以字节为单位)。

  • maxComputeWorkGroupCount[3] 是单个调度命令可以调度的最大本地工作组数。这三个值分别表示 X、Y 和 Z 维度的最大本地工作组数。调度命令的工作组计数参数必须小于或等于相应的限制。请参阅 调度命令

  • maxComputeWorkGroupInvocations 是单个本地工作组中计算着色器调用的最大总数。由着色器模块中的 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰符修饰的对象指定的 X、Y 和 Z 大小的乘积必须小于或等于此限制。

  • maxComputeWorkGroupSize[3] 是每个维度的本地计算工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度的最大本地工作组大小。由着色器模块中的 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰符修饰的对象指定的 xyz 大小必须小于或等于相应的限制。

  • subPixelPrecisionBits 是帧缓冲区坐标 xfyf 中子像素精度的位数。请参阅 光栅化

  • subTexelPrecisionBits 是用于缩小和放大滤波器的图像轴向分割的精度位数。2subTexelPrecisionBits 是图像的每个轴上实际的分割数。在生成过滤结果时,图像采样期间计算的子纹素值将捕捉到这些位置。

  • mipmapPrecisionBits 是当确定每个 mip 级别对 mip 过滤结果的贡献时,用于 mipmap 获取的 LOD 计算被捕捉到的分割位数。2mipmapPrecisionBits 是实际的分割数。

  • maxDrawIndexedIndexValue 是在使用 32 位索引时,索引绘制调用可以使用的最大索引值。这不包括 0xFFFFFFFF 的图元重启索引值。请参阅 fullDrawIndexUint32

  • maxDrawIndirectCount 是间接绘制调用支持的最大绘制计数。请参阅 multiDrawIndirect

  • maxSamplerLodBias 是采样器 LOD 偏差的最大绝对值。 VkSamplerCreateInfo 结构的 mipLodBias 成员的值与着色器模块中图像采样操作的 Bias 操作数(如果图像采样操作没有提供 Bias 操作数,则为 0)之和被钳制在 [-maxSamplerLodBias,+maxSamplerLodBias] 范围内。请参阅 samplers-mipLodBias

  • maxSamplerAnisotropy 是采样器各向异性的最大程度。用于图像采样操作的各向异性过滤的最大程度是 VkSamplerCreateInfo 结构的 maxAnisotropy 成员和此限制的最小值。请参阅 samplers-maxAnisotropy

  • maxViewports 是活动视口的最大数量。在管线创建时提供的 VkPipelineViewportStateCreateInfo 结构的 viewportCount 成员必须小于或等于此限制。

  • maxViewportDimensions[2] 分别是 X(宽度)和 Y(高度)维度上的最大视口尺寸。最大视口尺寸必须大于或等于可以创建并用作帧缓冲附件的最大图像。请参阅 控制视口

  • viewportBoundsRange[2] 是视口角点必须包含的 [最小值,最大值] 范围。此范围必须至少为 [-2 × size, 2 × size - 1],其中 size = max(maxViewportDimensions[0], maxViewportDimensions[1])。请参阅 控制视口

    viewportBoundsRange 限制的目的是允许相对于输出目标任意移动最大尺寸的视口,只要至少一部分相交即可。这将给出 [-size + 1, 2 × size - 1] 的边界限制,这将允许输出目标和视口的所有可能的非空集相交。由于这些数字通常是 2 的幂,因此使用最少位数的有符号数字范围最终得到指定的范围。

  • viewportSubPixelBits 是视口边界的亚像素精度的位数。浮点视口边界被解释的亚像素精度由此限制给出。

  • minMemoryMapAlignment 是主机地址空间内主机可见内存分配的最小必需对齐(以字节为单位)。当使用 vkMapMemory 映射内存分配时,从返回的指针中减去 offset 字节将始终产生此限制的整数倍。请参阅 主机对设备内存对象的访问。该值必须是 2 的幂。

  • minTexelBufferOffsetAlignment 是纹理缓冲区 VkBufferViewCreateInfo 结构的 offset 成员的最小必需对齐(以字节为单位)。该值必须是 2 的幂。如果启用了 texelBufferAlignment 功能,则此限制等效于 uniformTexelBufferOffsetAlignmentBytesstorageTexelBufferOffsetAlignmentBytes 成员的最大值,但 storageTexelBufferOffsetSingleTexelAlignmentuniformTexelBufferOffsetSingleTexelAlignment 可选地允许较小的对齐方式。如果未启用 texelBufferAlignment 功能,则 VkBufferViewCreateInfo::offset 必须是此值的倍数。

  • minUniformBufferOffsetAlignment 是统一缓冲区 VkDescriptorBufferInfo 结构的 offset 成员的最小必需对齐(以字节为单位)。当更新类型为 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFERVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的描述符时,offset 必须是此限制的整数倍。同样,统一缓冲区的动态偏移量必须是此限制的倍数。该值必须是 2 的幂。

  • minStorageBufferOffsetAlignment 是存储缓冲区 VkDescriptorBufferInfo 结构的 offset 成员的最小必需对齐(以字节为单位)。当更新类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFERVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 的描述符时,offset 必须是此限制的整数倍。同样,存储缓冲区的动态偏移量必须是此限制的倍数。该值必须是 2 的幂。

  • minTexelOffset 是任何 OpImageSample*OpImageFetch* 图像指令的 OffsetConstOffset 图像操作数的最小偏移值。

  • maxTexelOffset 是任何 OpImageSample*OpImageFetch* 图像指令的 OffsetConstOffset 图像操作数的最大偏移值。

  • minTexelGatherOffset 是任何 OpImage*Gather 图像指令的 OffsetConstOffsetConstOffsets 图像操作数的最小偏移值。

  • maxTexelGatherOffset 是任何 OpImage*Gather 图像指令的 OffsetConstOffsetConstOffsets 图像操作数的最大偏移值。

  • minInterpolationOffsetInterpolateAtOffset 扩展指令的 Offset 操作数的最小(包括)负偏移值的基本值。

  • maxInterpolationOffsetInterpolateAtOffset 扩展指令的 Offset 操作数的最大(包括)正偏移值的基本值。

  • subPixelInterpolationOffsetBitsInterpolateAtOffset 扩展指令的 xy 偏移量可以四舍五入为定点值的分数位数。

  • maxFramebufferWidth 是帧缓冲区的最大宽度。 VkFramebufferCreateInfo 结构的 width 成员必须小于或等于此限制。

  • maxFramebufferHeight 是帧缓冲区的最大高度。 VkFramebufferCreateInfo 结构的 height 成员必须小于或等于此限制。

  • maxFramebufferLayers 是分层帧缓冲区的最大图层计数。 VkFramebufferCreateInfo 结构的 layers 成员必须小于或等于此限制。

  • framebufferColorSampleCountsVkSampleCountFlagBits 的位掩码1,指示所有具有浮点或定点格式的帧缓冲颜色附件支持的颜色采样计数。对于具有整数格式的颜色附件,请参阅 framebufferIntegerColorSampleCounts

  • framebufferDepthSampleCountsVkSampleCountFlagBits 的位掩码1,指示当格式包含深度分量时,所有帧缓冲深度/模板附件支持的深度采样计数。

  • framebufferStencilSampleCounts 是一个位掩码1,其中包含 VkSampleCountFlagBits,指示当格式包含模板分量时,所有帧缓冲深度/模板附件支持的模板采样计数。

  • framebufferNoAttachmentsSampleCounts 是一个位掩码1,其中包含 VkSampleCountFlagBits,指示不使用任何附件的子通道支持的采样计数。

  • maxColorAttachments 是渲染通道中子通道可以使用的最大颜色附件数量。VkSubpassDescriptionVkSubpassDescription2 结构的 colorAttachmentCount 成员 必须 小于或等于此限制。

  • sampledImageColorSampleCounts 是一个位掩码1,其中包含 VkSampleCountFlagBits,指示使用 VK_IMAGE_TILING_OPTIMAL 创建的、usage 包含 VK_IMAGE_USAGE_SAMPLED_BIT 且为非整数颜色格式的所有 2D 图像所支持的采样计数。

  • sampledImageIntegerSampleCounts 是一个位掩码1,其中包含 VkSampleCountFlagBits,指示使用 VK_IMAGE_TILING_OPTIMAL 创建的、usage 包含 VK_IMAGE_USAGE_SAMPLED_BIT 且为整数颜色格式的所有 2D 图像所支持的采样计数。

  • sampledImageDepthSampleCounts 是一个位掩码1,其中包含 VkSampleCountFlagBits,指示使用 VK_IMAGE_TILING_OPTIMAL 创建的、usage 包含 VK_IMAGE_USAGE_SAMPLED_BIT 且为深度格式的所有 2D 图像所支持的采样计数。

  • sampledImageStencilSampleCounts 是一个位掩码1,其中包含 VkSampleCountFlagBits,指示使用 VK_IMAGE_TILING_OPTIMAL 创建的、usage 包含 VK_IMAGE_USAGE_SAMPLED_BIT 且为模板格式的所有 2D 图像所支持的采样计数。

  • storageImageSampleCounts 是一个位掩码1,其中包含 VkSampleCountFlagBits,指示使用 VK_IMAGE_TILING_OPTIMAL 创建的且 usage 包含 VK_IMAGE_USAGE_STORAGE_BIT 的所有 2D 图像所支持的采样计数。

  • maxSampleMaskWords 是使用 SampleMask 内建装饰符修饰的变量的最大数组元素数量。

  • timestampComputeAndGraphics 指定对所有图形和计算队列的时间戳的支持。如果此限制为 VK_TRUE,则在 VkQueueFamilyProperties::queueFlags 中声明 VK_QUEUE_GRAPHICS_BITVK_QUEUE_COMPUTE_BIT 的所有队列都支持至少 36 的 VkQueueFamilyProperties::timestampValidBits。 请参阅 时间戳查询

  • timestampPeriod 是时间戳查询递增 1 所需的纳秒数。 请参阅 时间戳查询

  • maxClipDistances 是在单个着色器阶段中可以使用的最大剪裁距离数。 在着色器模块中使用 ClipDistance 内建装饰符声明的任何数组的大小 必须 小于或等于此限制。

  • maxCullDistances 是在单个着色器阶段中可以使用的最大剔除距离数。 在着色器模块中使用 CullDistance 内建装饰符声明的任何数组的大小 必须 小于或等于此限制。

  • maxCombinedClipAndCullDistances 是在单个着色器阶段中可以使用的最大组合剪裁和剔除距离数。 在着色器模块中,单个着色器阶段使用的所有使用 ClipDistanceCullDistance 内建装饰符声明的数组的大小之和 必须 小于或等于此限制。

  • discreteQueuePriorities 是可以根据 VkDeviceQueueCreateInfo::pQueuePriorities 的每个成员的值分配给队列的离散优先级数。 这 必须 至少为 2,并且级别 必须 在范围内均匀分布,其中至少一个级别为 1.0,另一个级别为 0.0。 请参阅 队列优先级

  • pointSizeRange[2] 是点支持大小的范围 [minimum,maximum]。写入使用 PointSize 内建装饰符修饰的变量的值被限制在此范围内。

  • lineWidthRange[2] 是线支持宽度的范围 [minimum,maximum]。由 VkPipelineRasterizationStateCreateInfolineWidth 成员指定或 vkCmdSetLineWidthlineWidth 参数指定的值被限制在此范围内。

  • pointSizeGranularity 是支持的点大小的粒度。并非由 pointSizeRange 定义的范围内的所有点大小都受支持。此限制指定连续支持的点大小之间的粒度(或增量)。

  • lineWidthGranularity 是支持的线宽的粒度。并非由 lineWidthRange 定义的范围内的所有线宽都受支持。此限制指定连续支持的线宽之间的粒度(或增量)。

  • strictLines 指定是否根据首选光栅化方法光栅化线。 如果设置为 VK_FALSE,则线 可能 在一组宽松的规则下进行光栅化。 如果设置为 VK_TRUE,则线按照严格定义进行光栅化。 请参阅 基本线段光栅化

  • standardSampleLocations 指定光栅化是否使用 多重采样 中记录的标准采样位置。 如果设置为 VK_TRUE,则实现使用记录的采样位置。 如果设置为 VK_FALSE,则实现 可能 使用不同的采样位置。

  • optimalBufferCopyOffsetAlignmentvkCmdCopyBufferToImage2vkCmdCopyBufferToImagevkCmdCopyImageToBuffer2vkCmdCopyImageToBuffer 的最佳缓冲偏移量对齐(以字节为单位)。此值也是 vkCopyMemoryToImagevkCopyImageToMemory 的最佳主机内存偏移量对齐(以字节为单位)。强制执行每个纹素的对齐要求,但应用程序 应该 使用最佳对齐以获得最佳性能和功耗。 该值 必须 为 2 的幂。

  • optimalBufferCopyRowPitchAlignmentvkCmdCopyBufferToImage2vkCmdCopyBufferToImagevkCmdCopyImageToBuffer2vkCmdCopyImageToBuffer 的最佳缓冲区行间距对齐(以字节为单位)。此值也是 vkCopyMemoryToImagevkCopyImageToMemory 的最佳主机内存行间距对齐(以字节为单位)。行间距是指相邻行(Y 坐标相差 1)中具有相同 X 坐标的纹素之间的字节数。每个纹素的对齐要求都会强制执行,但应用程序**应该**使用最佳对齐方式以获得最佳性能和功耗。该值**必须**是 2 的幂。

  • nonCoherentAtomSize 是限制对主机映射的设备内存并发访问的大小和对齐(以字节为单位)。该值**必须**是 2 的幂。

    1

    对于 VkSampleCountFlagBits 的所有位掩码,上面定义的采样计数限制表示每种图像类型支持的最小采样计数。单个图像**可能**支持其他采样计数,这些采样计数使用 vkGetPhysicalDeviceImageFormatProperties 查询,如 支持的采样计数中所述。

VkPhysicalDeviceLimits 返回的采样计数限制,以及其他表示图像采样计数的查询和结构中**可能**设置的位是

// Provided by VK_VERSION_1_0
typedef enum VkSampleCountFlagBits {
    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
    VK_SAMPLE_COUNT_8_BIT = 0x00000008,
    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
} VkSampleCountFlagBits;
  • VK_SAMPLE_COUNT_1_BIT 指定每个像素一个采样的图像。

  • VK_SAMPLE_COUNT_2_BIT 指定每个像素 2 个采样的图像。

  • VK_SAMPLE_COUNT_4_BIT 指定每个像素 4 个采样的图像。

  • VK_SAMPLE_COUNT_8_BIT 指定每个像素 8 个采样的图像。

  • VK_SAMPLE_COUNT_16_BIT 指定每个像素 16 个采样的图像。

  • VK_SAMPLE_COUNT_32_BIT 指定每个像素 32 个采样的图像。

  • VK_SAMPLE_COUNT_64_BIT 指定每个像素 64 个采样的图像。

// Provided by VK_VERSION_1_0
typedef VkFlags VkSampleCountFlags;

VkSampleCountFlags 是一个位掩码类型,用于设置零个或多个 VkSampleCountFlagBits 的掩码。

VkPhysicalDevicePushDescriptorProperties 结构定义如下

// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDevicePushDescriptorProperties {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxPushDescriptors;
} VkPhysicalDevicePushDescriptorProperties;

或等效的

// Provided by VK_KHR_push_descriptor
typedef VkPhysicalDevicePushDescriptorProperties VkPhysicalDevicePushDescriptorPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxPushDescriptors 是使用设置了 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT 创建的描述符集布局中**可以**使用的最大描述符数量。

如果 VkPhysicalDevicePushDescriptorProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关属性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePushDescriptorProperties-sType-sType
    sType **必须**是 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES

VkPhysicalDeviceMultiviewProperties 结构定义如下

// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceMultiviewProperties {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxMultiviewViewCount;
    uint32_t           maxMultiviewInstanceIndex;
} VkPhysicalDeviceMultiviewProperties;

或等效的

// Provided by VK_KHR_multiview
typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxMultiviewViewCount 比可以在子通道中使用的最大视图索引大 1。

  • maxMultiviewInstanceIndex 是多视图渲染通道实例的子通道中记录的绘图命令所允许生成的实例索引的最大有效值。

如果 VkPhysicalDeviceMultiviewProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMultiviewProperties-sType-sType
    sType **必须**是 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES

VkPhysicalDeviceFloatControlsProperties 结构定义如下

// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceFloatControlsProperties {
    VkStructureType                      sType;
    void*                                pNext;
    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
    VkShaderFloatControlsIndependence    roundingModeIndependence;
    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
    VkBool32                             shaderDenormPreserveFloat16;
    VkBool32                             shaderDenormPreserveFloat32;
    VkBool32                             shaderDenormPreserveFloat64;
    VkBool32                             shaderDenormFlushToZeroFloat16;
    VkBool32                             shaderDenormFlushToZeroFloat32;
    VkBool32                             shaderDenormFlushToZeroFloat64;
    VkBool32                             shaderRoundingModeRTEFloat16;
    VkBool32                             shaderRoundingModeRTEFloat32;
    VkBool32                             shaderRoundingModeRTEFloat64;
    VkBool32                             shaderRoundingModeRTZFloat16;
    VkBool32                             shaderRoundingModeRTZFloat32;
    VkBool32                             shaderRoundingModeRTZFloat64;
} VkPhysicalDeviceFloatControlsProperties;

或等效的

// Provided by VK_KHR_shader_float_controls
typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • denormBehaviorIndependence 是一个 VkShaderFloatControlsIndependence 值,指示是否以及如何为不同的位宽独立设置反规范行为。

  • roundingModeIndependence 是一个 VkShaderFloatControlsIndependence 值,指示是否以及如何为不同的位宽独立设置舍入模式。

  • shaderSignedZeroInfNanPreserveFloat16 是一个布尔值,指示是否可以在 16 位浮点计算中保留零的符号、Nan 。它还指示 SignedZeroInfNanPreserve 执行模式是否**可以**用于 16 位浮点类型。

  • shaderSignedZeroInfNanPreserveFloat32 是一个布尔值,指示是否可以在 32 位浮点计算中保留零的符号、NaN 。它还指示 SignedZeroInfNanPreserve 执行模式是否可以用于 32 位浮点类型。

  • shaderSignedZeroInfNanPreserveFloat64 是一个布尔值,指示是否可以在 64 位浮点计算中保留零的符号、NaN 。它还指示 SignedZeroInfNanPreserve 执行模式是否可以用于 64 位浮点类型。

  • shaderDenormPreserveFloat16 是一个布尔值,指示是否可以在 16 位浮点计算中保留非规范化值。它还指示 DenormPreserve 执行模式是否可以用于 16 位浮点类型。

  • shaderDenormPreserveFloat32 是一个布尔值,指示是否可以在 32 位浮点计算中保留非规范化值。它还指示 DenormPreserve 执行模式是否可以用于 32 位浮点类型。

  • shaderDenormPreserveFloat64 是一个布尔值,指示是否可以在 64 位浮点计算中保留非规范化值。它还指示 DenormPreserve 执行模式是否可以用于 64 位浮点类型。

  • shaderDenormFlushToZeroFloat16 是一个布尔值,指示是否可以在 16 位浮点计算中将非规范化值刷新为零。它还指示 DenormFlushToZero 执行模式是否可以用于 16 位浮点类型。

  • shaderDenormFlushToZeroFloat32 是一个布尔值,指示是否可以在 32 位浮点计算中将非规范化值刷新为零。它还指示 DenormFlushToZero 执行模式是否可以用于 32 位浮点类型。

  • shaderDenormFlushToZeroFloat64 是一个布尔值,指示是否可以在 64 位浮点计算中将非规范化值刷新为零。它还指示 DenormFlushToZero 执行模式是否可以用于 64 位浮点类型。

  • shaderRoundingModeRTEFloat16 是一个布尔值,指示实现是否支持 16 位浮点算术和转换指令的舍入到最近的偶数舍入模式。它还指示 RoundingModeRTE 执行模式是否可以用于 16 位浮点类型。

  • shaderRoundingModeRTEFloat32 是一个布尔值,指示实现是否支持 32 位浮点算术和转换指令的舍入到最近的偶数舍入模式。它还指示 RoundingModeRTE 执行模式是否可以用于 32 位浮点类型。

  • shaderRoundingModeRTEFloat64 是一个布尔值,指示实现是否支持 64 位浮点算术和转换指令的舍入到最近的偶数舍入模式。它还指示 RoundingModeRTE 执行模式是否可以用于 64 位浮点类型。

  • shaderRoundingModeRTZFloat16 是一个布尔值,指示实现是否支持 16 位浮点算术和转换指令的舍入到零的舍入模式。它还指示 RoundingModeRTZ 执行模式是否可以用于 16 位浮点类型。

  • shaderRoundingModeRTZFloat32 是一个布尔值,指示实现是否支持 32 位浮点算术和转换指令的舍入到零的舍入模式。它还指示 RoundingModeRTZ 执行模式是否可以用于 32 位浮点类型。

  • shaderRoundingModeRTZFloat64 是一个布尔值,指示实现是否支持 64 位浮点算术和转换指令的舍入到零的舍入模式。它还指示 RoundingModeRTZ 执行模式是否可以用于 64 位浮点类型。

如果 VkPhysicalDeviceProperties2 结构的 pNext 链中包含 VkPhysicalDeviceFloatControlsProperties 结构,则将其传递给 vkGetPhysicalDeviceProperties2,并使用每个相应的实现相关的属性进行填充。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFloatControlsProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES

VkPhysicalDeviceFloatControlsPropertiesdenormBehaviorIndependenceroundingModeIndependence 字段中可能返回的值是

// Provided by VK_VERSION_1_2
typedef enum VkShaderFloatControlsIndependence {
    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
  // Provided by VK_KHR_shader_float_controls
    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
  // Provided by VK_KHR_shader_float_controls
    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
  // Provided by VK_KHR_shader_float_controls
    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
} VkShaderFloatControlsIndependence;

或等效的

// Provided by VK_KHR_shader_float_controls
typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
  • VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY 指定可以独立设置 32 位浮点数的着色器浮点控制;其他位宽必须彼此设置相同。

  • VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL 指定可以独立设置所有位宽的着色器浮点控制。

  • VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE 指定所有位宽的着色器浮点控制必须设置相同。

VkPhysicalDeviceDiscardRectanglePropertiesEXT 结构定义如下

// Provided by VK_EXT_discard_rectangles
typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxDiscardRectangles;
} VkPhysicalDeviceDiscardRectanglePropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxDiscardRectangles 是可以指定的最大活动丢弃矩形的数量。

如果 VkPhysicalDeviceDiscardRectanglePropertiesEXT 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT

VkPhysicalDeviceSampleLocationsPropertiesEXT 结构体的定义如下:

// Provided by VK_EXT_sample_locations
typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
    VkStructureType       sType;
    void*                 pNext;
    VkSampleCountFlags    sampleLocationSampleCounts;
    VkExtent2D            maxSampleLocationGridSize;
    float                 sampleLocationCoordinateRange[2];
    uint32_t              sampleLocationSubPixelBits;
    VkBool32              variableSampleLocations;
} VkPhysicalDeviceSampleLocationsPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • sampleLocationSampleCounts 是一个 VkSampleCountFlagBits 的位掩码,指示支持自定义采样位置的采样计数。

  • maxSampleLocationGridSize 是像素网格的最大大小,其中采样位置可以sampleLocationSampleCounts 中支持的所有采样计数中变化。

  • sampleLocationCoordinateRange[2] 是支持的采样位置坐标的范围。

  • sampleLocationSubPixelBits 是采样位置的子像素精度的位数。

  • variableSampleLocations 指定子通道期间绑定到命令缓冲区的任何管线使用的采样位置必须匹配。如果设置为 VK_TRUE,则实现支持子通道中的可变采样位置。如果设置为 VK_FALSE,则采样位置必须在每个子通道中保持不变。

如果 VkPhysicalDeviceSampleLocationsPropertiesEXT 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT

VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT 结构体的定义如下:

// Provided by VK_EXT_legacy_vertex_attributes
typedef struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           nativeUnalignedPerformance;
} VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT;

此结构体描述了以下特性:

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

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

  • nativeUnalignedPerformance 指定未对齐的顶点获取与对齐的获取相比是否不会产生显著的性能损失。

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

有效用法(隐式)
  • VUID-VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT

VkPhysicalDeviceExternalMemoryHostPropertiesEXT 结构体的定义如下:

// Provided by VK_EXT_external_memory_host
typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkDeviceSize       minImportedHostPointerAlignment;
} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • minImportedHostPointerAlignment 是导入到 Vulkan 内存对象的主机指针的基址和大小所需的最小对齐(以字节为单位)。该值必须是 2 的幂。

如果 VkPhysicalDeviceExternalMemoryHostPropertiesEXT 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT

VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX 结构体的定义如下:

// Provided by VK_NVX_multiview_per_view_attributes
typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           perViewPositionAllComponents;
} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • perViewPositionAllComponents 如果实现支持除了 X 分量之外在其他分量中不同的每个视图位置值,则为 VK_TRUE

如果 VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX

VkPhysicalDevicePointClippingProperties 结构体的定义如下:

// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDevicePointClippingProperties {
    VkStructureType            sType;
    void*                      pNext;
    VkPointClippingBehavior    pointClippingBehavior;
} VkPhysicalDevicePointClippingProperties;

或等效的

// Provided by VK_KHR_maintenance2
typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

如果 VkPhysicalDevicePointClippingProperties 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePointClippingProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES

VkPhysicalDeviceSubgroupProperties 结构体的定义如下:

// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceSubgroupProperties {
    VkStructureType           sType;
    void*                     pNext;
    uint32_t                  subgroupSize;
    VkShaderStageFlags        supportedStages;
    VkSubgroupFeatureFlags    supportedOperations;
    VkBool32                  quadOperationsInAllStages;
} VkPhysicalDeviceSubgroupProperties;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • subgroupSize 是每个子组中调用的默认数量。如果物理设备的任何队列支持 VK_QUEUE_GRAPHICS_BITVK_QUEUE_COMPUTE_BIT,则 subgroupSize 至少为 1。subgroupSize 是 2 的幂。

  • supportedStages 是一个 VkShaderStageFlagBits 的位域,描述了支持带有 子组范围组操作 的着色器阶段。如果物理设备的任何队列支持 VK_QUEUE_COMPUTE_BIT,则 supportedStages 将设置 VK_SHADER_STAGE_COMPUTE_BIT 位。

  • supportedOperations 是一个 VkSubgroupFeatureFlagBits 的位掩码,指定在此设备上支持的具有 子组范围组操作 的集合。如果物理设备的任何队列支持 VK_QUEUE_GRAPHICS_BITVK_QUEUE_COMPUTE_BIT,则 supportedOperations 将设置 VK_SUBGROUP_FEATURE_BASIC_BIT 位。

  • quadOperationsInAllStages 是一个布尔值,指定 四边形组操作 是否在所有阶段都可用,还是仅限于片段和计算阶段。

如果 VkPhysicalDeviceSubgroupProperties 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充为每个对应的实现相关的属性。

如果 supportedOperations 包括 VK_SUBGROUP_FEATURE_QUAD_BIT,或者启用了 shaderSubgroupUniformControlFlow 特性,则 subgroupSize 必须 大于或等于 4。

如果支持 shaderQuadControl 特性,则 supportedOperations 必须 包括 VK_SUBGROUP_FEATURE_QUAD_BIT

如果支持 VK_KHR_shader_subgroup_rotate 扩展,并且实现通过 VkExtensionProperties::specVersion 公告支持的版本大于或等于 2,并且支持 shaderSubgroupRotate 特性,则 VK_SUBGROUP_FEATURE_ROTATE_BIT 必须VkPhysicalDeviceVulkan11Properties::subgroupSupportedOperationsVkPhysicalDeviceSubgroupProperties::supportedOperations 中返回。如果支持 VK_KHR_shader_subgroup_rotate 扩展,并且实现通过 VkExtensionProperties::specVersion 公告支持的版本大于或等于 2,并且支持 shaderSubgroupRotateClustered 特性,则 VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT 必须VkPhysicalDeviceVulkan11Properties::subgroupSupportedOperationsVkPhysicalDeviceSubgroupProperties::supportedOperations 中返回。

如果支持 Vulkan 1.4,则 VK_SUBGROUP_FEATURE_ROTATE_BITVK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT 必须VkPhysicalDeviceSubgroupProperties::supportedOperationsVkPhysicalDeviceVulkan11Properties::subgroupSupportedOperations 中返回。

VK_SUBGROUP_FEATURE_ROTATE_BITVK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT 是在 VK_KHR_shader_subgroup_rotate 扩展的第 2 版中添加的,在初始版本发布之后,因此有一些实现不公告这些位。应用程序应使用 shaderSubgroupRotateshaderSubgroupRotateClustered 特性来确定并启用支持。此处公告这些位是为了保持一致性以及满足未来的依赖关系。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSubgroupProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES

可以在 VkPhysicalDeviceSubgroupProperties::supportedOperationsVkPhysicalDeviceVulkan11Properties::subgroupSupportedOperations 中设置的位,用于指定支持的 组操作,其范围为 子组范围,如下所示:

// Provided by VK_VERSION_1_1
typedef enum VkSubgroupFeatureFlagBits {
    VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
    VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
    VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
    VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
    VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
    VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
    VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
    VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
  // Provided by VK_VERSION_1_4
    VK_SUBGROUP_FEATURE_ROTATE_BIT = 0x00000200,
  // Provided by VK_VERSION_1_4
    VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 0x00000400,
  // Provided by VK_NV_shader_subgroup_partitioned
    VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100,
  // Provided by VK_KHR_shader_subgroup_rotate
    VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = VK_SUBGROUP_FEATURE_ROTATE_BIT,
  // Provided by VK_KHR_shader_subgroup_rotate
    VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT,
} VkSubgroupFeatureFlagBits;
  • VK_SUBGROUP_FEATURE_BASIC_BIT 指定设备将接受包含 GroupNonUniform 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_VOTE_BIT 指定设备将接受包含 GroupNonUniformVote 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_ARITHMETIC_BIT 指定设备将接受包含 GroupNonUniformArithmetic 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_BALLOT_BIT 指定设备将接受包含 GroupNonUniformBallot 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_SHUFFLE_BIT 指定设备将接受包含 GroupNonUniformShuffle 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT 指定设备将接受包含 GroupNonUniformShuffleRelative 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_CLUSTERED_BIT 指定设备将接受包含 GroupNonUniformClustered 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_QUAD_BIT 指定设备将接受包含 GroupNonUniformQuad 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 指定设备将接受包含 GroupNonUniformPartitionedNV 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_ROTATE_BIT 指定设备将接受包含 GroupNonUniformRotateKHR 功能的 SPIR-V 着色器模块。

  • VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT 指定设备将接受使用 ClusterSize 操作数来操作 OpGroupNonUniformRotateKHR 的 SPIR-V 着色器模块。

// Provided by VK_VERSION_1_1
typedef VkFlags VkSubgroupFeatureFlags;

VkSubgroupFeatureFlags 是一种位掩码类型,用于设置零个或多个 VkSubgroupFeatureFlagBits 的掩码。

VkPhysicalDeviceSubgroupSizeControlProperties 结构定义如下:

// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceSubgroupSizeControlProperties {
    VkStructureType       sType;
    void*                 pNext;
    uint32_t              minSubgroupSize;
    uint32_t              maxSubgroupSize;
    uint32_t              maxComputeWorkgroupSubgroups;
    VkShaderStageFlags    requiredSubgroupSizeStages;
} VkPhysicalDeviceSubgroupSizeControlProperties;

或等效的

// Provided by VK_EXT_subgroup_size_control
typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • minSubgroupSize 是此设备支持的最小子组大小。如果任何物理设备的队列支持 VK_QUEUE_GRAPHICS_BITVK_QUEUE_COMPUTE_BIT,则 minSubgroupSize 至少为 1。minSubgroupSize 是 2 的幂。minSubgroupSize 小于或等于 maxSubgroupSizeminSubgroupSize 小于或等于 subgroupSize

  • maxSubgroupSize 是此设备支持的最大子组大小。如果任何物理设备的队列支持 VK_QUEUE_GRAPHICS_BITVK_QUEUE_COMPUTE_BIT,则 maxSubgroupSize 至少为 1。maxSubgroupSize 是 2 的幂。maxSubgroupSize 大于或等于 minSubgroupSizemaxSubgroupSize 大于或等于 subgroupSize

  • maxComputeWorkgroupSubgroups 是实现支持的工作组内子组的最大数量。

  • requiredSubgroupSizeStages 是一个位域,表示哪些着色器阶段支持指定所需的子组大小。

如果 VkPhysicalDeviceSubgroupSizeControlProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则将使用每个相应的实现相关属性填充它。

如果 VkPhysicalDeviceSubgroupProperties::supportedOperations 包括 VK_SUBGROUP_FEATURE_QUAD_BIT,则 minSubgroupSize 必须 大于或等于 4。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSubgroupSizeControlProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES

VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT 结构定义如下:

// Provided by VK_EXT_blend_operation_advanced
typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           advancedBlendMaxColorAttachments;
    VkBool32           advancedBlendIndependentBlend;
    VkBool32           advancedBlendNonPremultipliedSrcColor;
    VkBool32           advancedBlendNonPremultipliedDstColor;
    VkBool32           advancedBlendCorrelatedOverlap;
    VkBool32           advancedBlendAllOperations;
} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • advancedBlendMaxColorAttachments 比子通道中可以使用的最高颜色附件索引大 1,适用于使用高级混合操作的管线。

  • advancedBlendIndependentBlend 指定高级混合操作是否可以在每个附件上有所不同。

  • advancedBlendNonPremultipliedSrcColor 指定源颜色是否可以被视为非预乘的。如果此值为 VK_FALSE,则 VkPipelineColorBlendAdvancedStateCreateInfoEXT::srcPremultiplied 必须VK_TRUE

  • advancedBlendNonPremultipliedDstColor 指定目标颜色是否可以被视为非预乘的。如果此值为 VK_FALSE,则 VkPipelineColorBlendAdvancedStateCreateInfoEXT::dstPremultiplied 必须VK_TRUE

  • advancedBlendCorrelatedOverlap 指定重叠模式是否可以被视为相关的。如果此值为 VK_FALSE,则 VkPipelineColorBlendAdvancedStateCreateInfoEXT::blendOverlap 必须VK_BLEND_OVERLAP_UNCORRELATED_EXT

  • advancedBlendAllOperations 指定是否支持所有高级混合操作枚举。请参阅VkPipelineColorBlendAttachmentState 的有效用法。

如果 VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT

VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT 结构定义为

// Provided by VK_EXT_vertex_attribute_divisor
typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxVertexAttribDivisor;
} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxVertexAttribDivisor 是启用实例化渲染时,将重复顶点属性数据值的实例数的最大值。

如果 VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT

VkPhysicalDeviceVertexAttributeDivisorProperties 结构定义为

// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceVertexAttributeDivisorProperties {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxVertexAttribDivisor;
    VkBool32           supportsNonZeroFirstInstance;
} VkPhysicalDeviceVertexAttributeDivisorProperties;

或等效的

// Provided by VK_KHR_vertex_attribute_divisor
typedef VkPhysicalDeviceVertexAttributeDivisorProperties VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxVertexAttribDivisor 是启用实例化渲染时,将重复顶点属性数据值的实例数的最大值。

  • supportsNonZeroFirstInstance 指定当 VkVertexInputBindingDivisorDescription::divisor 不为 1 时,是否支持绘制命令firstInstance 参数的非零值。

如果 VkPhysicalDeviceVertexAttributeDivisorProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceVertexAttributeDivisorProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES

VkPhysicalDeviceSamplerFilterMinmaxProperties 结构定义为

// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           filterMinmaxSingleComponentFormats;
    VkBool32           filterMinmaxImageComponentMapping;
} VkPhysicalDeviceSamplerFilterMinmaxProperties;

或等效的

// Provided by VK_EXT_sampler_filter_minmax
typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • filterMinmaxSingleComponentFormats 是一个布尔值,指示最小集合的必需格式是否支持最小/最大过滤。

  • filterMinmaxImageComponentMapping 是一个布尔值,指示当进行最小/最大过滤时,实现是否支持图像的非恒等分量映射。

如果 VkPhysicalDeviceSamplerFilterMinmaxProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个相应的实现相关的属性。

如果 filterMinmaxSingleComponentFormatsVK_TRUE,则如果以下格式支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,则它们必须支持具有 VK_IMAGE_TILING_OPTIMALVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT 功能

  • VK_FORMAT_R8_UNORM

  • VK_FORMAT_R8_SNORM

  • VK_FORMAT_R16_UNORM

  • VK_FORMAT_R16_SNORM

  • VK_FORMAT_R16_SFLOAT

  • VK_FORMAT_R32_SFLOAT

  • VK_FORMAT_D16_UNORM

  • VK_FORMAT_X8_D24_UNORM_PACK32

  • VK_FORMAT_D32_SFLOAT

  • VK_FORMAT_D16_UNORM_S8_UINT

  • VK_FORMAT_D24_UNORM_S8_UINT

  • VK_FORMAT_D32_SFLOAT_S8_UINT

如果格式为深度/模板格式,则此位仅指定此格式的图像的深度方面(而不是模板方面)支持最小/最大过滤,并且当采样器中禁用深度比较时,支持深度方面的最小/最大过滤。

如果 filterMinmaxImageComponentMappingVK_FALSE,则用于最小/最大过滤的图像视图的分量映射必须已使用设置为恒等混淆r 分量创建。仅定义采样图像值的 r 分量,其他分量值未定义。如果 filterMinmaxImageComponentMappingVK_TRUE,则此限制不适用,并且图像分量映射正常工作。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSamplerFilterMinmaxProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES

VkPhysicalDeviceProtectedMemoryProperties 结构定义为

// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceProtectedMemoryProperties {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           protectedNoFault;
} VkPhysicalDeviceProtectedMemoryProperties;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • protectedNoFault 指定当应用程序尝试在受保护的队列操作中写入非受保护的内存、在非受保护的队列操作中从受保护的内存读取或在受保护的队列操作中执行查询时,实现的表现方式。如果此限制为 VK_TRUE,则此类写入将被丢弃或写入未定义的值,读取和查询将返回未定义的值。如果此限制为 VK_FALSE,则应用程序必须不执行这些操作。有关详细信息,请参阅 受保护的内存访问规则

如果 VkPhysicalDeviceProtectedMemoryProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES

VkPhysicalDeviceMaintenance3Properties 结构定义如下:

// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceMaintenance3Properties {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxPerSetDescriptors;
    VkDeviceSize       maxMemoryAllocationSize;
} VkPhysicalDeviceMaintenance3Properties;

或等效的

// Provided by VK_KHR_maintenance3
typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxPerSetDescriptors 是单个描述符集中(所有描述符类型之和)保证满足任何实现相关的描述符集自身大小约束的最大描述符数量。应用程序可以使用 vkGetDescriptorSetLayoutSupport 查询是否支持超出此限制的描述符集。

  • maxMemoryAllocationSize 是可以创建的最大内存分配大小,即使堆中有更多可用空间。如果 VkMemoryAllocateInfo::allocationSize 大于此值,则可能会返回错误 VK_ERROR_OUT_OF_DEVICE_MEMORY

如果 VkPhysicalDeviceMaintenance3Properties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES

VkPhysicalDeviceMaintenance4Properties 结构定义如下:

// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceMaintenance4Properties {
    VkStructureType    sType;
    void*              pNext;
    VkDeviceSize       maxBufferSize;
} VkPhysicalDeviceMaintenance4Properties;

或等效的

// Provided by VK_KHR_maintenance4
typedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxBufferSize可以创建的最大 VkBuffer 大小。

如果 VkPhysicalDeviceMaintenance4Properties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance4Properties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES

VkPhysicalDeviceMaintenance5Properties 结构定义如下:

// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceMaintenance5Properties {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           earlyFragmentMultisampleCoverageAfterSampleCounting;
    VkBool32           earlyFragmentSampleMaskTestBeforeSampleCounting;
    VkBool32           depthStencilSwizzleOneSupport;
    VkBool32           polygonModePointSize;
    VkBool32           nonStrictSinglePixelWideLinesUseParallelogram;
    VkBool32           nonStrictWideLinesUseParallelogram;
} VkPhysicalDeviceMaintenance5Properties;

或等效的

// Provided by VK_KHR_maintenance5
typedef VkPhysicalDeviceMaintenance5Properties VkPhysicalDeviceMaintenance5PropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • earlyFragmentMultisampleCoverageAfterSampleCounting 是一个布尔值,指示在具有 EarlyFragmentTests 执行模式的片段着色器样本计数之后,是否执行片段着色多重采样覆盖操作。

  • earlyFragmentSampleMaskTestBeforeSampleCounting 是一个布尔值,指示在使用 EarlyFragmentTests 执行模式的片段着色器样本计数之前,是否执行样本掩码测试操作。

  • depthStencilSwizzleOneSupport 是一个布尔值,指示使用 VK_COMPONENT_SWIZZLE_ONE 进行深度/模板纹理操作具有定义的行为。

  • polygonModePointSize 是一个布尔值,指示使用 VK_POLYGON_MODE_POINT 绘制的最终多边形栅格化的点大小是否由 PointSize 控制。

  • nonStrictSinglePixelWideLinesUseParallelogram 是一个布尔值,指示宽度为 1.0 的非严格线是栅格化为平行四边形还是使用 Bresenham 算法。

  • nonStrictWideLinesUseParallelogram 是一个布尔值,指示宽度大于 1.0 的非严格线是栅格化为平行四边形还是使用 Bresenham 算法。

如果 VkPhysicalDeviceMaintenance5Properties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance5Properties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES

VkPhysicalDeviceMaintenance6Properties 结构定义如下:

// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceMaintenance6Properties {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           blockTexelViewCompatibleMultipleLayers;
    uint32_t           maxCombinedImageSamplerDescriptorCount;
    VkBool32           fragmentShadingRateClampCombinerInputs;
} VkPhysicalDeviceMaintenance6Properties;

或等效的

// Provided by VK_KHR_maintenance6
typedef VkPhysicalDeviceMaintenance6Properties VkPhysicalDeviceMaintenance6PropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • blockTexelViewCompatibleMultipleLayers 是一个布尔值,指示实现是否支持创建 subresourceRangelayerCount 成员大于 1 的带有 VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT 的图像视图。

  • maxCombinedImageSamplerDescriptorCount 是实现用于访问任何需要采样器 Y′CBCR 转换的格式所支持的最大组合图像采样器描述符数量。

  • fragmentShadingRateClampCombinerInputs 是一个布尔值,指示实现是否将输入值钳制到组合器操作

如果 VkPhysicalDeviceMaintenance6Properties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMaintenance6Properties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES

VkPhysicalDeviceMaintenance7PropertiesKHR 结构定义如下:

// Provided by VK_KHR_maintenance7
typedef struct VkPhysicalDeviceMaintenance7PropertiesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           robustFragmentShadingRateAttachmentAccess;
    VkBool32           separateDepthStencilAttachmentAccess;
    uint32_t           maxDescriptorSetTotalUniformBuffersDynamic;
    uint32_t           maxDescriptorSetTotalStorageBuffersDynamic;
    uint32_t           maxDescriptorSetTotalBuffersDynamic;
    uint32_t           maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic;
    uint32_t           maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic;
    uint32_t           maxDescriptorSetUpdateAfterBindTotalBuffersDynamic;
} VkPhysicalDeviceMaintenance7PropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • robustFragmentShadingRateAttachmentAccess 指示片段着色率附件的缩放大小可以小于渲染区域的大小。如果 robustFragmentShadingRateAttachmentAccessVK_FALSE,则附件的大小乘以纹素大小必须大于或等于渲染区域的大小。如果它是 VK_TRUE 且片段着色率附件使用 VkImageSubresourceRange::baseMipLevel 等于 0 创建,则缩放大小可以小于渲染区域,并且缺失纹素的着色率由 无效纹素的纹素替换定义。

  • separateDepthStencilAttachmentAccess 指示支持写入深度/模板附件的一个方面,而无需对另一方面执行读取-修改-写入操作。如果此属性为 VK_TRUE,则写入一个方面必须不会导致对另一方面执行读取-修改-写入操作。如果为 VK_FALSE,则写入一个方面可能会导致写入另一方面,如 渲染通道加载操作渲染通道存储操作渲染通道解析操作 所定义。

  • maxDescriptorSetTotalUniformBuffersDynamic 是管道布局中可以包含的最大动态 uniform 缓冲区总数。类型为 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 的描述符计入此限制。只有在创建描述符集布局时没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位时,描述符才计入此限制。请参阅 动态 Uniform 缓冲区

  • maxDescriptorSetTotalStorageBuffersDynamic 是管线布局中 **可以** 包含的最大动态存储缓冲区总数。类型为 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 的描述符计入此限制。只有在创建描述符集布局时未设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位时,描述符才会计入此限制。请参阅 动态存储缓冲区

  • maxDescriptorSetTotalBuffersDynamic 是管线布局中 **可以** 包含的最大动态统一缓冲区和存储缓冲区总数。类型为 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 的描述符计入此限制。只有在创建描述符集布局时未设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位时,描述符才会计入此限制。

  • maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamicmaxDescriptorSetTotalUniformBuffersDynamic 类似,但它会计算使用或不使用 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamicmaxDescriptorSetTotalStorageBuffersDynamic 类似,但它会计算使用或不使用 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxDescriptorSetUpdateAfterBindTotalBuffersDynamicmaxDescriptorSetTotalBuffersDynamic 类似,但它会计算使用或不使用 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。虽然应用程序 **可以** 从使用 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 创建的池中分配动态存储缓冲区描述符,但这些描述符的绑定 **必须** 不存在于任何包含使用 VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT 创建的绑定的描述符集布局中。

如果 VkPhysicalDeviceMaintenance7PropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的依赖于实现的属性。

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

VkPhysicalDeviceLayeredApiPropertiesListKHR 结构定义为

// Provided by VK_KHR_maintenance7
typedef struct VkPhysicalDeviceLayeredApiPropertiesListKHR {
    VkStructureType                             sType;
    void*                                       pNext;
    uint32_t                                    layeredApiCount;
    VkPhysicalDeviceLayeredApiPropertiesKHR*    pLayeredApis;
} VkPhysicalDeviceLayeredApiPropertiesListKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • layeredApiCount 是一个与 Vulkan 物理设备下的分层实现数量相关的整数,如下所述。

  • pLayeredApis 是一个指向 VkPhysicalDeviceLayeredApiPropertiesKHR 数组的指针,其中返回有关 Vulkan 物理设备下的分层实现的信息。

如果 pLayeredApisNULL,则在 layeredApiCount 中返回最顶层 Vulkan 物理设备(即由 vkGetPhysicalDeviceProperties2 返回的设备)下的分层实现的数量。否则,应用程序 **必须** 将 layeredApiCount 设置为 pLayeredApis 数组中的元素数量,并且在返回时,该变量将被实际写入 pLayeredApis 的值覆盖。如果 layeredApiCount 的值小于 Vulkan 物理设备下的分层实现的数量,则最多会将 layeredApiCount 个值写入 pLayeredApis。不是层的实现将在 layeredApiCount 中返回 0。

在存在多个分层实现的情况下,pLayeredApis 的每个元素都对应于在先前索引处的 API 之上实现的 API 实现。如果非 Vulkan 实现下存在分层实现,则它们可能在此查询中不可见,因为相应的 API 可能缺少此类查询。

如果 VkPhysicalDeviceLayeredApiPropertiesListKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的依赖于实现的属性。

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

  • VUID-VkPhysicalDeviceLayeredApiPropertiesListKHR-pLayeredApis-parameter
    如果 layeredApiCount 不为 0,并且 pLayeredApis 不为 NULL,则 pLayeredApis **必须** 是指向 layeredApiCountVkPhysicalDeviceLayeredApiPropertiesKHR 结构的有效指针

VkPhysicalDeviceLayeredApiPropertiesKHR 结构定义为

// Provided by VK_KHR_maintenance7
typedef struct VkPhysicalDeviceLayeredApiPropertiesKHR {
    VkStructureType                  sType;
    void*                            pNext;
    uint32_t                         vendorID;
    uint32_t                         deviceID;
    VkPhysicalDeviceLayeredApiKHR    layeredAPI;
    char                             deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
} VkPhysicalDeviceLayeredApiPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • vendorID 是分层实现的供应商的唯一标识符。

  • deviceID 是供应商提供的设备中分层实现的唯一标识符。

  • layeredAPI 是一个 VkPhysicalDeviceLayeredApiKHR,指定由分层实现实现的 API。

  • deviceName 是一个包含以 null 结尾的 UTF-8 字符串的 VK_MAX_PHYSICAL_DEVICE_NAME_SIZE char 数组,它是设备的名称。

如果 layeredAPIVK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR,则可以通过在 pNext 链中包含 VkPhysicalDeviceLayeredApiVulkanPropertiesKHR 结构来查询其他 Vulkan 特定信息。否则,如果 pNext 链中包含此类结构,则会忽略它。

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

  • VUID-VkPhysicalDeviceLayeredApiPropertiesKHR-pNext-pNext
    pNext **必须** 为 NULL 或指向 VkPhysicalDeviceLayeredApiVulkanPropertiesKHR 的有效实例的指针

  • VUID-VkPhysicalDeviceLayeredApiPropertiesKHR-sType-unique
    pNext 链中每个结构的 sType 值 **必须** 是唯一的

作为 VkPhysicalDeviceLayeredApiPropertiesKHR::layeredAPI 返回的 Vulkan 物理设备下的分层实现的可能 API 实现列表为

// Provided by VK_KHR_maintenance7
typedef enum VkPhysicalDeviceLayeredApiKHR {
    VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0,
    VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1,
    VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2,
    VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3,
    VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4,
} VkPhysicalDeviceLayeredApiKHR;
  • VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR - 设备实现了 Vulkan API。

  • VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR - 设备实现了 D3D12 API。

  • VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR - 设备实现了 Metal API。

  • VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR - 设备实现了 OpenGL API。

  • VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR - 设备实现了 OpenGL ES API。

VkPhysicalDeviceLayeredApiVulkanPropertiesKHR 结构体定义如下:

// Provided by VK_KHR_maintenance7
typedef struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR {
    VkStructureType                sType;
    void*                          pNext;
    VkPhysicalDeviceProperties2    properties;
} VkPhysicalDeviceLayeredApiVulkanPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • properties 是一个 VkPhysicalDeviceProperties2,其中返回了底层分层 Vulkan 实现的属性。

实现 **必须** 将 properties.properties.limitsproperties.properties.sparseProperties 的内容填充为零。

有效使用
有效用法(隐式)
  • VUID-VkPhysicalDeviceLayeredApiVulkanPropertiesKHR-sType-sType
    sType **必须** 为 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR

VkPhysicalDeviceMeshShaderPropertiesNV 结构体定义如下:

// Provided by VK_NV_mesh_shader
typedef struct VkPhysicalDeviceMeshShaderPropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxDrawMeshTasksCount;
    uint32_t           maxTaskWorkGroupInvocations;
    uint32_t           maxTaskWorkGroupSize[3];
    uint32_t           maxTaskTotalMemorySize;
    uint32_t           maxTaskOutputCount;
    uint32_t           maxMeshWorkGroupInvocations;
    uint32_t           maxMeshWorkGroupSize[3];
    uint32_t           maxMeshTotalMemorySize;
    uint32_t           maxMeshOutputVertices;
    uint32_t           maxMeshOutputPrimitives;
    uint32_t           maxMeshMultiviewViewCount;
    uint32_t           meshOutputPerVertexGranularity;
    uint32_t           meshOutputPerPrimitiveGranularity;
} VkPhysicalDeviceMeshShaderPropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxDrawMeshTasksCount 是单个绘制网格任务命令可以启动的最大本地工作组数量。请参阅可编程网格着色

  • maxTaskWorkGroupInvocations 是单个本地工作组中任务着色器调用的最大总数。在着色器模块中由 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰的对象指定的 X、Y 和 Z 大小的乘积,**必须** 小于或等于此限制。

  • maxTaskWorkGroupSize[3] 是本地任务工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度上的最大本地工作组大小。在着色器模块中,由 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰的对象指定的 xyz 大小,**必须** 小于或等于相应的限制。

  • maxTaskTotalMemorySize 是任务着色器可以用于共享内存和输出内存的总字节数的最大值。

  • maxTaskOutputCount 是单个任务着色器工作组可以发出的最大输出任务数量。

  • maxMeshWorkGroupInvocations 是单个本地工作组中网格着色器调用的最大总数。在着色器模块中由 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰的对象指定的 X、Y 和 Z 大小的乘积,**必须** 小于或等于此限制。

  • maxMeshWorkGroupSize[3] 是本地网格工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度上的最大本地工作组大小。在着色器模块中,由 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰的对象指定的 xyz 大小,**必须** 小于或等于相应的限制。

  • maxMeshTotalMemorySize 是网格着色器可以用于共享内存和输出内存的总字节数的最大值。

  • maxMeshOutputVertices 是网格着色器输出可以存储的最大顶点数。

  • maxMeshOutputPrimitives 是网格着色器输出可以存储的最大图元数。

  • maxMeshMultiviewViewCount 是网格着色器可以使用的最大多视图视图数。

  • meshOutputPerVertexGranularity 是网格顶点输出分配的粒度。该值可用于计算网格着色器使用的内存大小,该值 **必须** 小于或等于 maxMeshTotalMemorySize

  • meshOutputPerPrimitiveGranularity 是分配为每个图元的网格输出的粒度。该值可用于计算网格着色器使用的内存大小,该值 **必须** 小于或等于 maxMeshTotalMemorySize

如果 VkPhysicalDeviceMeshShaderPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关属性。

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

VkPhysicalDeviceMeshShaderPropertiesEXT 结构体定义如下:

// Provided by VK_EXT_mesh_shader
typedef struct VkPhysicalDeviceMeshShaderPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxTaskWorkGroupTotalCount;
    uint32_t           maxTaskWorkGroupCount[3];
    uint32_t           maxTaskWorkGroupInvocations;
    uint32_t           maxTaskWorkGroupSize[3];
    uint32_t           maxTaskPayloadSize;
    uint32_t           maxTaskSharedMemorySize;
    uint32_t           maxTaskPayloadAndSharedMemorySize;
    uint32_t           maxMeshWorkGroupTotalCount;
    uint32_t           maxMeshWorkGroupCount[3];
    uint32_t           maxMeshWorkGroupInvocations;
    uint32_t           maxMeshWorkGroupSize[3];
    uint32_t           maxMeshSharedMemorySize;
    uint32_t           maxMeshPayloadAndSharedMemorySize;
    uint32_t           maxMeshOutputMemorySize;
    uint32_t           maxMeshPayloadAndOutputMemorySize;
    uint32_t           maxMeshOutputComponents;
    uint32_t           maxMeshOutputVertices;
    uint32_t           maxMeshOutputPrimitives;
    uint32_t           maxMeshOutputLayers;
    uint32_t           maxMeshMultiviewViewCount;
    uint32_t           meshOutputPerVertexGranularity;
    uint32_t           meshOutputPerPrimitiveGranularity;
    uint32_t           maxPreferredTaskWorkGroupInvocations;
    uint32_t           maxPreferredMeshWorkGroupInvocations;
    VkBool32           prefersLocalInvocationVertexOutput;
    VkBool32           prefersLocalInvocationPrimitiveOutput;
    VkBool32           prefersCompactVertexOutput;
    VkBool32           prefersCompactPrimitiveOutput;
} VkPhysicalDeviceMeshShaderPropertiesEXT;

VkPhysicalDeviceMeshShaderPropertiesEXT 结构的成员描述了以下实现相关的限制:

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

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

  • maxTaskWorkGroupTotalCount 是单个网格任务绘制命令可以启动的最大本地工作组总数。 请参阅可编程网格着色

  • maxTaskWorkGroupCount[3] 是单个网格任务绘制命令可以启动的最大本地工作组数量。这三个值分别表示 X、Y 和 Z 维度的最大本地工作组数量。绘制命令的工作组计数参数 **必须** 小于或等于相应的限制。这些维度的乘积 **必须** 小于或等于 maxTaskWorkGroupTotalCount

  • maxTaskWorkGroupInvocations 是单个本地工作组中任务着色器调用的最大总数。在着色器模块中由 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰的对象指定的 X、Y 和 Z 大小的乘积,**必须** 小于或等于此限制。

  • maxTaskWorkGroupSize[3] 是每个维度的最大本地任务工作组大小。这三个值分别表示 X、Y 和 Z 维度上的最大本地工作组大小。在着色器模块中,由 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰的对象指定的 xyz 大小,**必须** 小于或等于相应的限制。

  • maxTaskPayloadSize 是在任务着色器阶段的着色器模块中,使用 TaskPayloadWorkgroupEXT 存储类声明的变量可用的最大总存储大小(以字节为单位)。

  • maxTaskSharedMemorySize 是在任务着色器阶段的着色器模块中,使用 Workgroup 存储类声明的变量可用的最大总存储大小(以字节为单位)。

  • maxTaskPayloadAndSharedMemorySize 是在任务着色器阶段的着色器模块中,使用 TaskPayloadWorkgroupEXTWorkgroup 存储类声明的变量可用的最大总存储大小(以字节为单位)。

  • maxMeshWorkGroupTotalCount 是单个任务着色器工作组可以发出的最大本地输出任务数量。

  • maxMeshWorkGroupCount[3] 是单个任务着色器工作组每个维度可以发射的最大本地输出任务数。这三个值分别表示 X、Y 和 Z 维度的最大本地输出任务数。传递给 OpEmitMeshTasksEXT 的工作组计数参数必须小于或等于相应的限制。这些维度的乘积必须小于或等于 maxMeshWorkGroupTotalCount

  • maxMeshWorkGroupInvocations 是单个本地工作组中网格着色器调用的最大总数。由着色器模块中的 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰符修饰的对象指定的 X、Y 和 Z 大小的乘积必须小于或等于此限制。

  • maxMeshWorkGroupSize[3] 是每个维度本地网格工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度中的最大本地工作组大小。由着色器模块中的 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰符修饰的对象指定的 xyz 大小必须小于或等于相应的限制。

  • maxMeshSharedMemorySize 是网格着色器阶段中,着色器模块中使用 Workgroup 存储类声明的变量可用的最大总存储大小,以字节为单位。

  • maxMeshPayloadAndSharedMemorySize 是网格着色器阶段中,着色器模块中使用 TaskPayloadWorkgroupEXTWorkgroup 存储类声明的变量可用的最大总存储大小,以字节为单位。

  • maxMeshOutputMemorySize 是网格着色器阶段中,着色器模块中输出变量可用的最大总存储大小,以字节为单位,根据网格着色器输出中的公式计算。

  • maxMeshPayloadAndOutputMemorySize 是网格着色器阶段中,着色器模块中使用 TaskPayloadWorkgroupEXT 存储类声明的变量或输出变量可用的最大总存储大小,以字节为单位,根据网格着色器输出中的公式计算。

  • maxMeshOutputComponents 是可以从网格着色器阶段输出的输出变量的最大分量数。

  • maxMeshOutputVertices 是单个网格着色器工作组可以发射的最大顶点数。

  • maxMeshOutputPrimitives 是单个网格着色器工作组可以发射的最大图元数。

  • maxMeshOutputLayers 比可以从网格着色器阶段输出的最大层索引大 1。

  • maxMeshMultiviewViewCount 比任何网格着色器可以使用的最大视图索引大 1。

  • meshOutputPerVertexGranularity 是顶点分配的粒度。为网格着色器阶段分配的输出顶点数被填充为此数字的倍数。该值可用于计算网格着色器阶段中,着色器模块中输出变量所需的存储大小,该大小必须小于或等于 maxMeshOutputMemorySize

  • meshOutputPerPrimitiveGranularity 是图元分配的粒度。为网格着色器阶段分配的输出图元数被填充为此数字的倍数。该值可用于计算网格着色器阶段中,着色器模块中输出变量所需的存储大小,该大小必须小于或等于 maxMeshOutputMemorySize

  • maxPreferredTaskWorkGroupInvocations 是单个工作组中任务着色器调用次数的最大值,实现为了获得最佳性能而优先考虑该值。该值保证是任务着色器阶段支持的子组大小的倍数。

  • maxPreferredMeshWorkGroupInvocations 是单个工作组中网格着色器调用次数的最大值,实现为了获得最佳性能而优先考虑该值。该值保证是网格着色器阶段支持的子组大小的倍数。

  • prefersLocalInvocationVertexOutput 指定当数组索引与 LocalInvocationIndex 匹配时,写入网格着色器中的顶点输出数组是否能产生最佳性能。

  • prefersLocalInvocationPrimitiveOutput 指定当数组索引与 LocalInvocationIndex 匹配时,写入网格着色器中的图元输出数组是否能产生最佳性能。

  • prefersCompactVertexOutput 指定在网格着色器中进行自定义剔除后,是否应压缩输出顶点以获得最佳性能,否则,将顶点保留在其原始位置可能更好。

  • prefersCompactPrimitiveOutput 指定在网格着色器中进行自定义剔除后,是否应压缩输出图元以获得最佳性能,否则,使用 CullPrimitiveEXT 可能更好。

如果 VkPhysicalDeviceMeshShaderPropertiesEXT 结构包含在 VkPhysicalDeviceProperties2pNext 链中,则会使用实现相关的限制填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMeshShaderPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT

VkPhysicalDeviceDescriptorIndexingProperties 结构定义为

// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxUpdateAfterBindDescriptorsInAllPools;
    VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
    VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
    VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
    VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
    VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
    VkBool32           robustBufferAccessUpdateAfterBind;
    VkBool32           quadDivergentImplicitLod;
    uint32_t           maxPerStageDescriptorUpdateAfterBindSamplers;
    uint32_t           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
    uint32_t           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
    uint32_t           maxPerStageDescriptorUpdateAfterBindSampledImages;
    uint32_t           maxPerStageDescriptorUpdateAfterBindStorageImages;
    uint32_t           maxPerStageDescriptorUpdateAfterBindInputAttachments;
    uint32_t           maxPerStageUpdateAfterBindResources;
    uint32_t           maxDescriptorSetUpdateAfterBindSamplers;
    uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffers;
    uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
    uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffers;
    uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
    uint32_t           maxDescriptorSetUpdateAfterBindSampledImages;
    uint32_t           maxDescriptorSetUpdateAfterBindStorageImages;
    uint32_t           maxDescriptorSetUpdateAfterBindInputAttachments;
} VkPhysicalDeviceDescriptorIndexingProperties;

或等效的

// Provided by VK_EXT_descriptor_indexing
typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxUpdateAfterBindDescriptorsInAllPools 是所有使用设置了 VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT 位的池创建的描述符(所有描述符类型的总和)可以创建的最大数量。当超出此限制,或者当此限制代表的空间由于碎片无法满足池创建时,池创建可能会失败。

  • shaderUniformBufferArrayNonUniformIndexingNative 是一个布尔值,表示统一缓冲区描述符是否原生支持非均匀索引。如果此值为 VK_FALSE,则非均匀索引统一缓冲区数组的单个动态指令实例可能会多次执行,以便访问所有描述符。

  • shaderSampledImageArrayNonUniformIndexingNative 是一个布尔值,表示采样器和图像描述符是否原生支持非均匀索引。如果此值为 VK_FALSE,则非均匀索引采样器或图像数组的单个动态指令实例可能会多次执行,以便访问所有描述符。

  • shaderStorageBufferArrayNonUniformIndexingNative 是一个布尔值,表示存储缓冲区描述符是否原生支持非均匀索引。如果此值为 VK_FALSE,则非均匀索引存储缓冲区数组的单个动态指令实例可能会多次执行,以便访问所有描述符。

  • shaderStorageImageArrayNonUniformIndexingNative 是一个布尔值,表示存储图像描述符是否原生支持非均匀索引。如果此值为 VK_FALSE,则非均匀索引存储图像数组的单个动态指令实例可能会多次执行,以便访问所有描述符。

  • shaderInputAttachmentArrayNonUniformIndexingNative 是一个布尔值,表示输入附件描述符是否原生支持非均匀索引。如果此值为 VK_FALSE,则非均匀索引输入附件数组的单个动态指令实例可能会多次执行,以便访问所有描述符。

  • robustBufferAccessUpdateAfterBind 是一个布尔值,表示是否可以在设备上同时启用 robustBufferAccessdescriptorBindingUniformBufferUpdateAfterBinddescriptorBindingStorageBufferUpdateAfterBinddescriptorBindingUniformTexelBufferUpdateAfterBind 和/或 descriptorBindingStorageTexelBufferUpdateAfterBind。如果此值为 VK_FALSE,则必须禁用 robustBufferAccess,或者必须禁用所有这些绑定后更新功能。

  • quadDivergentImplicitLod 是一个布尔值,表示当用于指令的图像和/或采样器对象在四边形内不均匀时,图像操作的隐式 LOD 计算是否具有明确定义的结果。请参阅 导数图像操作

  • maxPerStageDescriptorUpdateAfterBindSamplersmaxPerStageDescriptorSamplers 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxPerStageDescriptorUpdateAfterBindUniformBuffersmaxPerStageDescriptorUniformBuffers 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxPerStageDescriptorUpdateAfterBindStorageBuffersmaxPerStageDescriptorStorageBuffers 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxPerStageDescriptorUpdateAfterBindSampledImagesmaxPerStageDescriptorSampledImages 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxPerStageDescriptorUpdateAfterBindStorageImagesmaxPerStageDescriptorStorageImages 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxPerStageDescriptorUpdateAfterBindInputAttachmentsmaxPerStageDescriptorInputAttachments 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxPerStageUpdateAfterBindResourcesmaxPerStageResources 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxDescriptorSetUpdateAfterBindSamplersmaxDescriptorSetSamplers 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxDescriptorSetUpdateAfterBindUniformBuffersmaxDescriptorSetUniformBuffers 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxDescriptorSetUpdateAfterBindUniformBuffersDynamicmaxDescriptorSetUniformBuffersDynamic 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。虽然应用程序可以从使用 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 创建的池中分配动态统一缓冲区描述符,但这些描述符的绑定必须不能存在于任何包含使用 VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT 创建的绑定的描述符集布局中。

  • maxDescriptorSetUpdateAfterBindStorageBuffersmaxDescriptorSetStorageBuffers 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxDescriptorSetUpdateAfterBindStorageBuffersDynamicmaxDescriptorSetStorageBuffersDynamic 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。虽然应用程序可以从使用 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 创建的池中分配动态存储缓冲区描述符,但这些描述符的绑定必须不能存在于任何包含使用 VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT 创建的绑定的描述符集布局中。

  • maxDescriptorSetUpdateAfterBindSampledImagesmaxDescriptorSetSampledImages 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxDescriptorSetUpdateAfterBindStorageImagesmaxDescriptorSetStorageImages 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

  • maxDescriptorSetUpdateAfterBindInputAttachmentsmaxDescriptorSetInputAttachments 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符。

如果 VkPhysicalDeviceDescriptorIndexingProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的、依赖于实现的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDescriptorIndexingProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES

VkPhysicalDeviceInlineUniformBlockProperties 结构定义为

// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceInlineUniformBlockProperties {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxInlineUniformBlockSize;
    uint32_t           maxPerStageDescriptorInlineUniformBlocks;
    uint32_t           maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
    uint32_t           maxDescriptorSetInlineUniformBlocks;
    uint32_t           maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
} VkPhysicalDeviceInlineUniformBlockProperties;

或等效的

// Provided by VK_EXT_inline_uniform_block
typedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxInlineUniformBlockSize内联统一块绑定的最大大小(以字节为单位)。

  • maxPerStageDescriptorInlineUniformBlocks 是在管道布局中,单个着色器阶段可以访问的最大内联uniform块绑定数量。描述符类型为 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK 的描述符绑定会计算在此限制内。只有在创建描述符集布局时,没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,描述符绑定才会计算在此限制内。

  • maxPerStageDescriptorUpdateAfterBindInlineUniformBlocksmaxPerStageDescriptorInlineUniformBlocks 类似,但它会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符绑定。

  • maxDescriptorSetInlineUniformBlocks 是在管道布局中,所有管道着色器阶段和描述符集编号中,可以包含的最大内联 uniform 块绑定数量。描述符类型为 VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK 的描述符绑定会计算在此限制内。只有在创建描述符集布局时,没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下,描述符绑定才会计算在此限制内。

  • maxDescriptorSetUpdateAfterBindInlineUniformBlocksmaxDescriptorSetInlineUniformBlocks 类似,但它会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符绑定。

如果 VkPhysicalDeviceInlineUniformBlockProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceInlineUniformBlockProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES

VkPhysicalDeviceConservativeRasterizationPropertiesEXT 结构定义如下:

// Provided by VK_EXT_conservative_rasterization
typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    float              primitiveOverestimationSize;
    float              maxExtraPrimitiveOverestimationSize;
    float              extraPrimitiveOverestimationSizeGranularity;
    VkBool32           primitiveUnderestimation;
    VkBool32           conservativePointAndLineRasterization;
    VkBool32           degenerateTrianglesRasterized;
    VkBool32           degenerateLinesRasterized;
    VkBool32           fullyCoveredFragmentShaderInputVariable;
    VkBool32           conservativeRasterizationPostDepthCoverage;
} VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • primitiveOverestimationSize 是在保守光栅化高估模式下,生成图元的每个边缘增加的像素大小。即使大小为 0.0,保守光栅化高估规则仍然适用,如果像素矩形的任何部分被生成图元覆盖,则会为整个像素生成片段。但是,实现可能通过增加生成图元的大小,使像素覆盖区域更加保守。

  • maxExtraPrimitiveOverestimationSize 是实现支持在管道状态中进行额外高估的最大像素大小。值为 0.0 表示实现不支持在保守光栅化期间对生成图元进行任何额外的高估。大于 0.0 的值允许应用程序在保守光栅化高估期间进一步增加生成图元的大小。

  • extraPrimitiveOverestimationSizeGranularity 是在管道状态中,可在 0.0 到 maxExtraPrimitiveOverestimationSize (包括) 之间指定的额外高估的粒度。值为 0.0 表示实现可以使用屏幕空间像素固定点网格中最小的可表示非零值。

  • 如果实现除了 VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT 保守光栅化模式之外,还支持 VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT 保守光栅化模式,则 primitiveUnderestimationVK_TRUE。否则,实现仅支持 VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT

  • 如果实现支持点和线图元的保守光栅化以及三角形图元,则 conservativePointAndLineRasterizationVK_TRUE。否则,实现仅支持三角形图元。

  • 如果在三角形被量化为固定点光栅化像素网格后,生成的图元面积为零,则 degenerateTrianglesRasterizedVK_FALSE,表示实现会剔除这些图元。如果这些图元不被剔除,并且为片段使用触发顶点的属性和深度值,则 degenerateTrianglesRasterizedVK_TRUE。图元面积的计算是在从裁剪后的三角形生成的图元上进行的 (如果适用)。零面积图元是背面,如果需要,应用程序可以启用背面剔除。

  • 如果在直线被量化为固定点光栅化像素网格后,其长度变为零,则 degenerateLinesRasterizedVK_FALSE,表示实现会剔除这些直线。如果长度为零的直线不被剔除,并且为片段使用触发顶点的属性和深度值,则 degenerateLinesRasterizedVK_TRUE

  • 如果实现支持 SPIR-V 内置片段着色器输入变量 FullyCoveredEXT,指定启用了保守光栅化并且片段区域完全被生成图元覆盖,则 fullyCoveredFragmentShaderInputVariableVK_TRUE

  • 如果实现支持启用了 PostDepthCoverage 执行模式的保守光栅化,则 conservativeRasterizationPostDepthCoverageVK_TRUE。否则,当启用保守光栅化时,必须不使用 PostDepthCoverage 执行模式。

如果 VkPhysicalDeviceConservativeRasterizationPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT

VkPhysicalDeviceFragmentDensityMapPropertiesEXT 结构定义如下:

// Provided by VK_EXT_fragment_density_map
typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkExtent2D         minFragmentDensityTexelSize;
    VkExtent2D         maxFragmentDensityTexelSize;
    VkBool32           fragmentDensityInvocations;
} VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • minFragmentDensityTexelSize 是最小片段密度纹素大小

  • maxFragmentDensityTexelSize 是最大片段密度纹素大小。

  • fragmentDensityInvocations 指定实现可能为每个覆盖的样本调用额外的片段着色器调用。

如果 VkPhysicalDeviceFragmentDensityMapPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT

VkPhysicalDeviceFragmentDensityMap2PropertiesEXT 结构定义如下:

// Provided by VK_EXT_fragment_density_map2
typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           subsampledLoads;
    VkBool32           subsampledCoarseReconstructionEarlyAccess;
    uint32_t           maxSubsampledArrayLayers;
    uint32_t           maxDescriptorSetSubsampledSamplers;
} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • subsampledLoads 指定使用 load 操作在子采样附件上执行图像数据读取是否会重新采样到渲染通道的片段密度。

  • subsampledCoarseReconstructionEarlyAccess 指定在片段着色器中使用 flags 包含 VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT 创建的采样器执行图像数据读取是否会在 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT 期间触发额外的读取。

  • maxSubsampledArrayLayers 是支持子采样器的用法中,VkImageView 数组层级的最大数量。

  • maxDescriptorSetSubsampledSamplers 是一个 VkPipelineLayout可以 包含的子采样器最大数量。

如果 VkPhysicalDeviceFragmentDensityMap2PropertiesEXT 结构体被包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充上每个对应的、依赖于具体实现的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentDensityMap2PropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT

VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM 结构体定义如下:

// Provided by VK_QCOM_fragment_density_map_offset
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
    VkStructureType    sType;
    void*              pNext;
    VkExtent2D         fragmentDensityOffsetGranularity;
} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • fragmentDensityOffsetGranularity片段密度偏移的粒度。

如果 VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM 结构体被包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充上每个对应的、依赖于具体实现的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM

VkPhysicalDeviceShaderCorePropertiesAMD 结构体定义如下:

// Provided by VK_AMD_shader_core_properties
typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           shaderEngineCount;
    uint32_t           shaderArraysPerEngineCount;
    uint32_t           computeUnitsPerShaderArray;
    uint32_t           simdPerComputeUnit;
    uint32_t           wavefrontsPerSimd;
    uint32_t           wavefrontSize;
    uint32_t           sgprsPerSimd;
    uint32_t           minSgprAllocation;
    uint32_t           maxSgprAllocation;
    uint32_t           sgprAllocationGranularity;
    uint32_t           vgprsPerSimd;
    uint32_t           minVgprAllocation;
    uint32_t           maxVgprAllocation;
    uint32_t           vgprAllocationGranularity;
} VkPhysicalDeviceShaderCorePropertiesAMD;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • shaderEngineCount 是一个无符号整数值,表示物理设备着色器核心内着色器引擎的数量。

  • shaderArraysPerEngineCount 是一个无符号整数值,表示一个着色器引擎内部的着色器阵列的数量。每个着色器阵列都有自己的扫描转换器、计算单元集合和一个渲染后端(颜色和深度附件)。一个着色器引擎内的着色器阵列共享着色器处理器输入(波浪发射器)和着色器导出(导出缓冲区)单元。目前,一个着色器引擎可以有一个或两个着色器阵列。

  • computeUnitsPerShaderArray 是一个无符号整数值,表示一个着色器阵列内的物理计算单元数量。着色器阵列中的活动计算单元数量 可能 会更少。一个计算单元包含一组 SIMD 以及一个定序器模块和一个本地数据存储。

  • simdPerComputeUnit 是一个无符号整数值,表示一个计算单元内的 SIMD 数量。每个 SIMD 一次处理一个指令。

  • wavefrontSize 是一个无符号整数值,表示子群的最大大小。

  • sgprsPerSimd 是一个无符号整数值,表示每个 SIMD 的物理标量通用寄存器(SGPR)数量。

  • minSgprAllocation 是一个无符号整数值,表示为波浪分配的 SGPR 的最小数量。

  • maxSgprAllocation 是一个无符号整数值,表示为波浪分配的 SGPR 的最大数量。

  • sgprAllocationGranularity 是一个无符号整数值,表示波浪 SGPR 分配的粒度。

  • vgprsPerSimd 是一个无符号整数值,表示每个 SIMD 的物理向量通用寄存器(VGPR)数量。

  • minVgprAllocation 是一个无符号整数值,表示为波浪分配的 VGPR 的最小数量。

  • maxVgprAllocation 是一个无符号整数值,表示为波浪分配的 VGPR 的最大数量。

  • vgprAllocationGranularity 是一个无符号整数值,表示波浪 VGPR 分配的粒度。

如果 VkPhysicalDeviceShaderCorePropertiesAMD 结构体被包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充上每个对应的、依赖于具体实现的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD

VkPhysicalDeviceShaderCoreProperties2AMD 结构体定义如下:

// Provided by VK_AMD_shader_core_properties2
typedef struct VkPhysicalDeviceShaderCoreProperties2AMD {
    VkStructureType                   sType;
    void*                             pNext;
    VkShaderCorePropertiesFlagsAMD    shaderCoreFeatures;
    uint32_t                          activeComputeUnitCount;
} VkPhysicalDeviceShaderCoreProperties2AMD;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • shaderCoreFeatures 是一个 VkShaderCorePropertiesFlagBitsAMD 的位掩码,指示着色器核心支持的功能集。

  • activeComputeUnitCount 是一个无符号整数值,表示已启用的计算单元数量。

如果 VkPhysicalDeviceShaderCoreProperties2AMD 结构体被包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充上每个对应的、依赖于具体实现的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderCoreProperties2AMD-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD

此类型的位 可以 由未来的扩展或 VK_AMD_shader_core_properties2 扩展的新版本定义。 VkShaderCorePropertiesFlagsAMDflags 成员的可能值是:

// Provided by VK_AMD_shader_core_properties2
typedef enum VkShaderCorePropertiesFlagBitsAMD {
} VkShaderCorePropertiesFlagBitsAMD;
// Provided by VK_AMD_shader_core_properties2
typedef VkFlags VkShaderCorePropertiesFlagsAMD;

VkShaderCorePropertiesFlagsAMD 是一个位掩码类型,用于提供零个或多个 VkShaderCorePropertiesFlagBitsAMD

VkPhysicalDeviceDepthStencilResolveProperties 结构体定义如下:

// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
    VkStructureType       sType;
    void*                 pNext;
    VkResolveModeFlags    supportedDepthResolveModes;
    VkResolveModeFlags    supportedStencilResolveModes;
    VkBool32              independentResolveNone;
    VkBool32              independentResolve;
} VkPhysicalDeviceDepthStencilResolveProperties;

或等效的

// Provided by VK_KHR_depth_stencil_resolve
typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • supportedDepthResolveModes 是一个 VkResolveModeFlagBits 的位掩码,指示支持的深度解析模式的集合。 VK_RESOLVE_MODE_SAMPLE_ZERO_BIT 必须 包含在集合中,但实现 可能 支持其他模式。

  • supportedStencilResolveModes 是一个 VkResolveModeFlagBits 的位掩码,指示支持的模板解析模式的集合。VK_RESOLVE_MODE_SAMPLE_ZERO_BIT 必须 包含在集合中,但实现 可能 支持其他模式。VK_RESOLVE_MODE_AVERAGE_BIT 不能 包含在集合中。

  • independentResolveNone 如果当其中一个模式是 VK_RESOLVE_MODE_NONE 时,实现支持将深度和模板解析模式设置为不同的值,则为 VK_TRUE。否则,实现仅支持将两种模式设置为相同的值。

  • 如果实现支持支持的深度和模板解析模式的所有组合,包括将深度或模板解析模式设置为 VK_RESOLVE_MODE_NONE,则 independentResolveVK_TRUE。支持 independentResolve 的实现 必须 也支持 independentResolveNone

如果 VkPhysicalDeviceDepthStencilResolveProperties 结构体被包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它会被填充上每个对应的、依赖于具体实现的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDepthStencilResolveProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES

VkPhysicalDevicePerformanceQueryPropertiesKHR 结构体定义如下:

// Provided by VK_KHR_performance_query
typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           allowCommandBufferQueryCopies;
} VkPhysicalDevicePerformanceQueryPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • 如果允许性能查询池与 vkCmdCopyQueryPoolResults 一起使用,则 allowCommandBufferQueryCopiesVK_TRUE

如果 VkPhysicalDevicePerformanceQueryPropertiesKHR 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它将被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePerformanceQueryPropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR

VkPhysicalDeviceShadingRateImagePropertiesNV 结构体定义如下:

// Provided by VK_NV_shading_rate_image
typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    VkExtent2D         shadingRateTexelSize;
    uint32_t           shadingRatePaletteSize;
    uint32_t           shadingRateMaxCoarseSamples;
} VkPhysicalDeviceShadingRateImagePropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • shadingRateTexelSize 指示帧缓冲区中对应于着色率图像中每个纹素的部分的宽度和高度。

  • shadingRatePaletteSize 指示着色率图像支持的最大调色板条目数。

  • shadingRateMaxCoarseSamples 指定单个片段中支持的最大覆盖样本数。如果从基本着色率导出的片段大小与每个像素的覆盖样本数的乘积超过此限制,则将调整最终着色率,使其乘积不超过此限制。

如果 VkPhysicalDeviceShadingRateImagePropertiesNV 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它将被填充为每个对应的实现相关的属性。

这些属性与 着色率图像 功能相关。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV

VkPhysicalDeviceMemoryDecompressionPropertiesNV 结构体定义如下:

// Provided by VK_NV_memory_decompression
typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesNV {
    VkStructureType                       sType;
    void*                                 pNext;
    VkMemoryDecompressionMethodFlagsNV    decompressionMethods;
    uint64_t                              maxDecompressionIndirectCount;
} VkPhysicalDeviceMemoryDecompressionPropertiesNV;

如果 VkPhysicalDeviceMemoryDecompressionPropertiesNV 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它将被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMemoryDecompressionPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV

VkPhysicalDeviceTransformFeedbackPropertiesEXT 结构体定义如下:

// Provided by VK_EXT_transform_feedback
typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxTransformFeedbackStreams;
    uint32_t           maxTransformFeedbackBuffers;
    VkDeviceSize       maxTransformFeedbackBufferSize;
    uint32_t           maxTransformFeedbackStreamDataSize;
    uint32_t           maxTransformFeedbackBufferDataSize;
    uint32_t           maxTransformFeedbackBufferDataStride;
    VkBool32           transformFeedbackQueries;
    VkBool32           transformFeedbackStreamsLinesTriangles;
    VkBool32           transformFeedbackRasterizationStreamSelect;
    VkBool32           transformFeedbackDraw;
} VkPhysicalDeviceTransformFeedbackPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxTransformFeedbackStreams 是可以使用 GeometryStreams 功能声明的几何着色器输出的最大顶点流数量。 如果实现不支持 VkPhysicalDeviceTransformFeedbackFeaturesEXT::geometryStreams,则 maxTransformFeedbackStreams 必须1

  • maxTransformFeedbackBuffers 是可以绑定以捕获来自最后一个光栅化前着色器阶段的着色器输出的最大变换反馈缓冲区数量。

  • maxTransformFeedbackBufferSize 是在 vkCmdBindTransformFeedbackBuffersEXT 中绑定用于变换反馈的缓冲区时可以指定的最大大小。

  • maxTransformFeedbackStreamDataSize 是与特定顶点流关联的一个或多个变换反馈缓冲区捕获的每个顶点的最大数据量(以字节为单位)。

  • maxTransformFeedbackBufferDataSize 是可以捕获到特定变换反馈缓冲区的每个顶点的最大数据量(以字节为单位)。

  • maxTransformFeedbackBufferDataStride 是每次捕获顶点数据到缓冲区之间的最大步幅。

  • 如果实现支持 VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT 查询类型,则 transformFeedbackQueriesVK_TRUE 。 如果无法创建此类型的查询,则 transformFeedbackQueriesVK_FALSE

  • 如果实现除了输出 OutputPoints 外,还支持几何着色器 OpExecutionModeOutputLineStripOutputTriangleStrip,则 transformFeedbackStreamsLinesTrianglesVK_TRUE 。如果 transformFeedbackStreamsLinesTrianglesVK_FALSE,则当从几何着色器输出多个顶点流时,实现仅支持 OutputPointsOpExecutionMode

  • 如果实现支持 GeometryStreams SPIR-V 功能,并且应用程序可以使用 VkPipelineRasterizationStateStreamCreateInfoEXT 来修改用于光栅化的顶点流输出,则 transformFeedbackRasterizationStreamSelectVK_TRUE 。否则,顶点流 0 必须 始终用于光栅化。

  • 如果实现支持 vkCmdDrawIndirectByteCountEXT 函数,则 transformFeedbackDrawVK_TRUE,否则必须不调用该函数。

如果 VkPhysicalDeviceTransformFeedbackPropertiesEXT 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它将被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT

VkPhysicalDeviceCopyMemoryIndirectPropertiesNV 结构体定义如下:

// Provided by VK_NV_copy_memory_indirect
typedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    VkQueueFlags       supportedQueues;
} VkPhysicalDeviceCopyMemoryIndirectPropertiesNV;

如果支持 indirectCopy 功能,则 supportedQueues 必须 返回至少一个支持的队列。

如果 VkPhysicalDeviceCopyMemoryIndirectPropertiesNV 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,它将被填充为每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCopyMemoryIndirectPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV

VkPhysicalDeviceRayTracingPropertiesNV 结构体定义如下:

// Provided by VK_NV_ray_tracing
typedef struct VkPhysicalDeviceRayTracingPropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           shaderGroupHandleSize;
    uint32_t           maxRecursionDepth;
    uint32_t           maxShaderGroupStride;
    uint32_t           shaderGroupBaseAlignment;
    uint64_t           maxGeometryCount;
    uint64_t           maxInstanceCount;
    uint64_t           maxTriangleCount;
    uint32_t           maxDescriptorSetAccelerationStructures;
} VkPhysicalDeviceRayTracingPropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • shaderGroupHandleSize 是着色器头的大小(以字节为单位)。

  • maxRecursionDepth 是跟踪命令中允许的最大递归级别数。

  • maxShaderGroupStride 是着色器绑定表中着色器组之间允许的最大步幅(以字节为单位)。

  • shaderGroupBaseAlignment 是着色器绑定表基址的必需对齐(以字节为单位)。

  • maxGeometryCount 是底层加速结构中几何体的最大数量。

  • maxInstanceCount 是顶层加速结构中实例的最大数量。

  • maxTriangleCount 是底层加速结构中所有几何体中三角形的最大数量。

  • maxDescriptorSetAccelerationStructures 是描述符集中允许的最大加速结构描述符数量。

由于几何体、实例和三角形计数在加速结构创建时指定为 32 位值,因此 maxGeometryCountmaxInstanceCountmaxTriangleCount 必须 不超过 232-1

如果 VkPhysicalDeviceRayTracingPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关的属性填充它。

此结构指定的限制 必须VkPhysicalDeviceAccelerationStructurePropertiesKHRVkPhysicalDeviceRayTracingPipelinePropertiesKHR 中具有相同名称的限制相匹配。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV

VkPhysicalDeviceAccelerationStructurePropertiesKHR 结构定义为

// Provided by VK_KHR_acceleration_structure
typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR {
    VkStructureType    sType;
    void*              pNext;
    uint64_t           maxGeometryCount;
    uint64_t           maxInstanceCount;
    uint64_t           maxPrimitiveCount;
    uint32_t           maxPerStageDescriptorAccelerationStructures;
    uint32_t           maxPerStageDescriptorUpdateAfterBindAccelerationStructures;
    uint32_t           maxDescriptorSetAccelerationStructures;
    uint32_t           maxDescriptorSetUpdateAfterBindAccelerationStructures;
    uint32_t           minAccelerationStructureScratchOffsetAlignment;
} VkPhysicalDeviceAccelerationStructurePropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxGeometryCount 是底层加速结构中几何体的最大数量。

  • maxInstanceCount 是顶层加速结构中实例的最大数量。

  • maxPrimitiveCount 是底层加速结构中所有几何体中三角形或 AABB 的最大数量。

  • maxPerStageDescriptorAccelerationStructures 是在管线布局中单个着色器阶段可访问的最大加速结构绑定数量。描述符类型为 VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR 的描述符绑定会影响此限制。只有在没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下创建的描述符集布局中的描述符绑定才会影响此限制。

  • maxPerStageDescriptorUpdateAfterBindAccelerationStructuresmaxPerStageDescriptorAccelerationStructures 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符绑定。

  • maxDescriptorSetAccelerationStructures 是在所有管线着色器阶段和描述符集编号的管线布局中,描述符绑定中可包含的最大加速结构描述符数量。描述符类型为 VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR 的描述符绑定会影响此限制。只有在没有设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位的情况下创建的描述符集布局中的描述符绑定才会影响此限制。

  • maxDescriptorSetUpdateAfterBindAccelerationStructuresmaxDescriptorSetAccelerationStructures 类似,但会计算通过设置或不设置 VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT 位创建的描述符集中的描述符绑定。

  • minAccelerationStructureScratchOffsetAlignment 是传递给加速结构构建命令的临时数据的最小必需对齐(以字节为单位)。该值必须是 2 的幂。

由于几何体、实例和图元计数在加速结构创建时指定为 32 位值,因此 maxGeometryCountmaxInstanceCountmaxPrimitiveCount 必须 不超过 232-1

如果 VkPhysicalDeviceAccelerationStructurePropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关的属性填充它。

此结构指定的限制 必须VkPhysicalDeviceRayTracingPropertiesNV 中具有相同名称的限制相匹配。

有效用法(隐式)
  • VUID-VkPhysicalDeviceAccelerationStructurePropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR

VkPhysicalDeviceRayTracingPipelinePropertiesKHR 结构定义为

// Provided by VK_KHR_ray_tracing_pipeline
typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           shaderGroupHandleSize;
    uint32_t           maxRayRecursionDepth;
    uint32_t           maxShaderGroupStride;
    uint32_t           shaderGroupBaseAlignment;
    uint32_t           shaderGroupHandleCaptureReplaySize;
    uint32_t           maxRayDispatchInvocationCount;
    uint32_t           shaderGroupHandleAlignment;
    uint32_t           maxRayHitAttributeSize;
} VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • shaderGroupHandleSize 是着色器头的大小(以字节为单位)。

  • maxRayRecursionDepth 是跟踪命令中允许的最大射线递归级别数。

  • maxShaderGroupStride 是着色器绑定表中着色器组之间允许的最大步幅(以字节为单位)。

  • shaderGroupBaseAlignment 是着色器绑定表基址的必需对齐(以字节为单位)。

  • shaderGroupHandleCaptureReplaySize 是着色器组句柄执行捕获和回放所需信息的字节数。

  • maxRayDispatchInvocationCount 是单个 vkCmdTraceRaysIndirectKHRvkCmdTraceRaysKHR 命令可能生成的最大射线生成着色器调用次数。

  • shaderGroupHandleAlignment 是着色器绑定表中每个条目的必需对齐(以字节为单位)。该值必须是 2 的幂。

  • maxRayHitAttributeSize 是射线属性结构的最大大小(以字节为单位)

如果 VkPhysicalDeviceRayTracingPipelinePropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关的属性填充它。

此结构指定的限制 必须VkPhysicalDeviceRayTracingPropertiesNV 中具有相同名称的限制相匹配。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingPipelinePropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR

VkPhysicalDeviceCooperativeMatrixPropertiesNV 结构定义为

// Provided by VK_NV_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV {
    VkStructureType       sType;
    void*                 pNext;
    VkShaderStageFlags    cooperativeMatrixSupportedStages;
} VkPhysicalDeviceCooperativeMatrixPropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • cooperativeMatrixSupportedStagesVkShaderStageFlagBits 的位域,描述了支持协同矩阵指令的着色器阶段。如果物理设备的任何队列支持 VK_QUEUE_COMPUTE_BIT,则 cooperativeMatrixSupportedStages 将设置 VK_SHADER_STAGE_COMPUTE_BIT 位。

如果 VkPhysicalDeviceCooperativeMatrixPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关的属性填充它。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV

VkPhysicalDeviceCooperativeMatrixPropertiesKHR 结构定义为

// Provided by VK_KHR_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR {
    VkStructureType       sType;
    void*                 pNext;
    VkShaderStageFlags    cooperativeMatrixSupportedStages;
} VkPhysicalDeviceCooperativeMatrixPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • cooperativeMatrixSupportedStagesVkShaderStageFlagBits 的位域,描述了支持协同矩阵指令的着色器阶段。如果物理设备的任何队列支持 VK_QUEUE_COMPUTE_BIT,则 cooperativeMatrixSupportedStages 将设置 VK_SHADER_STAGE_COMPUTE_BIT 位。

cooperativeMatrixSupportedStages 必须 不能设置除 VK_SHADER_STAGE_COMPUTE_BIT 以外的任何位。

如果 VkPhysicalDeviceCooperativeMatrixPropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关的属性填充它。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCooperativeMatrixPropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR

VkPhysicalDeviceCooperativeMatrix2PropertiesNV 结构定义如下:

// Provided by VK_NV_cooperative_matrix2
typedef struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           cooperativeMatrixWorkgroupScopeMaxWorkgroupSize;
    uint32_t           cooperativeMatrixFlexibleDimensionsMaxDimension;
    uint32_t           cooperativeMatrixWorkgroupScopeReservedSharedMemory;
} VkPhysicalDeviceCooperativeMatrix2PropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • cooperativeMatrixWorkgroupScopeMaxWorkgroupSize 是当模块使用 OpTypeCooperativeMatrixKHRScope 等于 Workgroup 时,工作组中的最大调用次数。

  • cooperativeMatrixFlexibleDimensionsMaxDimension 是当 cooperativeMatrixFlexibleDimensions 特性启用时,协同矩阵类型支持的最大维度。

  • cooperativeMatrixWorkgroupScopeReservedSharedMemory 是当模块使用 OpTypeCooperativeMatrixKHRScope 等于 Workgroup 时,实现保留的共享内存字节数。

如果 VkPhysicalDeviceCooperativeMatrix2PropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCooperativeMatrix2PropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV

VkPhysicalDeviceShaderSMBuiltinsPropertiesNV 结构定义如下:

// Provided by VK_NV_shader_sm_builtins
typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           shaderSMCount;
    uint32_t           shaderWarpsPerSM;
} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • shaderSMCount 是设备上的 SM 数量。

  • shaderWarpsPerSM 是一个 SM 上同时执行的最大 warp 数量。

如果 VkPhysicalDeviceShaderSMBuiltinsPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderSMBuiltinsPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV

VkPhysicalDeviceTexelBufferAlignmentProperties 结构定义如下:

// Provided by VK_VERSION_1_3
typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties {
    VkStructureType    sType;
    void*              pNext;
    VkDeviceSize       storageTexelBufferOffsetAlignmentBytes;
    VkBool32           storageTexelBufferOffsetSingleTexelAlignment;
    VkDeviceSize       uniformTexelBufferOffsetAlignmentBytes;
    VkBool32           uniformTexelBufferOffsetSingleTexelAlignment;
} VkPhysicalDeviceTexelBufferAlignmentProperties;

或等效的

// Provided by VK_EXT_texel_buffer_alignment
typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • storageTexelBufferOffsetAlignmentBytes 是适用于任何格式的存储纹理缓冲区的字节对齐值。该值必须是 2 的幂。

  • storageTexelBufferOffsetSingleTexelAlignment 指示单纹素对齐是否足以用于任何格式的存储纹理缓冲区。

  • uniformTexelBufferOffsetAlignmentBytes 是适用于任何格式的 uniform 纹理缓冲区的字节对齐值。该值必须是 2 的幂。

  • uniformTexelBufferOffsetSingleTexelAlignment 指示单纹素对齐是否足以用于任何格式的 uniform 纹理缓冲区。

如果 VkPhysicalDeviceTexelBufferAlignmentProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

如果单纹素对齐属性为 VK_FALSE,则缓冲区视图的偏移量必须与相应的字节对齐值对齐。如果单纹素对齐属性为 VK_TRUE,则缓冲区视图的偏移量必须与相应的字节对齐值或单个纹素的大小(基于 VkBufferViewCreateInfo::format)中较小的值对齐。如果单个纹素的大小是三个字节的倍数,则使用格式的单个分量的大小代替。

对于任何支持用作纹理缓冲区的格式,这些限制必须不声明大于 要求的 VkPhysicalDeviceLimits::minTexelBufferOffsetAlignment 的最大最小值对齐。

有效用法(隐式)
  • VUID-VkPhysicalDeviceTexelBufferAlignmentProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES

VkPhysicalDeviceTimelineSemaphoreProperties 结构定义如下:

// Provided by VK_VERSION_1_2
typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
    VkStructureType    sType;
    void*              pNext;
    uint64_t           maxTimelineSemaphoreValueDifference;
} VkPhysicalDeviceTimelineSemaphoreProperties;

或等效的

// Provided by VK_KHR_timeline_semaphore
typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxTimelineSemaphoreValueDifference 指示时间线信号量的当前值与任何挂起的信号或等待操作之间实现允许的最大差异。

如果 VkPhysicalDeviceTimelineSemaphoreProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceTimelineSemaphoreProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES

VkPhysicalDeviceLineRasterizationProperties 结构定义如下:

// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceLineRasterizationProperties {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           lineSubPixelPrecisionBits;
} VkPhysicalDeviceLineRasterizationProperties;

或等效的

// Provided by VK_KHR_line_rasterization
typedef VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesKHR;

或等效的

// Provided by VK_EXT_line_rasterization
typedef VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • lineSubPixelPrecisionBits 是在光栅化 线段 时,帧缓冲区坐标 xfyf 中的亚像素精度位数。

如果 VkPhysicalDeviceLineRasterizationProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceLineRasterizationProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES

VkPhysicalDeviceRobustness2PropertiesEXT 结构定义如下:

// Provided by VK_EXT_robustness2
typedef struct VkPhysicalDeviceRobustness2PropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkDeviceSize       robustStorageBufferAccessSizeAlignment;
    VkDeviceSize       robustUniformBufferAccessSizeAlignment;
} VkPhysicalDeviceRobustness2PropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • robustStorageBufferAccessSizeAlignment 是当启用 robustBufferAccess2 特性时,用于边界检查的存储缓冲区描述符的范围向上舍入到的字节数。此值必须为 1 或 4。

  • robustUniformBufferAccessSizeAlignment 是当启用 robustBufferAccess2 特性时,用于边界检查的 uniform 缓冲区描述符的范围向上舍入到的字节数。此值必须是 [1, 256] 范围内的 2 的幂。

如果 VkPhysicalDeviceRobustness2PropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRobustness2PropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT

VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV 结构定义如下:

// Provided by VK_NV_device_generated_commands
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxGraphicsShaderGroupCount;
    uint32_t           maxIndirectSequenceCount;
    uint32_t           maxIndirectCommandsTokenCount;
    uint32_t           maxIndirectCommandsStreamCount;
    uint32_t           maxIndirectCommandsTokenOffset;
    uint32_t           maxIndirectCommandsStreamStride;
    uint32_t           minSequencesCountBufferOffsetAlignment;
    uint32_t           minSequencesIndexBufferOffsetAlignment;
    uint32_t           minIndirectCommandsBufferOffsetAlignment;
} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;

如果 VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个相应的实现相关的属性填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV

VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT 结构定义如下

// Provided by VK_EXT_device_generated_commands
typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
    VkStructureType                        sType;
    void*                                  pNext;
    uint32_t                               maxIndirectPipelineCount;
    uint32_t                               maxIndirectShaderObjectCount;
    uint32_t                               maxIndirectSequenceCount;
    uint32_t                               maxIndirectCommandsTokenCount;
    uint32_t                               maxIndirectCommandsTokenOffset;
    uint32_t                               maxIndirectCommandsIndirectStride;
    VkIndirectCommandsInputModeFlagsEXT    supportedIndirectCommandsInputModes;
    VkShaderStageFlags                     supportedIndirectCommandsShaderStages;
    VkShaderStageFlags                     supportedIndirectCommandsShaderStagesPipelineBinding;
    VkShaderStageFlags                     supportedIndirectCommandsShaderStagesShaderBinding;
    VkBool32                               deviceGeneratedCommandsTransformFeedback;
    VkBool32                               deviceGeneratedCommandsMultiDrawIndirectCount;
} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxIndirectPipelineCount 是传递给 vkCreateIndirectExecutionSetEXT 的管道的最大数量。

  • maxIndirectShaderObjectCount 是传递给 vkCreateIndirectExecutionSetEXT 的着色器对象的最大数量。如果此值为零,则不支持间接绑定着色器对象。

  • maxIndirectSequenceCountVkGeneratedCommandsInfoEXTVkGeneratedCommandsMemoryRequirementsInfoEXT 中的最大序列数。

  • maxIndirectCommandsTokenCountVkIndirectCommandsLayoutCreateInfoEXT 中令牌的最大数量。

  • maxIndirectCommandsTokenOffsetVkIndirectCommandsLayoutTokenEXT 中最大的偏移量。

  • maxIndirectCommandsIndirectStrideVkIndirectCommandsLayoutCreateInfoEXT 中最大的流步幅。

  • supportedIndirectCommandsInputModes 指示支持的输入模式。

  • supportedIndirectCommandsShaderStages 指示可以用于生成间接命令的阶段。实现至少需要支持:VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_FRAGMENT_BITVK_SHADER_STAGE_COMPUTE_BIT

  • supportedIndirectCommandsShaderStagesPipelineBinding 指示在间接执行集中,可以用于使用管道间接绑定着色器阶段的阶段。

  • supportedIndirectCommandsShaderStagesShaderBinding 指示在间接执行集中,可以用于使用着色器对象间接绑定着色器阶段的阶段。

  • deviceGeneratedCommandsTransformFeedback 指示实现是否支持与 VK_EXT_transform_feedback 的交互,用于不是使用 VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT 创建的管道。

  • deviceGeneratedCommandsMultiDrawIndirectCount 指示实现是否支持多绘制间接令牌的 COUNT 变体。

如果 VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个相应的实现相关的属性填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT

VkPhysicalDevicePortabilitySubsetPropertiesKHR 结构定义如下

// Provided by VK_KHR_portability_subset
typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           minVertexInputBindingStrideAlignment;
} VkPhysicalDevicePortabilitySubsetPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • minVertexInputBindingStrideAlignment 指示顶点输入步幅的最小对齐值。VkVertexInputBindingDescription::stride 必须是此值的倍数,并且至少与其一样大。该值必须是 2 的幂。

如果 VkPhysicalDevicePortabilitySubsetPropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个相应的实现相关的属性填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDevicePortabilitySubsetPropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR

VkPhysicalDeviceFragmentShadingRatePropertiesKHR 结构定义如下

// Provided by VK_KHR_fragment_shading_rate
typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR {
    VkStructureType          sType;
    void*                    pNext;
    VkExtent2D               minFragmentShadingRateAttachmentTexelSize;
    VkExtent2D               maxFragmentShadingRateAttachmentTexelSize;
    uint32_t                 maxFragmentShadingRateAttachmentTexelSizeAspectRatio;
    VkBool32                 primitiveFragmentShadingRateWithMultipleViewports;
    VkBool32                 layeredShadingRateAttachments;
    VkBool32                 fragmentShadingRateNonTrivialCombinerOps;
    VkExtent2D               maxFragmentSize;
    uint32_t                 maxFragmentSizeAspectRatio;
    uint32_t                 maxFragmentShadingRateCoverageSamples;
    VkSampleCountFlagBits    maxFragmentShadingRateRasterizationSamples;
    VkBool32                 fragmentShadingRateWithShaderDepthStencilWrites;
    VkBool32                 fragmentShadingRateWithSampleMask;
    VkBool32                 fragmentShadingRateWithShaderSampleMask;
    VkBool32                 fragmentShadingRateWithConservativeRasterization;
    VkBool32                 fragmentShadingRateWithFragmentShaderInterlock;
    VkBool32                 fragmentShadingRateWithCustomSampleLocations;
    VkBool32                 fragmentShadingRateStrictMultiplyCombiner;
} VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • minFragmentShadingRateAttachmentTexelSize 指示片段着色率附件中每个纹素对应的帧缓冲区部分的最小支持宽度和高度。每个值必须小于或等于 maxFragmentShadingRateAttachmentTexelSize 中的值。每个值必须是 2 的幂。如果不支持 attachmentFragmentShadingRate 功能,则必须(0,0)

  • maxFragmentShadingRateAttachmentTexelSize 指示片段着色率附件中每个纹素对应的帧缓冲区部分的最大支持宽度和高度。每个值必须大于或等于 minFragmentShadingRateAttachmentTexelSize 中的值。每个值必须是 2 的幂。如果不支持 attachmentFragmentShadingRate 功能,则必须(0,0)

  • maxFragmentShadingRateAttachmentTexelSizeAspectRatio 指示片段着色率附件中每个纹素对应的帧缓冲部分的最大宽高比。maxFragmentShadingRateAttachmentTexelSizeAspectRatio 必须 是 2 的幂,并且 必须 小于或等于 max(maxFragmentShadingRateAttachmentTexelSize.width / minFragmentShadingRateAttachmentTexelSize.height, maxFragmentShadingRateAttachmentTexelSize.height / minFragmentShadingRateAttachmentTexelSize.width)。如果不支持 attachmentFragmentShadingRate 功能,则它必须为 0。

  • primitiveFragmentShadingRateWithMultipleViewports 指定在使用多个视口时,是否可以使用图元片段着色率。如果此值为 VK_FALSE,则必须仅使用单个视口,并且在设置 PrimitiveShadingRateKHR 时,应用程序必须不写入 ViewportMaskNVViewportIndex 内置变量。如果不支持 shaderOutputViewportIndex 功能、VK_EXT_shader_viewport_index_layer 扩展或 geometryShader 功能,或者如果不支持 primitiveFragmentShadingRate 功能,则它必须VK_FALSE

  • layeredShadingRateAttachments 指定是否可以创建具有多个图层的着色率附件图像视图。如果此值为 VK_FALSE,则当创建具有包含 VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRusage 的图像视图时,layerCount 必须1。如果不支持 multiview 功能、shaderOutputViewportIndex 功能、VK_EXT_shader_viewport_index_layer 扩展或 geometryShader 功能,或者如果不支持 attachmentFragmentShadingRate 功能,则它必须VK_FALSE

  • fragmentShadingRateNonTrivialCombinerOps 指定是否可以使用 VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRVK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR 以外的 VkFragmentShadingRateCombinerOpKHR 枚举。除非支持 primitiveFragmentShadingRateattachmentFragmentShadingRate 功能,否则它必须VK_FALSE

  • maxFragmentSize 指示片段支持的最大宽度和高度。其 widthheight 成员必须都是 2 的幂值。此限制纯粹是信息性的,不会进行验证。

  • maxFragmentSizeAspectRatio 指示片段的最大宽高比。maxFragmentSizeAspectRatio 必须是 2 的幂值,并且 必须小于或等于 maxFragmentSizewidthheight 成员的最大值。此限制纯粹是信息性的,不会进行验证。

  • maxFragmentShadingRateCoverageSamples 指定单个片段中支持的最大覆盖样本数。maxFragmentShadingRateCoverageSamples 必须小于或等于 maxFragmentSizewidthheight 成员的乘积,以及 maxFragmentShadingRateRasterizationSamples 报告的样本计数。如果支持 fragmentShadingRateWithShaderSampleMask,则 maxFragmentShadingRateCoverageSamples 必须小于或等于 maxSampleMaskWords × 32。此限制纯粹是信息性的,不会进行验证。

  • maxFragmentShadingRateRasterizationSamples 是一个 VkSampleCountFlagBits 值,指定当一个片段覆盖多个像素时支持的最大采样率。此限制纯粹是信息性的,不会进行验证。

  • fragmentShadingRateWithShaderDepthStencilWrites 指定实现是否支持从多像素片段的片段着色器写入 FragDepthFragStencilRefEXT。如果此值为 VK_FALSE,则写入这些内置变量会将片段着色率钳制为 (1,1)

  • fragmentShadingRateWithSampleMask 指定实现是否支持将 VkPipelineMultisampleStateCreateInfo::pSampleMask 的有效位设置为 0,以用于多像素片段。如果此值为 VK_FALSE,则将样本掩码中的有效位清零会将片段着色率钳制为 (1,1)

  • fragmentShadingRateWithShaderSampleMask 指定实现是否支持为多像素片段读取或写入 SampleMask。如果此值为 VK_FALSE,则使用该内置变量会将片段着色率钳制为 (1,1)

  • fragmentShadingRateWithConservativeRasterization 指定是否支持多像素片段的保守光栅化。如果不支持 VK_EXT_conservative_rasterization,则它必须VK_FALSE。如果此值为 VK_FALSE,则使用保守光栅化会将片段着色率钳制为 (1,1)

  • fragmentShadingRateWithFragmentShaderInterlock 指定是否支持多像素片段的片段着色器互锁。如果不支持 VK_EXT_fragment_shader_interlock,则它必须VK_FALSE。如果此值为 VK_FALSE,则使用片段着色器互锁会将片段着色率钳制为 (1,1)

  • fragmentShadingRateWithCustomSampleLocations 指定是否支持多像素片段的自定义样本位置。如果不支持 VK_EXT_sample_locations,则它必须VK_FALSE。如果此值为 VK_FALSE,则使用自定义样本位置会将片段着色率钳制为 (1,1)

  • fragmentShadingRateStrictMultiplyCombiner 指定 VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR 是否准确执行乘法运算。如果此值为 VK_FALSE,则实现将改为使用加法来组合速率。如果 fragmentShadingRateNonTrivialCombinerOpsVK_FALSE,则实现必须将其报告为 VK_FALSE。如果 fragmentShadingRateNonTrivialCombinerOpsVK_TRUE,则实现应该将其报告为 VK_TRUE

使用线性空间中的片段宽度/高度来相乘组合器速率等同于在 log2 空间中对这些值进行相加。一些实现无意中在线性空间中实现了加法,这是由于源自本规范之外的不明确的需求所致。这导致了 fragmentShadingRateStrictMultiplyCombiner 的添加。幸运的是,这只会影响其中一个维度中的速率为 1 与另一个速率为 1 组合的情况。由于钳位逻辑以及 2 和 2 的和与积相等的事实,所有其他组合都会产生与在线性空间中执行乘法运算时完全相同的结果。在许多情况下,此限制不会影响应用程序的正确操作。

如果 VkPhysicalDeviceFragmentShadingRatePropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关属性进行填充。

这些属性与片段着色率有关。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentShadingRatePropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR

VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV 结构定义为

// Provided by VK_NV_fragment_shading_rate_enums
typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
    VkStructureType          sType;
    void*                    pNext;
    VkSampleCountFlagBits    maxFragmentShadingRateInvocationCount;
} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxFragmentShadingRateInvocationCount 是一个 VkSampleCountFlagBits 值,指示在管线、图元和附件片段着色率中,每个片段支持的最大片段着色器调用次数。

如果 VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关属性进行填充。

这些属性与片段着色率有关。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV

  • VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-maxFragmentShadingRateInvocationCount-parameter
    maxFragmentShadingRateInvocationCount 必须是有效的 VkSampleCountFlagBits

VkPhysicalDeviceCustomBorderColorPropertiesEXT 结构定义为

// Provided by VK_EXT_custom_border_color
typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxCustomBorderColorSamplers;
} VkPhysicalDeviceCustomBorderColorPropertiesEXT;
  • maxCustomBorderColorSamplers 指示设备上可以同时存在的最大自定义边框颜色采样器数量。

如果 VkPhysicalDeviceCustomBorderColorPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关属性进行填充。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCustomBorderColorPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT

VkPhysicalDeviceProvokingVertexPropertiesEXT 结构定义为

// Provided by VK_EXT_provoking_vertex
typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           provokingVertexModePerPipeline;
    VkBool32           transformFeedbackPreservesTriangleFanProvokingVertex;
} VkPhysicalDeviceProvokingVertexPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • provokingVertexModePerPipeline 指示实现是否支持在同一渲染过程实例中具有不同触发顶点模式的图形管线。

  • transformFeedbackPreservesTriangleFanProvokingVertex 指示在将三角形扇形顶点写入变换反馈时,实现是否可以保留触发顶点顺序。

如果 VkPhysicalDeviceProvokingVertexPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关属性进行填充。

有效用法(隐式)
  • VUID-VkPhysicalDeviceProvokingVertexPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT

VkPhysicalDeviceDescriptorBufferPropertiesEXT 结构定义为

// Provided by VK_EXT_descriptor_buffer
typedef struct VkPhysicalDeviceDescriptorBufferPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           combinedImageSamplerDescriptorSingleArray;
    VkBool32           bufferlessPushDescriptors;
    VkBool32           allowSamplerImageViewPostSubmitCreation;
    VkDeviceSize       descriptorBufferOffsetAlignment;
    uint32_t           maxDescriptorBufferBindings;
    uint32_t           maxResourceDescriptorBufferBindings;
    uint32_t           maxSamplerDescriptorBufferBindings;
    uint32_t           maxEmbeddedImmutableSamplerBindings;
    uint32_t           maxEmbeddedImmutableSamplers;
    size_t             bufferCaptureReplayDescriptorDataSize;
    size_t             imageCaptureReplayDescriptorDataSize;
    size_t             imageViewCaptureReplayDescriptorDataSize;
    size_t             samplerCaptureReplayDescriptorDataSize;
    size_t             accelerationStructureCaptureReplayDescriptorDataSize;
    size_t             samplerDescriptorSize;
    size_t             combinedImageSamplerDescriptorSize;
    size_t             sampledImageDescriptorSize;
    size_t             storageImageDescriptorSize;
    size_t             uniformTexelBufferDescriptorSize;
    size_t             robustUniformTexelBufferDescriptorSize;
    size_t             storageTexelBufferDescriptorSize;
    size_t             robustStorageTexelBufferDescriptorSize;
    size_t             uniformBufferDescriptorSize;
    size_t             robustUniformBufferDescriptorSize;
    size_t             storageBufferDescriptorSize;
    size_t             robustStorageBufferDescriptorSize;
    size_t             inputAttachmentDescriptorSize;
    size_t             accelerationStructureDescriptorSize;
    VkDeviceSize       maxSamplerDescriptorBufferRange;
    VkDeviceSize       maxResourceDescriptorBufferRange;
    VkDeviceSize       samplerDescriptorBufferAddressSpaceSize;
    VkDeviceSize       resourceDescriptorBufferAddressSpaceSize;
    VkDeviceSize       descriptorBufferAddressSpaceSize;
} VkPhysicalDeviceDescriptorBufferPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • combinedImageSamplerDescriptorSingleArray 指示实现不需要将 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER 描述符的数组作为图像描述符的数组写入描述符缓冲区,紧接着是采样器描述符的数组。

  • bufferlessPushDescriptors 指示在使用推送描述符时,实现不需要绑定使用 VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT 创建的缓冲区。

  • allowSamplerImageViewPostSubmitCreation 指示实现不限制在相对于命令缓冲区提交时创建用于检索描述符数据的 VkSamplerVkImageView 对象的时间。如果此值为 VK_FALSE,则应用程序必须vkQueueSubmitvkQueueSubmit2 调用提交该命令缓冲区之前,创建在命令缓冲区执行期间访问其描述符数据的任何 VkSamplerVkImageView 对象。

  • descriptorBufferOffsetAlignment 指示在设置描述符缓冲区偏移量时必须的字节对齐方式。

  • maxDescriptorBufferBindings 指示描述符缓冲区的最大绑定数量。

  • maxResourceDescriptorBufferBindings 指示可以使用具有 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT 的描述符缓冲区的最大绑定数量。

  • maxSamplerDescriptorBufferBindings 指示可以使用具有 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT 的描述符缓冲区的最大绑定数量。

  • maxEmbeddedImmutableSamplerBindings 指示可以绑定的最大嵌入式不可变采样器集合数量。

  • maxEmbeddedImmutableSamplers 指示使用 VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT 创建的描述符集布局以及从中创建的管线布局中,可以同时存在于设备上的最大唯一不可变采样器数量。

  • bufferCaptureReplayDescriptorDataSize 指示用于捕获和重放缓冲区的不透明数据的最大字节大小。

  • imageCaptureReplayDescriptorDataSize 指示用于捕获和重放图像的不透明数据的最大字节大小。

  • imageViewCaptureReplayDescriptorDataSize 指示用于捕获和重放图像视图的不透明数据的最大字节大小。

  • samplerCaptureReplayDescriptorDataSize 指示用于捕获和重放采样器的不透明数据的最大字节大小。

  • accelerationStructureCaptureReplayDescriptorDataSize 指示用于捕获和重放加速结构的不透明数据的最大字节大小。

  • samplerDescriptorSize 指示 VK_DESCRIPTOR_TYPE_SAMPLER 描述符的大小(以字节为单位)。

  • combinedImageSamplerDescriptorSize 指示 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER 描述符的大小(以字节为单位)。

  • sampledImageDescriptorSize 指示 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE 描述符的大小(以字节为单位)。

  • storageImageDescriptorSize 指示 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE 描述符的大小(以字节为单位)。

  • uniformTexelBufferDescriptorSize 指示如果未启用 robustBufferAccess 功能,则 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER 描述符的大小(以字节为单位)。

  • robustUniformTexelBufferDescriptorSize 指示如果启用了 robustBufferAccess 功能,则 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER 描述符的大小(以字节为单位)。

  • storageTexelBufferDescriptorSize 指示如果未启用 robustBufferAccess 功能,则 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符的大小(以字节为单位)。

  • robustStorageTexelBufferDescriptorSize 指示如果启用了 robustBufferAccess 功能,则 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符的大小(以字节为单位)。

  • uniformBufferDescriptorSize 指示 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER 描述符的大小(以字节为单位)。

  • robustUniformBufferDescriptorSize 指示如果启用了 robustBufferAccess 功能,则 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER 描述符的大小(以字节为单位)。

  • storageBufferDescriptorSize 指示 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER 描述符的大小(以字节为单位)。

  • robustStorageBufferDescriptorSize 指示如果启用了 robustBufferAccess 功能,则 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER 描述符的大小(以字节为单位)。

  • inputAttachmentDescriptorSize 指示 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 描述符的大小(以字节为单位)。

  • accelerationStructureDescriptorSize 指示 VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHRVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV 描述符的大小(以字节为单位)。

  • maxSamplerDescriptorBufferRange 指示从着色器可访问的采样器描述符缓冲区绑定的地址开始的最大字节范围。

  • maxResourceDescriptorBufferRange 指示从着色器可访问的资源描述符缓冲区绑定的地址开始的最大字节范围。

  • samplerDescriptorBufferAddressSpaceSize 指示使用 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT 创建的描述符缓冲区可用的地址空间的总大小(以字节为单位)。

  • resourceDescriptorBufferAddressSpaceSize 指示使用 VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT 创建的描述符缓冲区可用的地址空间的总大小(以字节为单位)。

  • descriptorBufferAddressSpaceSize 指示使用 VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXTVK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT 创建的描述符缓冲区可用的地址空间的总大小(以字节为单位)。

类型为 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE 的描述符绑定具有由 VkMutableDescriptorTypeCreateInfoVALVE::pDescriptorTypes 列表中的描述符类型隐含的描述符大小。描述符大小等于 pDescriptorTypes 列表中包含的任何描述符类型的最大大小。

由于无法分别请求健壮和非健壮描述符,或者在集合布局中指定健壮/非健壮描述符,如果启用了 robustBufferAccess 功能,则始终使用健壮描述符。

如果 VkPhysicalDeviceDescriptorBufferPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关的属性填充它。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDescriptorBufferPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT

VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT 结构定义为

// Provided by VK_EXT_descriptor_buffer
typedef struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    size_t             combinedImageSamplerDensityMapDescriptorSize;
} VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • combinedImageSamplerDensityMapDescriptorSize 指示当使用设置了 VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT 创建描述符时,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER 描述符的大小(以字节为单位)。

如果 VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个对应的实现相关的属性填充它。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT

VkPhysicalDeviceHostImageCopyProperties 结构定义为

// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDeviceHostImageCopyProperties {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           copySrcLayoutCount;
    VkImageLayout*     pCopySrcLayouts;
    uint32_t           copyDstLayoutCount;
    VkImageLayout*     pCopyDstLayouts;
    uint8_t            optimalTilingLayoutUUID[VK_UUID_SIZE];
    VkBool32           identicalMemoryTypeRequirements;
} VkPhysicalDeviceHostImageCopyProperties;

或等效的

// Provided by VK_EXT_host_image_copy
typedef VkPhysicalDeviceHostImageCopyProperties VkPhysicalDeviceHostImageCopyPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • copySrcLayoutCount 是一个与可用的或查询到的从图像进行主机复制的图像布局数量相关的整数,如下所述。

  • pCopySrcLayouts 是一个指向 VkImageLayout 数组的指针,该数组返回支持的从图像进行主机复制操作的图像布局。

  • copyDstLayoutCount 是一个整数,与可用于或查询的主机复制到图像的图像布局数量有关,如下所述。

  • pCopyDstLayouts 是一个指向 VkImageLayout 数组的指针,该数组返回支持的用于主机复制到图像的图像布局。

  • optimalTilingLayoutUUID 是一个由 VK_UUID_SIZEuint8_t 值组成的数组,表示使用 VK_IMAGE_TILING_OPTIMAL 创建的图像的实现抖动布局的全局唯一标识符。

  • identicalMemoryTypeRequirements 表示在 VkImageCreateInfo::usage 中指定 VK_IMAGE_USAGE_HOST_TRANSFER_BIT 标志不会影响图像的内存类型要求。

如果 VkPhysicalDeviceHostImageCopyProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个对应的实现相关的属性。

如果 pCopyDstLayoutsNULL,则在 VkCopyMemoryToImageInfo::dstImageLayoutVkCopyImageToImageInfo::dstImageLayout 中支持的图像布局的数量将返回在 copyDstLayoutCount 中。否则,应用程序必须copyDstLayoutCount 设置为 pCopyDstLayouts 数组中的元素数量,并且在返回时,该变量将被实际写入 pCopyDstLayouts 的值数量覆盖。如果 copyDstLayoutCount 的值小于支持的图像布局数量,则最多将有 copyDstLayoutCount 个值写入 pCopyDstLayouts。实现必须pCopyDstLayouts 中包含 VK_IMAGE_LAYOUT_GENERAL 图像布局。

如果 pCopySrcLayoutsNULL,则在 VkCopyImageToMemoryInfo::srcImageLayoutVkCopyImageToImageInfo::srcImageLayout 中支持的图像布局的数量将返回在 copySrcLayoutCount 中。否则,应用程序必须copySrcLayoutCount 设置为 pCopySrcLayouts 数组中的元素数量,并且在返回时,该变量将被实际写入 pCopySrcLayouts 的值数量覆盖。如果 copySrcLayoutCount 的值小于支持的图像布局数量,则最多将有 copySrcLayoutCount 个值写入 pCopySrcLayouts。实现必须pCopySrcLayouts 中包含 VK_IMAGE_LAYOUT_GENERAL 图像布局。

当在 vkCopyMemoryToImagevkCopyImageToMemory 中使用 VK_HOST_IMAGE_COPY_MEMCPY 标志时,可以使用 optimalTilingLayoutUUID 值来确保兼容的数据布局。

有效用法(隐式)
  • VUID-VkPhysicalDeviceHostImageCopyProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES

  • VUID-VkPhysicalDeviceHostImageCopyProperties-pCopySrcLayouts-parameter
    如果 copySrcLayoutCount 不为 0pCopySrcLayouts 不为 NULL,则 pCopySrcLayouts 必须是指向 copySrcLayoutCountVkImageLayout 值的数组的有效指针

  • VUID-VkPhysicalDeviceHostImageCopyProperties-pCopyDstLayouts-parameter
    如果 copyDstLayoutCount 不为 0pCopyDstLayouts 不为 NULL,则 pCopyDstLayouts 必须是指向 copyDstLayoutCountVkImageLayout 值的数组的有效指针

VkPhysicalDeviceSubpassShadingPropertiesHUAWEI 结构的定义如下

// Provided by VK_HUAWEI_subpass_shading
typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxSubpassShadingWorkgroupSizeAspectRatio;
} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxSubpassShadingWorkgroupSizeAspectRatio 指示子通道着色器工作组大小的宽度和高度部分之间的最大比率。maxSubpassShadingWorkgroupSizeAspectRatio 必须是 2 的幂值,并且必须小于或等于 max(WorkgroupSize.x / WorkgroupSize.y, WorkgroupSize.y / WorkgroupSize.x)。

如果 VkPhysicalDeviceSubpassShadingPropertiesHUAWEI 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceSubpassShadingPropertiesHUAWEI-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI

VkPhysicalDeviceMultiDrawPropertiesEXT 结构的定义如下

// Provided by VK_EXT_multi_draw
typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxMultiDrawCount;
} VkPhysicalDeviceMultiDrawPropertiesEXT;

VkPhysicalDeviceMultiDrawPropertiesEXT 结构的成员描述了以下特性

  • maxMultiDrawCount 指示可以批量处理到单个多重绘制中的最大绘制调用次数。

如果 VkPhysicalDeviceMultiDrawPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMultiDrawPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT

VkPhysicalDeviceNestedCommandBufferPropertiesEXT 结构的定义如下

// Provided by VK_EXT_nested_command_buffer
typedef struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxCommandBufferNestingLevel;
} VkPhysicalDeviceNestedCommandBufferPropertiesEXT;

VkPhysicalDeviceNestedCommandBufferPropertiesEXT 结构的成员描述了以下特性

如果 VkPhysicalDeviceNestedCommandBufferPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则它会填充每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceNestedCommandBufferPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT

VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT 结构定义如下:

// Provided by VK_EXT_graphics_pipeline_library
typedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           graphicsPipelineLibraryFastLinking;
    VkBool32           graphicsPipelineLibraryIndependentInterpolationDecoration;
} VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
  • graphicsPipelineLibraryFastLinking 表示是否支持图形管线快速链接。如果为 VK_TRUE,则完全从管线库创建图形管线而不使用 VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT 的成本,与在命令缓冲区中记录命令相当。

  • graphicsPipelineLibraryIndependentInterpolationDecoration 表示在使用图形管线库时,最后一个顶点处理阶段和片段着色器中的 NoPerspectiveFlat 插值装饰是否需要匹配。如果为 VK_TRUE,则插值装饰不需要匹配。如果为 VK_FALSE,则为了使给定的接口变量匹配,这些装饰必须同时存在于两个阶段或都不存在于任何阶段。

如果 VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT

VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR 结构定义如下:

// Provided by VK_KHR_fragment_shader_barycentric
typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           triStripVertexOrderIndependentOfProvokingVertex;
} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
  • 触发顶点模式VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT,且三角形带中的图元顺序为奇数时,顶点的顺序在 最后一个顶点表中定义。 triStripVertexOrderIndependentOfProvokingVertex 等于 VK_TRUE 表示实现忽略此项,并使用 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 定义的顶点顺序代替。

如果 VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR

VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT 结构定义如下:

// Provided by VK_EXT_shader_module_identifier
typedef struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint8_t            shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE];
} VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;

VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT 结构的成员描述如下:

如果算法保证产生相同的结果,则不同的 ICD 中的算法 UUID 可以相同。这可能发生在支持具有共享代码的不同类型硬件的驱动程序堆栈中。

Khronos 的一致性测试不能保证 shaderModuleIdentifierAlgorithmUUID 值实际上是唯一的,因此实现者应该尽最大努力确保其 UUID 不会与其他可能使用不同算法的实现冲突。特别是,不应该使用容易冲突的硬编码值,例如所有为 0 的位。如果尽最大努力确保该值不会意外冲突,则硬编码值是可以接受的。

如果 VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT

VkPhysicalDevicePipelineRobustnessProperties 结构定义如下:

// Provided by VK_VERSION_1_4
typedef struct VkPhysicalDevicePipelineRobustnessProperties {
    VkStructureType                       sType;
    void*                                 pNext;
    VkPipelineRobustnessBufferBehavior    defaultRobustnessStorageBuffers;
    VkPipelineRobustnessBufferBehavior    defaultRobustnessUniformBuffers;
    VkPipelineRobustnessBufferBehavior    defaultRobustnessVertexInputs;
    VkPipelineRobustnessImageBehavior     defaultRobustnessImages;
} VkPhysicalDevicePipelineRobustnessProperties;

或等效的

// Provided by VK_EXT_pipeline_robustness
typedef VkPhysicalDevicePipelineRobustnessProperties VkPhysicalDevicePipelineRobustnessPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • defaultRobustnessStorageBuffers 描述了在未启用任何健壮性功能时,对存储缓冲区进行越界访问的行为

  • defaultRobustnessUniformBuffers 描述了在未启用任何健壮性功能时,对统一缓冲区进行越界访问的行为

  • defaultRobustnessVertexInputs 描述了在未启用任何健壮性功能时,对顶点输入属性进行越界访问的行为

  • defaultRobustnessImages 描述了在未启用任何健壮性功能时,对图像进行越界访问的行为

Vulkan 的某些实现可能能够保证某些类型的访问始终以健壮性执行,即使没有显式启用 Vulkan API 的健壮性功能。

即使实现报告对给定资源类型的访问默认是健壮的,在不请求相应的健壮性功能的情况下进行越界访问仍然是无效的。

如果 VkPhysicalDevicePipelineRobustnessProperties 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineRobustnessProperties-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES

VkPhysicalDeviceExtendedDynamicState3PropertiesEXT 结构定义如下:

// Provided by VK_EXT_extended_dynamic_state3
typedef struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           dynamicPrimitiveTopologyUnrestricted;
} VkPhysicalDeviceExtendedDynamicState3PropertiesEXT;
  • dynamicPrimitiveTopologyUnrestricted 表示实现允许 vkCmdSetPrimitiveTopology 使用与活动图形管线中指定的图元拓扑类不同的图元拓扑类。

如果 VkPhysicalDeviceExtendedDynamicState3PropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个对应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExtendedDynamicState3PropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT

VkPhysicalDeviceOpticalFlowPropertiesNV 结构定义如下:

// Provided by VK_NV_optical_flow
typedef struct VkPhysicalDeviceOpticalFlowPropertiesNV {
    VkStructureType                 sType;
    void*                           pNext;
    VkOpticalFlowGridSizeFlagsNV    supportedOutputGridSizes;
    VkOpticalFlowGridSizeFlagsNV    supportedHintGridSizes;
    VkBool32                        hintSupported;
    VkBool32                        costSupported;
    VkBool32                        bidirectionalFlowSupported;
    VkBool32                        globalFlowSupported;
    uint32_t                        minWidth;
    uint32_t                        minHeight;
    uint32_t                        maxWidth;
    uint32_t                        maxHeight;
    uint32_t                        maxNumRegionsOfInterest;
} VkPhysicalDeviceOpticalFlowPropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • supportedOutputGridSizes 是在 VkOpticalFlowSessionCreateInfoNV::outputGridSize 中可以指定的受支持的 VkOpticalFlowGridSizeFlagsNV

  • supportedHintGridSizes 是在 VkOpticalFlowSessionCreateInfoNV::hintGridSize 中可以指定的受支持的 VkOpticalFlowGridSizeFlagsNV

  • hintSupported 是一个布尔值,描述在光流会话中是否支持使用提示流矢量图。

  • costSupported 是一个布尔值,描述在光流会话中是否支持成本图生成。

  • bidirectionalFlowSupported 是一个布尔值,描述在光流会话中是否支持双向流生成。

  • globalFlowSupported 是一个布尔值,描述了在光流会话中是否支持全局流矢量图的生成。

  • minWidth 是光流会话中使用的图像的最小宽度(以像素为单位)。

  • minHeight 是光流会话中使用的图像的最小高度(以像素为单位)。

  • maxWidth 是光流会话中使用的图像的最大宽度(以像素为单位)。

  • maxHeight 是光流会话中使用的图像的最大高度(以像素为单位)。

  • maxNumRegionsOfInterest 是光流会话中可以使用的最大感兴趣区域数量。如果此 maxNumRegionsOfInterest 为 0,则在光流会话中不支持感兴趣区域。

如果 VkPhysicalDeviceOpticalFlowPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的与实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceOpticalFlowPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV

VkPhysicalDeviceOpacityMicromapPropertiesEXT 结构定义如下:

// Provided by VK_EXT_opacity_micromap
typedef struct VkPhysicalDeviceOpacityMicromapPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxOpacity2StateSubdivisionLevel;
    uint32_t           maxOpacity4StateSubdivisionLevel;
} VkPhysicalDeviceOpacityMicromapPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • formatVK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT 时,maxOpacity2StateSubdivisionLevel 是允许的最大 subdivisionLevel

  • formatVK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT 时,maxOpacity4StateSubdivisionLevel 是允许的最大 subdivisionLevel

如果 VkPhysicalDeviceOpacityMicromapPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的与实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceOpacityMicromapPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT

VkPhysicalDeviceDisplacementMicromapPropertiesNV 结构定义如下:

// Provided by VK_NV_displacement_micromap
typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxDisplacementMicromapSubdivisionLevel;
} VkPhysicalDeviceDisplacementMicromapPropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxDisplacementMicromapSubdivisionLevel 是位移微型映射允许的最大 subdivisionLevel

如果 VkPhysicalDeviceDisplacementMicromapPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的与实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceDisplacementMicromapPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV

VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM 结构定义如下:

// Provided by VK_ARM_shader_core_builtins
typedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM {
    VkStructureType    sType;
    void*              pNext;
    uint64_t           shaderCoreMask;
    uint32_t           shaderCoreCount;
    uint32_t           shaderWarpsPerCore;
} VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • shaderCoreMask 是一个位域,其中设置的每个位表示存在一个着色器核心,其 ID 是位的位置。设备上任何着色器核心的最高 ID 是设置的最高有效位的位置。

  • shaderCoreCount 是设备上着色器核心的数量。

  • shaderWarpsPerCore 是一个着色器核心上同时执行的最大经纱数。

如果 VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的与实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM

VkPhysicalDeviceRayTracingInvocationReorderPropertiesNVrayTracingInvocationReorderReorderingHint 字段中可能返回的值为:

// Provided by VK_NV_ray_tracing_invocation_reorder
typedef enum VkRayTracingInvocationReorderModeNV {
    VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0,
    VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1,
} VkRayTracingInvocationReorderModeNV;
  • VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV 指定实现可能不会在重排序调用时进行重排序。

  • VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV 指定实现可能会在重排序调用时进行重排序。

VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV 结构定义如下:

// Provided by VK_NV_ray_tracing_invocation_reorder
typedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV {
    VkStructureType                        sType;
    void*                                  pNext;
    VkRayTracingInvocationReorderModeNV    rayTracingInvocationReorderReorderingHint;
} VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV;
  • rayTracingInvocationReorderReorderingHint 是一个提示,指示实现是否会在重排序调用时实际进行重排序。

由于该扩展更改了命中管理方式,因此即使实现没有激活排序,也存在公开该扩展的兼容性原因。

如果 VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的与实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV

VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI 结构定义如下:

// Provided by VK_HUAWEI_cluster_culling_shader
typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxWorkGroupCount[3];
    uint32_t           maxWorkGroupSize[3];
    uint32_t           maxOutputClusterCount;
    VkDeviceSize       indirectBufferOffsetAlignment;
} VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxWorkGroupCount[3] 是单个命令可以启动的最大本地工作组数。这三个值分别表示 X、Y 和 Z 维度中的最大本地工作组计数。在当前实现中,Y 和 Z 的值都隐式设置为 1。DrawCluster 命令的 groupCountX 必须 小于或等于 maxWorkGroupCount[0]。

  • maxWorkGroupSize[3] 是本地工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度中的最大本地工作组大小。着色器模块中由 LocalSizeLocalSizeId 执行模式或由 WorkgroupSize 修饰的对象指定的 x、y 和 z 大小,必须 小于或等于相应的限制。在当前实现中,X 维度的最大工作组大小为 32,其他维度为 1。

  • maxOutputClusterCount 是单个集群剔除着色器工作组可以发出的最大输出集群数。

  • indirectBufferOffsetAlignment 指示集群绘制命令缓冲区步幅的对齐方式。vkCmdDrawClusterIndirectHUAWEI::offset 必须 是此值的倍数。

如果 VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的与实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI

VkPhysicalDeviceShaderCorePropertiesARM 结构定义如下:

// Provided by VK_ARM_shader_core_properties
typedef struct VkPhysicalDeviceShaderCorePropertiesARM {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           pixelRate;
    uint32_t           texelRate;
    uint32_t           fmaRate;
} VkPhysicalDeviceShaderCorePropertiesARM;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • pixelRate 是一个无符号整数值,指示每个时钟周期每个着色器核心输出的最大像素数。

  • texelRate 是一个无符号整数值,指示每个时钟周期每个着色器核心的最大纹素数。

  • fmaRate 是一个无符号整数值,指示每个时钟周期每个着色器核心的最大单精度融合乘加运算次数。

如果无法在物理设备上确定吞吐率,则将为该速率返回值 0

如果 VkPhysicalDeviceShaderCorePropertiesARM 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会填充每个相应的与实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderCorePropertiesARM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM

VkPhysicalDeviceShaderObjectPropertiesEXT 结构体的定义如下:

// Provided by VK_EXT_shader_object
typedef struct VkPhysicalDeviceShaderObjectPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    uint8_t            shaderBinaryUUID[VK_UUID_SIZE];
    uint32_t           shaderBinaryVersion;
} VkPhysicalDeviceShaderObjectPropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • shaderBinaryUUID 是一个由 VK_UUID_SIZEuint8_t 值组成的数组,代表一个或多个实现的通用唯一标识符,这些实现的着色器二进制文件保证彼此兼容。

  • shaderBinaryVersion 是一个无符号整数,递增表示具有相同 shaderBinaryUUID 的实现之间的向后兼容性差异。

此结构体值的用途和用法在 二进制着色器兼容性 中有更详细的描述。

如果 VkPhysicalDeviceShaderObjectPropertiesEXT 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderObjectPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT

VkPhysicalDeviceShaderEnqueuePropertiesAMDX 结构体的定义如下:

// Provided by VK_AMDX_shader_enqueue
typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           maxExecutionGraphDepth;
    uint32_t           maxExecutionGraphShaderOutputNodes;
    uint32_t           maxExecutionGraphShaderPayloadSize;
    uint32_t           maxExecutionGraphShaderPayloadCount;
    uint32_t           executionGraphDispatchAddressAlignment;
    uint32_t           maxExecutionGraphWorkgroupCount[3];
    uint32_t           maxExecutionGraphWorkgroups;
} VkPhysicalDeviceShaderEnqueuePropertiesAMDX;

VkPhysicalDeviceShaderEnqueuePropertiesAMDX 结构体的成员描述了以下限制:

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

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

  • maxExecutionGraphDepth 定义了图中的最大节点链深度。被调度的节点深度为 1,由其入队的节点深度为 2,依此类推。如果节点自身入队,则每次递归入队也会将深度增加 1。

  • maxExecutionGraphShaderOutputNodes 指定了单个着色器可以调度的唯一节点的最大数量,并且必须至少为 256。

  • maxExecutionGraphShaderPayloadSize 指定了着色器中有效负载声明的最大总大小。对于任何共享资源的有效负载声明(通过 NodeSharesPayloadLimitsWithAMDX 修饰符指示),将采用每组共享有效负载声明的最大大小。每个共享组的最大大小和每个未共享有效负载的大小之和将计入此限制。

  • maxExecutionGraphShaderPayloadCount 指定了在单个工作组中可以初始化的最大输出有效负载数量。

  • executionGraphDispatchAddressAlignment 指定了图调度命令消耗的非临时 VkDeviceAddress 参数的对齐方式。

  • maxExecutionGraphWorkgroupCount[3] 分别是在 X、Y 和 Z 维度中,着色器可以调度的最大本地工作组数量。

  • maxExecutionGraphWorkgroups 是着色器可以调度的本地工作组的总数。

如果 VkPhysicalDeviceShaderEnqueuePropertiesAMDX 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceShaderEnqueuePropertiesAMDX-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX

VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV 结构体的定义如下:

// Provided by VK_NV_extended_sparse_address_space
typedef struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
    VkStructureType       sType;
    void*                 pNext;
    VkDeviceSize          extendedSparseAddressSpaceSize;
    VkImageUsageFlags     extendedSparseImageUsageFlags;
    VkBufferUsageFlags    extendedSparseBufferUsageFlags;
} VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • extendedSparseAddressSpaceSize 是在启用 extendedSparseAddressSpace 功能时,所有用途的稀疏内存资源可用的地址空间总大小(以字节为单位)。这必须大于或等于 VkPhysicalDeviceLimits::sparseAddressSpaceSize,并且空间差异必须仅用于下面允许的用途。这是所有稀疏资源大小之和的上限,无论是否将任何内存绑定到它们。

  • extendedSparseImageUsageFlagsVkImageUsageFlagBits 的位掩码,这些用途可能允许实现使用完整的 extendedSparseAddressSpaceSize 空间。

  • extendedSparseBufferUsageFlagsVkBufferUsageFlagBits 的位掩码,这些用途可能允许实现使用完整的 extendedSparseAddressSpaceSize 空间。

如果 VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV

VkPhysicalDeviceCudaKernelLaunchPropertiesNV 结构体的定义如下:

// Provided by VK_NV_cuda_kernel_launch
typedef struct VkPhysicalDeviceCudaKernelLaunchPropertiesNV {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           computeCapabilityMinor;
    uint32_t           computeCapabilityMajor;
} VkPhysicalDeviceCudaKernelLaunchPropertiesNV;

VkPhysicalDeviceCudaKernelLaunchPropertiesNV 结构体的成员描述了以下功能:

  • computeCapabilityMinor 表示计算代码的次版本号。

  • computeCapabilityMajor 表示计算代码的主版本号。

如果 VkPhysicalDeviceCudaKernelLaunchPropertiesNV 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceCudaKernelLaunchPropertiesNV-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV

VkPhysicalDeviceExternalFormatResolvePropertiesANDROID 结构体的定义如下:

// Provided by VK_ANDROID_external_format_resolve
typedef struct VkPhysicalDeviceExternalFormatResolvePropertiesANDROID {
    VkStructureType     sType;
    void*               pNext;
    VkBool32            nullColorAttachmentWithExternalFormatResolve;
    VkChromaLocation    externalFormatResolveChromaOffsetX;
    VkChromaLocation    externalFormatResolveChromaOffsetY;
} VkPhysicalDeviceExternalFormatResolvePropertiesANDROID;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • 如果为 VK_TRUE,则 nullColorAttachmentWithExternalFormatResolve 表示在执行外部格式解析时必须没有颜色附件图像。

  • externalFormatResolveChromaOffsetX 表示实现用于访问作为解析附件的外部格式图像的 X 轴的 VkChromaLocation。当 nullColorAttachmentWithExternalFormatResolveVK_TRUE 时,这必须在外部格式解析和从外部格式解析附件到颜色附件的加载操作之间保持一致。

  • externalFormatResolveChromaOffsetY 表示实现用于访问作为解析附件的外部格式图像的 Y 轴的 VkChromaLocation。当 nullColorAttachmentWithExternalFormatResolveVK_TRUE 时,这必须在外部格式解析和从外部格式解析附件到颜色附件的加载操作之间保持一致。

如果 VkPhysicalDeviceExternalFormatResolvePropertiesANDROID 结构体包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构体的 pNext 链中,则会填充每个相应的实现相关的属性。

有效用法(隐式)
  • VUID-VkPhysicalDeviceExternalFormatResolvePropertiesANDROID-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID

VkPhysicalDevicePipelineBinaryPropertiesKHR 结构定义如下:

// Provided by VK_KHR_pipeline_binary
typedef struct VkPhysicalDevicePipelineBinaryPropertiesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           pipelineBinaryInternalCache;
    VkBool32           pipelineBinaryInternalCacheControl;
    VkBool32           pipelineBinaryPrefersInternalCache;
    VkBool32           pipelineBinaryPrecompiledInternalCache;
    VkBool32           pipelineBinaryCompressedData;
} VkPhysicalDevicePipelineBinaryPropertiesKHR;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • pipelineBinaryInternalCache 指定实现是否维护内部的管线缓存。如果此值为 VK_TRUE,应用程序可以仅使用管线创建信息创建管线二进制文件,在这种情况下,实现可能能够直接创建管线二进制文件,而无需应用程序捕获二进制文件本身。

  • pipelineBinaryInternalCacheControl 指定是否可以禁用驱动程序的内部缓存。如果此属性为 VK_TRUE,则可以使用 VkDevicePipelineBinaryInternalCacheControlKHR::disableInternalCache 禁用驱动程序的内部缓存,从而允许应用程序完全控制内存和磁盘使用情况。

  • pipelineBinaryPrefersInternalCache 指定实现倾向于维护内部缓存,并且应用程序应该不要将管线二进制文件存储在自己的磁盘缓存中,以避免增加磁盘存储需求。鼓励应用程序仅存储管线密钥,并在后续运行应用程序时尝试仅从密钥创建管线二进制文件。

  • pipelineBinaryPrecompiledInternalCache 指定实现可能在其内部缓存中具有管线二进制文件,这些文件是在没有应用程序生成该管线本身的情况下填充的。应用程序可以尝试创建二进制文件,而无需事先从管线中提取管线二进制数据,包括来自应用程序先前运行的数据。

  • pipelineBinaryCompressedData 指定二进制数据已经压缩,因此应用程序应该不要尝试压缩它。

这些属性往往是平台特定的,并且可能会根据本规范范围之外的外部配置而变化。这些属性旨在指导应用程序,当实现具有可用的专用缓存解决方案时。特别是,如果公开了 pipelineBinaryPrefersInternalCache 限制,则与应用程序特定的解决方案相比,依赖内部缓存可能会提供一些优势。即使公开了此限制,具有自己专用解决方案的应用程序仍然可以使用自己的缓存系统。

如果 VkPhysicalDevicePipelineBinaryPropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个相应的实现相关属性填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDevicePipelineBinaryPropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR

VkPhysicalDeviceRenderPassStripedPropertiesARM 结构定义如下:

// Provided by VK_ARM_render_pass_striped
typedef struct VkPhysicalDeviceRenderPassStripedPropertiesARM {
    VkStructureType    sType;
    void*              pNext;
    VkExtent2D         renderPassStripeGranularity;
    uint32_t           maxRenderPassStripes;
} VkPhysicalDeviceRenderPassStripedPropertiesARM;

VkPhysicalDeviceRenderPassStripedPropertiesARM 结构的成员描述以下限制:

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

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

  • renderPassStripeGranularity 表示条纹渲染通道区域的最小支持粒度。

  • maxRenderPassStripes 表示条纹渲染中支持的最大条纹数量。

如果 VkPhysicalDeviceRenderPassStripedPropertiesARM 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个相应的实现相关属性填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDeviceRenderPassStripedPropertiesARM-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM

VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR 结构定义如下:

// Provided by VK_KHR_compute_shader_derivatives
typedef struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR {
    VkStructureType    sType;
    void*              pNext;
    VkBool32           meshAndTaskShaderDerivatives;
} VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR;

VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR 结构的成员描述以下内容:

  • meshAndTaskShaderDerivatives 指示网格和任务着色器阶段是否支持 ComputeDerivativeGroupQuadsKHRComputeDerivativeGroupLinearKHR SPIR-V 功能。

如果 VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个相应的实现相关属性填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR

VkPhysicalDeviceMapMemoryPlacedPropertiesEXT 结构定义如下:

// Provided by VK_EXT_map_memory_placed
typedef struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkDeviceSize       minPlacedMemoryMapAlignment;
} VkPhysicalDeviceMapMemoryPlacedPropertiesEXT;

VkPhysicalDeviceMapMemoryPlacedPropertiesEXT 结构的成员描述以下内容:

  • minPlacedMemoryMapAlignment 是使用放置内存映射时,内存对象偏移量和虚拟地址范围所需的最小对齐方式。

如果 VkPhysicalDeviceMapMemoryPlacedPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个相应的实现相关属性填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDeviceMapMemoryPlacedPropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT

VkPhysicalDeviceImageAlignmentControlPropertiesMESA 结构定义如下:

// Provided by VK_MESA_image_alignment_control
typedef struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           supportedImageAlignmentMask;
} VkPhysicalDeviceImageAlignmentControlPropertiesMESA;

VkPhysicalDeviceImageAlignmentControlPropertiesMESA 结构的成员描述以下内容:

  • supportedImageAlignmentMask 是使用 VK_IMAGE_TILING_OPTIMAL 时,给定物理设备所有潜在支持的图像对齐方式的按位或。如果支持给定的对齐方式,则应用程序可以请求图像具有该对齐方式。给定的一组图像创建参数可能支持这些对齐方式的子集。要确定给定的一组图像创建参数是否支持特定的对齐方式,请在链接 VkImageAlignmentControlCreateInfoMESA 后检查 VkMemoryRequirements::alignment

如果 VkPhysicalDeviceImageAlignmentControlPropertiesMESA 结构包含在传递给 vkGetPhysicalDeviceProperties2VkPhysicalDeviceProperties2 结构的 pNext 链中,则会使用每个相应的实现相关属性填充该结构。

有效用法(隐式)
  • VUID-VkPhysicalDeviceImageAlignmentControlPropertiesMESA-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA

限制要求

下表指定了所有 Vulkan 图形实现必须满足的最小/最大值。当限制对应于一个可选的细粒度设备特性时,该特性名称会列出两个必须满足的限制,一个是在支持该特性时,另一个是在不支持该特性时。如果实现支持某个特性,则报告的限制值是相同的,无论该特性是否启用。

表 1. 必需的限制类型
类型 限制 特性

uint32_t

maxImageDimension1D

-

uint32_t

maxImageDimension2D

-

uint32_t

maxImageDimension3D

-

uint32_t

maxImageDimensionCube

-

uint32_t

maxImageArrayLayers

-

uint32_t

maxTexelBufferElements

-

uint32_t

maxUniformBufferRange

-

uint32_t

maxStorageBufferRange

-

uint32_t

maxPushConstantsSize

-

uint32_t

maxMemoryAllocationCount

-

uint32_t

maxSamplerAllocationCount

-

VkDeviceSize

bufferImageGranularity

-

VkDeviceSize

sparseAddressSpaceSize

sparseBinding

uint32_t

maxBoundDescriptorSets

-

uint32_t

maxPerStageDescriptorSamplers

-

uint32_t

maxPerStageDescriptorUniformBuffers

-

uint32_t

maxPerStageDescriptorStorageBuffers

-

uint32_t

maxPerStageDescriptorSampledImages

-

uint32_t

maxPerStageDescriptorStorageImages

-

uint32_t

maxPerStageDescriptorInputAttachments

-

uint32_t

maxPerStageResources

-

uint32_t

maxDescriptorSetSamplers

-

uint32_t

maxDescriptorSetUniformBuffers

-

uint32_t

maxDescriptorSetUniformBuffersDynamic

-

uint32_t

maxDescriptorSetStorageBuffers

-

uint32_t

maxDescriptorSetStorageBuffersDynamic

-

uint32_t

maxDescriptorSetSampledImages

-

uint32_t

maxDescriptorSetStorageImages

-

uint32_t

maxDescriptorSetInputAttachments

-

uint32_t

maxVertexInputAttributes

-

uint32_t

maxVertexInputBindings

-

uint32_t

maxVertexInputAttributeOffset

-

uint32_t

maxVertexInputBindingStride

-

uint32_t

maxVertexOutputComponents

-

uint32_t

maxTessellationGenerationLevel

tessellationShader

uint32_t

maxTessellationPatchSize

tessellationShader

uint32_t

maxTessellationControlPerVertexInputComponents

tessellationShader

uint32_t

maxTessellationControlPerVertexOutputComponents

tessellationShader

uint32_t

maxTessellationControlPerPatchOutputComponents

tessellationShader

uint32_t

maxTessellationControlTotalOutputComponents

tessellationShader

uint32_t

maxTessellationEvaluationInputComponents

tessellationShader

uint32_t

maxTessellationEvaluationOutputComponents

tessellationShader

uint32_t

maxGeometryShaderInvocations

geometryShader

uint32_t

maxGeometryInputComponents

geometryShader

uint32_t

maxGeometryOutputComponents

geometryShader

uint32_t

maxGeometryOutputVertices

geometryShader

uint32_t

maxGeometryTotalOutputComponents

geometryShader

uint32_t

maxFragmentInputComponents

-

uint32_t

maxFragmentOutputAttachments

-

uint32_t

maxFragmentDualSrcAttachments

dualSrcBlend

uint32_t

maxFragmentCombinedOutputResources

-

uint32_t

maxComputeSharedMemorySize

-

3 × uint32_t

maxComputeWorkGroupCount

-

uint32_t

maxComputeWorkGroupInvocations

-

3 × uint32_t

maxComputeWorkGroupSize

-

uint32_t

subPixelPrecisionBits

-

uint32_t

subTexelPrecisionBits

-

uint32_t

mipmapPrecisionBits

-

uint32_t

maxDrawIndexedIndexValue

fullDrawIndexUint32

uint32_t

maxDrawIndirectCount

multiDrawIndirect

float

maxSamplerLodBias

-

float

maxSamplerAnisotropy

samplerAnisotropy

uint32_t

maxViewports

multiViewport

2 × uint32_t

maxViewportDimensions

-

2 × float

viewportBoundsRange

-

uint32_t

viewportSubPixelBits

-

size_t

minMemoryMapAlignment

-

VkDeviceSize

minTexelBufferOffsetAlignment

-

VkDeviceSize

minUniformBufferOffsetAlignment

-

VkDeviceSize

minStorageBufferOffsetAlignment

-

int32_t

minTexelOffset

-

uint32_t

maxTexelOffset

-

int32_t

minTexelGatherOffset

shaderImageGatherExtended

uint32_t

maxTexelGatherOffset

shaderImageGatherExtended

float

minInterpolationOffset

sampleRateShading

float

maxInterpolationOffset

sampleRateShading

uint32_t

subPixelInterpolationOffsetBits

sampleRateShading

uint32_t

maxFramebufferWidth

-

uint32_t

maxFramebufferHeight

-

uint32_t

maxFramebufferLayers

-

VkSampleCountFlags

framebufferColorSampleCounts

-

VkSampleCountFlags

framebufferIntegerColorSampleCounts

-

VkSampleCountFlags

framebufferDepthSampleCounts

-

VkSampleCountFlags

framebufferStencilSampleCounts

-

VkSampleCountFlags

framebufferNoAttachmentsSampleCounts

-

uint32_t

maxColorAttachments

-

VkSampleCountFlags

sampledImageColorSampleCounts

-

VkSampleCountFlags

sampledImageIntegerSampleCounts

-

VkSampleCountFlags

sampledImageDepthSampleCounts

-

VkSampleCountFlags

sampledImageStencilSampleCounts

-

VkSampleCountFlags

storageImageSampleCounts

shaderStorageImageMultisample

uint32_t

maxSampleMaskWords

-

VkBool32

timestampComputeAndGraphics

-

float

timestampPeriod

-

uint32_t

maxClipDistances

shaderClipDistance

uint32_t

maxCullDistances

shaderCullDistance

uint32_t

maxCombinedClipAndCullDistances

shaderCullDistance

uint32_t

discreteQueuePriorities

-

2 × float

pointSizeRange

largePoints

2 × float

lineWidthRange

wideLines

float

pointSizeGranularity

largePoints

float

lineWidthGranularity

wideLines

VkBool32

strictLines

-

VkBool32

standardSampleLocations

-

VkDeviceSize

optimalBufferCopyOffsetAlignment

-

VkDeviceSize

optimalBufferCopyRowPitchAlignment

-

VkDeviceSize

nonCoherentAtomSize

-

uint32_t

maxDiscardRectangles

VK_EXT_discard_rectangles

VkBool32

filterMinmaxSingleComponentFormats

samplerFilterMinmax VK_EXT_sampler_filter_minmax

VkBool32

filterMinmaxImageComponentMapping

samplerFilterMinmax VK_EXT_sampler_filter_minmax

VkDeviceSize

maxBufferSize

maintenance4

float

primitiveOverestimationSize

VK_EXT_conservative_rasterization

VkBool32

maxExtraPrimitiveOverestimationSize

VK_EXT_conservative_rasterization

float

extraPrimitiveOverestimationSizeGranularity

VK_EXT_conservative_rasterization

VkBool32

degenerateTriangleRasterized

VK_EXT_conservative_rasterization

float

degenerateLinesRasterized

VK_EXT_conservative_rasterization

VkBool32

fullyCoveredFragmentShaderInputVariable

VK_EXT_conservative_rasterization

VkBool32

conservativeRasterizationPostDepthCoverage

VK_EXT_conservative_rasterization

uint32_t

maxUpdateAfterBindDescriptorsInAllPools

descriptorIndexing

VkBool32

shaderUniformBufferArrayNonUniformIndexingNative

-

VkBool32

shaderSampledImageArrayNonUniformIndexingNative

-

VkBool32

shaderStorageBufferArrayNonUniformIndexingNative

-

VkBool32

shaderStorageImageArrayNonUniformIndexingNative

-

VkBool32

shaderInputAttachmentArrayNonUniformIndexingNative

-

uint32_t

maxPerStageDescriptorUpdateAfterBindSamplers

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindUniformBuffers

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindStorageBuffers

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindSampledImages

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindStorageImages

descriptorIndexing

uint32_t

maxPerStageDescriptorUpdateAfterBindInputAttachments

descriptorIndexing

uint32_t

maxPerStageUpdateAfterBindResources

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindSamplers

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindUniformBuffers

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindUniformBuffersDynamic

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindStorageBuffers

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindStorageBuffersDynamic

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindSampledImages

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindStorageImages

descriptorIndexing

uint32_t

maxDescriptorSetUpdateAfterBindInputAttachments

descriptorIndexing

uint32_t

maxInlineUniformBlockSize

inlineUniformBlock

uint32_t

maxPerStageDescriptorInlineUniformBlocks

inlineUniformBlock

uint32_t

maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks

inlineUniformBlock

uint32_t

maxDescriptorSetInlineUniformBlocks

inlineUniformBlock

uint32_t

maxDescriptorSetUpdateAfterBindInlineUniformBlocks

inlineUniformBlock

uint32_t

maxInlineUniformTotalSize

inlineUniformBlock

uint32_t

maxVertexAttribDivisor

Vulkan 1.4, VK_KHR_vertex_attribute_divisor, VK_EXT_vertex_attribute_divisor

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxDrawMeshTasksCount

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxTaskWorkGroupInvocations

VK_NV_mesh_shader

3 × uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxTaskWorkGroupSize

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxTaskTotalMemorySize

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxTaskOutputCount

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshWorkGroupInvocations

VK_NV_mesh_shader

3 × uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshWorkGroupSize

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshTotalMemorySize

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputVertices

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputPrimitives

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshMultiviewViewCount

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::meshOutputPerVertexGranularity

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesNV::meshOutputPerPrimitiveGranularity

VK_NV_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupTotalCount

VK_EXT_mesh_shader

3 × uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupCount

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupInvocations

VK_EXT_mesh_shader

3 × uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupSize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskPayloadSize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskSharedMemorySize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskPayloadAndSharedMemorySize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupTotalCount

VK_EXT_mesh_shader

3 × uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupInvocations

VK_EXT_mesh_shader

3 × uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupSize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshSharedMemorySize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshPayloadAndSharedMemorySize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputMemorySize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshPayloadAndOutputMemorySize

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputComponents

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputVertices

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputPrimitives

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputLayers

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshMultiviewViewCount

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::meshOutputPerVertexGranularity

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::meshOutputPerPrimitiveGranularity

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxPreferredTaskWorkGroupInvocations

VK_EXT_mesh_shader

uint32_t

VkPhysicalDeviceMeshShaderPropertiesEXT::maxPreferredMeshWorkGroupInvocations

VK_EXT_mesh_shader

VkBool32

VkPhysicalDeviceMeshShaderPropertiesEXT::prefersLocalInvocationVertexOutput

VK_EXT_mesh_shader

VkBool32

VkPhysicalDeviceMeshShaderPropertiesEXT::prefersLocalInvocationPrimitiveOutput

VK_EXT_mesh_shader

VkBool32

VkPhysicalDeviceMeshShaderPropertiesEXT::prefersCompactVertexOutput

VK_EXT_mesh_shader

VkBool32

VkPhysicalDeviceMeshShaderPropertiesEXT::prefersCompactPrimitiveOutput

VK_EXT_mesh_shader

uint32_t

maxTransformFeedbackStreams

VK_EXT_transform_feedback

uint32_t

maxTransformFeedbackBuffers

VK_EXT_transform_feedback

VkDeviceSize

maxTransformFeedbackBufferSize

VK_EXT_transform_feedback

uint32_t

maxTransformFeedbackStreamDataSize

VK_EXT_transform_feedback

uint32_t

maxTransformFeedbackBufferDataSize

VK_EXT_transform_feedback

uint32_t

maxTransformFeedbackBufferDataStride

VK_EXT_transform_feedback

VkBool32

transformFeedbackQueries

VK_EXT_transform_feedback

VkBool32

transformFeedbackStreamsLinesTriangles

VK_EXT_transform_feedback

VkBool32

transformFeedbackRasterizationStreamSelect

VK_EXT_transform_feedback

VkBool32

transformFeedbackDraw

VK_EXT_transform_feedback

VkExtent2D

minFragmentDensityTexelSize

fragmentDensityMap

VkExtent2D

maxFragmentDensityTexelSize

fragmentDensityMap

VkBool32

fragmentDensityInvocations

fragmentDensityMap

VkBool32

subsampledLoads

VK_EXT_fragment_density_map2

VkBool32

subsampledCoarseReconstructionEarlyAccess

VK_EXT_fragment_density_map2

uint32_t

maxSubsampledArrayLayers

VK_EXT_fragment_density_map2

uint32_t

maxDescriptorSetSubsampledSamplers

VK_EXT_fragment_density_map2

VkExtent2D

fragmentDensityOffsetGranularity

fragmentDensityMapOffset

uint32_t

maxGeometryCount

VK_NV_ray_tracing, VK_KHR_acceleration_structure

uint32_t

maxInstanceCount

VK_NV_ray_tracing, VK_KHR_acceleration_structure

uint32_t

shaderGroupHandleSize

VK_NV_ray_tracing, VK_KHR_ray_tracing_pipeline

uint32_t

maxShaderGroupStride

VK_NV_ray_tracing, VK_KHR_ray_tracing_pipeline

uint32_t

shaderGroupBaseAlignment

VK_NV_ray_tracing, VK_KHR_ray_tracing_pipeline

uint32_t

maxRecursionDepth

VK_NV_ray_tracing

uint32_t

maxTriangleCount

VK_NV_ray_tracing

uint32_t

maxPerStageDescriptorAccelerationStructures

VK_KHR_acceleration_structure

uint32_t

maxPerStageDescriptorUpdateAfterBindAccelerationStructures

VK_KHR_acceleration_structure

uint32_t

maxDescriptorSetAccelerationStructures

VK_NV_ray_tracing, VK_KHR_acceleration_structure

uint32_t

maxDescriptorSetUpdateAfterBindAccelerationStructures

VK_KHR_acceleration_structure

uint32_t

minAccelerationStructureScratchOffsetAlignment

VK_KHR_acceleration_structure

uint32_t

maxRayRecursionDepth

VK_KHR_ray_tracing_pipeline

uint32_t

shaderGroupHandleCaptureReplaySize

VK_KHR_ray_tracing_pipeline

uint32_t

maxRayDispatchInvocationCount

VK_KHR_ray_tracing_pipeline

uint32_t

shaderGroupHandleAlignment

VK_KHR_ray_tracing_pipeline

uint32_t

maxRayHitAttributeSize

VK_KHR_ray_tracing_pipeline

uint64_t

maxTimelineSemaphoreValueDifference

timelineSemaphore

uint32_t

lineSubPixelPrecisionBits

Vulkan 1.4, VK_KHR_line_rasterization, VK_EXT_line_rasterization

uint32_t

maxCustomBorderColorSamplers

VK_EXT_custom_border_color

VkDeviceSize

robustStorageBufferAccessSizeAlignment

VK_EXT_robustness2

VkDeviceSize

robustUniformBufferAccessSizeAlignment

VK_EXT_robustness2

2 × uint32_t

minFragmentShadingRateAttachmentTexelSize

attachmentFragmentShadingRate

2 × uint32_t

maxFragmentShadingRateAttachmentTexelSize

attachmentFragmentShadingRate

uint32_t

maxFragmentShadingRateAttachmentTexelSizeAspectRatio

attachmentFragmentShadingRate

VkBool32

primitiveFragmentShadingRateWithMultipleViewports

primitiveFragmentShadingRate

VkBool32

layeredShadingRateAttachments

attachmentFragmentShadingRate

VkBool32

fragmentShadingRateNonTrivialCombinerOps

pipelineFragmentShadingRate

2 × uint32_t

maxFragmentSize

pipelineFragmentShadingRate

uint32_t

maxFragmentSizeAspectRatio

pipelineFragmentShadingRate

uint32_t

maxFragmentShadingRateCoverageSamples

pipelineFragmentShadingRate

VkSampleCountFlagBits

maxFragmentShadingRateRasterizationSamples

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithShaderDepthStencilWrites

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithSampleMask

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithShaderSampleMask

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithConservativeRasterization

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithFragmentShaderInterlock

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateWithCustomSampleLocations

pipelineFragmentShadingRate

VkBool32

fragmentShadingRateStrictMultiplyCombiner

pipelineFragmentShadingRate

VkSampleCountFlagBits

maxFragmentShadingRateInvocationCount

supersampleFragmentShadingRates

VkBool32

combinedImageSamplerDescriptorSingleArray

VK_EXT_descriptor_buffer

VkBool32

bufferlessPushDescriptors

VK_EXT_descriptor_buffer

VkBool32

allowSamplerImageViewPostSubmitCreation

VK_EXT_descriptor_buffer

VkDeviceSize

descriptorBufferOffsetAlignment

VK_EXT_descriptor_buffer

uint32_t

maxDescriptorBufferBindings

VK_EXT_descriptor_buffer

uint32_t

maxResourceDescriptorBufferBindings

VK_EXT_descriptor_buffer

uint32_t

maxSamplerDescriptorBufferBindings

VK_EXT_descriptor_buffer

uint32_t

maxEmbeddedImmutableSamplerBindings

VK_EXT_descriptor_buffer

uint32_t

maxEmbeddedImmutableSamplers

VK_EXT_descriptor_buffer

size_t

bufferCaptureReplayDescriptorDataSize

VK_EXT_descriptor_buffer

size_t

imageCaptureReplayDescriptorDataSize

VK_EXT_descriptor_buffer

size_t

imageViewCaptureReplayDescriptorDataSize

VK_EXT_descriptor_buffer

size_t

samplerCaptureReplayDescriptorDataSize

VK_EXT_descriptor_buffer

size_t

accelerationStructureCaptureReplayDescriptorDataSize

VK_EXT_descriptor_buffer

size_t

samplerDescriptorSize

VK_EXT_descriptor_buffer

size_t

combinedImageSamplerDescriptorSize

VK_EXT_descriptor_buffer

size_t

sampledImageDescriptorSize

VK_EXT_descriptor_buffer

size_t

storageImageDescriptorSize

VK_EXT_descriptor_buffer

size_t

uniformTexelBufferDescriptorSize

VK_EXT_descriptor_buffer

size_t

robustUniformTexelBufferDescriptorSize

VK_EXT_descriptor_buffer

size_t

storageTexelBufferDescriptorSize

VK_EXT_descriptor_buffer

size_t

robustStorageTexelBufferDescriptorSize

VK_EXT_descriptor_buffer

size_t

uniformBufferDescriptorSize

VK_EXT_descriptor_buffer

size_t

robustUniformBufferDescriptorSize

VK_EXT_descriptor_buffer

size_t

storageBufferDescriptorSize

VK_EXT_descriptor_buffer

size_t

robustStorageBufferDescriptorSize

VK_EXT_descriptor_buffer

size_t

inputAttachmentDescriptorSize

VK_EXT_descriptor_buffer

size_t

accelerationStructureDescriptorSize

VK_EXT_descriptor_buffer

VkDeviceSize

maxSamplerDescriptorBufferRange

VK_EXT_descriptor_buffer

VkDeviceSize

maxResourceDescriptorBufferRange

VK_EXT_descriptor_buffer

VkDeviceSize

samplerDescriptorBufferAddressSpaceSize

VK_EXT_descriptor_buffer

VkDeviceSize

resourceDescriptorBufferAddressSpaceSize

VK_EXT_descriptor_buffer

VkDeviceSize

descriptorBufferAddressSpaceSize

VK_EXT_descriptor_buffer

size_t

combinedImageSamplerDensityMapDescriptorSize

VK_EXT_descriptor_buffer

uint32_t

maxSubpassShadingWorkgroupSizeAspectRatio

subpassShading

VkBool32

graphicsPipelineLibraryFastLinking

graphicsPipelineLibrary

VkBool32

graphicsPipelineLibraryIndependentInterpolationDecoration

graphicsPipelineLibrary

VkBool32

triStripVertexOrderIndependentOfProvokingVertex

-

uint32_t

maxWeightFilterPhases

textureSampleWeighted

2 × uint32_t

maxWeightFilterDimension

textureSampleWeighted

2 × uint32_t

maxBlockMatchRegion

textureBlockMatch

2 × uint32_t

maxBoxFilterBlockSize

textureBoxFilter

VkBool32

dynamicPrimitiveTopologyUnrestricted

VK_EXT_extended_dynamic_state3

uint32_t

maxOpacity2StateSubdivisionLevel

VK_EXT_opacity_micromap

uint32_t

maxOpacity4StateSubdivisionLevel

VK_EXT_opacity_micromap

uint64_t

maxDecompressionIndirectCount

VK_NV_memory_decompression

3 × uint32_t

maxWorkGroupCount

VK_HUAWEI_cluster_culling_shader

3 × uint32_t

maxWorkGroupSize

VK_HUAWEI_cluster_culling_shader

uint32_t

maxOutputClusterCount

VK_HUAWEI_cluster_culling_shader

VkDeviceSize

indirectBufferOffsetAlignment

VK_HUAWEI_cluster_culling_shader

uint32_t

maxExecutionGraphDepth

shaderEnqueue

uint32_t

maxExecutionGraphShaderOutputNodes

shaderEnqueue

uint32_t

maxExecutionGraphShaderPayloadSize

shaderEnqueue

uint32_t

maxExecutionGraphShaderPayloadCount

shaderEnqueue

uint32_t

executionGraphDispatchAddressAlignment

shaderEnqueue

uint32_t

maxExecutionGraphVertexBufferBindings

shaderEnqueue

3 × uint32_t

maxExecutionGraphWorkgroupCount

shaderEnqueue

uint32_t

maxExecutionGraphWorkgroups

shaderEnqueue

uint32_t

maxIndirectShaderObjectCount

shaderObject

VkDeviceSize

extendedSparseAddressSpaceSize

sparseBinding, extendedSparseAddressSpace

uint32_t

supportedImageAlignmentMask

imageAlignmentControl

VkBool32

separateDepthStencilAttachmentAccess

maintenance7

uint32_t

maxDescriptorSetTotalUniformBuffersDynamic

maintenance7

uint32_t

maxDescriptorSetTotalStorageBuffersDynamic

maintenance7

uint32_t

maxDescriptorSetTotalBuffersDynamic

maintenance7

uint32_t

maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic

maintenance7

uint32_t

maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic

maintenance7

uint32_t

maxDescriptorSetUpdateAfterBindTotalBuffersDynamic

maintenance7

uint32_t

cooperativeMatrixWorkgroupScopeMaxWorkgroupSize

cooperativeMatrixWorkgroupScope

uint32_t

cooperativeMatrixFlexibleDimensionsMaxDimension

cooperativeMatrixFlexibleDimensions

uint32_t

cooperativeMatrixWorkgroupScopeReservedSharedMemory

cooperativeMatrixWorkgroupScope

VkBool32

shaderSignedZeroInfNanPreserveFloat16

shaderFloat16

表 2. 必需的限制
限制 不支持的限制 支持的限制 限制类型1

maxImageDimension1D

-

4096
8192 (2022年路线图, Vulkan 1.4)

最小

maxImageDimension2D

-

4096
8192 (2022年路线图, Vulkan 1.4)

最小

maxImageDimension3D

-

256
512 (Vulkan 1.4)

最小

maxImageDimensionCube

-

4096
8192 (2022年路线图, Vulkan 1.4)

最小

maxImageArrayLayers

-

256
2048 (2022年路线图, Vulkan 1.4)

最小

maxTexelBufferElements

-

65536

最小

maxUniformBufferRange

-

16384
65536 (2022年路线图, Vulkan 1.4)

最小

maxStorageBufferRange

-

227

最小

maxPushConstantsSize

-

128
256 (Vulkan 1.4)

最小

maxMemoryAllocationCount

-

4096

最小

maxSamplerAllocationCount

-

4000

最小

bufferImageGranularity

-

131072
4096 (2022年路线图, Vulkan 1.4)

最大

sparseAddressSpaceSize

0

231

最小

maxBoundDescriptorSets

-

4
7 (2024年路线图, Vulkan 1.4)

最小

maxPerStageDescriptorSamplers

-

16

最小

maxPerStageDescriptorUniformBuffers

-

12
15 (2022 年路线图,Vulkan 1.4)

最小

maxPerStageDescriptorStorageBuffers

-

4
30 (2022 年路线图)

最小

maxPerStageDescriptorSampledImages

-

16
200 (2022 年路线图)

最小

maxPerStageDescriptorStorageImages

-

4
144 (2022 年路线图)

最小

maxPerStageDescriptorInputAttachments

-

4

最小

maxPerStageResources

-

128 2
200 (2022 年路线图,Vulkan 1.4)

最小

maxDescriptorSetSamplers

-

96 8
576 (2022 年路线图)

最小值, n × PerStage

maxDescriptorSetUniformBuffers

-

72 8
90 (2022 年路线图,Vulkan 1.4)

最小值, n × PerStage

maxDescriptorSetUniformBuffersDynamic

-

8

最小

maxDescriptorSetStorageBuffers

-

24 8
96 (2022 年路线图,Vulkan 1.4)

最小值, n × PerStage

maxDescriptorSetStorageBuffersDynamic

-

4

最小

maxDescriptorSetTotalUniformBuffersDynamic

-

maxDescriptorSetUniformBuffersDynamic

最小

maxDescriptorSetTotalStorageBuffersDynamic

-

maxDescriptorSetStorageBuffersDynamic

最小

maxDescriptorSetTotalBuffersDynamic

-

maxDescriptorSetUniformBuffersDynamic + maxDescriptorSetStorageBuffersDynamic

最小

maxDescriptorSetSampledImages

-

96 8
1800 (2022 年路线图)

最小值, n × PerStage

maxDescriptorSetStorageImages

-

24 8
144 (2022 年路线图,Vulkan 1.4)

最小值, n × PerStage

maxDescriptorSetInputAttachments

-

4

最小

maxVertexInputAttributes

-

16

最小

maxVertexInputBindings

-

16 10

最小

maxVertexInputAttributeOffset

-

2047

最小

maxVertexInputBindingStride

-

2048

最小

maxVertexOutputComponents

-

64

最小

maxTessellationGenerationLevel

0

64

最小

maxTessellationPatchSize

0

32

最小

maxTessellationControlPerVertexInputComponents

0

64

最小

maxTessellationControlPerVertexOutputComponents

0

64

最小

maxTessellationControlPerPatchOutputComponents

0

120

最小

maxTessellationControlTotalOutputComponents

0

2048

最小

maxTessellationEvaluationInputComponents

0

64

最小

maxTessellationEvaluationOutputComponents

0

64

最小

maxGeometryShaderInvocations

0

32

最小

maxGeometryInputComponents

0

64

最小

maxGeometryOutputComponents

0

64

最小

maxGeometryOutputVertices

0

256

最小

maxGeometryTotalOutputComponents

0

1024

最小

maxFragmentInputComponents

-

64

最小

maxFragmentOutputAttachments

-

4

最小

maxFragmentDualSrcAttachments

0

1

最小

maxFragmentCombinedOutputResources

-

4
16 (2022 年路线图,Vulkan 1.4)

最小

maxComputeSharedMemorySize

-

16384

最小

maxComputeWorkGroupCount

-

(65535,65535,65535)

最小

maxComputeWorkGroupInvocations

-

128
256 (2022 年路线图,Vulkan 1.4)

最小

maxComputeWorkGroupSize

-

(128,128,64)
(256,256,64) (2022 年路线图,Vulkan 1.4)

最小

子组大小

-

4 (2022 年路线图)

最小

子组支持的阶段

-

VK_SHADER_STAGE_COMPUTE_BIT |
VK_SHADER_STAGE_FRAGMENT_BIT (2022 年路线图)

位域

子组支持的操作

-

VK_SUBGROUP_FEATURE_BASIC_BIT |
VK_SUBGROUP_FEATURE_VOTE_BIT |
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT |
VK_SUBGROUP_FEATURE_BALLOT_BIT |
VK_SUBGROUP_FEATURE_SHUFFLE_BIT |
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT |
VK_SUBGROUP_FEATURE_QUAD_BIT (2022 年路线图)

位域

shaderSignedZeroInfNanPreserveFloat16

-

VK_TRUE (2022 年路线图,Vulkan 1.4)

布尔值

shaderSignedZeroInfNanPreserveFloat32

-

VK_TRUE (2022 年路线图,Vulkan 1.4)

布尔值

shaderRoundingModeRTEFloat16

-

VK_TRUE (2024 年路线图)

布尔值

shaderRoundingModeRTEFloat32

-

VK_TRUE (2024 年路线图)

布尔值

maxSubgroupSize

-

4 (2022 年路线图)

最小

subPixelPrecisionBits

-

4

最小

subTexelPrecisionBits

-

4
8 (2022 年路线图,Vulkan 1.4)

最小

mipmapPrecisionBits

-

4
6 (2022 年路线图,Vulkan 1.4)

最小

maxDrawIndexedIndexValue

224-1

232-1

最小

maxDrawIndirectCount

1

216-1

最小

maxSamplerLodBias

-

2
14 (2022 年路线图,Vulkan 1.4)

最小

maxSamplerAnisotropy

1

16

最小

maxViewports

1

16

最小

maxViewportDimensions

-

(4096,4096) 3

最小

viewportBoundsRange

-

(-8192,8191) 4

(最大值,最小值)

viewportSubPixelBits

-

0

最小

minMemoryMapAlignment

-

64

最小

minTexelBufferOffsetAlignment

-

256

最大

minUniformBufferOffsetAlignment

-

256

最大

minStorageBufferOffsetAlignment

-

256

最大

minTexelOffset

-

-8

最大

maxTexelOffset

-

7

最小

minTexelGatherOffset

0

-8

最大

maxTexelGatherOffset

0

7

最小

minInterpolationOffset

0.0

-0.5 5

最大

maxInterpolationOffset

0.0

0.5 - (1 ULP) 5

最小

subPixelInterpolationOffsetBits

0

4 5

最小

maxFramebufferWidth

-

4096

最小

maxFramebufferHeight

-

4096

最小

maxFramebufferLayers

-

256

最小

framebufferColorSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

最小

framebufferIntegerColorSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT)

最小

framebufferDepthSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

最小

framebufferStencilSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

最小

framebufferNoAttachmentsSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

最小

maxColorAttachments

-

4
7 (2022 年路线图)
8 (2024 年路线图,Vulkan 1.4)

最小

sampledImageColorSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

最小

sampledImageIntegerSampleCounts

-

VK_SAMPLE_COUNT_1_BIT

最小

sampledImageDepthSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

最小

sampledImageStencilSampleCounts

-

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

最小

storageImageSampleCounts

VK_SAMPLE_COUNT_1_BIT

(VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT)

最小

maxSampleMaskWords

-

1

最小

timestampComputeAndGraphics

-

-
VK_TRUE (2024 年路线图,Vulkan 1.4)

布尔值

timestampPeriod

-

-

持续时间

maxClipDistances

0

8

最小

maxCullDistances

0

8

最小

maxCombinedClipAndCullDistances

0

8

最小

discreteQueuePriorities

-

2

最小

pointSizeRange

(1.0,1.0)

(1.0, 64.0 - ULP) 6
(1.0, 256.0 - pointSizeGranularity) (Vulkan 1.4)

(最大值,最小值)

lineWidthRange

(1.0,1.0)

(1.0, 8.0 - ULP) 7

(最大值,最小值)

pointSizeGranularity

0.0

1.0 6
0.125 (2022 年路线图,Vulkan 1.4)

最大值,定点增量

lineWidthGranularity

0.0

1.0 7
0.5 (2022 年路线图,Vulkan 1.4)

最大值,定点增量

strictLines

-

-

依赖于实现

standardSampleLocations

-

-
VK_TRUE (2022 年路线图,Vulkan 1.4)

布尔值

optimalBufferCopyOffsetAlignment

-

-

建议

optimalBufferCopyRowPitchAlignment

-

-

建议

nonCoherentAtomSize

-

256

最大

maxPushDescriptors

-

32

最小

maxMultiviewViewCount

-

6

最小

maxMultiviewInstanceIndex

-

227-1

最小

maxDiscardRectangles

0

4

最小

sampleLocationSampleCounts

-

VK_SAMPLE_COUNT_4_BIT

最小

maxSampleLocationGridSize

-

(1,1)

最小

sampleLocationCoordinateRange

-

(0.0, 0.9375)

(最大值,最小值)

sampleLocationSubPixelBits

-

4

最小

variableSampleLocations

-

VK_FALSE

依赖于实现

nativeUnalignedPerformance

-

VK_FALSE

依赖于实现

minImportedHostPointerAlignment

-

65536

最大

perViewPositionAllComponents

-

-

依赖于实现

filterMinmaxSingleComponentFormats

-

-

依赖于实现

filterMinmaxImageComponentMapping

-

-

依赖于实现

advancedBlendMaxColorAttachments

-

1

最小

advancedBlendIndependentBlend

-

VK_FALSE

依赖于实现

advancedBlendNonPremultipliedSrcColor

-

VK_FALSE

依赖于实现

advancedBlendNonPremultipliedDstColor

-

VK_FALSE

依赖于实现

advancedBlendCorrelatedOverlap

-

VK_FALSE

依赖于实现

advancedBlendAllOperations

-

VK_FALSE

依赖于实现

maxPerSetDescriptors

-

1024

最小

maxMemoryAllocationSize

-

230

最小

maxBufferSize

-

230

最小

primitiveOverestimationSize

-

0.0

最小

maxExtraPrimitiveOverestimationSize

-

0.0

最小

extraPrimitiveOverestimationSizeGranularity

-

0.0

最小

primitiveUnderestimation

-

VK_FALSE

依赖于实现

conservativePointAndLineRasterization

-

VK_FALSE

依赖于实现

degenerateTrianglesRasterized

-

VK_FALSE

依赖于实现

degenerateLinesRasterized

-

VK_FALSE

依赖于实现

fullyCoveredFragmentShaderInputVariable

-

VK_FALSE

依赖于实现

conservativeRasterizationPostDepthCoverage

-

VK_FALSE

依赖于实现

maxUpdateAfterBindDescriptorsInAllPools

0

500000

最小

shaderUniformBufferArrayNonUniformIndexingNative

-

VK_FALSE

依赖于实现

shaderSampledImageArrayNonUniformIndexingNative

-

VK_FALSE

依赖于实现

shaderStorageBufferArrayNonUniformIndexingNative

-

VK_FALSE

依赖于实现

shaderStorageImageArrayNonUniformIndexingNative

-

VK_FALSE

依赖于实现

shaderInputAttachmentArrayNonUniformIndexingNative

-

VK_FALSE

依赖于实现

maxPerStageDescriptorUpdateAfterBindSamplers

0 9

500000 9

最小

maxPerStageDescriptorUpdateAfterBindUniformBuffers

0 9

12 9

最小

maxPerStageDescriptorUpdateAfterBindStorageBuffers

0 9

500000 9

最小

maxPerStageDescriptorUpdateAfterBindSampledImages

0 9

500000 9

最小

maxPerStageDescriptorUpdateAfterBindStorageImages

0 9

500000 9

最小

maxPerStageDescriptorUpdateAfterBindInputAttachments

0 9

4 9
7 (2022 年路线图)

最小

maxPerStageUpdateAfterBindResources

0 9

500000 9

最小

maxDescriptorSetUpdateAfterBindSamplers

0 9

500000 9

最小

maxDescriptorSetUpdateAfterBindUniformBuffers

0 9

72 8 9

最小值, n × PerStage

maxDescriptorSetUpdateAfterBindUniformBuffersDynamic

0 9

8 9

最小

maxDescriptorSetUpdateAfterBindStorageBuffers

0 9

500000 9

最小

maxDescriptorSetUpdateAfterBindStorageBuffersDynamic

0 9

4 9

最小

maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic

0 9

maxDescriptorSetUpdateAfterBindUniformBuffersDynamic

最小

maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic

0 9

maxDescriptorSetUpdateAfterBindStorageBuffersDynamic

最小

maxDescriptorSetUpdateAfterBindTotalBuffersDynamic

0 9

maxDescriptorSetUpdateAfterBindUniformBuffersDynamic + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic

最小

maxDescriptorSetUpdateAfterBindSampledImages

0 9

500000 9

最小

maxDescriptorSetUpdateAfterBindStorageImages

0 9

500000 9

最小

maxDescriptorSetUpdateAfterBindInputAttachments

0 9

4 9

最小

maxInlineUniformBlockSize

-

256

最小

maxPerStageDescriptorInlineUniformBlocks

-

4

最小

maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks

-

4

最小

maxDescriptorSetInlineUniformBlocks

-

4

最小

maxDescriptorSetUpdateAfterBindInlineUniformBlocks

-

4

最小

maxInlineUniformTotalSize

-

256

最小

maxVertexAttribDivisor

-

216-1

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxDrawMeshTasksCount

-

216-1

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxTaskWorkGroupInvocations

-

32

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxTaskWorkGroupSize

-

(32,1,1)

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxTaskTotalMemorySize

-

16384

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxTaskOutputCount

-

216-1

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshWorkGroupInvocations

-

32

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshWorkGroupSize

-

(32,1,1)

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshTotalMemorySize

-

16384

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputVertices

-

256

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputPrimitives

-

256

最小

VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshMultiviewViewCount

-

1

最小

VkPhysicalDeviceMeshShaderPropertiesNV::meshOutputPerVertexGranularity

-

-

依赖于实现

VkPhysicalDeviceMeshShaderPropertiesNV::meshOutputPerPrimitiveGranularity

-

-

依赖于实现

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupTotalCount

-

2^22

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupCount

-

(65535,65535,65535)

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupInvocations

-

128

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupSize

-

(128,128,128)

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskPayloadSize

-

16384

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskSharedMemorySize

-

32768

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskPayloadAndSharedMemorySize

-

32768

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupTotalCount

-

2^22

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount

-

(65535,65535,65535)

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupInvocations

-

128

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupSize

-

(128,128,128)

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshSharedMemorySize

-

28672

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshPayloadAndSharedMemorySize

-

28672

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputMemorySize

-

32768

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshPayloadAndOutputMemorySize

-

48128

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputComponents

-

128

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputVertices

-

256

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputPrimitives

-

256

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputLayers

-

8

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshMultiviewViewCount

-

1

最小

VkPhysicalDeviceMeshShaderPropertiesEXT::meshOutputPerVertexGranularity

0

32

最大

VkPhysicalDeviceMeshShaderPropertiesEXT::meshOutputPerPrimitiveGranularity

0

32

最大

VkPhysicalDeviceMeshShaderPropertiesEXT::maxPreferredTaskWorkGroupInvocations

-

-

依赖于实现

VkPhysicalDeviceMeshShaderPropertiesEXT::maxPreferredMeshWorkGroupInvocations

-

-

依赖于实现

VkPhysicalDeviceMeshShaderPropertiesEXT::prefersLocalInvocationVertexOutput

-

-

依赖于实现

VkPhysicalDeviceMeshShaderPropertiesEXT::prefersLocalInvocationPrimitiveOutput

-

-

依赖于实现

VkPhysicalDeviceMeshShaderPropertiesEXT::prefersCompactVertexOutput

-

-

依赖于实现

VkPhysicalDeviceMeshShaderPropertiesEXT::prefersCompactPrimitiveOutput

-

-

依赖于实现

maxTransformFeedbackStreams

-

1

最小

maxTransformFeedbackBuffers

-

1

最小

maxTransformFeedbackBufferSize

-

227

最小

maxTransformFeedbackStreamDataSize

-

512

最小

maxTransformFeedbackBufferDataSize

-

512

最小

maxTransformFeedbackBufferDataStride

-

512

最小

transformFeedbackQueries

-

VK_FALSE

依赖于实现

transformFeedbackStreamsLinesTriangles

-

VK_FALSE

依赖于实现

transformFeedbackRasterizationStreamSelect

-

VK_FALSE

依赖于实现

transformFeedbackDraw

-

VK_FALSE

依赖于实现

minFragmentDensityTexelSize

-

(1,1)

最小

maxFragmentDensityTexelSize

-

(1,1)

最小

fragmentDensityInvocations

-

-

依赖于实现

subsampledLoads

VK_TRUE

VK_FALSE

依赖于实现

subsampledCoarseReconstructionEarlyAccess

VK_FALSE

VK_FALSE

依赖于实现

maxSubsampledArrayLayers

2

2

最小

maxDescriptorSetSubsampledSamplers

1

1

最小

fragmentDensityOffsetGranularity

-

(1024,1024)

最大

VkPhysicalDeviceRayTracingPropertiesNV::shaderGroupHandleSize

-

16

最小

VkPhysicalDeviceRayTracingPropertiesNV::maxRecursionDepth

-

31

最小

VkPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleSize

-

32

精确

VkPhysicalDeviceRayTracingPipelinePropertiesKHR::maxRayRecursionDepth

-

1

最小

maxShaderGroupStride

-

4096

最小

shaderGroupBaseAlignment

-

64

最大

maxGeometryCount

-

224-1

最小

maxInstanceCount

-

224-1

最小

maxTriangleCount

-

229-1

最小

maxPrimitiveCount

-

229-1

最小

maxPerStageDescriptorAccelerationStructures

-

16

最小

maxPerStageDescriptorUpdateAfterBindAccelerationStructures

-

500000 9

最小

maxDescriptorSetAccelerationStructures

-

16

最小

maxDescriptorSetUpdateAfterBindAccelerationStructures

-

500000 9

最小

minAccelerationStructureScratchOffsetAlignment

-

256

最大

shaderGroupHandleCaptureReplaySize

-

64

最大

maxRayDispatchInvocationCount

-

230

最小

shaderGroupHandleAlignment

-

32

最大

maxRayHitAttributeSize

-

32

最小

maxTimelineSemaphoreValueDifference

-

231-1

最小

lineSubPixelPrecisionBits

-

4

最小

maxGraphicsShaderGroupCount

-

212

最小

maxIndirectCommandsStreamCount + (对于 NV 扩展)

-

212

最小

maxIndirectCommandsStreamStride

-

2048

最小

minIndirectCommandsBufferOffsetAlignment

-

256

最大

minSequencesCountBufferOffsetAlignment

-

256

最大

minSequencesIndexBufferOffsetAlignment

-

256

最大

maxIndirectSequenceCount

-

220

最小

maxIndirectCommandsTokenCount

-

16

最小

maxIndirectCommandsTokenOffset

-

2047

最小

maxIndirectPipelineCount

-

212

最小

deviceGeneratedCommandsTransformFeedback

-

false

依赖于实现

deviceGeneratedCommandsMultiDrawIndirectCount

-

false

依赖于实现

maxIndirectShaderObjectCount

0

212

依赖于实现

maxIndirectCommandsIndirectStride

-

2048

最小

supportedIndirectCommandsInputModes

-

VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT

最小

supportedIndirectCommandsShaderStages

-

(VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT)

最小

supportedIndirectCommandsShaderStagesPipelineBinding

-

0

最小

supportedIndirectCommandsShaderStagesShaderBinding

-

0

最小

maxCustomBorderColorSamplers

-

32

最小

robustStorageBufferAccessSizeAlignment

-

4

最大

robustUniformBufferAccessSizeAlignment

-

256

最大

minFragmentShadingRateAttachmentTexelSize

(0,0)

(32,32)

最大

maxFragmentShadingRateAttachmentTexelSize

(0,0)

(8,8)

最小

maxFragmentShadingRateAttachmentTexelSizeAspectRatio

0

1

最小

primitiveFragmentShadingRateWithMultipleViewports

VK_FALSE

VK_FALSE

依赖于实现

layeredShadingRateAttachments

VK_FALSE

VK_FALSE

依赖于实现

fragmentShadingRateNonTrivialCombinerOps

-

VK_FALSE

依赖于实现

maxFragmentSize

-

(2,2)

最小

maxFragmentSizeAspectRatio

-

2

最小

maxFragmentShadingRateCoverageSamples

-

16

最小

maxFragmentShadingRateRasterizationSamples

-

VK_SAMPLE_COUNT_4_BIT

最小

fragmentShadingRateWithShaderDepthStencilWrites

-

VK_FALSE

依赖于实现

fragmentShadingRateWithSampleMask

-

VK_FALSE

依赖于实现

fragmentShadingRateWithShaderSampleMask

-

VK_FALSE

依赖于实现

fragmentShadingRateWithConservativeRasterization

-

VK_FALSE

依赖于实现

fragmentShadingRateWithFragmentShaderInterlock

-

VK_FALSE

依赖于实现

fragmentShadingRateWithCustomSampleLocations

-

VK_FALSE

依赖于实现

fragmentShadingRateStrictMultiplyCombiner

-

VK_FALSE

依赖于实现

maxFragmentShadingRateInvocationCount

-

VK_SAMPLE_COUNT_4_BIT

最小

combinedImageSamplerDescriptorSingleArray

-

VK_FALSE

依赖于实现

bufferlessPushDescriptors

-

VK_FALSE

依赖于实现

allowSamplerImageViewPostSubmitCreation

-

VK_FALSE

依赖于实现

descriptorBufferOffsetAlignment

-

256

最大

maxDescriptorBufferBindings

-

3

最小

maxResourceDescriptorBufferBindings

-

1

最小

maxSamplerDescriptorBufferBindings

-

1

最小

maxEmbeddedImmutableSamplerBindings

-

1

最小

maxEmbeddedImmutableSamplers

-

2032

最小

bufferCaptureReplayDescriptorDataSize

-

64

最大

imageCaptureReplayDescriptorDataSize

-

64

最大

imageViewCaptureReplayDescriptorDataSize

-

64

最大

samplerCaptureReplayDescriptorDataSize

-

64

最大

accelerationStructureCaptureReplayDescriptorDataSize

-

64

最大

samplerDescriptorSize

-

256

最大

combinedImageSamplerDescriptorSize

-

256

最大

sampledImageDescriptorSize

-

256

最大

storageImageDescriptorSize

-

256

最大

uniformTexelBufferDescriptorSize

-

256

最大

robustUniformTexelBufferDescriptorSize

-

256

最大

storageTexelBufferDescriptorSize

-

256

最大

robustStorageTexelBufferDescriptorSize

-

256

最大

uniformBufferDescriptorSize

-

256

最大

robustUniformBufferDescriptorSize

-

256

最大

storageBufferDescriptorSize

-

256

最大

robustStorageBufferDescriptorSize

-

256

最大

inputAttachmentDescriptorSize

-

256

最大

accelerationStructureDescriptorSize

-

256

最大

maxSamplerDescriptorBufferRange

-

211 × samplerDescriptorSize

最小

maxResourceDescriptorBufferRange

-

(220 - 215) × maxResourceDescriptorSize 12

最小

samplerDescriptorBufferAddressSpaceSize

-

227

最小

resourceDescriptorBufferAddressSpaceSize

-

227

最小

descriptorBufferAddressSpaceSize

-

227

最小

combinedImageSamplerDensityMapDescriptorSize

-

256

最大

maxSubpassShadingWorkgroupSizeAspectRatio

0

1

最小

maxMultiDrawCount

-

1024

最小

maxCommandBufferNestingLevel

-

1

最小

graphicsPipelineLibraryFastLinking

-

VK_FALSE

依赖于实现

graphicsPipelineLibraryIndependentInterpolationDecoration

-

VK_FALSE

依赖于实现

triStripVertexOrderIndependentOfProvokingVertex

-

VK_FALSE

依赖于实现

maxWeightFilterPhases

-

1024

最小

maxWeightFilterDimension

-

(64,64)

最小

maxBlockMatchRegion

-

(64,64)

最小

maxBoxFilterBlockSize

-

(64,64)

最小

dynamicPrimitiveTopologyUnrestricted

-

-

依赖于实现

maxOpacity2StateSubdivisionLevel

-

3

最小

maxOpacity4StateSubdivisionLevel

-

3

最小

maxDecompressionIndirectCount

1

216-1

最小

maxWorkGroupCount

-

(65536,1,1)

最小

maxWorkGroupSize

-

(32,1,1)

最小

maxOutputClusterCount

-

1024

最小

indirectBufferOffsetAlignment

-

-

依赖于实现

maxExecutionGraphDepth

-

32

最小

maxExecutionGraphShaderOutputNodes

-

256

最小

maxExecutionGraphShaderPayloadSize

-

32768

最小

maxExecutionGraphShaderPayloadCount

-

256

最小

executionGraphDispatchAddressAlignment

-

4

最大

maxExecutionGraphVertexBufferBindings

-

1024

最小

maxExecutionGraphWorkgroupCount

-

(65535,65535,65535)

最小

maxExecutionGraphWorkgroups

-

224-1

最小

extendedSparseAddressSpaceSize

0

sparseAddressSpaceSize

最小

renderPassStripeGranularity

-

(64,64)

最大

maxRenderPassStripes

-

32

最小

minPlacedMemoryMapAlignment

-

65536

最大

supportedImageAlignmentMask

-

1

最小

separateDepthStencilAttachmentAccess

VK_FALSE

-

依赖于实现

cooperativeMatrixWorkgroupScopeMaxWorkgroupSize

-

子组大小 × 2

最小

cooperativeMatrixFlexibleDimensionsMaxDimension

-

256

最小

cooperativeMatrixWorkgroupScopeReservedSharedMemory

-

maxComputeSharedMemorySize / 2

最大

1

限制类型 列指定限制是所有实现必须支持的最小限制,所有实现必须支持的最大限制,还是所有实现必须支持的精确值。对于位掩码,最小限制是所有实现必须设置的最小位数,但它们可能会设置超出此最小值的额外位。

2

maxPerStageResources 必须至少是以下各项中的最小值

  • maxPerStageDescriptorUniformBuffersmaxPerStageDescriptorStorageBuffersmaxPerStageDescriptorSampledImagesmaxPerStageDescriptorStorageImagesmaxPerStageDescriptorInputAttachmentsmaxColorAttachments 限制的总和,或者

  • 128.

    在每个阶段中,可能无法达到此限制。

3

请参阅 maxViewportDimensions,了解与其他限制的必要关系。

4

请参阅 viewportBoundsRange,了解与其他限制的必要关系。

5

minInterpolationOffsetmaxInterpolationOffset 描述了支持的插值偏移量的闭区间:[minInterpolationOffset, maxInterpolationOffset]。ULP 由 subPixelInterpolationOffsetBits 确定。如果 subPixelInterpolationOffsetBits 为 4,则提供 (1/24) = 0.0625 的增量,因此支持的插值偏移量范围为 [-0.5, 0.4375]

6

点大小 ULP 由 pointSizeGranularity 确定。如果 pointSizeGranularity 为 0.125,则支持的点大小范围必须至少为 [1.0, 63.875]。

7

线宽 ULP 由 lineWidthGranularity 确定。如果 lineWidthGranularity 为 0.0625,则支持的线宽范围必须至少为 [1.0, 7.9375]。

8

最小的 maxDescriptorSet* 限制是相应规范最小的 maxPerStageDescriptor* 限制的 n 倍,其中 nVkPhysicalDevice 支持的着色器阶段数。如果支持所有着色器阶段,则 n = 6 (顶点、细分控制、细分评估、几何、片段、计算)。

9

UpdateAfterBind 描述符限制必须各自大于或等于对应的 non-UpdateAfterBind 限制。

10

如果启用了 VK_KHR_portability_subset 扩展,则 maxVertexInputBindings 的所需最小值是 8

12

maxResourceDescriptorSize 定义为 storageImageDescriptorSizesampledImageDescriptorSizerobustUniformTexelBufferDescriptorSizerobustStorageTexelBufferDescriptorSizerobustUniformBufferDescriptorSizerobustStorageBufferDescriptorSizeinputAttachmentDescriptorSizeaccelerationStructureDescriptorSize 的最大值。

其他多重采样功能

要查询特定采样计数可能支持的其他多重采样功能(超出上面 限制 中描述的最小功能),请调用

// Provided by VK_EXT_sample_locations
void vkGetPhysicalDeviceMultisamplePropertiesEXT(
    VkPhysicalDevice                            physicalDevice,
    VkSampleCountFlagBits                       samples,
    VkMultisamplePropertiesEXT*                 pMultisampleProperties);
  • physicalDevice 是从中查询其他多重采样功能的物理设备。

  • samples 是一个 VkSampleCountFlagBits 值,指定要查询功能的采样计数。

  • pMultisampleProperties 是一个指向 VkMultisamplePropertiesEXT 结构的指针,该结构返回有关特定于采样计数的其他多重采样功能的信息。

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

  • VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter
    samples 必须是一个有效的 VkSampleCountFlagBits

  • VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter
    pMultisampleProperties 必须是指向 VkMultisamplePropertiesEXT 结构的有效指针

VkMultisamplePropertiesEXT 结构定义如下

// Provided by VK_EXT_sample_locations
typedef struct VkMultisamplePropertiesEXT {
    VkStructureType    sType;
    void*              pNext;
    VkExtent2D         maxSampleLocationGridSize;
} VkMultisamplePropertiesEXT;
  • sType 是一个 VkStructureType 值,用于标识此结构。

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

  • maxSampleLocationGridSize 是像素网格的最大大小,其中样本位置可以变化。

有效用法(隐式)
  • VUID-VkMultisamplePropertiesEXT-sType-sType
    sType 必须VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT

  • VUID-VkMultisamplePropertiesEXT-pNext-pNext
    pNext 必须NULL

如果使用 vkGetPhysicalDeviceMultisamplePropertiesEXT 请求附加多重采样功能的采样计数在 sampleLocationSampleCounts 中设置,则 VkMultisamplePropertiesEXT::maxSampleLocationGridSizewidthheight 成员必须大于或等于 maxSampleLocationGridSize 的相应成员,否则两个成员必须0

配置文件限制

路线图 2022

声明支持 路线图 2022 配置文件的实现必须满足以下附加限制要求

限制 支持的限制 限制类型1

maxImageDimension1D

8192

最小

maxImageDimension2D

8192

最小

maxImageDimensionCube

8192

最小

maxImageArrayLayers

2048

最小

maxUniformBufferRange

65536

最小

bufferImageGranularity

4096

最大

maxPerStageDescriptorSamplers

64

最小

maxPerStageDescriptorUniformBuffers

15

最小

maxPerStageDescriptorStorageBuffers

30

最小

maxPerStageDescriptorSampledImages

200

最小

maxPerStageDescriptorStorageImages

16

最小

maxPerStageResources

200

最小

maxDescriptorSetSamplers

576

最小

maxDescriptorSetUniformBuffers

90

最小

maxDescriptorSetStorageBuffers

96

最小

maxDescriptorSetSampledImages

1800

最小

maxDescriptorSetStorageImages

144

最小

maxFragmentCombinedOutputResources

16

最小

maxComputeWorkGroupInvocations

256

最小

maxComputeWorkGroupSize

(256,256,64)

最小

subTexelPrecisionBits

8

最小

mipmapPrecisionBits

6

最小

maxSamplerLodBias

14

最小

pointSizeGranularity

0.125

最大

lineWidthGranularity

0.5

最大

standardSampleLocations

VK_TRUE

布尔值

maxColorAttachments

7

最小

子组大小

4

最小

子组支持的阶段

VK_SHADER_STAGE_COMPUTE_BIT
VK_SHADER_STAGE_FRAGMENT_BIT

位域

子组支持的操作

VK_SUBGROUP_FEATURE_BASIC_BIT
VK_SUBGROUP_FEATURE_VOTE_BIT
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT
VK_SUBGROUP_FEATURE_BALLOT_BIT
VK_SUBGROUP_FEATURE_SHUFFLE_BIT
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
VK_SUBGROUP_FEATURE_QUAD_BIT

位域

shaderSignedZeroInfNanPreserveFloat16

VK_TRUE

布尔值

shaderSignedZeroInfNanPreserveFloat32

VK_TRUE

布尔值

maxSubgroupSize

4

最小

maxPerStageDescriptorUpdateAfterBindInputAttachments

7

最小

路线图 2024

声明支持 路线图 2024 配置文件的实现必须满足以下附加限制要求

限制 支持的限制 限制类型1

shaderRoundingModeRTEFloat16

VK_TRUE

布尔值

shaderRoundingModeRTEFloat32

VK_TRUE

布尔值

timestampComputeAndGraphics

VK_TRUE

布尔值

maxColorAttachments

8

最小

maxBoundDescriptorSets

7

最小