限制
限制是实现相关的最小值、最大值和其他设备特性,应用程序可能需要了解这些特性。
限制通过基本的 VkPhysicalDeviceLimits 结构以及可扩展结构 |
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
是保证支持的所有使用imageType
为VK_IMAGE_TYPE_1D
创建的图像的最大维度 (width
)。某些图像参数(格式、用途等)的组合可能允许支持更大的维度,这可以使用 vkGetPhysicalDeviceImageFormatProperties 查询。 -
maxImageDimension2D
是保证支持的所有使用imageType
为VK_IMAGE_TYPE_2D
创建的且在flags
中未设置VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
的图像的最大维度 (width
或height
)。某些图像参数(格式、用途等)的组合可能允许支持更大的维度,这可以使用 vkGetPhysicalDeviceImageFormatProperties 查询。 -
maxImageDimension3D
是保证支持的所有使用imageType
为VK_IMAGE_TYPE_3D
创建的图像的最大维度 (width
、height
或depth
)。某些图像参数(格式、用途等)的组合可能允许支持更大的维度,这可以使用 vkGetPhysicalDeviceImageFormatProperties 查询。 -
maxImageDimensionCube
是保证支持的所有使用imageType
为VK_IMAGE_TYPE_2D
创建的且在flags
中设置了VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
的图像的最大维度 (width
或height
)。某些图像参数(格式、用途等)的组合可能允许支持更大的维度,这可以使用 vkGetPhysicalDeviceImageFormatProperties 查询。 -
maxTexelBufferElements
是为使用VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
或VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
设置在 VkBufferCreateInfo 结构的usage
成员中创建的缓冲区上创建的缓冲区视图可寻址的最大纹素数。 -
maxUniformBufferRange
是可以指定在传递给 vkUpdateDescriptorSets 的类型为VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
或VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
的描述符的 VkDescriptorBufferInfo 结构的range
成员中的最大值。 -
maxStorageBufferRange
是可以指定在传递给 vkUpdateDescriptorSets 的类型为VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
或VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
的描述符的 VkDescriptorBufferInfo 结构的range
成员中的最大值。 -
maxPushConstantsSize
是推送常量内存池的最大大小(以字节为单位)。对于 VkPipelineLayoutCreateInfo 结构的pPushConstantRanges
成员指示的每个推送常量范围,(offset
+size
) 必须小于或等于此限制。 -
maxMemoryAllocationCount
是设备内存分配的最大数量,这些内存分配是通过 vkAllocateMemory 创建的,并且可以同时存在。 -
maxSamplerAllocationCount
是采样器对象(通过 vkCreateSampler 创建)的最大数量,这些采样器对象可以同时存在于设备上。 -
bufferImageGranularity
是以字节为单位的粒度,在该粒度下,缓冲或线性图像资源以及最佳图像资源可以绑定到同一VkDeviceMemory
对象中的相邻偏移量,而不会发生别名。有关更多详细信息,请参阅 缓冲图像粒度。 -
sparseAddressSpaceSize
是稀疏内存资源可用的总地址空间大小(以字节为单位)。这是所有稀疏资源大小的总和的上限,无论是否将任何内存绑定到它们。如果启用了extendedSparseAddressSpace
功能,则extendedSparseAddressSpaceSize
和sparseAddressSpaceSize
之间的差值也可以使用,通过使用VkImage
创建,该VkImage
的 VkImageCreateInfo 的usage
成员仅包含extendedSparseImageUsageFlags
中的位,并且VkBuffer
是使用 VkBufferCreateInfo 的usage
成员创建的,该成员仅包含extendedSparseBufferUsageFlags
中的位。 -
maxBoundDescriptorSets
是一个管道可以同时使用的描述符集的最大数量。着色器模块中的所有DescriptorSet
修饰符的数值必须小于maxBoundDescriptorSets
。请参阅 描述符集。 -
maxPerStageDescriptorSamplers
是一个管道布局中单个着色器阶段可以访问的采样器的最大数量。类型为VK_DESCRIPTOR_TYPE_SAMPLER
或VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
的描述符会影响此限制。只有在创建时未设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的描述符集布局中的描述符会影响此限制。当VkDescriptorSetLayoutBinding
结构的stageFlags
成员设置了该着色器阶段的位时,该描述符即可被着色器阶段访问。请参阅 采样器 和 组合图像采样器。 -
maxPerStageDescriptorUniformBuffers
是一个管道布局中单个着色器阶段可以访问的统一缓冲区最大数量。类型为VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
或VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
的描述符会影响此限制。只有在创建时未设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的描述符集布局中的描述符会影响此限制。当VkDescriptorSetLayoutBinding
结构的stageFlags
成员设置了该着色器阶段的位时,该描述符即可被着色器阶段访问。请参阅 统一缓冲区 和 动态统一缓冲区。 -
maxPerStageDescriptorStorageBuffers
是一个管道布局中单个着色器阶段可以访问的存储缓冲区的最大数量。类型为VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
或VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
的描述符会影响此限制。只有在创建时未设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的描述符集布局中的描述符会影响此限制。当VkDescriptorSetLayoutBinding
结构的stageFlags
成员设置了该着色器阶段的位时,该描述符即可被管道着色器阶段访问。请参阅 存储缓冲区 和 动态存储缓冲区。 -
maxPerStageDescriptorSampledImages
是一个管道布局中单个着色器阶段可以访问的采样图像的最大数量。类型为VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
或VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
的描述符会影响此限制。只有在创建时未设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的描述符集布局中的描述符会影响此限制。当VkDescriptorSetLayoutBinding
结构的stageFlags
成员设置了该着色器阶段的位时,该描述符即可被管道着色器阶段访问。请参阅 组合图像采样器、采样图像 和 统一纹理缓冲区。 -
maxPerStageDescriptorStorageImages
是一个管道布局中单个着色器阶段可以访问的存储图像的最大数量。类型为VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_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_SAMPLER
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
、VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
、VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
、VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
、VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
、VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
、VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符计入此限制。只有在创建描述符集布局时没有设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的情况下,这些描述符才会计入此限制。对于片段着色器阶段,帧缓冲颜色附件也会计入此限制。 -
maxDescriptorSetSamplers
是一个管线布局中可以包含的最大采样器数量。类型为VK_DESCRIPTOR_TYPE_SAMPLER
或VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
的描述符计入此限制。只有在创建描述符集布局时没有设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的情况下,这些描述符才会计入此限制。请参阅 采样器 和 组合图像采样器。 -
maxDescriptorSetUniformBuffers
是一个管线布局中可以包含的最大统一缓冲区数量。类型为VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
或VK_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_BUFFER
或VK_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_SAMPLER
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
或VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
的描述符计入此限制。只有在创建描述符集布局时没有设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的情况下,这些描述符才会计入此限制。请参阅 组合图像采样器、采样图像 和 统一纹理缓冲区。 -
maxDescriptorSetStorageImages
是一个管线布局中可以包含的最大存储图像数量。类型为VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_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
结构数组中进行描述。VkVertexInputBindingDescription
的binding
成员必须小于此限制。请参阅 顶点输入描述。 -
maxVertexInputAttributeOffset
是可以添加到顶点输入绑定步长的最大顶点输入属性偏移量。VkVertexInputAttributeDescription
结构的offset
成员必须小于或等于此限制。请参阅 顶点输入描述。 -
maxVertexInputBindingStride
是可以在顶点输入绑定中指定的最大顶点输入绑定步长。VkVertexInputBindingDescription
结构的stride
成员必须小于或等于此限制。请参阅 顶点输入描述。 -
maxVertexOutputComponents
是顶点着色器可以输出的输出变量的最大组件数量。请参阅 顶点着色器。 -
maxTessellationGenerationLevel
是固定功能细分图元生成器支持的最大细分生成级别。请参阅 细分。 -
maxTessellationPatchSize
是细分控制着色器和细分图元生成器可以处理的图块的最大大小(以顶点为单位)。在管线创建时指定的 VkPipelineTessellationStateCreateInfo 结构的patchControlPoints
成员和着色器模块的OutputVertices
执行模式中提供的值必须小于或等于此限制。请参阅 细分。 -
maxTessellationControlPerVertexInputComponents
是可以作为每个顶点的输入提供给细分控制着色器阶段的输入变量的最大组件数。 -
maxTessellationControlPerVertexOutputComponents
是可以从细分控制着色器阶段输出的每个顶点输出变量的最大组件数。 -
maxTessellationControlPerPatchOutputComponents
是可以从细分控制着色器阶段输出的每个图块输出变量的最大组件数。 -
maxTessellationControlTotalOutputComponents
是可以从细分控制着色器阶段输出的每个顶点和每个图块输出变量的最大总组件数。 -
maxTessellationEvaluationInputComponents
是可以作为每个顶点的输入提供给细分评估着色器阶段的输入变量的最大组件数。 -
maxTessellationEvaluationOutputComponents
是可以从细分评估着色器阶段输出的每个顶点输出变量的最大组件数。 -
maxGeometryShaderInvocations
是实例化几何着色器支持的最大调用计数。着色器模块的Invocations
执行模式中提供的值必须小于或等于此限制。请参阅 几何着色。 -
maxGeometryTotalOutputComponents
是所有发射的顶点中,可以从几何着色器阶段输出的输出变量的最大总组件数。 -
maxFragmentDualSrcAttachments
是启用混合并且正在使用双源混合模式之一时,片段着色器阶段可以写入的最大输出附件数。请参阅 双源混合 和dualSrcBlend
。 -
maxFragmentCombinedOutputResources
是片段着色器阶段可以使用的存储缓冲区、存储图像和输出Location
修饰的颜色附件(在 片段输出接口 中描述)的总数。 -
maxComputeSharedMemorySize
是着色器模块中声明为Workgroup
存储类(或在 GLSL 中使用shared
存储限定符)的变量在计算着色器阶段可用的最大总存储大小(以字节为单位)。 -
maxComputeWorkGroupCount
[3] 是单个调度命令可以调度的最大本地工作组数。这三个值分别表示 X、Y 和 Z 维度的最大本地工作组数。调度命令的工作组计数参数必须小于或等于相应的限制。请参阅 调度命令。 -
maxComputeWorkGroupInvocations
是单个本地工作组中计算着色器调用的最大总数。由着色器模块中的LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰符修饰的对象指定的 X、Y 和 Z 大小的乘积必须小于或等于此限制。 -
maxComputeWorkGroupSize
[3] 是每个维度的本地计算工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度的最大本地工作组大小。由着色器模块中的LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰符修饰的对象指定的x
、y
和z
大小必须小于或等于相应的限制。 -
subPixelPrecisionBits
是帧缓冲区坐标 xf 和 yf 中子像素精度的位数。请参阅 光栅化。 -
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 的幂,因此使用最少位数的有符号数字范围最终得到指定的范围。 -
minMemoryMapAlignment
是主机地址空间内主机可见内存分配的最小必需对齐(以字节为单位)。当使用 vkMapMemory 映射内存分配时,从返回的指针中减去offset
字节将始终产生此限制的整数倍。请参阅 主机对设备内存对象的访问。该值必须是 2 的幂。 -
minTexelBufferOffsetAlignment
是纹理缓冲区 VkBufferViewCreateInfo 结构的offset
成员的最小必需对齐(以字节为单位)。该值必须是 2 的幂。如果启用了texelBufferAlignment
功能,则此限制等效于uniformTexelBufferOffsetAlignmentBytes
和storageTexelBufferOffsetAlignmentBytes
成员的最大值,但storageTexelBufferOffsetSingleTexelAlignment
和uniformTexelBufferOffsetSingleTexelAlignment
可选地允许较小的对齐方式。如果未启用texelBufferAlignment
功能,则 VkBufferViewCreateInfo::offset
必须是此值的倍数。 -
minUniformBufferOffsetAlignment
是统一缓冲区VkDescriptorBufferInfo
结构的offset
成员的最小必需对齐(以字节为单位)。当更新类型为VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
或VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
的描述符时,offset
必须是此限制的整数倍。同样,统一缓冲区的动态偏移量必须是此限制的倍数。该值必须是 2 的幂。 -
minStorageBufferOffsetAlignment
是存储缓冲区VkDescriptorBufferInfo
结构的offset
成员的最小必需对齐(以字节为单位)。当更新类型为VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
或VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
的描述符时,offset
必须是此限制的整数倍。同样,存储缓冲区的动态偏移量必须是此限制的倍数。该值必须是 2 的幂。 -
minTexelOffset
是任何OpImageSample*
或OpImageFetch*
图像指令的Offset
或ConstOffset
图像操作数的最小偏移值。 -
maxTexelOffset
是任何OpImageSample*
或OpImageFetch*
图像指令的Offset
或ConstOffset
图像操作数的最大偏移值。 -
minTexelGatherOffset
是任何OpImage*Gather
图像指令的Offset
、ConstOffset
或ConstOffsets
图像操作数的最小偏移值。 -
maxTexelGatherOffset
是任何OpImage*Gather
图像指令的Offset
、ConstOffset
或ConstOffsets
图像操作数的最大偏移值。 -
minInterpolationOffset
是InterpolateAtOffset
扩展指令的Offset
操作数的最小(包括)负偏移值的基本值。 -
maxInterpolationOffset
是InterpolateAtOffset
扩展指令的Offset
操作数的最大(包括)正偏移值的基本值。 -
subPixelInterpolationOffsetBits
是InterpolateAtOffset
扩展指令的x
和y
偏移量可以四舍五入为定点值的分数位数。 -
maxFramebufferWidth
是帧缓冲区的最大宽度。 VkFramebufferCreateInfo 结构的width
成员必须小于或等于此限制。 -
maxFramebufferHeight
是帧缓冲区的最大高度。 VkFramebufferCreateInfo 结构的height
成员必须小于或等于此限制。 -
maxFramebufferLayers
是分层帧缓冲区的最大图层计数。 VkFramebufferCreateInfo 结构的layers
成员必须小于或等于此限制。 -
framebufferColorSampleCounts
是 VkSampleCountFlagBits 的位掩码1,指示所有具有浮点或定点格式的帧缓冲颜色附件支持的颜色采样计数。对于具有整数格式的颜色附件,请参阅framebufferIntegerColorSampleCounts
。 -
framebufferDepthSampleCounts
是 VkSampleCountFlagBits 的位掩码1,指示当格式包含深度分量时,所有帧缓冲深度/模板附件支持的深度采样计数。 -
framebufferStencilSampleCounts
是一个位掩码1,其中包含 VkSampleCountFlagBits,指示当格式包含模板分量时,所有帧缓冲深度/模板附件支持的模板采样计数。 -
framebufferNoAttachmentsSampleCounts
是一个位掩码1,其中包含 VkSampleCountFlagBits,指示不使用任何附件的子通道支持的采样计数。 -
maxColorAttachments
是渲染通道中子通道可以使用的最大颜色附件数量。VkSubpassDescription
或VkSubpassDescription2
结构的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 图像所支持的采样计数。 -
timestampComputeAndGraphics
指定对所有图形和计算队列的时间戳的支持。如果此限制为VK_TRUE
,则在VkQueueFamilyProperties
::queueFlags
中声明VK_QUEUE_GRAPHICS_BIT
或VK_QUEUE_COMPUTE_BIT
的所有队列都支持至少 36 的VkQueueFamilyProperties
::timestampValidBits
。 请参阅 时间戳查询。 -
timestampPeriod
是时间戳查询递增 1 所需的纳秒数。 请参阅 时间戳查询。 -
maxClipDistances
是在单个着色器阶段中可以使用的最大剪裁距离数。 在着色器模块中使用ClipDistance
内建装饰符声明的任何数组的大小 必须 小于或等于此限制。 -
maxCullDistances
是在单个着色器阶段中可以使用的最大剔除距离数。 在着色器模块中使用CullDistance
内建装饰符声明的任何数组的大小 必须 小于或等于此限制。 -
maxCombinedClipAndCullDistances
是在单个着色器阶段中可以使用的最大组合剪裁和剔除距离数。 在着色器模块中,单个着色器阶段使用的所有使用ClipDistance
和CullDistance
内建装饰符声明的数组的大小之和 必须 小于或等于此限制。 -
discreteQueuePriorities
是可以根据 VkDeviceQueueCreateInfo::pQueuePriorities
的每个成员的值分配给队列的离散优先级数。 这 必须 至少为 2,并且级别 必须 在范围内均匀分布,其中至少一个级别为 1.0,另一个级别为 0.0。 请参阅 队列优先级。 -
pointSizeRange
[2] 是点支持大小的范围 [minimum
,maximum
]。写入使用PointSize
内建装饰符修饰的变量的值被限制在此范围内。 -
lineWidthRange
[2] 是线支持宽度的范围 [minimum
,maximum
]。由 VkPipelineRasterizationStateCreateInfo 的lineWidth
成员指定或vkCmdSetLineWidth
的lineWidth
参数指定的值被限制在此范围内。 -
pointSizeGranularity
是支持的点大小的粒度。并非由pointSizeRange
定义的范围内的所有点大小都受支持。此限制指定连续支持的点大小之间的粒度(或增量)。 -
lineWidthGranularity
是支持的线宽的粒度。并非由lineWidthRange
定义的范围内的所有线宽都受支持。此限制指定连续支持的线宽之间的粒度(或增量)。 -
strictLines
指定是否根据首选光栅化方法光栅化线。 如果设置为VK_FALSE
,则线 可能 在一组宽松的规则下进行光栅化。 如果设置为VK_TRUE
,则线按照严格定义进行光栅化。 请参阅 基本线段光栅化。 -
standardSampleLocations
指定光栅化是否使用 多重采样 中记录的标准采样位置。 如果设置为VK_TRUE
,则实现使用记录的采样位置。 如果设置为VK_FALSE
,则实现 可能 使用不同的采样位置。 -
optimalBufferCopyOffsetAlignment
是 vkCmdCopyBufferToImage2、vkCmdCopyBufferToImage、vkCmdCopyImageToBuffer2 和 vkCmdCopyImageToBuffer 的最佳缓冲偏移量对齐(以字节为单位)。此值也是 vkCopyMemoryToImage 和 vkCopyImageToMemory 的最佳主机内存偏移量对齐(以字节为单位)。强制执行每个纹素的对齐要求,但应用程序 应该 使用最佳对齐以获得最佳性能和功耗。 该值 必须 为 2 的幂。 -
optimalBufferCopyRowPitchAlignment
是 vkCmdCopyBufferToImage2、vkCmdCopyBufferToImage、vkCmdCopyImageToBuffer2 和 vkCmdCopyImageToBuffer 的最佳缓冲区行间距对齐(以字节为单位)。此值也是 vkCopyMemoryToImage 和 vkCopyImageToMemory 的最佳主机内存行间距对齐(以字节为单位)。行间距是指相邻行(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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDevicePushDescriptorProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceMultiviewProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
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,并使用每个相应的实现相关的属性进行填充。
VkPhysicalDeviceFloatControlsProperties
的 denormBehaviorIndependence
和 roundingModeIndependence
字段中可能返回的值是
// 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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceDiscardRectanglePropertiesEXT
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充为每个对应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
sampleLocationSampleCounts
是一个 VkSampleCountFlagBits 的位掩码,指示支持自定义采样位置的采样计数。 -
maxSampleLocationGridSize
是像素网格的最大大小,其中采样位置可以在sampleLocationSampleCounts
中支持的所有采样计数中变化。 -
variableSampleLocations
指定子通道期间绑定到命令缓冲区的任何管线使用的采样位置必须匹配。如果设置为VK_TRUE
,则实现支持子通道中的可变采样位置。如果设置为VK_FALSE
,则采样位置必须在每个子通道中保持不变。
如果 VkPhysicalDeviceSampleLocationsPropertiesEXT
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充为每个对应的实现相关的属性。
VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT
结构体的定义如下:
// Provided by VK_EXT_legacy_vertex_attributes
typedef struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT {
VkStructureType sType;
void* pNext;
VkBool32 nativeUnalignedPerformance;
} VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT;
此结构体描述了以下特性:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT
结构体包含在传递给 vkGetPhysicalDeviceFeatures2 的 VkPhysicalDeviceFeatures2 结构体的 pNext
链中,它会被填充以指示是否支持每个相应的特性。VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT
可以 也在 VkDeviceCreateInfo 的 pNext
链中使用,以选择性地启用这些特性。
VkPhysicalDeviceExternalMemoryHostPropertiesEXT
结构体的定义如下:
// Provided by VK_EXT_external_memory_host
typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
VkStructureType sType;
void* pNext;
VkDeviceSize minImportedHostPointerAlignment;
} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
minImportedHostPointerAlignment
是导入到 Vulkan 内存对象的主机指针的基址和大小所需的最小对齐(以字节为单位)。该值必须是 2 的幂。
如果 VkPhysicalDeviceExternalMemoryHostPropertiesEXT
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充为每个对应的实现相关的属性。
VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
结构体的定义如下:
// Provided by VK_NVX_multiview_per_view_attributes
typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
VkStructureType sType;
void* pNext;
VkBool32 perViewPositionAllComponents;
} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
perViewPositionAllComponents
如果实现支持除了 X 分量之外在其他分量中不同的每个视图位置值,则为VK_TRUE
。
如果 VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充为每个对应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
pointClippingBehavior
是一个 VkPointClippingBehavior 值,指定实现支持的点裁剪行为。
如果 VkPhysicalDevicePointClippingProperties
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充为每个对应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
subgroupSize
是每个子组中调用的默认数量。如果物理设备的任何队列支持VK_QUEUE_GRAPHICS_BIT
或VK_QUEUE_COMPUTE_BIT
,则subgroupSize
至少为 1。subgroupSize
是 2 的幂。 -
supportedStages
是一个 VkShaderStageFlagBits 的位域,描述了支持带有 子组范围的 组操作 的着色器阶段。如果物理设备的任何队列支持VK_QUEUE_COMPUTE_BIT
,则supportedStages
将设置VK_SHADER_STAGE_COMPUTE_BIT
位。 -
supportedOperations
是一个 VkSubgroupFeatureFlagBits 的位掩码,指定在此设备上支持的具有 子组范围的 组操作 的集合。如果物理设备的任何队列支持VK_QUEUE_GRAPHICS_BIT
或VK_QUEUE_COMPUTE_BIT
,则supportedOperations
将设置VK_SUBGROUP_FEATURE_BASIC_BIT
位。 -
quadOperationsInAllStages
是一个布尔值,指定 四边形组操作 是否在所有阶段都可用,还是仅限于片段和计算阶段。
如果 VkPhysicalDeviceSubgroupProperties
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 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::subgroupSupportedOperations
和 VkPhysicalDeviceSubgroupProperties::supportedOperations
中返回。如果支持 VK_KHR_shader_subgroup_rotate 扩展,并且实现通过 VkExtensionProperties::specVersion
公告支持的版本大于或等于 2,并且支持 shaderSubgroupRotateClustered
特性,则 VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT
必须 在 VkPhysicalDeviceVulkan11Properties::subgroupSupportedOperations
和 VkPhysicalDeviceSubgroupProperties::supportedOperations
中返回。
如果支持 Vulkan 1.4,则 VK_SUBGROUP_FEATURE_ROTATE_BIT
和 VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT
必须 在 VkPhysicalDeviceSubgroupProperties::supportedOperations
和 VkPhysicalDeviceVulkan11Properties::subgroupSupportedOperations
中返回。
|
可以在 VkPhysicalDeviceSubgroupProperties::supportedOperations
和 VkPhysicalDeviceVulkan11Properties::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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
minSubgroupSize
是此设备支持的最小子组大小。如果任何物理设备的队列支持VK_QUEUE_GRAPHICS_BIT
或VK_QUEUE_COMPUTE_BIT
,则minSubgroupSize
至少为 1。minSubgroupSize
是 2 的幂。minSubgroupSize
小于或等于maxSubgroupSize
。minSubgroupSize
小于或等于subgroupSize
。 -
maxSubgroupSize
是此设备支持的最大子组大小。如果任何物理设备的队列支持VK_QUEUE_GRAPHICS_BIT
或VK_QUEUE_COMPUTE_BIT
,则maxSubgroupSize
至少为 1。maxSubgroupSize
是 2 的幂。maxSubgroupSize
大于或等于minSubgroupSize
。maxSubgroupSize
大于或等于subgroupSize
。
如果 VkPhysicalDeviceSubgroupSizeControlProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则将使用每个相应的实现相关属性填充它。
如果 VkPhysicalDeviceSubgroupProperties::supportedOperations
包括 VK_SUBGROUP_FEATURE_QUAD_BIT
,则 minSubgroupSize
必须 大于或等于 4。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
advancedBlendMaxColorAttachments
比子通道中可以使用的最高颜色附件索引大 1,适用于使用高级混合操作的管线。 -
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
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个相应的实现相关的属性。
VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
结构定义为
// Provided by VK_EXT_vertex_attribute_divisor
typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
VkStructureType sType;
void* pNext;
uint32_t maxVertexAttribDivisor;
} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
supportsNonZeroFirstInstance
指定当 VkVertexInputBindingDivisorDescription::divisor
不为1
时,是否支持绘制命令的firstInstance
参数的非零值。
如果 VkPhysicalDeviceVertexAttributeDivisorProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceSamplerFilterMinmaxProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个相应的实现相关的属性。
如果 filterMinmaxSingleComponentFormats
为 VK_TRUE
,则如果以下格式支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
,则它们必须支持具有 VK_IMAGE_TILING_OPTIMAL
的 VK_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
如果格式为深度/模板格式,则此位仅指定此格式的图像的深度方面(而不是模板方面)支持最小/最大过滤,并且当采样器中禁用深度比较时,支持深度方面的最小/最大过滤。
如果 filterMinmaxImageComponentMapping
为 VK_FALSE
,则用于最小/最大过滤的图像视图的分量映射必须已使用设置为恒等混淆的 r
分量创建。仅定义采样图像值的 r
分量,其他分量值未定义。如果 filterMinmaxImageComponentMapping
为 VK_TRUE
,则此限制不适用,并且图像分量映射正常工作。
VkPhysicalDeviceProtectedMemoryProperties
结构定义为
// Provided by VK_VERSION_1_1
typedef struct VkPhysicalDeviceProtectedMemoryProperties {
VkStructureType sType;
void* pNext;
VkBool32 protectedNoFault;
} VkPhysicalDeviceProtectedMemoryProperties;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
protectedNoFault
指定当应用程序尝试在受保护的队列操作中写入非受保护的内存、在非受保护的队列操作中从受保护的内存读取或在受保护的队列操作中执行查询时,实现的表现方式。如果此限制为VK_TRUE
,则此类写入将被丢弃或写入未定义的值,读取和查询将返回未定义的值。如果此限制为VK_FALSE
,则应用程序必须不执行这些操作。有关详细信息,请参阅 受保护的内存访问规则。
如果 VkPhysicalDeviceProtectedMemoryProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
maxPerSetDescriptors
是单个描述符集中(所有描述符类型之和)保证满足任何实现相关的描述符集自身大小约束的最大描述符数量。应用程序可以使用 vkGetDescriptorSetLayoutSupport 查询是否支持超出此限制的描述符集。 -
maxMemoryAllocationSize
是可以创建的最大内存分配大小,即使堆中有更多可用空间。如果 VkMemoryAllocateInfo::allocationSize
大于此值,则可能会返回错误VK_ERROR_OUT_OF_DEVICE_MEMORY
。
如果 VkPhysicalDeviceMaintenance3Properties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceMaintenance4Properties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
earlyFragmentMultisampleCoverageAfterSampleCounting
是一个布尔值,指示在具有EarlyFragmentTests
执行模式的片段着色器的样本计数之后,是否执行片段着色和多重采样覆盖操作。 -
earlyFragmentSampleMaskTestBeforeSampleCounting
是一个布尔值,指示在使用EarlyFragmentTests
执行模式的片段着色器的样本计数之前,是否执行样本掩码测试操作。 -
depthStencilSwizzleOneSupport
是一个布尔值,指示使用VK_COMPONENT_SWIZZLE_ONE
进行深度/模板纹理操作具有定义的行为。 -
polygonModePointSize
是一个布尔值,指示使用VK_POLYGON_MODE_POINT
绘制的最终多边形栅格化的点大小是否由PointSize
控制。 -
nonStrictSinglePixelWideLinesUseParallelogram
是一个布尔值,指示宽度为 1.0 的非严格线是栅格化为平行四边形还是使用 Bresenham 算法。 -
nonStrictWideLinesUseParallelogram
是一个布尔值,指示宽度大于 1.0 的非严格线是栅格化为平行四边形还是使用 Bresenham 算法。
如果 VkPhysicalDeviceMaintenance5Properties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
blockTexelViewCompatibleMultipleLayers
是一个布尔值,指示实现是否支持创建subresourceRange
的layerCount
成员大于1
的带有VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
的图像视图。 -
maxCombinedImageSamplerDescriptorCount
是实现用于访问任何需要采样器 Y′CBCR 转换的格式所支持的最大组合图像采样器描述符数量。 -
fragmentShadingRateClampCombinerInputs
是一个布尔值,指示实现是否将输入值钳制到组合器操作。
如果 VkPhysicalDeviceMaintenance6Properties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
robustFragmentShadingRateAttachmentAccess
指示片段着色率附件的缩放大小可以小于渲染区域的大小。如果robustFragmentShadingRateAttachmentAccess
为VK_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_DYNAMIC
或VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
的描述符计入此限制。只有在创建描述符集布局时未设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位时,描述符才会计入此限制。 -
maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic
与maxDescriptorSetTotalUniformBuffersDynamic
类似,但它会计算使用或不使用VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic
与maxDescriptorSetTotalStorageBuffersDynamic
类似,但它会计算使用或不使用VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxDescriptorSetUpdateAfterBindTotalBuffersDynamic
与maxDescriptorSetTotalBuffersDynamic
类似,但它会计算使用或不使用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
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的依赖于实现的属性。
VkPhysicalDeviceLayeredApiPropertiesListKHR
结构定义为
// Provided by VK_KHR_maintenance7
typedef struct VkPhysicalDeviceLayeredApiPropertiesListKHR {
VkStructureType sType;
void* pNext;
uint32_t layeredApiCount;
VkPhysicalDeviceLayeredApiPropertiesKHR* pLayeredApis;
} VkPhysicalDeviceLayeredApiPropertiesListKHR;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
layeredApiCount
是一个与 Vulkan 物理设备下的分层实现数量相关的整数,如下所述。 -
pLayeredApis
是一个指向 VkPhysicalDeviceLayeredApiPropertiesKHR 数组的指针,其中返回有关 Vulkan 物理设备下的分层实现的信息。
如果 pLayeredApis
为 NULL
,则在 layeredApiCount
中返回最顶层 Vulkan 物理设备(即由 vkGetPhysicalDeviceProperties2 返回的设备)下的分层实现的数量。否则,应用程序 **必须** 将 layeredApiCount
设置为 pLayeredApis
数组中的元素数量,并且在返回时,该变量将被实际写入 pLayeredApis
的值覆盖。如果 layeredApiCount
的值小于 Vulkan 物理设备下的分层实现的数量,则最多会将 layeredApiCount
个值写入 pLayeredApis
。不是层的实现将在 layeredApiCount
中返回 0。
在存在多个分层实现的情况下,pLayeredApis
的每个元素都对应于在先前索引处的 API 之上实现的 API 实现。如果非 Vulkan 实现下存在分层实现,则它们可能在此查询中不可见,因为相应的 API 可能缺少此类查询。
如果 VkPhysicalDeviceLayeredApiPropertiesListKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的依赖于实现的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
vendorID
是分层实现的供应商的唯一标识符。 -
deviceID
是供应商提供的设备中分层实现的唯一标识符。 -
layeredAPI
是一个 VkPhysicalDeviceLayeredApiKHR,指定由分层实现实现的 API。 -
deviceName
是一个包含以 null 结尾的 UTF-8 字符串的VK_MAX_PHYSICAL_DEVICE_NAME_SIZE
char
数组,它是设备的名称。
如果 layeredAPI
为 VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR
,则可以通过在 pNext
链中包含 VkPhysicalDeviceLayeredApiVulkanPropertiesKHR 结构来查询其他 Vulkan 特定信息。否则,如果 pNext
链中包含此类结构,则会忽略它。
作为 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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
properties
是一个 VkPhysicalDeviceProperties2,其中返回了底层分层 Vulkan 实现的属性。
实现 **必须** 将 properties.properties.limits
和 properties.properties.sparseProperties
的内容填充为零。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxDrawMeshTasksCount
是单个绘制网格任务命令可以启动的最大本地工作组数量。请参阅可编程网格着色。 -
maxTaskWorkGroupInvocations
是单个本地工作组中任务着色器调用的最大总数。在着色器模块中由LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰的对象指定的 X、Y 和 Z 大小的乘积,**必须** 小于或等于此限制。 -
maxTaskWorkGroupSize
[3] 是本地任务工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度上的最大本地工作组大小。在着色器模块中,由LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰的对象指定的x
、y
和z
大小,**必须** 小于或等于相应的限制。 -
maxTaskTotalMemorySize
是任务着色器可以用于共享内存和输出内存的总字节数的最大值。 -
maxTaskOutputCount
是单个任务着色器工作组可以发出的最大输出任务数量。 -
maxMeshWorkGroupInvocations
是单个本地工作组中网格着色器调用的最大总数。在着色器模块中由LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰的对象指定的 X、Y 和 Z 大小的乘积,**必须** 小于或等于此限制。 -
maxMeshWorkGroupSize
[3] 是本地网格工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度上的最大本地工作组大小。在着色器模块中,由LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰的对象指定的x
、y
和z
大小,**必须** 小于或等于相应的限制。 -
maxMeshTotalMemorySize
是网格着色器可以用于共享内存和输出内存的总字节数的最大值。 -
maxMeshOutputVertices
是网格着色器输出可以存储的最大顶点数。 -
maxMeshOutputPrimitives
是网格着色器输出可以存储的最大图元数。 -
maxMeshMultiviewViewCount
是网格着色器可以使用的最大多视图视图数。 -
meshOutputPerVertexGranularity
是网格顶点输出分配的粒度。该值可用于计算网格着色器使用的内存大小,该值 **必须** 小于或等于maxMeshTotalMemorySize
。 -
meshOutputPerPrimitiveGranularity
是分配为每个图元的网格输出的粒度。该值可用于计算网格着色器使用的内存大小,该值 **必须** 小于或等于maxMeshTotalMemorySize
。
如果 VkPhysicalDeviceMeshShaderPropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxTaskWorkGroupTotalCount
是单个网格任务绘制命令可以启动的最大本地工作组总数。 请参阅可编程网格着色。 -
maxTaskWorkGroupCount
[3] 是单个网格任务绘制命令可以启动的最大本地工作组数量。这三个值分别表示 X、Y 和 Z 维度的最大本地工作组数量。绘制命令的工作组计数参数 **必须** 小于或等于相应的限制。这些维度的乘积 **必须** 小于或等于maxTaskWorkGroupTotalCount
。 -
maxTaskWorkGroupInvocations
是单个本地工作组中任务着色器调用的最大总数。在着色器模块中由LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰的对象指定的 X、Y 和 Z 大小的乘积,**必须** 小于或等于此限制。 -
maxTaskWorkGroupSize
[3] 是每个维度的最大本地任务工作组大小。这三个值分别表示 X、Y 和 Z 维度上的最大本地工作组大小。在着色器模块中,由LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰的对象指定的x
、y
和z
大小,**必须** 小于或等于相应的限制。 -
maxTaskPayloadSize
是在任务着色器阶段的着色器模块中,使用TaskPayloadWorkgroupEXT
存储类声明的变量可用的最大总存储大小(以字节为单位)。 -
maxTaskSharedMemorySize
是在任务着色器阶段的着色器模块中,使用Workgroup
存储类声明的变量可用的最大总存储大小(以字节为单位)。 -
maxTaskPayloadAndSharedMemorySize
是在任务着色器阶段的着色器模块中,使用TaskPayloadWorkgroupEXT
或Workgroup
存储类声明的变量可用的最大总存储大小(以字节为单位)。 -
maxMeshWorkGroupCount
[3] 是单个任务着色器工作组每个维度可以发射的最大本地输出任务数。这三个值分别表示 X、Y 和 Z 维度的最大本地输出任务数。传递给OpEmitMeshTasksEXT
的工作组计数参数必须小于或等于相应的限制。这些维度的乘积必须小于或等于maxMeshWorkGroupTotalCount
。 -
maxMeshWorkGroupInvocations
是单个本地工作组中网格着色器调用的最大总数。由着色器模块中的LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰符修饰的对象指定的 X、Y 和 Z 大小的乘积必须小于或等于此限制。 -
maxMeshWorkGroupSize
[3] 是每个维度本地网格工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度中的最大本地工作组大小。由着色器模块中的LocalSize
或LocalSizeId
执行模式或由WorkgroupSize
修饰符修饰的对象指定的x
、y
和z
大小必须小于或等于相应的限制。 -
maxMeshSharedMemorySize
是网格着色器阶段中,着色器模块中使用Workgroup
存储类声明的变量可用的最大总存储大小,以字节为单位。 -
maxMeshPayloadAndSharedMemorySize
是网格着色器阶段中,着色器模块中使用TaskPayloadWorkgroupEXT
或Workgroup
存储类声明的变量可用的最大总存储大小,以字节为单位。 -
maxMeshOutputMemorySize
是网格着色器阶段中,着色器模块中输出变量可用的最大总存储大小,以字节为单位,根据网格着色器输出中的公式计算。 -
maxMeshPayloadAndOutputMemorySize
是网格着色器阶段中,着色器模块中使用TaskPayloadWorkgroupEXT
存储类声明的变量或输出变量可用的最大总存储大小,以字节为单位,根据网格着色器输出中的公式计算。 -
meshOutputPerVertexGranularity
是顶点分配的粒度。为网格着色器阶段分配的输出顶点数被填充为此数字的倍数。该值可用于计算网格着色器阶段中,着色器模块中输出变量所需的存储大小,该大小必须小于或等于maxMeshOutputMemorySize
。 -
meshOutputPerPrimitiveGranularity
是图元分配的粒度。为网格着色器阶段分配的输出图元数被填充为此数字的倍数。该值可用于计算网格着色器阶段中,着色器模块中输出变量所需的存储大小,该大小必须小于或等于maxMeshOutputMemorySize
。 -
maxPreferredTaskWorkGroupInvocations
是单个工作组中任务着色器调用次数的最大值,实现为了获得最佳性能而优先考虑该值。该值保证是任务着色器阶段支持的子组大小的倍数。 -
maxPreferredMeshWorkGroupInvocations
是单个工作组中网格着色器调用次数的最大值,实现为了获得最佳性能而优先考虑该值。该值保证是网格着色器阶段支持的子组大小的倍数。 -
prefersLocalInvocationVertexOutput
指定当数组索引与LocalInvocationIndex
匹配时,写入网格着色器中的顶点输出数组是否能产生最佳性能。 -
prefersLocalInvocationPrimitiveOutput
指定当数组索引与LocalInvocationIndex
匹配时,写入网格着色器中的图元输出数组是否能产生最佳性能。 -
prefersCompactVertexOutput
指定在网格着色器中进行自定义剔除后,是否应压缩输出顶点以获得最佳性能,否则,将顶点保留在其原始位置可能更好。 -
prefersCompactPrimitiveOutput
指定在网格着色器中进行自定义剔除后,是否应压缩输出图元以获得最佳性能,否则,使用CullPrimitiveEXT
可能更好。
如果 VkPhysicalDeviceMeshShaderPropertiesEXT
结构包含在 VkPhysicalDeviceProperties2 的 pNext
链中,则会使用实现相关的限制填充该结构。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
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
是一个布尔值,表示是否可以在设备上同时启用robustBufferAccess
和descriptorBindingUniformBufferUpdateAfterBind
、descriptorBindingStorageBufferUpdateAfterBind
、descriptorBindingUniformTexelBufferUpdateAfterBind
和/或descriptorBindingStorageTexelBufferUpdateAfterBind
。如果此值为VK_FALSE
,则必须禁用robustBufferAccess
,或者必须禁用所有这些绑定后更新功能。 -
quadDivergentImplicitLod
是一个布尔值,表示当用于指令的图像和/或采样器对象在四边形内不均匀时,图像操作的隐式 LOD 计算是否具有明确定义的结果。请参阅 导数图像操作。 -
maxPerStageDescriptorUpdateAfterBindSamplers
与maxPerStageDescriptorSamplers
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxPerStageDescriptorUpdateAfterBindUniformBuffers
与maxPerStageDescriptorUniformBuffers
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxPerStageDescriptorUpdateAfterBindStorageBuffers
与maxPerStageDescriptorStorageBuffers
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxPerStageDescriptorUpdateAfterBindSampledImages
与maxPerStageDescriptorSampledImages
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxPerStageDescriptorUpdateAfterBindStorageImages
与maxPerStageDescriptorStorageImages
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxPerStageDescriptorUpdateAfterBindInputAttachments
与maxPerStageDescriptorInputAttachments
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxPerStageUpdateAfterBindResources
与maxPerStageResources
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxDescriptorSetUpdateAfterBindSamplers
与maxDescriptorSetSamplers
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxDescriptorSetUpdateAfterBindUniformBuffers
与maxDescriptorSetUniformBuffers
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic
与maxDescriptorSetUniformBuffersDynamic
类似,但会计算通过设置或不设置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
创建的绑定的描述符集布局中。 -
maxDescriptorSetUpdateAfterBindStorageBuffers
与maxDescriptorSetStorageBuffers
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic
与maxDescriptorSetStorageBuffersDynamic
类似,但会计算通过设置或不设置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
创建的绑定的描述符集布局中。 -
maxDescriptorSetUpdateAfterBindSampledImages
与maxDescriptorSetSampledImages
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxDescriptorSetUpdateAfterBindStorageImages
与maxDescriptorSetStorageImages
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。 -
maxDescriptorSetUpdateAfterBindInputAttachments
与maxDescriptorSetInputAttachments
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符。
如果 VkPhysicalDeviceDescriptorIndexingProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的、依赖于实现的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
maxInlineUniformBlockSize
是 内联统一块绑定的最大大小(以字节为单位)。 -
maxPerStageDescriptorInlineUniformBlocks
是在管道布局中,单个着色器阶段可以访问的最大内联uniform块绑定数量。描述符类型为VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
的描述符绑定会计算在此限制内。只有在创建描述符集布局时,没有设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的情况下,描述符绑定才会计算在此限制内。 -
maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks
与maxPerStageDescriptorInlineUniformBlocks
类似,但它会计算通过设置或不设置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
位的情况下,描述符绑定才会计算在此限制内。 -
maxDescriptorSetUpdateAfterBindInlineUniformBlocks
与maxDescriptorSetInlineUniformBlocks
类似,但它会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符绑定。
如果 VkPhysicalDeviceInlineUniformBlockProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
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
保守光栅化模式,则primitiveUnderestimation
为VK_TRUE
。否则,实现仅支持VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
。 -
如果实现支持点和线图元的保守光栅化以及三角形图元,则
conservativePointAndLineRasterization
为VK_TRUE
。否则,实现仅支持三角形图元。 -
如果在三角形被量化为固定点光栅化像素网格后,生成的图元面积为零,则
degenerateTrianglesRasterized
为VK_FALSE
,表示实现会剔除这些图元。如果这些图元不被剔除,并且为片段使用触发顶点的属性和深度值,则degenerateTrianglesRasterized
为VK_TRUE
。图元面积的计算是在从裁剪后的三角形生成的图元上进行的 (如果适用)。零面积图元是背面,如果需要,应用程序可以启用背面剔除。 -
如果在直线被量化为固定点光栅化像素网格后,其长度变为零,则
degenerateLinesRasterized
为VK_FALSE
,表示实现会剔除这些直线。如果长度为零的直线不被剔除,并且为片段使用触发顶点的属性和深度值,则degenerateLinesRasterized
为VK_TRUE
。 -
如果实现支持 SPIR-V 内置片段着色器输入变量
FullyCoveredEXT
,指定启用了保守光栅化并且片段区域完全被生成图元覆盖,则fullyCoveredFragmentShaderInputVariable
为VK_TRUE
。 -
如果实现支持启用了
PostDepthCoverage
执行模式的保守光栅化,则conservativeRasterizationPostDepthCoverage
为VK_TRUE
。否则,当启用保守光栅化时,必须不使用PostDepthCoverage
执行模式。
如果 VkPhysicalDeviceConservativeRasterizationPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
VkPhysicalDeviceFragmentDensityMapPropertiesEXT
结构定义如下:
// Provided by VK_EXT_fragment_density_map
typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT {
VkStructureType sType;
void* pNext;
VkExtent2D minFragmentDensityTexelSize;
VkExtent2D maxFragmentDensityTexelSize;
VkBool32 fragmentDensityInvocations;
} VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
minFragmentDensityTexelSize
是最小片段密度纹素大小。
如果 VkPhysicalDeviceFragmentDensityMapPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
subsampledLoads
指定使用 load 操作在子采样附件上执行图像数据读取是否会重新采样到渲染通道的片段密度。 -
subsampledCoarseReconstructionEarlyAccess
指定在片段着色器中使用flags
包含VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT
创建的采样器执行图像数据读取是否会在VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
期间触发额外的读取。 -
maxSubsampledArrayLayers
是支持子采样器的用法中,VkImageView 数组层级的最大数量。 -
maxDescriptorSetSubsampledSamplers
是一个 VkPipelineLayout 中 可以 包含的子采样器最大数量。
如果 VkPhysicalDeviceFragmentDensityMap2PropertiesEXT
结构体被包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充上每个对应的、依赖于具体实现的属性。
VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
结构体定义如下:
// Provided by VK_QCOM_fragment_density_map_offset
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
VkStructureType sType;
void* pNext;
VkExtent2D fragmentDensityOffsetGranularity;
} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
fragmentDensityOffsetGranularity
是片段密度偏移的粒度。
如果 VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
结构体被包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充上每个对应的、依赖于具体实现的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderArraysPerEngineCount
是一个无符号整数值,表示一个着色器引擎内部的着色器阵列的数量。每个着色器阵列都有自己的扫描转换器、计算单元集合和一个渲染后端(颜色和深度附件)。一个着色器引擎内的着色器阵列共享着色器处理器输入(波浪发射器)和着色器导出(导出缓冲区)单元。目前,一个着色器引擎可以有一个或两个着色器阵列。 -
computeUnitsPerShaderArray
是一个无符号整数值,表示一个着色器阵列内的物理计算单元数量。着色器阵列中的活动计算单元数量 可能 会更少。一个计算单元包含一组 SIMD 以及一个定序器模块和一个本地数据存储。 -
simdPerComputeUnit
是一个无符号整数值,表示一个计算单元内的 SIMD 数量。每个 SIMD 一次处理一个指令。
如果 VkPhysicalDeviceShaderCorePropertiesAMD
结构体被包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充上每个对应的、依赖于具体实现的属性。
VkPhysicalDeviceShaderCoreProperties2AMD
结构体定义如下:
// Provided by VK_AMD_shader_core_properties2
typedef struct VkPhysicalDeviceShaderCoreProperties2AMD {
VkStructureType sType;
void* pNext;
VkShaderCorePropertiesFlagsAMD shaderCoreFeatures;
uint32_t activeComputeUnitCount;
} VkPhysicalDeviceShaderCoreProperties2AMD;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderCoreFeatures
是一个 VkShaderCorePropertiesFlagBitsAMD 的位掩码,指示着色器核心支持的功能集。
如果 VkPhysicalDeviceShaderCoreProperties2AMD
结构体被包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充上每个对应的、依赖于具体实现的属性。
此类型的位 可以 由未来的扩展或 VK_AMD_shader_core_properties2
扩展的新版本定义。 VkShaderCorePropertiesFlagsAMD 的 flags
成员的可能值是:
// 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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
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
,则independentResolve
为VK_TRUE
。支持independentResolve
的实现 必须 也支持independentResolveNone
。
如果 VkPhysicalDeviceDepthStencilResolveProperties
结构体被包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它会被填充上每个对应的、依赖于具体实现的属性。
VkPhysicalDevicePerformanceQueryPropertiesKHR
结构体定义如下:
// Provided by VK_KHR_performance_query
typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR {
VkStructureType sType;
void* pNext;
VkBool32 allowCommandBufferQueryCopies;
} VkPhysicalDevicePerformanceQueryPropertiesKHR;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
如果允许性能查询池与 vkCmdCopyQueryPoolResults 一起使用,则
allowCommandBufferQueryCopies
为VK_TRUE
。
如果 VkPhysicalDevicePerformanceQueryPropertiesKHR
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它将被填充为每个对应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shadingRateMaxCoarseSamples
指定单个片段中支持的最大覆盖样本数。如果从基本着色率导出的片段大小与每个像素的覆盖样本数的乘积超过此限制,则将调整最终着色率,使其乘积不超过此限制。
如果 VkPhysicalDeviceShadingRateImagePropertiesNV
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它将被填充为每个对应的实现相关的属性。
这些属性与 着色率图像 功能相关。
VkPhysicalDeviceMemoryDecompressionPropertiesNV
结构体定义如下:
// Provided by VK_NV_memory_decompression
typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesNV {
VkStructureType sType;
void* pNext;
VkMemoryDecompressionMethodFlagsNV decompressionMethods;
uint64_t maxDecompressionIndirectCount;
} VkPhysicalDeviceMemoryDecompressionPropertiesNV;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
decompressionMethods
是一个 VkMemoryDecompressionMethodFlagBitsNV 的位掩码,指定实现支持的内存解压缩方法。 -
maxDecompressionIndirectCount
指定 vkCmdDecompressMemoryIndirectCountNV 的countBuffer
中支持的最大计数。
如果 VkPhysicalDeviceMemoryDecompressionPropertiesNV
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它将被填充为每个对应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxTransformFeedbackStreams
是可以使用GeometryStreams
功能声明的几何着色器输出的最大顶点流数量。 如果实现不支持VkPhysicalDeviceTransformFeedbackFeaturesEXT
::geometryStreams
,则maxTransformFeedbackStreams
必须 为1
。 -
maxTransformFeedbackBuffers
是可以绑定以捕获来自最后一个光栅化前着色器阶段的着色器输出的最大变换反馈缓冲区数量。 -
maxTransformFeedbackBufferSize
是在 vkCmdBindTransformFeedbackBuffersEXT 中绑定用于变换反馈的缓冲区时可以指定的最大大小。 -
maxTransformFeedbackStreamDataSize
是与特定顶点流关联的一个或多个变换反馈缓冲区捕获的每个顶点的最大数据量(以字节为单位)。 -
maxTransformFeedbackBufferDataSize
是可以捕获到特定变换反馈缓冲区的每个顶点的最大数据量(以字节为单位)。 -
如果实现支持
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
查询类型,则transformFeedbackQueries
为VK_TRUE
。 如果无法创建此类型的查询,则transformFeedbackQueries
为VK_FALSE
。 -
如果实现除了输出
OutputPoints
外,还支持几何着色器OpExecutionMode
的OutputLineStrip
和OutputTriangleStrip
,则transformFeedbackStreamsLinesTriangles
为VK_TRUE
。如果transformFeedbackStreamsLinesTriangles
为VK_FALSE
,则当从几何着色器输出多个顶点流时,实现仅支持OutputPoints
的OpExecutionMode
。 -
如果实现支持
GeometryStreams
SPIR-V 功能,并且应用程序可以使用 VkPipelineRasterizationStateStreamCreateInfoEXT 来修改用于光栅化的顶点流输出,则transformFeedbackRasterizationStreamSelect
为VK_TRUE
。否则,顶点流0
必须 始终用于光栅化。 -
如果实现支持 vkCmdDrawIndirectByteCountEXT 函数,则
transformFeedbackDraw
为VK_TRUE
,否则必须不调用该函数。
如果 VkPhysicalDeviceTransformFeedbackPropertiesEXT
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它将被填充为每个对应的实现相关的属性。
VkPhysicalDeviceCopyMemoryIndirectPropertiesNV
结构体定义如下:
// Provided by VK_NV_copy_memory_indirect
typedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV {
VkStructureType sType;
void* pNext;
VkQueueFlags supportedQueues;
} VkPhysicalDeviceCopyMemoryIndirectPropertiesNV;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
supportedQueues
是一个 VkQueueFlagBits 的位掩码,指示支持间接复制命令的队列。
如果支持 indirectCopy
功能,则 supportedQueues
必须 返回至少一个支持的队列。
如果 VkPhysicalDeviceCopyMemoryIndirectPropertiesNV
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,它将被填充为每个对应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderGroupHandleSize
是着色器头的大小(以字节为单位)。 -
maxShaderGroupStride
是着色器绑定表中着色器组之间允许的最大步幅(以字节为单位)。 -
shaderGroupBaseAlignment
是着色器绑定表基址的必需对齐(以字节为单位)。 -
maxGeometryCount
是底层加速结构中几何体的最大数量。 -
maxInstanceCount
是顶层加速结构中实例的最大数量。 -
maxTriangleCount
是底层加速结构中所有几何体中三角形的最大数量。 -
maxDescriptorSetAccelerationStructures
是描述符集中允许的最大加速结构描述符数量。
由于几何体、实例和三角形计数在加速结构创建时指定为 32 位值,因此 maxGeometryCount
、maxInstanceCount
和 maxTriangleCount
必须 不超过 232-1。
如果 VkPhysicalDeviceRayTracingPropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关的属性填充它。
此结构指定的限制 必须 与 VkPhysicalDeviceAccelerationStructurePropertiesKHR 和 VkPhysicalDeviceRayTracingPipelinePropertiesKHR 中具有相同名称的限制相匹配。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxPerStageDescriptorAccelerationStructures
是在管线布局中单个着色器阶段可访问的最大加速结构绑定数量。描述符类型为VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
的描述符绑定会影响此限制。只有在没有设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位的情况下创建的描述符集布局中的描述符绑定才会影响此限制。 -
maxPerStageDescriptorUpdateAfterBindAccelerationStructures
与maxPerStageDescriptorAccelerationStructures
类似,但会计算通过设置或不设置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
位的情况下创建的描述符集布局中的描述符绑定才会影响此限制。 -
maxDescriptorSetUpdateAfterBindAccelerationStructures
与maxDescriptorSetAccelerationStructures
类似,但会计算通过设置或不设置VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
位创建的描述符集中的描述符绑定。 -
minAccelerationStructureScratchOffsetAlignment
是传递给加速结构构建命令的临时数据的最小必需对齐(以字节为单位)。该值必须是 2 的幂。
由于几何体、实例和图元计数在加速结构创建时指定为 32 位值,因此 maxGeometryCount
、maxInstanceCount
和 maxPrimitiveCount
必须 不超过 232-1。
如果 VkPhysicalDeviceAccelerationStructurePropertiesKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关的属性填充它。
此结构指定的限制 必须 与 VkPhysicalDeviceRayTracingPropertiesNV 中具有相同名称的限制相匹配。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderGroupHandleSize
是着色器头的大小(以字节为单位)。 -
maxShaderGroupStride
是着色器绑定表中着色器组之间允许的最大步幅(以字节为单位)。 -
shaderGroupBaseAlignment
是着色器绑定表基址的必需对齐(以字节为单位)。 -
shaderGroupHandleCaptureReplaySize
是着色器组句柄执行捕获和回放所需信息的字节数。 -
maxRayDispatchInvocationCount
是单个 vkCmdTraceRaysIndirectKHR 或 vkCmdTraceRaysKHR 命令可能生成的最大射线生成着色器调用次数。 -
shaderGroupHandleAlignment
是着色器绑定表中每个条目的必需对齐(以字节为单位)。该值必须是 2 的幂。 -
maxRayHitAttributeSize
是射线属性结构的最大大小(以字节为单位)
如果 VkPhysicalDeviceRayTracingPipelinePropertiesKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关的属性填充它。
此结构指定的限制 必须 与 VkPhysicalDeviceRayTracingPropertiesNV 中具有相同名称的限制相匹配。
VkPhysicalDeviceCooperativeMatrixPropertiesNV
结构定义为
// Provided by VK_NV_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV {
VkStructureType sType;
void* pNext;
VkShaderStageFlags cooperativeMatrixSupportedStages;
} VkPhysicalDeviceCooperativeMatrixPropertiesNV;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
cooperativeMatrixSupportedStages
是 VkShaderStageFlagBits 的位域,描述了支持协同矩阵指令的着色器阶段。如果物理设备的任何队列支持VK_QUEUE_COMPUTE_BIT
,则cooperativeMatrixSupportedStages
将设置VK_SHADER_STAGE_COMPUTE_BIT
位。
如果 VkPhysicalDeviceCooperativeMatrixPropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关的属性填充它。
VkPhysicalDeviceCooperativeMatrixPropertiesKHR
结构定义为
// Provided by VK_KHR_cooperative_matrix
typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR {
VkStructureType sType;
void* pNext;
VkShaderStageFlags cooperativeMatrixSupportedStages;
} VkPhysicalDeviceCooperativeMatrixPropertiesKHR;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
cooperativeMatrixSupportedStages
是 VkShaderStageFlagBits 的位域,描述了支持协同矩阵指令的着色器阶段。如果物理设备的任何队列支持VK_QUEUE_COMPUTE_BIT
,则cooperativeMatrixSupportedStages
将设置VK_SHADER_STAGE_COMPUTE_BIT
位。
cooperativeMatrixSupportedStages
必须 不能设置除 VK_SHADER_STAGE_COMPUTE_BIT
以外的任何位。
如果 VkPhysicalDeviceCooperativeMatrixPropertiesKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关的属性填充它。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
cooperativeMatrixWorkgroupScopeMaxWorkgroupSize
是当模块使用OpTypeCooperativeMatrixKHR
且Scope
等于Workgroup
时,工作组中的最大调用次数。 -
cooperativeMatrixFlexibleDimensionsMaxDimension
是当cooperativeMatrixFlexibleDimensions
特性启用时,协同矩阵类型支持的最大维度。 -
cooperativeMatrixWorkgroupScopeReservedSharedMemory
是当模块使用OpTypeCooperativeMatrixKHR
且Scope
等于Workgroup
时,实现保留的共享内存字节数。
如果 VkPhysicalDeviceCooperativeMatrix2PropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
VkPhysicalDeviceShaderSMBuiltinsPropertiesNV
结构定义如下:
// Provided by VK_NV_shader_sm_builtins
typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV {
VkStructureType sType;
void* pNext;
uint32_t shaderSMCount;
uint32_t shaderWarpsPerSM;
} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceShaderSMBuiltinsPropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
storageTexelBufferOffsetAlignmentBytes
是适用于任何格式的存储纹理缓冲区的字节对齐值。该值必须是 2 的幂。 -
storageTexelBufferOffsetSingleTexelAlignment
指示单纹素对齐是否足以用于任何格式的存储纹理缓冲区。 -
uniformTexelBufferOffsetAlignmentBytes
是适用于任何格式的 uniform 纹理缓冲区的字节对齐值。该值必须是 2 的幂。 -
uniformTexelBufferOffsetSingleTexelAlignment
指示单纹素对齐是否足以用于任何格式的 uniform 纹理缓冲区。
如果 VkPhysicalDeviceTexelBufferAlignmentProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
如果单纹素对齐属性为 VK_FALSE
,则缓冲区视图的偏移量必须与相应的字节对齐值对齐。如果单纹素对齐属性为 VK_TRUE
,则缓冲区视图的偏移量必须与相应的字节对齐值或单个纹素的大小(基于 VkBufferViewCreateInfo::format
)中较小的值对齐。如果单个纹素的大小是三个字节的倍数,则使用格式的单个分量的大小代替。
对于任何支持用作纹理缓冲区的格式,这些限制必须不声明大于 要求的 VkPhysicalDeviceLimits::minTexelBufferOffsetAlignment
的最大最小值对齐。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceTimelineSemaphoreProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
lineSubPixelPrecisionBits
是在光栅化 线段 时,帧缓冲区坐标 xf 和 yf 中的亚像素精度位数。
如果 VkPhysicalDeviceLineRasterizationProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
VkPhysicalDeviceRobustness2PropertiesEXT
结构定义如下:
// Provided by VK_EXT_robustness2
typedef struct VkPhysicalDeviceRobustness2PropertiesEXT {
VkStructureType sType;
void* pNext;
VkDeviceSize robustStorageBufferAccessSizeAlignment;
VkDeviceSize robustUniformBufferAccessSizeAlignment;
} VkPhysicalDeviceRobustness2PropertiesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
robustStorageBufferAccessSizeAlignment
是当启用robustBufferAccess2
特性时,用于边界检查的存储缓冲区描述符的范围向上舍入到的字节数。此值必须为 1 或 4。 -
robustUniformBufferAccessSizeAlignment
是当启用robustBufferAccess2
特性时,用于边界检查的 uniform 缓冲区描述符的范围向上舍入到的字节数。此值必须是 [1, 256] 范围内的 2 的幂。
如果 VkPhysicalDeviceRobustness2PropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的实现相关的属性。
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;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxGraphicsShaderGroupCount
是 VkGraphicsPipelineShaderGroupsCreateInfoNV 中的最大着色器组数。 -
maxIndirectSequenceCount
是 VkGeneratedCommandsInfoNV 和 VkGeneratedCommandsMemoryRequirementsInfoNV 中的最大序列数。 -
maxIndirectCommandsTokenCount
是 VkIndirectCommandsLayoutCreateInfoNV 中令牌的最大数量。 -
maxIndirectCommandsStreamCount
是 VkIndirectCommandsLayoutCreateInfoNV 中流的最大数量。 -
maxIndirectCommandsTokenOffset
是 VkIndirectCommandsLayoutTokenNV 中最大的偏移量。 -
maxIndirectCommandsStreamStride
是 VkIndirectCommandsLayoutCreateInfoNV 中最大的流步幅。 -
minSequencesCountBufferOffsetAlignment
是内存地址的最小对齐值,这些内存地址可以在 VkGeneratedCommandsInfoNV 中使用。 -
minSequencesIndexBufferOffsetAlignment
是内存地址的最小对齐值,这些内存地址可以在 VkGeneratedCommandsInfoNV 中使用。 -
minIndirectCommandsBufferOffsetAlignment
是 VkIndirectCommandsStreamNV 中使用的内存地址,以及作为 VkGeneratedCommandsInfoNV 中的预处理缓冲区的最小对齐值。
如果 VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个相应的实现相关的属性填充该结构。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxIndirectPipelineCount
是传递给 vkCreateIndirectExecutionSetEXT 的管道的最大数量。 -
maxIndirectShaderObjectCount
是传递给 vkCreateIndirectExecutionSetEXT 的着色器对象的最大数量。如果此值为零,则不支持间接绑定着色器对象。 -
maxIndirectSequenceCount
是 VkGeneratedCommandsInfoEXT 和 VkGeneratedCommandsMemoryRequirementsInfoEXT 中的最大序列数。 -
maxIndirectCommandsTokenCount
是 VkIndirectCommandsLayoutCreateInfoEXT 中令牌的最大数量。 -
maxIndirectCommandsTokenOffset
是 VkIndirectCommandsLayoutTokenEXT 中最大的偏移量。 -
maxIndirectCommandsIndirectStride
是 VkIndirectCommandsLayoutCreateInfoEXT 中最大的流步幅。 -
supportedIndirectCommandsShaderStages
指示可以用于生成间接命令的阶段。实现至少需要支持:VK_SHADER_STAGE_VERTEX_BIT
、VK_SHADER_STAGE_FRAGMENT_BIT
、VK_SHADER_STAGE_COMPUTE_BIT
。 -
supportedIndirectCommandsShaderStagesPipelineBinding
指示在间接执行集中,可以用于使用管道间接绑定着色器阶段的阶段。 -
supportedIndirectCommandsShaderStagesShaderBinding
指示在间接执行集中,可以用于使用着色器对象间接绑定着色器阶段的阶段。 -
deviceGeneratedCommandsTransformFeedback
指示实现是否支持与VK_EXT_transform_feedback
的交互,用于不是使用VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT
创建的管道。 -
deviceGeneratedCommandsMultiDrawIndirectCount
指示实现是否支持多绘制间接令牌的 COUNT 变体。
如果 VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个相应的实现相关的属性填充该结构。
VkPhysicalDevicePortabilitySubsetPropertiesKHR
结构定义如下
// Provided by VK_KHR_portability_subset
typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
VkStructureType sType;
void* pNext;
uint32_t minVertexInputBindingStrideAlignment;
} VkPhysicalDevicePortabilitySubsetPropertiesKHR;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
minVertexInputBindingStrideAlignment
指示顶点输入步幅的最小对齐值。VkVertexInputBindingDescription::stride
必须是此值的倍数,并且至少与其一样大。该值必须是 2 的幂。
如果 VkPhysicalDevicePortabilitySubsetPropertiesKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个相应的实现相关的属性填充该结构。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
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
时,应用程序必须不写入ViewportMaskNV
或ViewportIndex
内置变量。如果不支持shaderOutputViewportIndex
功能、VK_EXT_shader_viewport_index_layer
扩展或geometryShader
功能,或者如果不支持primitiveFragmentShadingRate
功能,则它必须为VK_FALSE
。 -
layeredShadingRateAttachments
指定是否可以创建具有多个图层的着色率附件图像视图。如果此值为VK_FALSE
,则当创建具有包含VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
的usage
的图像视图时,layerCount
必须为1
。如果不支持multiview
功能、shaderOutputViewportIndex
功能、VK_EXT_shader_viewport_index_layer
扩展或geometryShader
功能,或者如果不支持attachmentFragmentShadingRate
功能,则它必须为VK_FALSE
。 -
fragmentShadingRateNonTrivialCombinerOps
指定是否可以使用VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
或VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
以外的 VkFragmentShadingRateCombinerOpKHR 枚举。除非支持primitiveFragmentShadingRate
或attachmentFragmentShadingRate
功能,否则它必须为VK_FALSE
。 -
maxFragmentSize
指示片段支持的最大宽度和高度。其width
和height
成员必须都是 2 的幂值。此限制纯粹是信息性的,不会进行验证。 -
maxFragmentSizeAspectRatio
指示片段的最大宽高比。maxFragmentSizeAspectRatio
必须是 2 的幂值,并且 必须小于或等于maxFragmentSize
的width
和height
成员的最大值。此限制纯粹是信息性的,不会进行验证。 -
maxFragmentShadingRateCoverageSamples
指定单个片段中支持的最大覆盖样本数。maxFragmentShadingRateCoverageSamples
必须小于或等于maxFragmentSize
的width
和height
成员的乘积,以及maxFragmentShadingRateRasterizationSamples
报告的样本计数。如果支持fragmentShadingRateWithShaderSampleMask
,则maxFragmentShadingRateCoverageSamples
必须小于或等于maxSampleMaskWords
× 32。此限制纯粹是信息性的,不会进行验证。 -
maxFragmentShadingRateRasterizationSamples
是一个 VkSampleCountFlagBits 值,指定当一个片段覆盖多个像素时支持的最大采样率。此限制纯粹是信息性的,不会进行验证。 -
fragmentShadingRateWithShaderDepthStencilWrites
指定实现是否支持从多像素片段的片段着色器写入FragDepth
或FragStencilRefEXT
。如果此值为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
,则实现将改为使用加法来组合速率。如果fragmentShadingRateNonTrivialCombinerOps
为VK_FALSE
,则实现必须将其报告为VK_FALSE
。如果fragmentShadingRateNonTrivialCombinerOps
为VK_TRUE
,则实现应该将其报告为VK_TRUE
。
使用线性空间中的片段宽度/高度来相乘组合器速率等同于在 log2 空间中对这些值进行相加。一些实现无意中在线性空间中实现了加法,这是由于源自本规范之外的不明确的需求所致。这导致了 |
如果 VkPhysicalDeviceFragmentShadingRatePropertiesKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关属性进行填充。
这些属性与片段着色率有关。
VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV
结构定义为
// Provided by VK_NV_fragment_shading_rate_enums
typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
VkStructureType sType;
void* pNext;
VkSampleCountFlagBits maxFragmentShadingRateInvocationCount;
} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxFragmentShadingRateInvocationCount
是一个 VkSampleCountFlagBits 值,指示在管线、图元和附件片段着色率中,每个片段支持的最大片段着色器调用次数。
如果 VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关属性进行填充。
这些属性与片段着色率有关。
VkPhysicalDeviceCustomBorderColorPropertiesEXT
结构定义为
// Provided by VK_EXT_custom_border_color
typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT {
VkStructureType sType;
void* pNext;
uint32_t maxCustomBorderColorSamplers;
} VkPhysicalDeviceCustomBorderColorPropertiesEXT;
如果 VkPhysicalDeviceCustomBorderColorPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关属性进行填充。
VkPhysicalDeviceProvokingVertexPropertiesEXT
结构定义为
// Provided by VK_EXT_provoking_vertex
typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT {
VkStructureType sType;
void* pNext;
VkBool32 provokingVertexModePerPipeline;
VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex;
} VkPhysicalDeviceProvokingVertexPropertiesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
provokingVertexModePerPipeline
指示实现是否支持在同一渲染过程实例中具有不同触发顶点模式的图形管线。 -
transformFeedbackPreservesTriangleFanProvokingVertex
指示在将三角形扇形顶点写入变换反馈时,实现是否可以保留触发顶点顺序。
如果 VkPhysicalDeviceProvokingVertexPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关属性进行填充。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
combinedImageSamplerDescriptorSingleArray
指示实现不需要将VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
描述符的数组作为图像描述符的数组写入描述符缓冲区,紧接着是采样器描述符的数组。 -
bufferlessPushDescriptors
指示在使用推送描述符时,实现不需要绑定使用VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
创建的缓冲区。 -
allowSamplerImageViewPostSubmitCreation
指示实现不限制在相对于命令缓冲区提交时创建用于检索描述符数据的 VkSampler 或 VkImageView 对象的时间。如果此值为VK_FALSE
,则应用程序必须在 vkQueueSubmit 或 vkQueueSubmit2 调用提交该命令缓冲区之前,创建在命令缓冲区执行期间访问其描述符数据的任何 VkSampler 或 VkImageView 对象。 -
maxResourceDescriptorBufferBindings
指示可以使用具有VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
的描述符缓冲区的最大绑定数量。 -
maxSamplerDescriptorBufferBindings
指示可以使用具有VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
的描述符缓冲区的最大绑定数量。 -
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_KHR
或VK_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_EXT
和VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
创建的描述符缓冲区可用的地址空间的总大小(以字节为单位)。
类型为 VK_DESCRIPTOR_TYPE_MUTABLE_VALVE
的描述符绑定具有由 VkMutableDescriptorTypeCreateInfoVALVE::pDescriptorTypes
列表中的描述符类型隐含的描述符大小。描述符大小等于 pDescriptorTypes
列表中包含的任何描述符类型的最大大小。
由于无法分别请求健壮和非健壮描述符,或者在集合布局中指定健壮/非健壮描述符,如果启用了 robustBufferAccess
功能,则始终使用健壮描述符。
如果 VkPhysicalDeviceDescriptorBufferPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关的属性填充它。
VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
结构定义为
// Provided by VK_EXT_descriptor_buffer
typedef struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
VkStructureType sType;
void* pNext;
size_t combinedImageSamplerDensityMapDescriptorSize;
} VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
combinedImageSamplerDensityMapDescriptorSize
指示当使用设置了VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
创建描述符时,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
描述符的大小(以字节为单位)。
如果 VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT 结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个对应的实现相关的属性填充它。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
copySrcLayoutCount
是一个与可用的或查询到的从图像进行主机复制的图像布局数量相关的整数,如下所述。 -
pCopySrcLayouts
是一个指向 VkImageLayout 数组的指针,该数组返回支持的从图像进行主机复制操作的图像布局。 -
copyDstLayoutCount
是一个整数,与可用于或查询的主机复制到图像的图像布局数量有关,如下所述。 -
pCopyDstLayouts
是一个指向 VkImageLayout 数组的指针,该数组返回支持的用于主机复制到图像的图像布局。 -
optimalTilingLayoutUUID
是一个由VK_UUID_SIZE
个uint8_t
值组成的数组,表示使用VK_IMAGE_TILING_OPTIMAL
创建的图像的实现抖动布局的全局唯一标识符。 -
identicalMemoryTypeRequirements
表示在 VkImageCreateInfo::usage
中指定VK_IMAGE_USAGE_HOST_TRANSFER_BIT
标志不会影响图像的内存类型要求。
如果 VkPhysicalDeviceHostImageCopyProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个对应的实现相关的属性。
如果 pCopyDstLayouts
为 NULL
,则在 VkCopyMemoryToImageInfo::dstImageLayout
和 VkCopyImageToImageInfo::dstImageLayout
中支持的图像布局的数量将返回在 copyDstLayoutCount
中。否则,应用程序必须将 copyDstLayoutCount
设置为 pCopyDstLayouts
数组中的元素数量,并且在返回时,该变量将被实际写入 pCopyDstLayouts
的值数量覆盖。如果 copyDstLayoutCount
的值小于支持的图像布局数量,则最多将有 copyDstLayoutCount
个值写入 pCopyDstLayouts
。实现必须在 pCopyDstLayouts
中包含 VK_IMAGE_LAYOUT_GENERAL
图像布局。
如果 pCopySrcLayouts
为 NULL
,则在 VkCopyImageToMemoryInfo::srcImageLayout
和 VkCopyImageToImageInfo::srcImageLayout
中支持的图像布局的数量将返回在 copySrcLayoutCount
中。否则,应用程序必须将 copySrcLayoutCount
设置为 pCopySrcLayouts
数组中的元素数量,并且在返回时,该变量将被实际写入 pCopySrcLayouts
的值数量覆盖。如果 copySrcLayoutCount
的值小于支持的图像布局数量,则最多将有 copySrcLayoutCount
个值写入 pCopySrcLayouts
。实现必须在 pCopySrcLayouts
中包含 VK_IMAGE_LAYOUT_GENERAL
图像布局。
当在 vkCopyMemoryToImage 和 vkCopyImageToMemory 中使用 VK_HOST_IMAGE_COPY_MEMCPY
标志时,可以使用 optimalTilingLayoutUUID
值来确保兼容的数据布局。
VkPhysicalDeviceSubpassShadingPropertiesHUAWEI
结构的定义如下
// Provided by VK_HUAWEI_subpass_shading
typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI {
VkStructureType sType;
void* pNext;
uint32_t maxSubpassShadingWorkgroupSizeAspectRatio;
} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxSubpassShadingWorkgroupSizeAspectRatio
指示子通道着色器工作组大小的宽度和高度部分之间的最大比率。maxSubpassShadingWorkgroupSizeAspectRatio
必须是 2 的幂值,并且必须小于或等于 max(WorkgroupSize.x
/WorkgroupSize.y
,WorkgroupSize.y
/WorkgroupSize.x
)。
如果 VkPhysicalDeviceSubpassShadingPropertiesHUAWEI
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个对应的实现相关的属性。
VkPhysicalDeviceMultiDrawPropertiesEXT
结构的定义如下
// Provided by VK_EXT_multi_draw
typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT {
VkStructureType sType;
void* pNext;
uint32_t maxMultiDrawCount;
} VkPhysicalDeviceMultiDrawPropertiesEXT;
VkPhysicalDeviceMultiDrawPropertiesEXT
结构的成员描述了以下特性
如果 VkPhysicalDeviceMultiDrawPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个对应的实现相关的属性。
VkPhysicalDeviceNestedCommandBufferPropertiesEXT
结构的定义如下
// Provided by VK_EXT_nested_command_buffer
typedef struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT {
VkStructureType sType;
void* pNext;
uint32_t maxCommandBufferNestingLevel;
} VkPhysicalDeviceNestedCommandBufferPropertiesEXT;
VkPhysicalDeviceNestedCommandBufferPropertiesEXT
结构的成员描述了以下特性
-
maxCommandBufferNestingLevel
指示从二级命令缓冲区调用 vkCmdExecuteCommands 的最大嵌套级别。maxCommandBufferNestingLevel
为UINT32_MAX
表示嵌套级别没有限制。
如果 VkPhysicalDeviceNestedCommandBufferPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则它会填充每个对应的实现相关的属性。
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
表示在使用图形管线库时,最后一个顶点处理阶段和片段着色器中的NoPerspective
和Flat
插值装饰是否需要匹配。如果为VK_TRUE
,则插值装饰不需要匹配。如果为VK_FALSE
,则为了使给定的接口变量匹配,这些装饰必须同时存在于两个阶段或都不存在于任何阶段。
如果 VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关的属性。
VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR
结构定义如下:
// Provided by VK_KHR_fragment_shader_barycentric
typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
VkStructureType sType;
void* pNext;
VkBool32 triStripVertexOrderIndependentOfProvokingVertex;
} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
如果 VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关的属性。
VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT
结构定义如下:
// Provided by VK_EXT_shader_module_identifier
typedef struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT {
VkStructureType sType;
void* pNext;
uint8_t shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE];
} VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;
VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT
结构的成员描述如下:
-
shaderModuleIdentifierAlgorithmUUID
是一个由VK_UUID_SIZE
个uint8_t
值组成的数组,它唯一地表示了在 vkGetShaderModuleIdentifierEXT 和 vkGetShaderModuleCreateInfoIdentifierEXT 中用于计算标识符的算法。如果用于计算标识符的算法相同,则实现应该不在不同的驱动程序版本中更改此值。
如果算法保证产生相同的结果,则不同的 ICD 中的算法 UUID 可以相同。这可能发生在支持具有共享代码的不同类型硬件的驱动程序堆栈中。 Khronos 的一致性测试不能保证 |
如果 VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
-
defaultRobustnessStorageBuffers
描述了在未启用任何健壮性功能时,对存储缓冲区进行越界访问的行为 -
defaultRobustnessUniformBuffers
描述了在未启用任何健壮性功能时,对统一缓冲区进行越界访问的行为 -
defaultRobustnessVertexInputs
描述了在未启用任何健壮性功能时,对顶点输入属性进行越界访问的行为 -
defaultRobustnessImages
描述了在未启用任何健壮性功能时,对图像进行越界访问的行为
Vulkan 的某些实现可能能够保证某些类型的访问始终以健壮性执行,即使没有显式启用 Vulkan API 的健壮性功能。
即使实现报告对给定资源类型的访问默认是健壮的,在不请求相应的健壮性功能的情况下进行越界访问仍然是无效的。
如果 VkPhysicalDevicePipelineRobustnessProperties
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关的属性。
VkPhysicalDeviceExtendedDynamicState3PropertiesEXT
结构定义如下:
// Provided by VK_EXT_extended_dynamic_state3
typedef struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT {
VkStructureType sType;
void* pNext;
VkBool32 dynamicPrimitiveTopologyUnrestricted;
} VkPhysicalDeviceExtendedDynamicState3PropertiesEXT;
-
dynamicPrimitiveTopologyUnrestricted
表示实现允许vkCmdSetPrimitiveTopology
使用与活动图形管线中指定的图元拓扑类不同的图元拓扑类。
如果 VkPhysicalDeviceExtendedDynamicState3PropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个对应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
supportedOutputGridSizes
是在VkOpticalFlowSessionCreateInfoNV
::outputGridSize
中可以指定的受支持的 VkOpticalFlowGridSizeFlagsNV。 -
supportedHintGridSizes
是在VkOpticalFlowSessionCreateInfoNV
::hintGridSize
中可以指定的受支持的 VkOpticalFlowGridSizeFlagsNV。 -
maxNumRegionsOfInterest
是光流会话中可以使用的最大感兴趣区域数量。如果此maxNumRegionsOfInterest
为 0,则在光流会话中不支持感兴趣区域。
如果 VkPhysicalDeviceOpticalFlowPropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的与实现相关的属性。
VkPhysicalDeviceOpacityMicromapPropertiesEXT
结构定义如下:
// Provided by VK_EXT_opacity_micromap
typedef struct VkPhysicalDeviceOpacityMicromapPropertiesEXT {
VkStructureType sType;
void* pNext;
uint32_t maxOpacity2StateSubdivisionLevel;
uint32_t maxOpacity4StateSubdivisionLevel;
} VkPhysicalDeviceOpacityMicromapPropertiesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
当
format
为VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT
时,maxOpacity2StateSubdivisionLevel
是允许的最大subdivisionLevel
。 -
当
format
为VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT
时,maxOpacity4StateSubdivisionLevel
是允许的最大subdivisionLevel
。
如果 VkPhysicalDeviceOpacityMicromapPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的与实现相关的属性。
VkPhysicalDeviceDisplacementMicromapPropertiesNV
结构定义如下:
// Provided by VK_NV_displacement_micromap
typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV {
VkStructureType sType;
void* pNext;
uint32_t maxDisplacementMicromapSubdivisionLevel;
} VkPhysicalDeviceDisplacementMicromapPropertiesNV;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxDisplacementMicromapSubdivisionLevel
是位移微型映射允许的最大subdivisionLevel
。
如果 VkPhysicalDeviceDisplacementMicromapPropertiesNV
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的与实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderCoreMask
是一个位域,其中设置的每个位表示存在一个着色器核心,其 ID 是位的位置。设备上任何着色器核心的最高 ID 是设置的最高有效位的位置。
如果 VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的与实现相关的属性。
VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV
的 rayTracingInvocationReorderReorderingHint
字段中可能返回的值为:
// 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
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的与实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxWorkGroupCount
[3] 是单个命令可以启动的最大本地工作组数。这三个值分别表示 X、Y 和 Z 维度中的最大本地工作组计数。在当前实现中,Y 和 Z 的值都隐式设置为 1。DrawCluster 命令的 groupCountX 必须 小于或等于 maxWorkGroupCount[0]。 -
maxWorkGroupSize
[3] 是本地工作组的最大大小。这三个值分别表示 X、Y 和 Z 维度中的最大本地工作组大小。着色器模块中由LocalSize
或LocalSizeId
执行模式或由 WorkgroupSize 修饰的对象指定的 x、y 和 z 大小,必须 小于或等于相应的限制。在当前实现中,X 维度的最大工作组大小为 32,其他维度为 1。 -
maxOutputClusterCount
是单个集群剔除着色器工作组可以发出的最大输出集群数。 -
indirectBufferOffsetAlignment
指示集群绘制命令缓冲区步幅的对齐方式。vkCmdDrawClusterIndirectHUAWEI::offset
必须 是此值的倍数。
如果 VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的与实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
pixelRate
是一个无符号整数值,指示每个时钟周期每个着色器核心输出的最大像素数。 -
texelRate
是一个无符号整数值,指示每个时钟周期每个着色器核心的最大纹素数。 -
fmaRate
是一个无符号整数值,指示每个时钟周期每个着色器核心的最大单精度融合乘加运算次数。
如果无法在物理设备上确定吞吐率,则将为该速率返回值 0
。
如果 VkPhysicalDeviceShaderCorePropertiesARM
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会填充每个相应的与实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
shaderBinaryUUID
是一个由VK_UUID_SIZE
个uint8_t
值组成的数组,代表一个或多个实现的通用唯一标识符,这些实现的着色器二进制文件保证彼此兼容。 -
shaderBinaryVersion
是一个无符号整数,递增表示具有相同shaderBinaryUUID
的实现之间的向后兼容性差异。
此结构体值的用途和用法在 二进制着色器兼容性 中有更详细的描述。
如果 VkPhysicalDeviceShaderObjectPropertiesEXT
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,则会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxExecutionGraphDepth
定义了图中的最大节点链深度。被调度的节点深度为 1,由其入队的节点深度为 2,依此类推。如果节点自身入队,则每次递归入队也会将深度增加 1。 -
maxExecutionGraphShaderOutputNodes
指定了单个着色器可以调度的唯一节点的最大数量,并且必须至少为 256。 -
maxExecutionGraphShaderPayloadSize
指定了着色器中有效负载声明的最大总大小。对于任何共享资源的有效负载声明(通过NodeSharesPayloadLimitsWithAMDX
修饰符指示),将采用每组共享有效负载声明的最大大小。每个共享组的最大大小和每个未共享有效负载的大小之和将计入此限制。 -
maxExecutionGraphShaderPayloadCount
指定了在单个工作组中可以初始化的最大输出有效负载数量。 -
executionGraphDispatchAddressAlignment
指定了图调度命令消耗的非临时VkDeviceAddress
参数的对齐方式。 -
maxExecutionGraphWorkgroupCount
[3] 分别是在 X、Y 和 Z 维度中,着色器可以调度的最大本地工作组数量。
如果 VkPhysicalDeviceShaderEnqueuePropertiesAMDX
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,则会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
extendedSparseAddressSpaceSize
是在启用extendedSparseAddressSpace
功能时,所有用途的稀疏内存资源可用的地址空间总大小(以字节为单位)。这必须大于或等于VkPhysicalDeviceLimits
::sparseAddressSpaceSize
,并且空间差异必须仅用于下面允许的用途。这是所有稀疏资源大小之和的上限,无论是否将任何内存绑定到它们。 -
extendedSparseImageUsageFlags
是 VkImageUsageFlagBits 的位掩码,这些用途可能允许实现使用完整的extendedSparseAddressSpaceSize
空间。 -
extendedSparseBufferUsageFlags
是 VkBufferUsageFlagBits 的位掩码,这些用途可能允许实现使用完整的extendedSparseAddressSpaceSize
空间。
如果 VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,则会填充每个相应的实现相关的属性。
VkPhysicalDeviceCudaKernelLaunchPropertiesNV
结构体的定义如下:
// Provided by VK_NV_cuda_kernel_launch
typedef struct VkPhysicalDeviceCudaKernelLaunchPropertiesNV {
VkStructureType sType;
void* pNext;
uint32_t computeCapabilityMinor;
uint32_t computeCapabilityMajor;
} VkPhysicalDeviceCudaKernelLaunchPropertiesNV;
VkPhysicalDeviceCudaKernelLaunchPropertiesNV
结构体的成员描述了以下功能:
如果 VkPhysicalDeviceCudaKernelLaunchPropertiesNV
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,则会填充每个相应的实现相关的属性。
VkPhysicalDeviceExternalFormatResolvePropertiesANDROID
结构体的定义如下:
// Provided by VK_ANDROID_external_format_resolve
typedef struct VkPhysicalDeviceExternalFormatResolvePropertiesANDROID {
VkStructureType sType;
void* pNext;
VkBool32 nullColorAttachmentWithExternalFormatResolve;
VkChromaLocation externalFormatResolveChromaOffsetX;
VkChromaLocation externalFormatResolveChromaOffsetY;
} VkPhysicalDeviceExternalFormatResolvePropertiesANDROID;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
如果为
VK_TRUE
,则nullColorAttachmentWithExternalFormatResolve
表示在执行外部格式解析时必须没有颜色附件图像。 -
externalFormatResolveChromaOffsetX
表示实现用于访问作为解析附件的外部格式图像的 X 轴的 VkChromaLocation。当nullColorAttachmentWithExternalFormatResolve
为VK_TRUE
时,这必须在外部格式解析和从外部格式解析附件到颜色附件的加载操作之间保持一致。 -
externalFormatResolveChromaOffsetY
表示实现用于访问作为解析附件的外部格式图像的 Y 轴的 VkChromaLocation。当nullColorAttachmentWithExternalFormatResolve
为VK_TRUE
时,这必须在外部格式解析和从外部格式解析附件到颜色附件的加载操作之间保持一致。
如果 VkPhysicalDeviceExternalFormatResolvePropertiesANDROID
结构体包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构体的 pNext
链中,则会填充每个相应的实现相关的属性。
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 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
pipelineBinaryInternalCache
指定实现是否维护内部的管线缓存。如果此值为VK_TRUE
,应用程序可以仅使用管线创建信息创建管线二进制文件,在这种情况下,实现可能能够直接创建管线二进制文件,而无需应用程序捕获二进制文件本身。 -
pipelineBinaryInternalCacheControl
指定是否可以禁用驱动程序的内部缓存。如果此属性为VK_TRUE
,则可以使用 VkDevicePipelineBinaryInternalCacheControlKHR::disableInternalCache
禁用驱动程序的内部缓存,从而允许应用程序完全控制内存和磁盘使用情况。 -
pipelineBinaryPrefersInternalCache
指定实现倾向于维护内部缓存,并且应用程序应该不要将管线二进制文件存储在自己的磁盘缓存中,以避免增加磁盘存储需求。鼓励应用程序仅存储管线密钥,并在后续运行应用程序时尝试仅从密钥创建管线二进制文件。 -
pipelineBinaryPrecompiledInternalCache
指定实现可能在其内部缓存中具有管线二进制文件,这些文件是在没有应用程序生成该管线本身的情况下填充的。应用程序可以尝试创建二进制文件,而无需事先从管线中提取管线二进制数据,包括来自应用程序先前运行的数据。
这些属性往往是平台特定的,并且可能会根据本规范范围之外的外部配置而变化。这些属性旨在指导应用程序,当实现具有可用的专用缓存解决方案时。特别是,如果公开了 |
如果 VkPhysicalDevicePipelineBinaryPropertiesKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个相应的实现相关属性填充该结构。
VkPhysicalDeviceRenderPassStripedPropertiesARM
结构定义如下:
// Provided by VK_ARM_render_pass_striped
typedef struct VkPhysicalDeviceRenderPassStripedPropertiesARM {
VkStructureType sType;
void* pNext;
VkExtent2D renderPassStripeGranularity;
uint32_t maxRenderPassStripes;
} VkPhysicalDeviceRenderPassStripedPropertiesARM;
VkPhysicalDeviceRenderPassStripedPropertiesARM
结构的成员描述以下限制:
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。
如果 VkPhysicalDeviceRenderPassStripedPropertiesARM
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个相应的实现相关属性填充该结构。
VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR
结构定义如下:
// Provided by VK_KHR_compute_shader_derivatives
typedef struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR {
VkStructureType sType;
void* pNext;
VkBool32 meshAndTaskShaderDerivatives;
} VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR;
VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR
结构的成员描述以下内容:
如果 VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个相应的实现相关属性填充该结构。
VkPhysicalDeviceMapMemoryPlacedPropertiesEXT
结构定义如下:
// Provided by VK_EXT_map_memory_placed
typedef struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT {
VkStructureType sType;
void* pNext;
VkDeviceSize minPlacedMemoryMapAlignment;
} VkPhysicalDeviceMapMemoryPlacedPropertiesEXT;
VkPhysicalDeviceMapMemoryPlacedPropertiesEXT
结构的成员描述以下内容:
如果 VkPhysicalDeviceMapMemoryPlacedPropertiesEXT
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个相应的实现相关属性填充该结构。
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
结构包含在传递给 vkGetPhysicalDeviceProperties2 的 VkPhysicalDeviceProperties2 结构的 pNext
链中,则会使用每个相应的实现相关属性填充该结构。
限制要求
下表指定了所有 Vulkan 图形实现必须满足的最小/最大值。当限制对应于一个可选的细粒度设备特性时,该特性名称会列出两个必须满足的限制,一个是在支持该特性时,另一个是在不支持该特性时。如果实现支持某个特性,则报告的限制值是相同的,无论该特性是否启用。
类型 | 限制 | 特性 |
---|---|---|
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
|
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
- |
|
|
|
|
|
- |
|
|
- |
3 × |
|
- |
|
|
- |
3 × |
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
|
2 × |
|
- |
2 × |
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
- |
|
|
- |
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
|
- |
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
|
|
|
|
- |
|
|
- |
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
- |
2 × |
|
|
2 × |
|
|
|
|
|
|
|
|
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vulkan 1.4, VK_KHR_vertex_attribute_divisor, VK_EXT_vertex_attribute_divisor |
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
3 × |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
3 × |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesNV:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
3 × |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
3 × |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
3 × |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
3 × |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vulkan 1.4, VK_KHR_line_rasterization, VK_EXT_line_rasterization |
|
|
|
|
|
|
|
|
|
2 × |
|
|
2 × |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 × |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
2 × |
|
|
2 × |
|
|
2 × |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 × |
|
|
3 × |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 × |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
限制 | 不支持的限制 | 支持的限制 | 限制类型1 |
---|---|---|---|
|
- |
4096 |
最小 |
|
- |
4096 |
最小 |
|
- |
256 |
最小 |
|
- |
4096 |
最小 |
|
- |
256 |
最小 |
|
- |
65536 |
最小 |
|
- |
16384 |
最小 |
|
- |
227 |
最小 |
|
- |
128 |
最小 |
|
- |
4096 |
最小 |
|
- |
4000 |
最小 |
|
- |
131072 |
最大 |
|
0 |
231 |
最小 |
|
- |
4 |
最小 |
|
- |
16 |
最小 |
|
- |
12 |
最小 |
|
- |
4 |
最小 |
|
- |
16 |
最小 |
|
- |
4 |
最小 |
|
- |
4 |
最小 |
|
- |
128 2 |
最小 |
|
- |
96 8 |
最小值, n × PerStage |
|
- |
72 8 |
最小值, n × PerStage |
|
- |
8 |
最小 |
|
- |
24 8 |
最小值, n × PerStage |
|
- |
4 |
最小 |
|
- |
|
最小 |
|
- |
|
最小 |
|
- |
|
最小 |
|
- |
96 8 |
最小值, n × PerStage |
|
- |
24 8 |
最小值, n × PerStage |
|
- |
4 |
最小 |
|
- |
16 |
最小 |
|
- |
16 10 |
最小 |
|
- |
2047 |
最小 |
|
- |
2048 |
最小 |
|
- |
64 |
最小 |
|
0 |
64 |
最小 |
|
0 |
32 |
最小 |
|
0 |
64 |
最小 |
|
0 |
64 |
最小 |
|
0 |
120 |
最小 |
|
0 |
2048 |
最小 |
|
0 |
64 |
最小 |
|
0 |
64 |
最小 |
|
0 |
32 |
最小 |
|
0 |
64 |
最小 |
|
0 |
64 |
最小 |
|
0 |
256 |
最小 |
|
0 |
1024 |
最小 |
|
- |
64 |
最小 |
|
- |
4 |
最小 |
|
0 |
1 |
最小 |
|
- |
4 |
最小 |
|
- |
16384 |
最小 |
|
- |
(65535,65535,65535) |
最小 |
|
- |
128 |
最小 |
|
- |
(128,128,64) |
最小 |
|
- |
4 (2022 年路线图) |
最小 |
|
- |
|
位域 |
|
- |
|
位域 |
|
- |
|
布尔值 |
|
- |
|
布尔值 |
|
- |
|
布尔值 |
|
- |
|
布尔值 |
|
- |
4 (2022 年路线图) |
最小 |
|
- |
4 |
最小 |
|
- |
4 |
最小 |
|
- |
4 |
最小 |
|
224-1 |
232-1 |
最小 |
|
1 |
216-1 |
最小 |
|
- |
2 |
最小 |
|
1 |
16 |
最小 |
|
1 |
16 |
最小 |
|
- |
(4096,4096) 3 |
最小 |
|
- |
(-8192,8191) 4 |
(最大值,最小值) |
|
- |
0 |
最小 |
|
- |
64 |
最小 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
-8 |
最大 |
|
- |
7 |
最小 |
|
0 |
-8 |
最大 |
|
0 |
7 |
最小 |
|
0.0 |
-0.5 5 |
最大 |
|
0.0 |
0.5 - (1 ULP) 5 |
最小 |
|
0 |
4 5 |
最小 |
|
- |
4096 |
最小 |
|
- |
4096 |
最小 |
|
- |
256 |
最小 |
|
- |
( |
最小 |
|
- |
( |
最小 |
|
- |
( |
最小 |
|
- |
( |
最小 |
|
- |
( |
最小 |
|
- |
4 |
最小 |
|
- |
( |
最小 |
|
- |
|
最小 |
|
- |
( |
最小 |
|
- |
( |
最小 |
|
|
( |
最小 |
|
- |
1 |
最小 |
|
- |
- |
布尔值 |
|
- |
- |
持续时间 |
|
0 |
8 |
最小 |
|
0 |
8 |
最小 |
|
0 |
8 |
最小 |
|
- |
2 |
最小 |
|
(1.0,1.0) |
(1.0, 64.0 - ULP) 6 |
(最大值,最小值) |
|
(1.0,1.0) |
(1.0, 8.0 - ULP) 7 |
(最大值,最小值) |
|
0.0 |
1.0 6 |
最大值,定点增量 |
|
0.0 |
1.0 7 |
最大值,定点增量 |
|
- |
- |
依赖于实现 |
|
- |
- |
布尔值 |
|
- |
- |
建议 |
|
- |
- |
建议 |
|
- |
256 |
最大 |
|
- |
32 |
最小 |
|
- |
6 |
最小 |
|
- |
227-1 |
最小 |
|
0 |
4 |
最小 |
|
- |
|
最小 |
|
- |
(1,1) |
最小 |
|
- |
(0.0, 0.9375) |
(最大值,最小值) |
|
- |
4 |
最小 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
65536 |
最大 |
|
- |
- |
依赖于实现 |
|
- |
- |
依赖于实现 |
|
- |
- |
依赖于实现 |
|
- |
1 |
最小 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
1024 |
最小 |
|
- |
230 |
最小 |
|
- |
230 |
最小 |
|
- |
0.0 |
最小 |
|
- |
0.0 |
最小 |
|
- |
0.0 |
最小 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
0 |
500000 |
最小 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
12 9 |
最小 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
4 9 |
最小 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
72 8 9 |
最小值, n × PerStage |
|
0 9 |
8 9 |
最小 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
4 9 |
最小 |
|
0 9 |
|
最小 |
|
0 9 |
|
最小 |
|
0 9 |
|
最小 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
500000 9 |
最小 |
|
0 9 |
4 9 |
最小 |
|
- |
256 |
最小 |
|
- |
4 |
最小 |
|
- |
4 |
最小 |
|
- |
4 |
最小 |
|
- |
4 |
最小 |
|
- |
256 |
最小 |
|
- |
216-1 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
216-1 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
32 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
(32,1,1) |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
16384 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
216-1 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
32 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
(32,1,1) |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
16384 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
256 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
256 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
1 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
- |
依赖于实现 |
VkPhysicalDeviceMeshShaderPropertiesNV:: |
- |
- |
依赖于实现 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
2^22 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
(65535,65535,65535) |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
128 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
(128,128,128) |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
16384 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
32768 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
32768 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
2^22 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
(65535,65535,65535) |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
128 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
(128,128,128) |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
28672 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
28672 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
32768 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
48128 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
128 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
256 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
256 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
8 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
1 |
最小 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
0 |
32 |
最大 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
0 |
32 |
最大 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
- |
依赖于实现 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
- |
依赖于实现 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
- |
依赖于实现 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
- |
依赖于实现 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
- |
依赖于实现 |
VkPhysicalDeviceMeshShaderPropertiesEXT:: |
- |
- |
依赖于实现 |
|
- |
1 |
最小 |
|
- |
1 |
最小 |
|
- |
227 |
最小 |
|
- |
512 |
最小 |
|
- |
512 |
最小 |
|
- |
512 |
最小 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
(1,1) |
最小 |
|
- |
(1,1) |
最小 |
|
- |
- |
依赖于实现 |
|
|
|
依赖于实现 |
|
|
|
依赖于实现 |
|
2 |
2 |
最小 |
|
1 |
1 |
最小 |
|
- |
(1024,1024) |
最大 |
VkPhysicalDeviceRayTracingPropertiesNV:: |
- |
16 |
最小 |
VkPhysicalDeviceRayTracingPropertiesNV:: |
- |
31 |
最小 |
VkPhysicalDeviceRayTracingPipelinePropertiesKHR:: |
- |
32 |
精确 |
VkPhysicalDeviceRayTracingPipelinePropertiesKHR:: |
- |
1 |
最小 |
|
- |
4096 |
最小 |
|
- |
64 |
最大 |
|
- |
224-1 |
最小 |
|
- |
224-1 |
最小 |
|
- |
229-1 |
最小 |
|
- |
229-1 |
最小 |
|
- |
16 |
最小 |
|
- |
500000 9 |
最小 |
|
- |
16 |
最小 |
|
- |
500000 9 |
最小 |
|
- |
256 |
最大 |
|
- |
64 |
最大 |
|
- |
230 |
最小 |
|
- |
32 |
最大 |
|
- |
32 |
最小 |
|
- |
231-1 |
最小 |
|
- |
4 |
最小 |
|
- |
212 |
最小 |
|
- |
212 |
最小 |
|
- |
2048 |
最小 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
220 |
最小 |
|
- |
16 |
最小 |
|
- |
2047 |
最小 |
|
- |
212 |
最小 |
|
- |
false |
依赖于实现 |
|
- |
false |
依赖于实现 |
|
0 |
212 |
依赖于实现 |
|
- |
2048 |
最小 |
|
- |
|
最小 |
|
- |
( |
最小 |
|
- |
0 |
最小 |
|
- |
0 |
最小 |
|
- |
32 |
最小 |
|
- |
4 |
最大 |
|
- |
256 |
最大 |
|
(0,0) |
(32,32) |
最大 |
|
(0,0) |
(8,8) |
最小 |
|
0 |
1 |
最小 |
|
|
|
依赖于实现 |
|
|
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
(2,2) |
最小 |
|
- |
2 |
最小 |
|
- |
16 |
最小 |
|
- |
|
最小 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
最小 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
256 |
最大 |
|
- |
3 |
最小 |
|
- |
1 |
最小 |
|
- |
1 |
最小 |
|
- |
1 |
最小 |
|
- |
2032 |
最小 |
|
- |
64 |
最大 |
|
- |
64 |
最大 |
|
- |
64 |
最大 |
|
- |
64 |
最大 |
|
- |
64 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
256 |
最大 |
|
- |
211 × |
最小 |
|
- |
(220 - 215) × |
最小 |
|
- |
227 |
最小 |
|
- |
227 |
最小 |
|
- |
227 |
最小 |
|
- |
256 |
最大 |
|
0 |
1 |
最小 |
|
- |
1024 |
最小 |
|
- |
1 |
最小 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
|
依赖于实现 |
|
- |
1024 |
最小 |
|
- |
(64,64) |
最小 |
|
- |
(64,64) |
最小 |
|
- |
(64,64) |
最小 |
|
- |
- |
依赖于实现 |
|
- |
3 |
最小 |
|
- |
3 |
最小 |
|
1 |
216-1 |
最小 |
|
- |
(65536,1,1) |
最小 |
|
- |
(32,1,1) |
最小 |
|
- |
1024 |
最小 |
|
- |
- |
依赖于实现 |
|
- |
32 |
最小 |
|
- |
256 |
最小 |
|
- |
32768 |
最小 |
|
- |
256 |
最小 |
|
- |
4 |
最大 |
|
- |
1024 |
最小 |
|
- |
(65535,65535,65535) |
最小 |
|
- |
224-1 |
最小 |
|
0 |
|
最小 |
|
- |
(64,64) |
最大 |
|
- |
32 |
最小 |
|
- |
65536 |
最大 |
|
- |
1 |
最小 |
|
|
- |
依赖于实现 |
|
- |
子组大小 × 2 |
最小 |
|
- |
256 |
最小 |
|
- |
|
最大 |
- 1
-
限制类型 列指定限制是所有实现必须支持的最小限制,所有实现必须支持的最大限制,还是所有实现必须支持的精确值。对于位掩码,最小限制是所有实现必须设置的最小位数,但它们可能会设置超出此最小值的额外位。
- 2
-
maxPerStageResources
必须至少是以下各项中的最小值-
maxPerStageDescriptorUniformBuffers
、maxPerStageDescriptorStorageBuffers
、maxPerStageDescriptorSampledImages
、maxPerStageDescriptorStorageImages
、maxPerStageDescriptorInputAttachments
、maxColorAttachments
限制的总和,或者 -
128.
在每个阶段中,可能无法达到此限制。
-
- 3
-
请参阅
maxViewportDimensions
,了解与其他限制的必要关系。 - 4
-
请参阅
viewportBoundsRange
,了解与其他限制的必要关系。 - 5
-
值
minInterpolationOffset
和maxInterpolationOffset
描述了支持的插值偏移量的闭区间:[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 倍,其中 n 是 VkPhysicalDevice 支持的着色器阶段数。如果支持所有着色器阶段,则 n = 6 (顶点、细分控制、细分评估、几何、片段、计算)。 - 9
-
UpdateAfterBind
描述符限制必须各自大于或等于对应的non
-UpdateAfterBind 限制。 - 10
-
如果启用了
VK_KHR_portability_subset
扩展,则maxVertexInputBindings
的所需最小值是8
。 - 12
-
maxResourceDescriptorSize
定义为storageImageDescriptorSize
、sampledImageDescriptorSize
、robustUniformTexelBufferDescriptorSize
、robustStorageTexelBufferDescriptorSize
、robustUniformBufferDescriptorSize
、robustStorageBufferDescriptorSize
、inputAttachmentDescriptorSize
和accelerationStructureDescriptorSize
的最大值。
其他多重采样功能
要查询特定采样计数可能支持的其他多重采样功能(超出上面 限制 中描述的最小功能),请调用
// Provided by VK_EXT_sample_locations
void vkGetPhysicalDeviceMultisamplePropertiesEXT(
VkPhysicalDevice physicalDevice,
VkSampleCountFlagBits samples,
VkMultisamplePropertiesEXT* pMultisampleProperties);
-
physicalDevice
是从中查询其他多重采样功能的物理设备。 -
samples
是一个 VkSampleCountFlagBits 值,指定要查询功能的采样计数。 -
pMultisampleProperties
是一个指向 VkMultisamplePropertiesEXT 结构的指针,该结构返回有关特定于采样计数的其他多重采样功能的信息。
VkMultisamplePropertiesEXT
结构定义如下
// Provided by VK_EXT_sample_locations
typedef struct VkMultisamplePropertiesEXT {
VkStructureType sType;
void* pNext;
VkExtent2D maxSampleLocationGridSize;
} VkMultisamplePropertiesEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
maxSampleLocationGridSize
是像素网格的最大大小,其中样本位置可以变化。
如果使用 vkGetPhysicalDeviceMultisamplePropertiesEXT
请求附加多重采样功能的采样计数在 sampleLocationSampleCounts
中设置,则 VkMultisamplePropertiesEXT
::maxSampleLocationGridSize
的 width
和 height
成员必须大于或等于 maxSampleLocationGridSize
的相应成员,否则两个成员必须为 0
。
配置文件限制
路线图 2022
声明支持 路线图 2022 配置文件的实现必须满足以下附加限制要求
限制 | 支持的限制 | 限制类型1 |
---|---|---|
|
8192 |
最小 |
|
8192 |
最小 |
|
8192 |
最小 |
|
2048 |
最小 |
|
65536 |
最小 |
|
4096 |
最大 |
|
64 |
最小 |
|
15 |
最小 |
|
30 |
最小 |
|
200 |
最小 |
|
16 |
最小 |
|
200 |
最小 |
|
576 |
最小 |
|
90 |
最小 |
|
96 |
最小 |
|
1800 |
最小 |
|
144 |
最小 |
|
16 |
最小 |
|
256 |
最小 |
|
(256,256,64) |
最小 |
|
8 |
最小 |
|
6 |
最小 |
|
14 |
最小 |
|
0.125 |
最大 |
|
0.5 |
最大 |
|
|
布尔值 |
|
7 |
最小 |
|
4 |
最小 |
|
|
位域 |
|
|
位域 |
|
|
布尔值 |
|
|
布尔值 |
|
4 |
最小 |
|
7 |
最小 |
路线图 2024
声明支持 路线图 2024 配置文件的实现必须满足以下附加限制要求
限制 | 支持的限制 | 限制类型1 |
---|---|---|
|
|
布尔值 |
|
|
布尔值 |
|
|
布尔值 |
|
8 |
最小 |
|
7 |
最小 |