绘制命令

绘制命令(名称中带有 Draw 的命令)在图形管线中触发工作。绘制命令记录到命令缓冲区中,并且当由队列执行时,将产生按照绑定的图形管线执行的工作,或者如果启用了 shaderObject 特性,则产生绑定到图形阶段的任何着色器对象。在将任何绘制命令记录到该命令缓冲区之前,必须将图形管线或一个或多个图形着色器对象的组合绑定到命令缓冲区。

可以通过两种模式实现绘制

每个绘制都由零个或多个顶点和零个或多个实例组成,这些顶点和实例由设备处理并导致图元的组装。图元根据VkGraphicsPipelineCreateInfo结构的pInputAssemblyState成员组装,该成员的类型为VkPipelineInputAssemblyStateCreateInfo

// Provided by VK_VERSION_1_0
typedef struct VkPipelineInputAssemblyStateCreateInfo {
    VkStructureType                            sType;
    const void*                                pNext;
    VkPipelineInputAssemblyStateCreateFlags    flags;
    VkPrimitiveTopology                        topology;
    VkBool32                                   primitiveRestartEnable;
} VkPipelineInputAssemblyStateCreateInfo;
  • sType是一个VkStructureType值,用于标识此结构。

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

  • flags保留供将来使用。

  • topology是一个VkPrimitiveTopology,定义图元拓扑,如下所述。

  • primitiveRestartEnable控制是否将特殊的顶点索引值视为重新开始图元的组装。此启用仅适用于索引绘制(vkCmdDrawIndexedvkCmdDrawMultiIndexedEXTvkCmdDrawIndexedIndirect),并且当 Vulkan 1.4 或 vkCmdBindIndexBuffer2vkCmdBindIndexBufferindexType 参数等于 VK_INDEX_TYPE_UINT32 时,特殊索引值是 0xFFFFFFFF;当 indexType 等于 VK_INDEX_TYPE_UINT8 时,特殊索引值是 0xFF;或者当 indexType 等于 VK_INDEX_TYPE_UINT16 时,特殊索引值是 0xFFFF。对于“列表”拓扑,不允许图元重启,除非启用了 primitiveTopologyPatchListRestart(对于 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)或 primitiveTopologyListRestart(对于所有其他列表拓扑)特性之一。

重新开始图元的组装会丢弃最近的索引值(如果这些元素形成了不完整的图元),并使用后续索引重新开始图元组装,但仅组装紧随其后的元素,直到最初指定的元素结束。在将 vertexOffset 值添加到索引值之前,执行图元重启索引值比较。

有效用法
  • VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06252
    如果未启用 primitiveTopologyListRestart 特性,并且 topologyVK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,则 primitiveRestartEnable 必须VK_FALSE

  • VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253
    如果未启用 primitiveTopologyPatchListRestart 特性,并且 topologyVK_PRIMITIVE_TOPOLOGY_PATCH_LIST,则 primitiveRestartEnable 必须VK_FALSE

  • VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429
    如果未启用geometryShader特性,则topology必须不是VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY中的任何一个

  • VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430
    如果未启用 tessellationShader 功能,则 topology 必须 不能为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

  • VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452
    如果启用了 VK_KHR_portability_subset 扩展,并且 VkPhysicalDevicePortabilitySubsetFeaturesKHR::triangleFansVK_FALSE,则 topology 必须 不能为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN

有效使用(隐式)
  • VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType
    sType 必须VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO

  • VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext
    pNext 必须NULL

  • VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask
    flags 必须0

  • VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter
    topology 必须 为有效的 VkPrimitiveTopology 值。

// Provided by VK_VERSION_1_0
typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;

VkPipelineInputAssemblyStateCreateFlags 是用于设置掩码的位掩码类型,但目前保留供将来使用。

动态控制是否将特殊的顶点索引值视为重新开始图元的组装,请调用

// Provided by VK_VERSION_1_3
void vkCmdSetPrimitiveRestartEnable(
    VkCommandBuffer                             commandBuffer,
    VkBool32                                    primitiveRestartEnable);

或等效命令

// Provided by VK_EXT_extended_dynamic_state2, VK_EXT_shader_object
void vkCmdSetPrimitiveRestartEnableEXT(
    VkCommandBuffer                             commandBuffer,
    VkBool32                                    primitiveRestartEnable);
  • commandBuffer 是将记录命令的命令缓冲区。

  • primitiveRestartEnable 控制是否将特殊的顶点索引值视为重新开始图元的组装。它的行为方式与 VkPipelineInputAssemblyStateCreateInfo::primitiveRestartEnable 相同。

当使用 着色器对象 进行绘制,或者当图形管线在 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置了 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 时创建时,此命令将为后续绘制命令设置图元重启启用。否则,此状态由用于创建当前活动管线的 VkPipelineInputAssemblyStateCreateInfo::primitiveRestartEnable 值指定。

有效用法
有效使用(隐式)
  • VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdSetPrimitiveRestartEnable-videocoding
    此命令必须仅在视频编码范围之外调用。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

图元拓扑

图元拓扑 决定了如何将连续的顶点组织成图元,并确定了图形管线开始时使用的图元类型。管线后续阶段的有效拓扑会受到曲面细分或几何着色(如果使用)的改变,并且取决于这些着色器的执行模式。在网格着色的情况下,唯一有效的拓扑由网格着色器的执行模式定义。

VkPrimitiveTopology 定义的图元拓扑包括:

// Provided by VK_VERSION_1_0
typedef enum VkPrimitiveTopology {
    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
} VkPrimitiveTopology;

下面将详细描述每个图元拓扑及其从顶点列表的构造,并提供支持图,根据以下键值:

primitive topology key vertex

顶点

3 维空间中的一个点。图中选择的位置是任意的,仅用于说明。

primitive topology key vertex number

顶点编号

所提供顶点数据中顶点的序列位置。

primitive topology key provoking vertex

触发顶点

主要图元中的触发顶点。尾部倾斜于相关图元。用于平面着色

primitive topology key edge

图元边

连接主图元点的边。

primitive topology key adjacency edge

邻接边

这些线连接的点不构成主要图元,只能在几何着色器中访问。

primitive topology key winding order

绕序

图元内顶点定义的相对顺序,用于正面判定。此排序没有特定的起点或终点。

图表附有数学定义,其中顶点(v)和图元(p)从0开始编号;v0是提供数据中的第一个顶点,而p0是由顶点和拓扑结构定义的一组图元中的第一个图元。

动态设置图元拓扑,请调用

// Provided by VK_VERSION_1_3
void vkCmdSetPrimitiveTopology(
    VkCommandBuffer                             commandBuffer,
    VkPrimitiveTopology                         primitiveTopology);

或等效命令

// Provided by VK_EXT_extended_dynamic_state, VK_EXT_shader_object
void vkCmdSetPrimitiveTopologyEXT(
    VkCommandBuffer                             commandBuffer,
    VkPrimitiveTopology                         primitiveTopology);
  • commandBuffer 是将记录命令的命令缓冲区。

  • primitiveTopology指定用于绘制的图元拓扑。

当使用着色器对象进行绘制时,或者当图形管线在VkPipelineDynamicStateCreateInfo::pDynamicStates中设置了VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY时创建时,此命令将为后续的绘制命令设置图元拓扑。否则,此状态由用于创建当前活动管线的VkPipelineInputAssemblyStateCreateInfo::topology值指定。

有效用法
有效使用(隐式)
  • VUID-vkCmdSetPrimitiveTopology-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdSetPrimitiveTopology-primitiveTopology-parameter
    primitiveTopology 必须 是一个有效的 VkPrimitiveTopology

  • VUID-vkCmdSetPrimitiveTopology-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdSetPrimitiveTopology-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdSetPrimitiveTopology-videocoding
    此命令必须仅在视频编码范围之外调用。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

拓扑类

图元拓扑结构分为以下拓扑类

表 1. 拓扑类
拓扑类 图元拓扑

VK_PRIMITIVE_TOPOLOGY_POINT_LIST

线

VK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_STRIPVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY

三角形

VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIPVK_PRIMITIVE_TOPOLOGY_TRIANGLE_FANVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY

补丁

VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

点列表

当拓扑结构为 VK_PRIMITIVE_TOPOLOGY_POINT_LIST 时,每个连续的顶点根据以下等式定义一个单独的点图元:

pi = {vi}

由于只有一个顶点,因此该顶点是主导顶点。生成的图元数量等于vertexCount

primitive topology point list

线列表

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_LINE_LIST 时,每一对连续的顶点根据以下等式定义一个单独的线图元:

pi = {v2i, v2i+1}

生成的图元数量等于 vertexCount/2⌋

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的主导顶点为 v2i

primitive topology line list

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的主导顶点为 v2i+1

primitive topology line list last

线带

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP 时,每个顶点和后续顶点根据以下等式定义一个线图元:

pi = {vi, vi+1}

生成的图元数量等于 max(0,vertexCount-1)

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的主导顶点为 vi

primitive topology line strip

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的主导顶点为 vi+1

primitive topology line strip last

三角形列表

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST 时,每组连续的三个顶点根据以下等式定义一个单独的三角形图元:

pi = {v3i, v3i+1, v3i+2}

生成的图元数量等于 vertexCount/3⌋

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的主导顶点为 v3i

primitive topology triangle list

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的主导顶点为 v3i+2

primitive topology triangle list last

三角形带

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP 时,每个顶点以及其后的两个顶点根据以下等式定义一个三角形图元:

pi = {vi, vi+(1+i%2), vi+(2-i%2)}

生成的图元数量等于 max(0,vertexCount-2)

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的主导顶点为 vi

primitive topology triangle strip

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的主导顶点为 vi+2

primitive topology triangle strip last

每个连续三角形中顶点的顺序相反,因此整个带中的绕序是一致的。

三角形扇

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN 时,三角形图元是围绕一个共享的公共顶点定义的,根据以下等式:

pi = {vi+1, vi+2, v0}

生成的图元数量等于 max(0,vertexCount-2)

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的主导顶点为 vi+1

primitive topology triangle fan

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的主导顶点为 vi+2

primitive topology triangle fan last

如果启用了 VK_KHR_portability_subset 扩展,并且VkPhysicalDevicePortabilitySubsetFeaturesKHR::triangleFansVK_FALSE,则实现不支持三角形扇,并且不能使用 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN

带邻接的线列表

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY 时,每组连续的四个顶点根据以下等式定义一个带邻接的线图元:

pi = {v4i, v4i+1, v4i+2,v4i+3}

一个线图元由总图元的第二个和第三个顶点描述,其余两个顶点只能在几何着色器中访问。

生成的图元数量等于vertexCount/4⌋

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的触发顶点为 v4i+1

primitive topology line list with adjacency

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的触发顶点为 v4i+2

primitive topology line list with adjacency last

带邻接的线段条

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY 时,每个顶点和其后的顶点定义一个带邻接的线段图元,根据以下公式:

pi = {vi, vi+1, vi+2, vi+3}

一个线图元由总图元的第二个和第三个顶点描述,其余两个顶点只能在几何着色器中访问。

生成的图元数量等于 max(0, vertexCount-3)

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的主导顶点为 vi+1

primitive topology line strip with adjacency

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的主导顶点为 vi+2

primitive topology line strip with adjacency last

带邻接的三角形列表

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY 时,每连续的六个顶点定义一个带邻接的三角形图元,根据以下公式:

pi = {v6i, v6i+1, v6i+2, v6i+3, v6i+4, v6i+5}

一个三角形图元由整个图元的第一个、第三个和第五个顶点描述,其余三个顶点仅在几何着色器中可访问。

生成的图元数量等于 vertexCount/6⌋

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的触发顶点为 v6i

primitive topology triangle list with adjacency

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的触发顶点为 v6i+4

primitive topology triangle list with adjacency last

带邻接的三角形条带

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY 时,每个顶点和其后的 5 个顶点定义一个带邻接的三角形图元。

生成的图元数量,n,等于 ⌊max(0, vertexCount - 4)/2⌋

如果 n=1,则图元定义为

p = {v0, v1, v2, v5, v4, v3}

如果 n>1,则整个图元由条带中不同位置的不同顶点组成

pi = {v2i, v2i+1, v2i+2, v2i+6, v2i+4, v2i+3}i=0

pi = {v2i, v2i+3, v2i+4, v2i+6, v2i+2, v2i-2}i>0, i<n-1i%2=1

pi = {v2i, v2i-2, v2i+2, v2i+6, v2i+4, v2i+3}i>0, i<n-1i%2=0

pi = {v2i, v2i+3, v2i+4, v2i+5, v2i+2, v2i-2}i=n-1i%2=1

pi = {v2i, v2i-2, v2i+2, v2i+5, v2i+4, v2i+3}i=n-1i%2=0

在所有情况下,三角形图元由整个图元的第一个、第三个和第五个顶点描述,其余三个顶点仅在几何着色器中可访问。

每个连续三角形中顶点的顺序都会改变,以使整个条带中的缠绕顺序保持一致。

provokingVertexModeVK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT 时,pi 的触发顶点始终为 v2i

primitive topology triangle strip with adjacency

provokingVertexModeVK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 时,pi 的触发顶点始终为 v2i+4

primitive topology triangle strip with adjacency last

面片列表

当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST 时,每连续的 m 个顶点定义一个面片图元,根据以下公式:

pi = {vmi, vmi+1, …​, vmi+(m-2), vmi+(m-1)}

其中 m 等于 VkPipelineTessellationStateCreateInfo::patchControlPoints

面片列表永远不会传递给顶点后处理,因此没有为面片图元定义触发顶点。生成的图元数量等于 vertexCount/m⌋

构成面片的顶点没有隐含的几何形状,它们用作细分着色器和固定功能细分器的输入,以生成新的点、线或三角形图元。

图元顺序

绘制命令生成的图元按照图元顺序通过图形管线的各个阶段。图元顺序最初以下列方式确定:

  1. 提交顺序决定初始顺序

  2. 对于间接绘制命令,VkDrawIndirectCommand的访问实例在 buffer 中存储的顺序,从较低的间接缓冲区地址到较高的地址。

  3. 如果绘制命令包含多个实例,则执行实例的顺序,从较低编号的实例到较高的实例。

  4. 绘制命令指定的图元顺序

    • 对于非索引绘制,从具有较低编号的 vertexIndex 的顶点到具有较高编号的 vertexIndex 的顶点。

    • 对于索引绘制,从较低索引缓冲区地址到较高地址的顶点。

    • 对于使用网格着色器的绘制,顺序由网格着色提供。

    • 对于使用集群剔除着色器的绘制,顺序由集群剔除着色提供。

在此顺序中,实现进一步对图元进行排序

  1. 如果细分着色处于活动状态,则按照细分生成的新图元的实现相关顺序进行排序。

  2. 如果几何着色处于活动状态,则按照几何着色生成的新图元的顺序进行排序。

  3. 如果多边形模式不是 VK_POLYGON_MODE_FILLVK_POLYGON_MODE_FILL_RECTANGLE_NV,则按照原始图元内生成的新图元的实现相关顺序进行排序。

图元顺序稍后用于定义光栅化顺序,它决定了片段将结果输出到帧缓冲区的顺序。

可编程图元着色

一旦图元被组装完成,它们就会进入管线的顶点着色阶段。如果绘制包含多个实例,那么这组图元将被多次发送到顶点着色阶段,每个实例一次。

顶点着色是否发生在作为不完整图元一部分被丢弃的顶点上是实现相关的,但如果确实发生,则它的操作就好像它们是完整图元中的顶点一样,并且此类调用可以产生副作用。

顶点着色从图元组装阶段接收两个每个顶点的输入 - vertexIndexinstanceIndex。这些值是如何生成的在下面定义,每个命令都有定义。

绘制命令大致分为两类

要将索引缓冲区绑定到命令缓冲区,请调用

// Provided by VK_VERSION_1_0
void vkCmdBindIndexBuffer(
    VkCommandBuffer                             commandBuffer,
    VkBuffer                                    buffer,
    VkDeviceSize                                offset,
    VkIndexType                                 indexType);
  • commandBuffer 是要记录命令的命令缓冲区。

  • buffer 是要绑定的缓冲区。

  • offsetbuffer 内的起始偏移量(以字节为单位),用于索引缓冲区地址计算。

  • indexType 是一个 VkIndexType 值,用于指定索引的大小。

如果启用了 maintenance6 功能,则 buffer 可以VK_NULL_HANDLE。如果 bufferVK_NULL_HANDLE 并且启用了 nullDescriptor 功能,则每次获取的索引都会得到零值。

有效用法
  • VUID-vkCmdBindIndexBuffer-offset-08782
    offset 必须 小于 buffer 的大小

  • VUID-vkCmdBindIndexBuffer-offset-08783
    offset 和支持 bufferVkDeviceMemory 对象的范围的基址之和,必须indexType 指示的类型大小的倍数

  • VUID-vkCmdBindIndexBuffer-buffer-08784
    创建 buffer必须 使用 VK_BUFFER_USAGE_INDEX_BUFFER_BIT 标志

  • VUID-vkCmdBindIndexBuffer-buffer-08785
    如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

  • VUID-vkCmdBindIndexBuffer-indexType-08786
    indexType 必须 不是 VK_INDEX_TYPE_NONE_KHR

  • VUID-vkCmdBindIndexBuffer-indexType-08787
    如果 indexTypeVK_INDEX_TYPE_UINT8,则 必须 启用 indexTypeUint8 功能

  • VUID-vkCmdBindIndexBuffer-None-09493
    如果未启用 maintenance6 功能,则 buffer 必须 不是 VK_NULL_HANDLE

  • VUID-vkCmdBindIndexBuffer-buffer-09494
    如果 bufferVK_NULL_HANDLE,则 offset 必须 为零

有效使用(隐式)
  • VUID-vkCmdBindIndexBuffer-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdBindIndexBuffer-buffer-parameter
    如果 buffer 不是 VK_NULL_HANDLE,则 buffer 必须 是有效的 VkBuffer 句柄

  • VUID-vkCmdBindIndexBuffer-indexType-parameter
    indexType 必须 是有效的 VkIndexType

  • VUID-vkCmdBindIndexBuffer-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdBindIndexBuffer-videocoding
    此命令必须仅在视频编码范围之外调用。

  • VUID-vkCmdBindIndexBuffer-commonparent
    buffercommandBuffer (均为非忽略参数的有效句柄) 必须 从相同的 VkDevice 创建、分配或检索。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

要将索引缓冲区及其大小绑定到命令缓冲区,请调用

// Provided by VK_VERSION_1_4
void vkCmdBindIndexBuffer2(
    VkCommandBuffer                             commandBuffer,
    VkBuffer                                    buffer,
    VkDeviceSize                                offset,
    VkDeviceSize                                size,
    VkIndexType                                 indexType);

或等效命令

// Provided by VK_KHR_maintenance5
void vkCmdBindIndexBuffer2KHR(
    VkCommandBuffer                             commandBuffer,
    VkBuffer                                    buffer,
    VkDeviceSize                                offset,
    VkDeviceSize                                size,
    VkIndexType                                 indexType);
  • commandBuffer 是要记录命令的命令缓冲区。

  • buffer 是要绑定的缓冲区。

  • offsetbuffer 内的起始偏移量(以字节为单位),用于索引缓冲区地址计算。

  • size 是从 buffer 绑定的索引数据的大小(以字节为单位)。

  • indexType 是一个 VkIndexType 值,用于指定索引的大小。

size 指定从 offset 开始的索引缓冲区的绑定大小。如果 sizeVK_WHOLE_SIZE,则绑定大小是从 offsetbuffer 末尾。

如果启用了 maintenance6 功能,则 buffer 可以VK_NULL_HANDLE。如果 bufferVK_NULL_HANDLE 并且启用了 nullDescriptor 功能,则每次获取的索引都会得到零值。

有效用法
  • VUID-vkCmdBindIndexBuffer2-offset-08782
    offset 必须 小于 buffer 的大小

  • VUID-vkCmdBindIndexBuffer2-offset-08783
    offset 和支持 bufferVkDeviceMemory 对象的范围的基址之和,必须indexType 指示的类型大小的倍数

  • VUID-vkCmdBindIndexBuffer2-buffer-08784
    创建 buffer必须 使用 VK_BUFFER_USAGE_INDEX_BUFFER_BIT 标志

  • VUID-vkCmdBindIndexBuffer2-buffer-08785
    如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

  • VUID-vkCmdBindIndexBuffer2-indexType-08786
    indexType 必须 不是 VK_INDEX_TYPE_NONE_KHR

  • VUID-vkCmdBindIndexBuffer2-indexType-08787
    如果 indexTypeVK_INDEX_TYPE_UINT8,则 必须 启用 indexTypeUint8 功能

  • VUID-vkCmdBindIndexBuffer2-None-09493
    如果未启用 maintenance6 功能,则 buffer 必须 不是 VK_NULL_HANDLE

  • VUID-vkCmdBindIndexBuffer2-buffer-09494
    如果 bufferVK_NULL_HANDLE,则 offset 必须 为零

  • VUID-vkCmdBindIndexBuffer2-size-08767
    如果 size 不是 VK_WHOLE_SIZE,则 size 必须indexType 指示的类型大小的倍数

  • VUID-vkCmdBindIndexBuffer2-size-08768
    如果 size 不是 VK_WHOLE_SIZE,则 offsetsize 之和 必须 小于或等于 buffer 的大小

有效使用(隐式)
  • VUID-vkCmdBindIndexBuffer2-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdBindIndexBuffer2-buffer-parameter
    如果 buffer 不是 VK_NULL_HANDLE,则 buffer 必须 是有效的 VkBuffer 句柄

  • VUID-vkCmdBindIndexBuffer2-indexType-parameter
    indexType 必须 是有效的 VkIndexType

  • VUID-vkCmdBindIndexBuffer2-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdBindIndexBuffer2-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdBindIndexBuffer2-videocoding
    此命令必须仅在视频编码范围之外调用。

  • VUID-vkCmdBindIndexBuffer2-commonparent
    buffercommandBuffer (均为非忽略参数的有效句柄) 必须 从相同的 VkDevice 创建、分配或检索。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

vkCmdBindIndexBuffer2::indexTypevkCmdBindIndexBuffer::indexType 的可能值,用于指定索引的大小,如下所示:

// Provided by VK_VERSION_1_0
typedef enum VkIndexType {
    VK_INDEX_TYPE_UINT16 = 0,
    VK_INDEX_TYPE_UINT32 = 1,
  // Provided by VK_VERSION_1_4
    VK_INDEX_TYPE_UINT8 = 1000265000,
  // Provided by VK_KHR_acceleration_structure
    VK_INDEX_TYPE_NONE_KHR = 1000165000,
  // Provided by VK_NV_ray_tracing
    VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR,
  // Provided by VK_EXT_index_type_uint8
    VK_INDEX_TYPE_UINT8_EXT = VK_INDEX_TYPE_UINT8,
  // Provided by VK_KHR_index_type_uint8
    VK_INDEX_TYPE_UINT8_KHR = VK_INDEX_TYPE_UINT8,
} VkIndexType;
  • VK_INDEX_TYPE_UINT16 指定索引是 16 位无符号整数值。

  • VK_INDEX_TYPE_UINT32 指定索引是 32 位无符号整数值。

  • VK_INDEX_TYPE_NONE_KHR 指定不提供任何索引。

  • VK_INDEX_TYPE_UINT8 指定索引是 8 位无符号整数值。

每个绘制命令的参数直接在命令中指定,或者从缓冲区内存中读取,具体取决于命令。从缓冲区内存中获取参数的绘制命令称为间接绘制命令。

所有绘制命令都与 robustBufferAccess 功能交互。

要记录非索引绘制,请调用

// Provided by VK_VERSION_1_0
void vkCmdDraw(
    VkCommandBuffer                             commandBuffer,
    uint32_t                                    vertexCount,
    uint32_t                                    instanceCount,
    uint32_t                                    firstVertex,
    uint32_t                                    firstInstance);
  • commandBuffer 是要记录命令的命令缓冲区。

  • vertexCount 是要绘制的顶点数。

  • instanceCount 是要绘制的实例数。

  • firstVertex 是要绘制的第一个顶点的索引。

  • firstInstance 是要绘制的第一个实例的实例 ID。

当执行命令时,将使用当前的图元拓扑和 vertexCount 个连续的顶点索引来组装图元,其中第一个 vertexIndex 值等于 firstVertex。图元将绘制 instanceCount 次,instanceIndexfirstInstance 开始,并为每个实例按顺序递增。组装好的图元将执行绑定的图形管线。

有效用法
  • VUID-vkCmdDraw-magFilter-04553
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDraw-magFilter-09598
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDraw-mipmapMode-04770
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDraw-mipmapMode-09599
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDraw-unnormalizedCoordinates-09635
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

  • VUID-vkCmdDraw-None-08609
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

  • VUID-vkCmdDraw-None-08610
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

  • VUID-vkCmdDraw-None-08611
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

  • VUID-vkCmdDraw-None-06479
    如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

  • VUID-vkCmdDraw-None-02691
    如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

  • VUID-vkCmdDraw-None-07888
    如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

  • VUID-vkCmdDraw-None-02692
    如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

  • VUID-vkCmdDraw-None-02693
    如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

  • VUID-vkCmdDraw-filterCubic-02694
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDraw-filterCubicMinmax-02695
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDraw-cubicRangeClamp-09212
    如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

  • VUID-vkCmdDraw-reductionMode-09213
    此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

  • VUID-vkCmdDraw-selectableCubicWeights-09214
    如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

  • VUID-vkCmdDraw-flags-02696
    此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

  • VUID-vkCmdDraw-OpTypeImage-07027
    对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDraw-OpTypeImage-07028
    对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDraw-OpTypeImage-07029
    对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDraw-OpTypeImage-07030
    对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDraw-None-08600
    对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDraw-None-08601
    对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDraw-None-10068
    对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

  • VUID-vkCmdDraw-maintenance4-08602
    如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

  • VUID-vkCmdDraw-None-08114
    如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

  • VUID-vkCmdDraw-None-08115
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

  • VUID-vkCmdDraw-None-08116
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

  • VUID-vkCmdDraw-None-08604
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

  • VUID-vkCmdDraw-None-08117
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

  • VUID-vkCmdDraw-None-08119
    如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDraw-None-08605
    如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDraw-None-08606
    如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

  • VUID-vkCmdDraw-None-08608
    如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

  • VUID-vkCmdDraw-None-08607
    如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

  • VUID-vkCmdDraw-uniformBuffers-06935
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDraw-None-08612
    如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDraw-storageBuffers-06936
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDraw-None-08613
    如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

  • VUID-vkCmdDraw-commandBuffer-02707
    如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

  • VUID-vkCmdDraw-None-06550
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

  • VUID-vkCmdDraw-ConstOffset-06551
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

  • VUID-vkCmdDraw-viewType-07752
    如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

  • VUID-vkCmdDraw-format-07753
    如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

  • VUID-vkCmdDraw-OpImageWrite-08795
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

  • VUID-vkCmdDraw-OpImageWrite-08796
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

  • VUID-vkCmdDraw-OpImageWrite-04469
    如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

  • VUID-vkCmdDraw-SampledType-04470
    如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDraw-SampledType-04471
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDraw-SampledType-04472
    如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDraw-SampledType-04473
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDraw-sparseImageInt64Atomics-04474
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

  • VUID-vkCmdDraw-sparseImageInt64Atomics-04475
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

  • VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06971
    如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

  • VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06972
    如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

  • VUID-vkCmdDraw-OpImageBoxFilterQCOM-06973
    如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

  • VUID-vkCmdDraw-OpImageBlockMatchSSDQCOM-06974
    如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06975
    如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06976
    如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06977
    如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06978
    如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDraw-OpImageBlockMatchWindow-09215
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDraw-OpImageBlockMatchWindow-09216
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

  • VUID-vkCmdDraw-OpImageBlockMatchWindow-09217
    如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDraw-None-07288
    此命令执行的任何着色器调用必须终止

  • VUID-vkCmdDraw-None-09600
    如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

  • VUID-vkCmdDraw-renderPass-02684
    当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

  • VUID-vkCmdDraw-subpass-02685
    当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

  • VUID-vkCmdDraw-None-07748
    如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

  • VUID-vkCmdDraw-OpTypeImage-07468
    如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

  • VUID-vkCmdDraw-None-07469
    在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

  • VUID-vkCmdDraw-pDepthInputAttachmentIndex-09595
    在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

  • VUID-vkCmdDraw-pDepthInputAttachmentIndex-09596
    如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

  • VUID-vkCmdDraw-InputAttachmentIndex-09597
    如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

  • VUID-vkCmdDraw-None-06537
    当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

  • VUID-vkCmdDraw-None-09000
    如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDraw-None-09001
    如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDraw-None-09002
    如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDraw-None-09003
    如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

  • VUID-vkCmdDraw-None-06539
    如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

  • VUID-vkCmdDraw-None-06886
    如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

  • VUID-vkCmdDraw-None-06887
    如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

  • VUID-vkCmdDraw-None-07831
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDraw-None-07832
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDraw-None-07833
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDraw-None-08617
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDraw-None-08618
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDraw-None-08619
    如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDraw-None-07834
    如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDraw-None-07835
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDraw-None-08621
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07836
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07837
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07838
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07839
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688
    如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

  • VUID-vkCmdDraw-sampleLocationsEnable-02689
    如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

  • VUID-vkCmdDraw-None-07634
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-06666
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07840
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07841
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07843
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-None-07844
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-None-07845
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-None-07846
    如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-None-07847
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-None-07848
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-viewportCount-03417
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-scissorCount-03418
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-viewportCount-03419
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

  • VUID-vkCmdDraw-viewportCount-04137
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDraw-viewportCount-04138
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDraw-None-08636
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDraw-viewportCount-04139
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDraw-shadingRateImage-09233
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-shadingRateImage-09234
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-None-08637
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

  • VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

  • VUID-vkCmdDraw-None-07878
    如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-None-07879
    如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-None-04876
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-None-04877
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-logicOp-04878
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-08642
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDraw-blendEnable-04727
    如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

  • VUID-vkCmdDraw-None-08643
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

  • VUID-vkCmdDraw-multisampledRenderToSingleSampled-07284
    如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

    那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

  • VUID-vkCmdDraw-None-08644
    如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

    那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

  • VUID-vkCmdDraw-None-08876
    如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

  • VUID-vkCmdDraw-imageView-06172
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDraw-imageView-06173
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDraw-imageView-06174
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDraw-imageView-06175
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDraw-imageView-06176
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDraw-imageView-06177
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDraw-viewMask-06178
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

  • VUID-vkCmdDraw-colorAttachmentCount-06179
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08910
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08912
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08911
    如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-colorAttachmentCount-09362
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDraw-None-09363
    如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDraw-None-09364
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDraw-None-09365
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDraw-None-09366
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDraw-rasterizationSamples-09367
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDraw-None-09368
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDraw-None-09369
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDraw-pFragmentSize-09370
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDraw-pFragmentSize-09371
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDraw-None-07749
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDraw-None-08646
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDraw-attachmentCount-07750
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

  • VUID-vkCmdDraw-None-08647
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

  • VUID-vkCmdDraw-None-07751
    如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDraw-rasterizerDiscardEnable-09236
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDraw-None-07880
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDraw-None-07881
    如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08913
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08914
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08915
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08916
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08917
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

  • VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08918
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-imageView-06183
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

  • VUID-vkCmdDraw-imageView-06184
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

  • VUID-vkCmdDraw-colorAttachmentCount-06185
    如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

  • VUID-vkCmdDraw-pDepthAttachment-06186
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDraw-pStencilAttachment-06187
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDraw-multisampledRenderToSingleSampled-07285
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

  • VUID-vkCmdDraw-multisampledRenderToSingleSampled-07286
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDraw-multisampledRenderToSingleSampled-07287
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDraw-pNext-07935
    如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

  • VUID-vkCmdDraw-renderPass-06198
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

  • VUID-vkCmdDraw-pColorAttachments-08963
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-pDepthAttachment-08964
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-pStencilAttachment-08965
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDraw-primitivesGeneratedQueryWithRasterizerDiscard-06708
    如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

  • VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-06709
    如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

  • VUID-vkCmdDraw-None-07620
    如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07621
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07622
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07623
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-alphaToCoverageEnable-08919
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDraw-alphaToCoverageEnable-08920
    如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDraw-None-07624
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07625
    如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07626
    如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07627
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-08657
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-07628
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-08658
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-07629
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-08659
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-07630
    如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-07631
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-07632
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-07633
    如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-07635
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-rasterizerDiscardEnable-09416
    如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDraw-None-07636
    如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-07637
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-08666
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-08667
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-08668
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-07638
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-08669
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-08670
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-08671
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDraw-None-07849
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-07639
    如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-09650
    如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-07640
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-07641
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-07642
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-07643
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-07644
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-07645
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDraw-None-07646
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07647
    如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-pipelineFragmentShadingRate-09238
    如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07648
    如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-None-07649
    如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDraw-pColorBlendEnables-07470
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

  • VUID-vkCmdDraw-rasterizationSamples-07471
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

  • VUID-vkCmdDraw-samples-07472
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

  • VUID-vkCmdDraw-samples-07473
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

  • VUID-vkCmdDraw-rasterizationSamples-07474
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

  • VUID-vkCmdDraw-None-09211
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

  • VUID-vkCmdDraw-firstAttachment-07476
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

  • VUID-vkCmdDraw-rasterizerDiscardEnable-09417
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

  • VUID-vkCmdDraw-firstAttachment-07477
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDraw-rasterizerDiscardEnable-09418
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDraw-firstAttachment-07478
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDraw-rasterizerDiscardEnable-09419
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDraw-firstAttachment-07479
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

  • VUID-vkCmdDraw-advancedBlendMaxColorAttachments-07480
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

  • VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-07481
    如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

  • VUID-vkCmdDraw-sampleLocationsPerPixel-07482
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

  • VUID-vkCmdDraw-sampleLocationsPerPixel-07483
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

  • VUID-vkCmdDraw-sampleLocationsEnable-07484
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

  • VUID-vkCmdDraw-sampleLocationsEnable-07485
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDraw-sampleLocationsEnable-07486
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDraw-sampleLocationsEnable-07487
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

  • VUID-vkCmdDraw-sampleLocationsEnable-07936
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDraw-sampleLocationsEnable-07937
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDraw-sampleLocationsEnable-07938
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

  • VUID-vkCmdDraw-coverageModulationTableEnable-07488
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

  • VUID-vkCmdDraw-rasterizationSamples-07489
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

  • VUID-vkCmdDraw-coverageToColorEnable-07490
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDraw-rasterizerDiscardEnable-09420
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDraw-coverageReductionMode-07491
    如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

  • VUID-vkCmdDraw-viewportCount-07492
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

  • VUID-vkCmdDraw-viewportCount-07493
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDraw-viewportCount-09421
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDraw-rasterizationSamples-07494
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

  • VUID-vkCmdDraw-stippledLineEnable-07495
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

  • VUID-vkCmdDraw-stippledLineEnable-07496
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

  • VUID-vkCmdDraw-stippledLineEnable-07497
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

  • VUID-vkCmdDraw-stippledLineEnable-07498
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

  • VUID-vkCmdDraw-conservativePointAndLineRasterization-07499
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

  • VUID-vkCmdDraw-stage-07073
    如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

  • VUID-vkCmdDraw-None-08877
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

  • VUID-vkCmdDraw-None-07850
    如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

  • VUID-vkCmdDraw-None-08688
    如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

  • VUID-vkCmdDraw-None-08689
    如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

  • VUID-vkCmdDraw-None-08690
    如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

  • VUID-vkCmdDraw-None-08693
    如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

  • VUID-vkCmdDraw-None-08694
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDraw-None-08695
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDraw-None-08696
    如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDraw-None-08698
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

  • VUID-vkCmdDraw-None-08699
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

  • VUID-vkCmdDraw-None-08878
    所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

  • VUID-vkCmdDraw-None-08879
    所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

  • VUID-vkCmdDraw-colorAttachmentCount-09372
    如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

  • VUID-vkCmdDraw-pDynamicStates-08715
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

  • VUID-vkCmdDraw-pDynamicStates-08716
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

  • VUID-vkCmdDraw-None-09116
    如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

  • VUID-vkCmdDraw-maxFragmentDualSrcAttachments-09239
    如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

  • VUID-vkCmdDraw-None-09548
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

  • VUID-vkCmdDraw-None-09549
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

  • VUID-vkCmdDraw-None-09642
    如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

  • VUID-vkCmdDraw-None-09643
    如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

  • VUID-vkCmdDraw-commandBuffer-02712
    如果 commandBuffer 是一个受保护的命令缓冲区,并且不支持protectedNoFault,则此命令使用的管道绑定点所绑定的 VkPipeline 对象写入的任何资源必须不是不受保护的资源。

  • VUID-vkCmdDraw-commandBuffer-02713
    如果 commandBuffer 是一个受保护的命令缓冲区,并且不支持protectedNoFault,则此命令使用的管道绑定点所绑定的 VkPipeline 对象中,除了帧缓冲区空间和计算阶段之外的管道阶段必须不写入任何资源。

  • VUID-vkCmdDraw-commandBuffer-04617
    如果绑定到此命令使用的管道绑定点的 VkPipeline 的任何着色器阶段使用了RayQueryKHR 功能,则 commandBuffer 必须不是受保护的命令缓冲区。

  • VUID-vkCmdDraw-None-04007
    通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

  • VUID-vkCmdDraw-None-04008
    如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

  • VUID-vkCmdDraw-None-02721
    如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

  • VUID-vkCmdDraw-format-10389
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

  • VUID-vkCmdDraw-format-10390
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

  • VUID-vkCmdDraw-None-07842
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

  • VUID-vkCmdDraw-dynamicPrimitiveTopologyUnrestricted-07500
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

  • VUID-vkCmdDraw-primitiveTopology-10286
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

  • VUID-vkCmdDraw-pStrides-04913
    如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

  • VUID-vkCmdDraw-None-04914
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-Input-07939
    如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

  • VUID-vkCmdDraw-Input-08734
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

  • VUID-vkCmdDraw-format-08936
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

  • VUID-vkCmdDraw-format-08937
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

  • VUID-vkCmdDraw-None-09203
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

  • VUID-vkCmdDraw-None-04875
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-None-04879
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-None-09637
    如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

  • VUID-vkCmdDraw-stage-06481
    绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

  • VUID-vkCmdDraw-None-08885
    必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDraw-None-07619
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDraw-None-08684
    如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

  • VUID-vkCmdDraw-None-08685
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

  • VUID-vkCmdDraw-None-08686
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

  • VUID-vkCmdDraw-None-08687
    如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

有效使用(隐式)
  • VUID-vkCmdDraw-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdDraw-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdDraw-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdDraw-renderpass
    此命令必须仅在渲染通道实例内部调用

  • VUID-vkCmdDraw-videocoding
    此命令必须仅在视频编码范围之外调用。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

要记录索引绘制,请调用

// Provided by VK_VERSION_1_0
void vkCmdDrawIndexed(
    VkCommandBuffer                             commandBuffer,
    uint32_t                                    indexCount,
    uint32_t                                    instanceCount,
    uint32_t                                    firstIndex,
    int32_t                                     vertexOffset,
    uint32_t                                    firstInstance);
  • commandBuffer 是要记录命令的命令缓冲区。

  • indexCount 是要绘制的顶点数。

  • instanceCount 是要绘制的实例数。

  • firstIndex 是索引缓冲区内的基本索引。

  • vertexOffset 是在索引到顶点缓冲区之前添加到顶点索引的值。

  • firstInstance 是要绘制的第一个实例的实例 ID。

执行命令时,将使用当前图元拓扑和 indexCount 个顶点来组装图元,这些顶点的索引是从索引缓冲区中检索的。索引缓冲区被视为一个紧密打包的无符号整数数组,其大小由vkCmdBindIndexBuffer2::indexTypevkCmdBindIndexBuffer::indexType 参数定义,该参数用于绑定缓冲区。

第一个顶点索引位于绑定索引缓冲区内的偏移量 firstIndex × indexSize + offset 处,其中 offset 是由 vkCmdBindIndexBuffervkCmdBindIndexBuffer2 指定的偏移量,indexSize 是由 indexType 指定的类型的字节大小。后续索引值从索引缓冲区中的连续位置检索。索引首先与图元重启值进行比较,然后零扩展为 32 位(如果 indexTypeVK_INDEX_TYPE_UINT8VK_INDEX_TYPE_UINT16),并加上 vertexOffset,然后再作为 vertexIndex 值提供。

图元绘制 instanceCount 次,instanceIndexfirstInstance 开始,每次实例递增。组装的图元执行绑定的图形管线。

有效用法
  • VUID-vkCmdDrawIndexed-magFilter-04553
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawIndexed-magFilter-09598
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawIndexed-mipmapMode-04770
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawIndexed-mipmapMode-09599
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawIndexed-unnormalizedCoordinates-09635
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

  • VUID-vkCmdDrawIndexed-None-08609
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

  • VUID-vkCmdDrawIndexed-None-08610
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

  • VUID-vkCmdDrawIndexed-None-08611
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

  • VUID-vkCmdDrawIndexed-None-06479
    如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

  • VUID-vkCmdDrawIndexed-None-02691
    如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

  • VUID-vkCmdDrawIndexed-None-07888
    如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

  • VUID-vkCmdDrawIndexed-None-02692
    如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

  • VUID-vkCmdDrawIndexed-None-02693
    如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

  • VUID-vkCmdDrawIndexed-filterCubic-02694
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawIndexed-filterCubicMinmax-02695
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawIndexed-cubicRangeClamp-09212
    如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

  • VUID-vkCmdDrawIndexed-reductionMode-09213
    此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

  • VUID-vkCmdDrawIndexed-selectableCubicWeights-09214
    如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

  • VUID-vkCmdDrawIndexed-flags-02696
    此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

  • VUID-vkCmdDrawIndexed-OpTypeImage-07027
    对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndexed-OpTypeImage-07028
    对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndexed-OpTypeImage-07029
    对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndexed-OpTypeImage-07030
    对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndexed-None-08600
    对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawIndexed-None-08601
    对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawIndexed-None-10068
    对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

  • VUID-vkCmdDrawIndexed-maintenance4-08602
    如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

  • VUID-vkCmdDrawIndexed-None-08114
    如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

  • VUID-vkCmdDrawIndexed-None-08115
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

  • VUID-vkCmdDrawIndexed-None-08116
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

  • VUID-vkCmdDrawIndexed-None-08604
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

  • VUID-vkCmdDrawIndexed-None-08117
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

  • VUID-vkCmdDrawIndexed-None-08119
    如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawIndexed-None-08605
    如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawIndexed-None-08606
    如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

  • VUID-vkCmdDrawIndexed-None-08608
    如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

  • VUID-vkCmdDrawIndexed-None-08607
    如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

  • VUID-vkCmdDrawIndexed-uniformBuffers-06935
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndexed-None-08612
    如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndexed-storageBuffers-06936
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndexed-None-08613
    如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

  • VUID-vkCmdDrawIndexed-commandBuffer-02707
    如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

  • VUID-vkCmdDrawIndexed-None-06550
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

  • VUID-vkCmdDrawIndexed-ConstOffset-06551
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

  • VUID-vkCmdDrawIndexed-viewType-07752
    如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

  • VUID-vkCmdDrawIndexed-format-07753
    如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

  • VUID-vkCmdDrawIndexed-OpImageWrite-08795
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

  • VUID-vkCmdDrawIndexed-OpImageWrite-08796
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

  • VUID-vkCmdDrawIndexed-OpImageWrite-04469
    如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

  • VUID-vkCmdDrawIndexed-SampledType-04470
    如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawIndexed-SampledType-04471
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawIndexed-SampledType-04472
    如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawIndexed-SampledType-04473
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

  • VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

  • VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06971
    如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06972
    如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawIndexed-OpImageBoxFilterQCOM-06973
    如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

  • VUID-vkCmdDrawIndexed-OpImageBlockMatchSSDQCOM-06974
    如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06975
    如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06976
    如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06977
    如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06978
    如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09215
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09216
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

  • VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09217
    如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawIndexed-None-07288
    此命令执行的任何着色器调用必须终止

  • VUID-vkCmdDrawIndexed-None-09600
    如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

  • VUID-vkCmdDrawIndexed-renderPass-02684
    当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

  • VUID-vkCmdDrawIndexed-subpass-02685
    当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

  • VUID-vkCmdDrawIndexed-None-07748
    如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

  • VUID-vkCmdDrawIndexed-OpTypeImage-07468
    如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

  • VUID-vkCmdDrawIndexed-None-07469
    在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

  • VUID-vkCmdDrawIndexed-pDepthInputAttachmentIndex-09595
    在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

  • VUID-vkCmdDrawIndexed-pDepthInputAttachmentIndex-09596
    如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

  • VUID-vkCmdDrawIndexed-InputAttachmentIndex-09597
    如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

  • VUID-vkCmdDrawIndexed-None-06537
    当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

  • VUID-vkCmdDrawIndexed-None-09000
    如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndexed-None-09001
    如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndexed-None-09002
    如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndexed-None-09003
    如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

  • VUID-vkCmdDrawIndexed-None-06539
    如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

  • VUID-vkCmdDrawIndexed-None-06886
    如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

  • VUID-vkCmdDrawIndexed-None-06887
    如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

  • VUID-vkCmdDrawIndexed-None-07831
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndexed-None-07832
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndexed-None-07833
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndexed-None-08617
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndexed-None-08618
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndexed-None-08619
    如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndexed-None-07834
    如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndexed-None-07835
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndexed-None-08621
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07836
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07837
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07838
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07839
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688
    如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

  • VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689
    如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

  • VUID-vkCmdDrawIndexed-None-07634
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-06666
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07840
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07841
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07843
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-None-07844
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-None-07845
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-None-07846
    如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-None-07847
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-None-07848
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-viewportCount-03417
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-scissorCount-03418
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-viewportCount-03419
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

  • VUID-vkCmdDrawIndexed-viewportCount-04137
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndexed-viewportCount-04138
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndexed-None-08636
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndexed-viewportCount-04139
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndexed-shadingRateImage-09233
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-shadingRateImage-09234
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-None-08637
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

  • VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

  • VUID-vkCmdDrawIndexed-None-07878
    如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-None-07879
    如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-None-04876
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-None-04877
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-logicOp-04878
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-08642
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawIndexed-blendEnable-04727
    如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

  • VUID-vkCmdDrawIndexed-None-08643
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

  • VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07284
    如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

    那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawIndexed-None-08644
    如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

    那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

  • VUID-vkCmdDrawIndexed-None-08876
    如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawIndexed-imageView-06172
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndexed-imageView-06173
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndexed-imageView-06174
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndexed-imageView-06175
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndexed-imageView-06176
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndexed-imageView-06177
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndexed-viewMask-06178
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

  • VUID-vkCmdDrawIndexed-colorAttachmentCount-06179
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08910
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08912
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08911
    如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-colorAttachmentCount-09362
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawIndexed-None-09363
    如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawIndexed-None-09364
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawIndexed-None-09365
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawIndexed-None-09366
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawIndexed-rasterizationSamples-09367
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawIndexed-None-09368
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawIndexed-None-09369
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawIndexed-pFragmentSize-09370
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawIndexed-pFragmentSize-09371
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawIndexed-None-07749
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndexed-None-08646
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndexed-attachmentCount-07750
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

  • VUID-vkCmdDrawIndexed-None-08647
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

  • VUID-vkCmdDrawIndexed-None-07751
    如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09236
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndexed-None-07880
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndexed-None-07881
    如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08913
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08914
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08915
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08916
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08917
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

  • VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08918
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-imageView-06183
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

  • VUID-vkCmdDrawIndexed-imageView-06184
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

  • VUID-vkCmdDrawIndexed-colorAttachmentCount-06185
    如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

  • VUID-vkCmdDrawIndexed-pDepthAttachment-06186
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndexed-pStencilAttachment-06187
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07285
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

  • VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07286
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07287
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndexed-pNext-07935
    如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

  • VUID-vkCmdDrawIndexed-renderPass-06198
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

  • VUID-vkCmdDrawIndexed-pColorAttachments-08963
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-pDepthAttachment-08964
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-pStencilAttachment-08965
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithRasterizerDiscard-06708
    如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

  • VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-06709
    如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

  • VUID-vkCmdDrawIndexed-None-07620
    如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07621
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07622
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07623
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-alphaToCoverageEnable-08919
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawIndexed-alphaToCoverageEnable-08920
    如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawIndexed-None-07624
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07625
    如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07626
    如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07627
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-08657
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-07628
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-08658
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-07629
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-08659
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-07630
    如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-07631
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-07632
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-07633
    如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-07635
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09416
    如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndexed-None-07636
    如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-07637
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-08666
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-08667
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-08668
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-07638
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-08669
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-08670
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-08671
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndexed-None-07849
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-07639
    如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-09650
    如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-07640
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-07641
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-07642
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-07643
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-07644
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-07645
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndexed-None-07646
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07647
    如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-pipelineFragmentShadingRate-09238
    如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07648
    如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-None-07649
    如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndexed-pColorBlendEnables-07470
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

  • VUID-vkCmdDrawIndexed-rasterizationSamples-07471
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

  • VUID-vkCmdDrawIndexed-samples-07472
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

  • VUID-vkCmdDrawIndexed-samples-07473
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

  • VUID-vkCmdDrawIndexed-rasterizationSamples-07474
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawIndexed-None-09211
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

  • VUID-vkCmdDrawIndexed-firstAttachment-07476
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

  • VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09417
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

  • VUID-vkCmdDrawIndexed-firstAttachment-07477
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09418
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawIndexed-firstAttachment-07478
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09419
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawIndexed-firstAttachment-07479
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

  • VUID-vkCmdDrawIndexed-advancedBlendMaxColorAttachments-07480
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

  • VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-07481
    如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

  • VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07482
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

  • VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07483
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

  • VUID-vkCmdDrawIndexed-sampleLocationsEnable-07484
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

  • VUID-vkCmdDrawIndexed-sampleLocationsEnable-07485
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawIndexed-sampleLocationsEnable-07486
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawIndexed-sampleLocationsEnable-07487
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

  • VUID-vkCmdDrawIndexed-sampleLocationsEnable-07936
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawIndexed-sampleLocationsEnable-07937
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawIndexed-sampleLocationsEnable-07938
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

  • VUID-vkCmdDrawIndexed-coverageModulationTableEnable-07488
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

  • VUID-vkCmdDrawIndexed-rasterizationSamples-07489
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

  • VUID-vkCmdDrawIndexed-coverageToColorEnable-07490
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09420
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawIndexed-coverageReductionMode-07491
    如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

  • VUID-vkCmdDrawIndexed-viewportCount-07492
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

  • VUID-vkCmdDrawIndexed-viewportCount-07493
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndexed-viewportCount-09421
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndexed-rasterizationSamples-07494
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

  • VUID-vkCmdDrawIndexed-stippledLineEnable-07495
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

  • VUID-vkCmdDrawIndexed-stippledLineEnable-07496
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

  • VUID-vkCmdDrawIndexed-stippledLineEnable-07497
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

  • VUID-vkCmdDrawIndexed-stippledLineEnable-07498
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

  • VUID-vkCmdDrawIndexed-conservativePointAndLineRasterization-07499
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

  • VUID-vkCmdDrawIndexed-stage-07073
    如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

  • VUID-vkCmdDrawIndexed-None-08877
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

  • VUID-vkCmdDrawIndexed-None-07850
    如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

  • VUID-vkCmdDrawIndexed-None-08688
    如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

  • VUID-vkCmdDrawIndexed-None-08689
    如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

  • VUID-vkCmdDrawIndexed-None-08690
    如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

  • VUID-vkCmdDrawIndexed-None-08693
    如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

  • VUID-vkCmdDrawIndexed-None-08694
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndexed-None-08695
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndexed-None-08696
    如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndexed-None-08698
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

  • VUID-vkCmdDrawIndexed-None-08699
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

  • VUID-vkCmdDrawIndexed-None-08878
    所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

  • VUID-vkCmdDrawIndexed-None-08879
    所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

  • VUID-vkCmdDrawIndexed-colorAttachmentCount-09372
    如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

  • VUID-vkCmdDrawIndexed-pDynamicStates-08715
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

  • VUID-vkCmdDrawIndexed-pDynamicStates-08716
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

  • VUID-vkCmdDrawIndexed-None-09116
    如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

  • VUID-vkCmdDrawIndexed-maxFragmentDualSrcAttachments-09239
    如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

  • VUID-vkCmdDrawIndexed-None-09548
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

  • VUID-vkCmdDrawIndexed-None-09549
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

  • VUID-vkCmdDrawIndexed-None-09642
    如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

  • VUID-vkCmdDrawIndexed-None-09643
    如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawIndexed-commandBuffer-02712
    如果 commandBuffer 是一个受保护的命令缓冲区,并且不支持protectedNoFault,则此命令使用的管道绑定点所绑定的 VkPipeline 对象写入的任何资源必须不是不受保护的资源。

  • VUID-vkCmdDrawIndexed-commandBuffer-02713
    如果 commandBuffer 是一个受保护的命令缓冲区,并且不支持protectedNoFault,则此命令使用的管道绑定点所绑定的 VkPipeline 对象中,除了帧缓冲区空间和计算阶段之外的管道阶段必须不写入任何资源。

  • VUID-vkCmdDrawIndexed-commandBuffer-04617
    如果绑定到此命令使用的管道绑定点的 VkPipeline 的任何着色器阶段使用了RayQueryKHR 功能,则 commandBuffer 必须不是受保护的命令缓冲区。

  • VUID-vkCmdDrawIndexed-None-04007
    通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

  • VUID-vkCmdDrawIndexed-None-04008
    如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

  • VUID-vkCmdDrawIndexed-None-02721
    如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

  • VUID-vkCmdDrawIndexed-format-10389
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

  • VUID-vkCmdDrawIndexed-format-10390
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

  • VUID-vkCmdDrawIndexed-None-07842
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

  • VUID-vkCmdDrawIndexed-dynamicPrimitiveTopologyUnrestricted-07500
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

  • VUID-vkCmdDrawIndexed-primitiveTopology-10286
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

  • VUID-vkCmdDrawIndexed-pStrides-04913
    如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

  • VUID-vkCmdDrawIndexed-None-04914
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-Input-07939
    如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

  • VUID-vkCmdDrawIndexed-Input-08734
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

  • VUID-vkCmdDrawIndexed-format-08936
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

  • VUID-vkCmdDrawIndexed-format-08937
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

  • VUID-vkCmdDrawIndexed-None-09203
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

  • VUID-vkCmdDrawIndexed-None-04875
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-None-04879
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-None-09637
    如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

  • VUID-vkCmdDrawIndexed-stage-06481
    绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

  • VUID-vkCmdDrawIndexed-None-08885
    必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndexed-None-07619
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndexed-None-08684
    如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

  • VUID-vkCmdDrawIndexed-None-08685
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

  • VUID-vkCmdDrawIndexed-None-08686
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

  • VUID-vkCmdDrawIndexed-None-08687
    如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

  • VUID-vkCmdDrawIndexed-None-07312
    如果未启用 maintenance6 功能,则必须绑定有效的索引缓冲区。

  • VUID-vkCmdDrawIndexed-robustBufferAccess2-08798
    如果未启用 robustBufferAccess2 功能,则 (indexSize × (firstIndex + indexCount) + offset) 必须小于或等于绑定的索引缓冲区的大小。其中 indexSize 基于 indexType 指定的类型,并且索引缓冲区、indexTypeoffset 通过 vkCmdBindIndexBuffervkCmdBindIndexBuffer2 指定。如果使用 vkCmdBindIndexBuffer2 绑定索引缓冲区,则绑定索引缓冲区的大小为 vkCmdBindIndexBuffer2::size

有效使用(隐式)
  • VUID-vkCmdDrawIndexed-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdDrawIndexed-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdDrawIndexed-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdDrawIndexed-renderpass
    此命令必须仅在渲染通道实例内部调用

  • VUID-vkCmdDrawIndexed-videocoding
    此命令必须仅在视频编码范围之外调用。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

要记录一系列没有状态变化的有序绘制,请调用

// Provided by VK_EXT_multi_draw
void vkCmdDrawMultiEXT(
    VkCommandBuffer                             commandBuffer,
    uint32_t                                    drawCount,
    const VkMultiDrawInfoEXT*                   pVertexInfo,
    uint32_t                                    instanceCount,
    uint32_t                                    firstInstance,
    uint32_t                                    stride);
  • commandBuffer 是要记录命令的命令缓冲区。

  • drawCount 是要执行的绘制次数,可以为零。

  • pVertexInfo 是指向 VkMultiDrawInfoEXT 数组的指针,其中包含要绘制的顶点信息。

  • instanceCount 是每次绘制的实例数。

  • firstInstance 是每次绘制中第一个实例的实例 ID。

  • stridepVertexInfo 的连续元素之间的字节步幅。

记录的绘制次数为 drawCount,每次绘制都从 pVertexInfo 中顺序读取 firstVertexvertexCount。对于每个记录的绘制,图元的组装方式与 vkCmdDraw 相同,并绘制 instanceCount 次,其中 instanceIndexfirstInstance 开始,并为每个实例顺序递增。

有效用法
  • VUID-vkCmdDrawMultiEXT-magFilter-04553
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawMultiEXT-magFilter-09598
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawMultiEXT-mipmapMode-04770
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawMultiEXT-mipmapMode-09599
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawMultiEXT-unnormalizedCoordinates-09635
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

  • VUID-vkCmdDrawMultiEXT-None-08609
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

  • VUID-vkCmdDrawMultiEXT-None-08610
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

  • VUID-vkCmdDrawMultiEXT-None-08611
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

  • VUID-vkCmdDrawMultiEXT-None-06479
    如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

  • VUID-vkCmdDrawMultiEXT-None-02691
    如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

  • VUID-vkCmdDrawMultiEXT-None-07888
    如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

  • VUID-vkCmdDrawMultiEXT-None-02692
    如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

  • VUID-vkCmdDrawMultiEXT-None-02693
    如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

  • VUID-vkCmdDrawMultiEXT-filterCubic-02694
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawMultiEXT-filterCubicMinmax-02695
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawMultiEXT-cubicRangeClamp-09212
    如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

  • VUID-vkCmdDrawMultiEXT-reductionMode-09213
    此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

  • VUID-vkCmdDrawMultiEXT-selectableCubicWeights-09214
    如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

  • VUID-vkCmdDrawMultiEXT-flags-02696
    此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

  • VUID-vkCmdDrawMultiEXT-OpTypeImage-07027
    对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawMultiEXT-OpTypeImage-07028
    对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawMultiEXT-OpTypeImage-07029
    对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawMultiEXT-OpTypeImage-07030
    对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawMultiEXT-None-08600
    对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawMultiEXT-None-08601
    对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawMultiEXT-None-10068
    对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

  • VUID-vkCmdDrawMultiEXT-maintenance4-08602
    如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

  • VUID-vkCmdDrawMultiEXT-None-08114
    如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

  • VUID-vkCmdDrawMultiEXT-None-08115
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

  • VUID-vkCmdDrawMultiEXT-None-08116
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

  • VUID-vkCmdDrawMultiEXT-None-08604
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

  • VUID-vkCmdDrawMultiEXT-None-08117
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

  • VUID-vkCmdDrawMultiEXT-None-08119
    如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawMultiEXT-None-08605
    如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawMultiEXT-None-08606
    如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

  • VUID-vkCmdDrawMultiEXT-None-08608
    如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

  • VUID-vkCmdDrawMultiEXT-None-08607
    如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

  • VUID-vkCmdDrawMultiEXT-uniformBuffers-06935
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawMultiEXT-None-08612
    如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawMultiEXT-storageBuffers-06936
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawMultiEXT-None-08613
    如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

  • VUID-vkCmdDrawMultiEXT-commandBuffer-02707
    如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

  • VUID-vkCmdDrawMultiEXT-None-06550
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

  • VUID-vkCmdDrawMultiEXT-ConstOffset-06551
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

  • VUID-vkCmdDrawMultiEXT-viewType-07752
    如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

  • VUID-vkCmdDrawMultiEXT-format-07753
    如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

  • VUID-vkCmdDrawMultiEXT-OpImageWrite-08795
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

  • VUID-vkCmdDrawMultiEXT-OpImageWrite-08796
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

  • VUID-vkCmdDrawMultiEXT-OpImageWrite-04469
    如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

  • VUID-vkCmdDrawMultiEXT-SampledType-04470
    如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawMultiEXT-SampledType-04471
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawMultiEXT-SampledType-04472
    如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawMultiEXT-SampledType-04473
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04474
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

  • VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04475
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

  • VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06971
    如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06972
    如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawMultiEXT-OpImageBoxFilterQCOM-06973
    如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

  • VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSSDQCOM-06974
    如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06975
    如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06976
    如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06977
    如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06978
    如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09215
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09216
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

  • VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09217
    如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawMultiEXT-None-07288
    此命令执行的任何着色器调用必须终止

  • VUID-vkCmdDrawMultiEXT-None-09600
    如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

  • VUID-vkCmdDrawMultiEXT-renderPass-02684
    当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

  • VUID-vkCmdDrawMultiEXT-subpass-02685
    当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

  • VUID-vkCmdDrawMultiEXT-None-07748
    如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

  • VUID-vkCmdDrawMultiEXT-OpTypeImage-07468
    如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

  • VUID-vkCmdDrawMultiEXT-None-07469
    在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

  • VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09595
    在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

  • VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09596
    如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

  • VUID-vkCmdDrawMultiEXT-InputAttachmentIndex-09597
    如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

  • VUID-vkCmdDrawMultiEXT-None-06537
    当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

  • VUID-vkCmdDrawMultiEXT-None-09000
    如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawMultiEXT-None-09001
    如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawMultiEXT-None-09002
    如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawMultiEXT-None-09003
    如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

  • VUID-vkCmdDrawMultiEXT-None-06539
    如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

  • VUID-vkCmdDrawMultiEXT-None-06886
    如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

  • VUID-vkCmdDrawMultiEXT-None-06887
    如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

  • VUID-vkCmdDrawMultiEXT-None-07831
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiEXT-None-07832
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiEXT-None-07833
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiEXT-None-08617
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiEXT-None-08618
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiEXT-None-08619
    如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiEXT-None-07834
    如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiEXT-None-07835
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiEXT-None-08621
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07836
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07837
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07838
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07839
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-maxMultiviewInstanceIndex-02688
    如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

  • VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-02689
    如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

  • VUID-vkCmdDrawMultiEXT-None-07634
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-06666
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07840
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07841
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07843
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-None-07844
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-None-07845
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-None-07846
    如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-None-07847
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-None-07848
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-viewportCount-03417
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-scissorCount-03418
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-viewportCount-03419
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

  • VUID-vkCmdDrawMultiEXT-viewportCount-04137
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiEXT-viewportCount-04138
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiEXT-None-08636
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiEXT-viewportCount-04139
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiEXT-shadingRateImage-09233
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-shadingRateImage-09234
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-None-08637
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04141
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

  • VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04142
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

  • VUID-vkCmdDrawMultiEXT-None-07878
    如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-None-07879
    如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-None-04876
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-None-04877
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-logicOp-04878
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-04552
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawMultiEXT-blendEnable-04727
    如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

  • VUID-vkCmdDrawMultiEXT-None-08643
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

  • VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07284
    如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

    那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawMultiEXT-None-08644
    如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

    那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

  • VUID-vkCmdDrawMultiEXT-None-08876
    如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawMultiEXT-imageView-06172
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawMultiEXT-imageView-06173
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawMultiEXT-imageView-06174
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawMultiEXT-imageView-06175
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawMultiEXT-imageView-06176
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawMultiEXT-imageView-06177
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawMultiEXT-viewMask-06178
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

  • VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06179
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08910
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08912
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08911
    如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09362
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawMultiEXT-None-09363
    如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawMultiEXT-None-09364
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawMultiEXT-None-09365
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawMultiEXT-None-09366
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawMultiEXT-rasterizationSamples-09367
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawMultiEXT-None-09368
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawMultiEXT-None-09369
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawMultiEXT-pFragmentSize-09370
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawMultiEXT-pFragmentSize-09371
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawMultiEXT-None-07749
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiEXT-None-08646
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiEXT-attachmentCount-07750
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

  • VUID-vkCmdDrawMultiEXT-None-08647
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

  • VUID-vkCmdDrawMultiEXT-None-07751
    如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09236
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiEXT-None-07880
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiEXT-None-07881
    如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08913
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08914
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08915
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08916
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08917
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

  • VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08918
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-imageView-06183
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

  • VUID-vkCmdDrawMultiEXT-imageView-06184
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

  • VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06185
    如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

  • VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07285
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

  • VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07286
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07287
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawMultiEXT-pNext-07935
    如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

  • VUID-vkCmdDrawMultiEXT-renderPass-06198
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

  • VUID-vkCmdDrawMultiEXT-pColorAttachments-08963
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-pDepthAttachment-08964
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-pStencilAttachment-08965
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708
    如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

  • VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-06709
    如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

  • VUID-vkCmdDrawMultiEXT-None-07620
    如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07621
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07622
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07623
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08919
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08920
    如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawMultiEXT-None-07624
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07625
    如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07626
    如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07627
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-08657
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-07628
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-08658
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-07629
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-08659
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-07630
    如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-07631
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-07632
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-07633
    如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-07635
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09416
    如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiEXT-None-07636
    如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-07637
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-08666
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-08667
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-08668
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-07638
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-08669
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-08670
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-08671
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiEXT-None-07849
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-07639
    如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-09650
    如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-07640
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-07641
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-07642
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-07643
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-07644
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-07645
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiEXT-None-07646
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07647
    如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-pipelineFragmentShadingRate-09238
    如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07648
    如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-None-07649
    如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiEXT-pColorBlendEnables-07470
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

  • VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

  • VUID-vkCmdDrawMultiEXT-samples-07472
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

  • VUID-vkCmdDrawMultiEXT-samples-07473
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

  • VUID-vkCmdDrawMultiEXT-rasterizationSamples-07474
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawMultiEXT-None-09211
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

  • VUID-vkCmdDrawMultiEXT-firstAttachment-07476
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

  • VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09417
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

  • VUID-vkCmdDrawMultiEXT-firstAttachment-07477
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09418
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawMultiEXT-firstAttachment-07478
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09419
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawMultiEXT-firstAttachment-07479
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

  • VUID-vkCmdDrawMultiEXT-advancedBlendMaxColorAttachments-07480
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

  • VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-07481
    如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

  • VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07482
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

  • VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07483
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

  • VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07484
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

  • VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07485
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07486
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07487
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

  • VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07936
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07937
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07938
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

  • VUID-vkCmdDrawMultiEXT-coverageModulationTableEnable-07488
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

  • VUID-vkCmdDrawMultiEXT-rasterizationSamples-07489
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

  • VUID-vkCmdDrawMultiEXT-coverageToColorEnable-07490
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09420
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawMultiEXT-coverageReductionMode-07491
    如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

  • VUID-vkCmdDrawMultiEXT-viewportCount-07492
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

  • VUID-vkCmdDrawMultiEXT-viewportCount-07493
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiEXT-viewportCount-09421
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiEXT-rasterizationSamples-07494
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

  • VUID-vkCmdDrawMultiEXT-stippledLineEnable-07495
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

  • VUID-vkCmdDrawMultiEXT-stippledLineEnable-07496
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

  • VUID-vkCmdDrawMultiEXT-stippledLineEnable-07497
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

  • VUID-vkCmdDrawMultiEXT-stippledLineEnable-07498
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

  • VUID-vkCmdDrawMultiEXT-conservativePointAndLineRasterization-07499
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

  • VUID-vkCmdDrawMultiEXT-stage-07073
    如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

  • VUID-vkCmdDrawMultiEXT-None-08877
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

  • VUID-vkCmdDrawMultiEXT-None-07850
    如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

  • VUID-vkCmdDrawMultiEXT-None-08688
    如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

  • VUID-vkCmdDrawMultiEXT-None-08689
    如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

  • VUID-vkCmdDrawMultiEXT-None-08690
    如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

  • VUID-vkCmdDrawMultiEXT-None-08693
    如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

  • VUID-vkCmdDrawMultiEXT-None-08694
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawMultiEXT-None-08695
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawMultiEXT-None-08696
    如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawMultiEXT-None-08698
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

  • VUID-vkCmdDrawMultiEXT-None-08699
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

  • VUID-vkCmdDrawMultiEXT-None-08878
    所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

  • VUID-vkCmdDrawMultiEXT-None-08879
    所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

  • VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09372
    如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

  • VUID-vkCmdDrawMultiEXT-pDynamicStates-08715
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

  • VUID-vkCmdDrawMultiEXT-pDynamicStates-08716
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

  • VUID-vkCmdDrawMultiEXT-None-09116
    如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

  • VUID-vkCmdDrawMultiEXT-maxFragmentDualSrcAttachments-09239
    如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

  • VUID-vkCmdDrawMultiEXT-None-09548
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

  • VUID-vkCmdDrawMultiEXT-None-09549
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

  • VUID-vkCmdDrawMultiEXT-None-09642
    如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

  • VUID-vkCmdDrawMultiEXT-None-09643
    如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawMultiEXT-commandBuffer-02712
    如果 commandBuffer 是一个受保护的命令缓冲区,并且不支持protectedNoFault,则此命令使用的管道绑定点所绑定的 VkPipeline 对象写入的任何资源必须不是不受保护的资源。

  • VUID-vkCmdDrawMultiEXT-commandBuffer-02713
    如果 commandBuffer 是一个受保护的命令缓冲区,并且不支持protectedNoFault,则此命令使用的管道绑定点所绑定的 VkPipeline 对象中,除了帧缓冲区空间和计算阶段之外的管道阶段必须不写入任何资源。

  • VUID-vkCmdDrawMultiEXT-commandBuffer-04617
    如果绑定到此命令使用的管道绑定点的 VkPipeline 的任何着色器阶段使用了RayQueryKHR 功能,则 commandBuffer 必须不是受保护的命令缓冲区。

  • VUID-vkCmdDrawMultiEXT-None-04007
    通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

  • VUID-vkCmdDrawMultiEXT-None-04008
    如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

  • VUID-vkCmdDrawMultiEXT-None-02721
    如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

  • VUID-vkCmdDrawMultiEXT-format-10389
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

  • VUID-vkCmdDrawMultiEXT-format-10390
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

  • VUID-vkCmdDrawMultiEXT-None-07842
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

  • VUID-vkCmdDrawMultiEXT-dynamicPrimitiveTopologyUnrestricted-07500
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

  • VUID-vkCmdDrawMultiEXT-primitiveTopology-10286
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

  • VUID-vkCmdDrawMultiEXT-pStrides-04913
    如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

  • VUID-vkCmdDrawMultiEXT-None-04914
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-Input-07939
    如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

  • VUID-vkCmdDrawMultiEXT-Input-08734
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

  • VUID-vkCmdDrawMultiEXT-format-08936
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

  • VUID-vkCmdDrawMultiEXT-format-08937
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

  • VUID-vkCmdDrawMultiEXT-None-09203
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

  • VUID-vkCmdDrawMultiEXT-None-04875
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-None-04879
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-None-09637
    如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

  • VUID-vkCmdDrawMultiEXT-stage-06481
    绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

  • VUID-vkCmdDrawMultiEXT-None-08885
    必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawMultiEXT-None-07619
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiEXT-None-08684
    如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

  • VUID-vkCmdDrawMultiEXT-None-08685
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

  • VUID-vkCmdDrawMultiEXT-None-08686
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

  • VUID-vkCmdDrawMultiEXT-None-08687
    如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

  • VUID-vkCmdDrawMultiEXT-None-04933
    必须启用 multiDraw 功能

  • VUID-vkCmdDrawMultiEXT-drawCount-04934
    drawCount 必须 小于 VkPhysicalDeviceMultiDrawPropertiesEXT::maxMultiDrawCount

  • VUID-vkCmdDrawMultiEXT-drawCount-04935
    如果 drawCount 大于零,则 pVertexInfo 必须 是指向包含一个或多个有效 VkMultiDrawInfoEXT 结构实例的内存的有效指针

  • VUID-vkCmdDrawMultiEXT-drawCount-09628
    如果 drawCount 大于 1,则 stride 必须4 的倍数,并且必须 大于或等于 sizeof(VkMultiDrawInfoEXT)

有效使用(隐式)
  • VUID-vkCmdDrawMultiEXT-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdDrawMultiEXT-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdDrawMultiEXT-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdDrawMultiEXT-renderpass
    此命令必须仅在渲染通道实例内部调用

  • VUID-vkCmdDrawMultiEXT-videocoding
    此命令必须仅在视频编码范围之外调用。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

要记录在它们之间没有状态变化的索引绘制的有序序列,请调用

// Provided by VK_EXT_multi_draw
void vkCmdDrawMultiIndexedEXT(
    VkCommandBuffer                             commandBuffer,
    uint32_t                                    drawCount,
    const VkMultiDrawIndexedInfoEXT*            pIndexInfo,
    uint32_t                                    instanceCount,
    uint32_t                                    firstInstance,
    uint32_t                                    stride,
    const int32_t*                              pVertexOffset);
  • commandBuffer 是要记录命令的命令缓冲区。

  • drawCount 是要执行的绘制次数,可以为零。

  • pIndexInfo 是指向 VkMultiDrawIndexedInfoEXT 数组的指针,其中包含要绘制的索引信息。

  • instanceCount 是每次绘制的实例数。

  • firstInstance 是每次绘制中第一个实例的实例 ID。

  • stridepIndexInfo 的连续元素之间的字节步幅。

  • pVertexOffsetNULL,或者是指向在索引到顶点缓冲区之前添加到顶点索引的值的指针。当指定时,将忽略 VkMultiDrawIndexedInfoEXT::offset

记录的绘制次数为 drawCount,每次绘制都从 pIndexInfo 中按顺序读取一个 firstIndex 和一个 indexCount。 对于每次记录的绘制,基元的组装方式与 vkCmdDrawIndexed 相同,并使用从 firstInstance 开始的 instanceIndex 顺序绘制 instanceCount 次。如果 pVertexOffsetNULL,则还会从 pIndexInfo 读取 vertexOffset,否则将使用从解引用 pVertexOffset 获得的值。

有效用法
  • VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-magFilter-09598
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-04770
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-09599
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-unnormalizedCoordinates-09635
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

  • VUID-vkCmdDrawMultiIndexedEXT-None-08609
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

  • VUID-vkCmdDrawMultiIndexedEXT-None-08610
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

  • VUID-vkCmdDrawMultiIndexedEXT-None-08611
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

  • VUID-vkCmdDrawMultiIndexedEXT-None-06479
    如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-None-02691
    如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-None-07888
    如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-None-02692
    如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

  • VUID-vkCmdDrawMultiIndexedEXT-None-02693
    如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

  • VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawMultiIndexedEXT-cubicRangeClamp-09212
    如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

  • VUID-vkCmdDrawMultiIndexedEXT-reductionMode-09213
    此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

  • VUID-vkCmdDrawMultiIndexedEXT-selectableCubicWeights-09214
    如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

  • VUID-vkCmdDrawMultiIndexedEXT-flags-02696
    此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

  • VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07027
    对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07028
    对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07029
    对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07030
    对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-None-08600
    对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08601
    对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawMultiIndexedEXT-None-10068
    对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

  • VUID-vkCmdDrawMultiIndexedEXT-maintenance4-08602
    如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08114
    如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08115
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08116
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08604
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08117
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08119
    如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08605
    如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08606
    如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08608
    如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08607
    如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

  • VUID-vkCmdDrawMultiIndexedEXT-uniformBuffers-06935
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08612
    如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawMultiIndexedEXT-storageBuffers-06936
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08613
    如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

  • VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02707
    如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

  • VUID-vkCmdDrawMultiIndexedEXT-None-06550
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

  • VUID-vkCmdDrawMultiIndexedEXT-ConstOffset-06551
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

  • VUID-vkCmdDrawMultiIndexedEXT-viewType-07752
    如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

  • VUID-vkCmdDrawMultiIndexedEXT-format-07753
    如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-08795
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-08796
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-04469
    如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

  • VUID-vkCmdDrawMultiIndexedEXT-SampledType-04470
    如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawMultiIndexedEXT-SampledType-04471
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawMultiIndexedEXT-SampledType-04472
    如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawMultiIndexedEXT-SampledType-04473
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04474
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

  • VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04475
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06971
    如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06972
    如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageBoxFilterQCOM-06973
    如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSSDQCOM-06974
    如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06975
    如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06976
    如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06977
    如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06978
    如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09215
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09216
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

  • VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09217
    如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawMultiIndexedEXT-None-07288
    此命令执行的任何着色器调用必须终止

  • VUID-vkCmdDrawMultiIndexedEXT-None-09600
    如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

  • VUID-vkCmdDrawMultiIndexedEXT-renderPass-02684
    当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

  • VUID-vkCmdDrawMultiIndexedEXT-subpass-02685
    当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

  • VUID-vkCmdDrawMultiIndexedEXT-None-07748
    如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

  • VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07468
    如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

  • VUID-vkCmdDrawMultiIndexedEXT-None-07469
    在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

  • VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09595
    在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

  • VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09596
    如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

  • VUID-vkCmdDrawMultiIndexedEXT-InputAttachmentIndex-09597
    如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

  • VUID-vkCmdDrawMultiIndexedEXT-None-06537
    当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09000
    如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09001
    如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09002
    如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09003
    如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

  • VUID-vkCmdDrawMultiIndexedEXT-None-06539
    如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

  • VUID-vkCmdDrawMultiIndexedEXT-None-06886
    如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

  • VUID-vkCmdDrawMultiIndexedEXT-None-06887
    如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

  • VUID-vkCmdDrawMultiIndexedEXT-None-07831
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07832
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07833
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08617
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08618
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08619
    如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07834
    如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07835
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08621
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07836
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07837
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07838
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07839
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-maxMultiviewInstanceIndex-02688
    如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-02689
    如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

  • VUID-vkCmdDrawMultiIndexedEXT-None-07634
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-06666
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07840
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07841
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07843
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07844
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07845
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07846
    如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07847
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07848
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

  • VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04137
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04138
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08636
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04139
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09233
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09234
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08637
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04141
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

  • VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04142
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

  • VUID-vkCmdDrawMultiIndexedEXT-None-07878
    如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07879
    如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-04876
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-04877
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-04552
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727
    如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

  • VUID-vkCmdDrawMultiIndexedEXT-None-08643
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

  • VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07284
    如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

    那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08644
    如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

    那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08876
    如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawMultiIndexedEXT-imageView-06172
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawMultiIndexedEXT-imageView-06173
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawMultiIndexedEXT-imageView-06174
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawMultiIndexedEXT-imageView-06175
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawMultiIndexedEXT-imageView-06176
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawMultiIndexedEXT-imageView-06177
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawMultiIndexedEXT-viewMask-06178
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

  • VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08910
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08912
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08911
    如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09362
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09363
    如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09364
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawMultiIndexedEXT-None-09365
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-None-09366
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-09367
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-None-09368
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawMultiIndexedEXT-None-09369
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09370
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09371
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawMultiIndexedEXT-None-07749
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiIndexedEXT-None-08646
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiIndexedEXT-attachmentCount-07750
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

  • VUID-vkCmdDrawMultiIndexedEXT-None-08647
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

  • VUID-vkCmdDrawMultiIndexedEXT-None-07751
    如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09236
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiIndexedEXT-None-07880
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawMultiIndexedEXT-None-07881
    如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08913
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08914
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08915
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08916
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08917
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08918
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-imageView-06183
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

  • VUID-vkCmdDrawMultiIndexedEXT-imageView-06184
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

  • VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06185
    如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

  • VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07285
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

  • VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07286
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07287
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawMultiIndexedEXT-pNext-07935
    如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

  • VUID-vkCmdDrawMultiIndexedEXT-renderPass-06198
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

  • VUID-vkCmdDrawMultiIndexedEXT-pColorAttachments-08963
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-08964
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-08965
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708
    如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

  • VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-06709
    如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-07620
    如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07621
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07622
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07623
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08919
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08920
    如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawMultiIndexedEXT-None-07624
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07625
    如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07626
    如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07627
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08657
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07628
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08658
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07629
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08659
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07630
    如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07631
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07632
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07633
    如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07635
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09416
    如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07636
    如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07637
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08666
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08667
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08668
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07638
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08669
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08670
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08671
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07849
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07639
    如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-09650
    如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07640
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07641
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07642
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07643
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07644
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07645
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07646
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07647
    如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-pipelineFragmentShadingRate-09238
    如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07648
    如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-07649
    如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawMultiIndexedEXT-pColorBlendEnables-07470
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07471
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

  • VUID-vkCmdDrawMultiIndexedEXT-samples-07472
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-samples-07473
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07474
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09211
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

  • VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07476
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09417
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

  • VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07477
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09418
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07478
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09419
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07479
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

  • VUID-vkCmdDrawMultiIndexedEXT-advancedBlendMaxColorAttachments-07480
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

  • VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-07481
    如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07482
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07483
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07484
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07485
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07486
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07487
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07936
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07937
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07938
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

  • VUID-vkCmdDrawMultiIndexedEXT-coverageModulationTableEnable-07488
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07489
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

  • VUID-vkCmdDrawMultiIndexedEXT-coverageToColorEnable-07490
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09420
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawMultiIndexedEXT-coverageReductionMode-07491
    如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

  • VUID-vkCmdDrawMultiIndexedEXT-viewportCount-07492
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

  • VUID-vkCmdDrawMultiIndexedEXT-viewportCount-07493
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-viewportCount-09421
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07494
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

  • VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07495
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

  • VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07496
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

  • VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07497
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

  • VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07498
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

  • VUID-vkCmdDrawMultiIndexedEXT-conservativePointAndLineRasterization-07499
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

  • VUID-vkCmdDrawMultiIndexedEXT-stage-07073
    如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08877
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

  • VUID-vkCmdDrawMultiIndexedEXT-None-07850
    如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08688
    如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08689
    如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08690
    如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08693
    如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

  • VUID-vkCmdDrawMultiIndexedEXT-None-08694
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08695
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08696
    如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08698
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08699
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

  • VUID-vkCmdDrawMultiIndexedEXT-None-08878
    所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08879
    所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

  • VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09372
    如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

  • VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08715
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

  • VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08716
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

  • VUID-vkCmdDrawMultiIndexedEXT-None-09116
    如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

  • VUID-vkCmdDrawMultiIndexedEXT-maxFragmentDualSrcAttachments-09239
    如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

  • VUID-vkCmdDrawMultiIndexedEXT-None-09548
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09549
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09642
    如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09643
    如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712
    如果 commandBuffer 是一个受保护的命令缓冲区,并且不支持protectedNoFault,则此命令使用的管道绑定点所绑定的 VkPipeline 对象写入的任何资源必须不是不受保护的资源。

  • VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02713
    如果 commandBuffer 是一个受保护的命令缓冲区,并且不支持protectedNoFault,则此命令使用的管道绑定点所绑定的 VkPipeline 对象中,除了帧缓冲区空间和计算阶段之外的管道阶段必须不写入任何资源。

  • VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-04617
    如果绑定到此命令使用的管道绑定点的 VkPipeline 的任何着色器阶段使用了RayQueryKHR 功能,则 commandBuffer 必须不是受保护的命令缓冲区。

  • VUID-vkCmdDrawMultiIndexedEXT-None-04007
    通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

  • VUID-vkCmdDrawMultiIndexedEXT-None-04008
    如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

  • VUID-vkCmdDrawMultiIndexedEXT-None-02721
    如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

  • VUID-vkCmdDrawMultiIndexedEXT-format-10389
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

  • VUID-vkCmdDrawMultiIndexedEXT-format-10390
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

  • VUID-vkCmdDrawMultiIndexedEXT-None-07842
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

  • VUID-vkCmdDrawMultiIndexedEXT-dynamicPrimitiveTopologyUnrestricted-07500
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

  • VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-10286
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

  • VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913
    如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

  • VUID-vkCmdDrawMultiIndexedEXT-None-04914
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-Input-07939
    如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

  • VUID-vkCmdDrawMultiIndexedEXT-Input-08734
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

  • VUID-vkCmdDrawMultiIndexedEXT-format-08936
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

  • VUID-vkCmdDrawMultiIndexedEXT-format-08937
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

  • VUID-vkCmdDrawMultiIndexedEXT-None-09203
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

  • VUID-vkCmdDrawMultiIndexedEXT-None-04875
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-04879
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-09637
    如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

  • VUID-vkCmdDrawMultiIndexedEXT-stage-06481
    绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

  • VUID-vkCmdDrawMultiIndexedEXT-None-08885
    必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawMultiIndexedEXT-None-07619
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawMultiIndexedEXT-None-08684
    如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

  • VUID-vkCmdDrawMultiIndexedEXT-None-08685
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

  • VUID-vkCmdDrawMultiIndexedEXT-None-08686
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

  • VUID-vkCmdDrawMultiIndexedEXT-None-08687
    如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

  • VUID-vkCmdDrawMultiIndexedEXT-None-07312
    如果未启用 maintenance6 功能,则必须绑定有效的索引缓冲区。

  • VUID-vkCmdDrawMultiIndexedEXT-robustBufferAccess2-08798
    如果未启用 robustBufferAccess2 功能,则 (indexSize × (firstIndex + indexCount) + offset) 必须小于或等于绑定的索引缓冲区的大小。其中 indexSize 基于 indexType 指定的类型,并且索引缓冲区、indexTypeoffset 通过 vkCmdBindIndexBuffervkCmdBindIndexBuffer2 指定。如果使用 vkCmdBindIndexBuffer2 绑定索引缓冲区,则绑定索引缓冲区的大小为 vkCmdBindIndexBuffer2::size

  • VUID-vkCmdDrawMultiIndexedEXT-None-04937
    必须启用 multiDraw 功能

  • VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939
    drawCount 必须 小于 VkPhysicalDeviceMultiDrawPropertiesEXT::maxMultiDrawCount

  • VUID-vkCmdDrawMultiIndexedEXT-drawCount-04940
    如果 drawCount 大于零,则 pIndexInfo 必须是指向包含一个或多个有效的 VkMultiDrawIndexedInfoEXT 结构实例的内存的有效指针。

  • VUID-vkCmdDrawMultiIndexedEXT-drawCount-09629
    如果 drawCount 大于 1,则 stride 必须4 的倍数,并且必须大于或等于 sizeof(VkMultiDrawIndexedInfoEXT)。

有效使用(隐式)
  • VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdDrawMultiIndexedEXT-pVertexOffset-parameter
    如果 pVertexOffset 不是 NULL,则 pVertexOffset 必须是指向有效 int32_t 值的有效指针。

  • VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdDrawMultiIndexedEXT-renderpass
    此命令必须仅在渲染通道实例内部调用

  • VUID-vkCmdDrawMultiIndexedEXT-videocoding
    此命令必须仅在视频编码范围之外调用。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

VkMultiDrawInfoEXT 结构定义如下:

// Provided by VK_EXT_multi_draw
typedef struct VkMultiDrawInfoEXT {
    uint32_t    firstVertex;
    uint32_t    vertexCount;
} VkMultiDrawInfoEXT;
  • firstVertex 是要绘制的第一个顶点。

  • vertexCount 是要绘制的顶点数。

VkMultiDrawInfoEXT 的成员与 vkCmdDraw 中的 firstVertexvertexCount 参数具有相同的含义。

VkMultiDrawIndexedInfoEXT 结构的定义如下:

// Provided by VK_EXT_multi_draw
typedef struct VkMultiDrawIndexedInfoEXT {
    uint32_t    firstIndex;
    uint32_t    indexCount;
    int32_t     vertexOffset;
} VkMultiDrawIndexedInfoEXT;
  • firstIndex 是要绘制的第一个索引。

  • indexCount 是要绘制的顶点数。

  • vertexOffset 是在索引到索引多重绘制的顶点缓冲区之前添加到顶点索引的值。

VkMultiDrawIndexedInfoEXTfirstIndexindexCountvertexOffset 成员分别与 vkCmdDrawIndexedfirstIndexindexCountvertexOffset 参数具有相同的含义。

要记录非索引的间接绘制命令,请调用:

// Provided by VK_VERSION_1_0
void vkCmdDrawIndirect(
    VkCommandBuffer                             commandBuffer,
    VkBuffer                                    buffer,
    VkDeviceSize                                offset,
    uint32_t                                    drawCount,
    uint32_t                                    stride);
  • commandBuffer 是要记录命令的命令缓冲区。

  • buffer 是包含绘制参数的缓冲区。

  • offsetbuffer 中参数开始的字节偏移量。

  • drawCount 是要执行的绘制次数,可以为零。

  • stride 是连续的绘制参数集之间的字节步长。

vkCmdDrawIndirect 的行为类似于 vkCmdDraw,不同之处在于,参数在执行期间由设备从缓冲区读取。该命令执行 drawCount 次绘制,参数从 buffer 中的 offset 开始,每次连续绘制增加 stride 字节。每次绘制的参数都编码在 VkDrawIndirectCommand 结构数组中。如果 drawCount 小于或等于 1,则忽略 stride

有效用法
  • VUID-vkCmdDrawIndirect-magFilter-04553
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawIndirect-magFilter-09598
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawIndirect-mipmapMode-04770
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawIndirect-mipmapMode-09599
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawIndirect-unnormalizedCoordinates-09635
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

  • VUID-vkCmdDrawIndirect-None-08609
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

  • VUID-vkCmdDrawIndirect-None-08610
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

  • VUID-vkCmdDrawIndirect-None-08611
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

  • VUID-vkCmdDrawIndirect-None-06479
    如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

  • VUID-vkCmdDrawIndirect-None-02691
    如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

  • VUID-vkCmdDrawIndirect-None-07888
    如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

  • VUID-vkCmdDrawIndirect-None-02692
    如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

  • VUID-vkCmdDrawIndirect-None-02693
    如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

  • VUID-vkCmdDrawIndirect-filterCubic-02694
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawIndirect-filterCubicMinmax-02695
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawIndirect-cubicRangeClamp-09212
    如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

  • VUID-vkCmdDrawIndirect-reductionMode-09213
    此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

  • VUID-vkCmdDrawIndirect-selectableCubicWeights-09214
    如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

  • VUID-vkCmdDrawIndirect-flags-02696
    此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

  • VUID-vkCmdDrawIndirect-OpTypeImage-07027
    对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndirect-OpTypeImage-07028
    对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndirect-OpTypeImage-07029
    对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndirect-OpTypeImage-07030
    对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndirect-None-08600
    对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawIndirect-None-08601
    对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawIndirect-None-10068
    对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

  • VUID-vkCmdDrawIndirect-maintenance4-08602
    如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

  • VUID-vkCmdDrawIndirect-None-08114
    如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

  • VUID-vkCmdDrawIndirect-None-08115
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

  • VUID-vkCmdDrawIndirect-None-08116
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

  • VUID-vkCmdDrawIndirect-None-08604
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

  • VUID-vkCmdDrawIndirect-None-08117
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

  • VUID-vkCmdDrawIndirect-None-08119
    如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawIndirect-None-08605
    如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawIndirect-None-08606
    如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

  • VUID-vkCmdDrawIndirect-None-08608
    如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

  • VUID-vkCmdDrawIndirect-None-08607
    如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

  • VUID-vkCmdDrawIndirect-uniformBuffers-06935
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndirect-None-08612
    如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndirect-storageBuffers-06936
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndirect-None-08613
    如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

  • VUID-vkCmdDrawIndirect-commandBuffer-02707
    如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

  • VUID-vkCmdDrawIndirect-None-06550
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

  • VUID-vkCmdDrawIndirect-ConstOffset-06551
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

  • VUID-vkCmdDrawIndirect-viewType-07752
    如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

  • VUID-vkCmdDrawIndirect-format-07753
    如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

  • VUID-vkCmdDrawIndirect-OpImageWrite-08795
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

  • VUID-vkCmdDrawIndirect-OpImageWrite-08796
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

  • VUID-vkCmdDrawIndirect-OpImageWrite-04469
    如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

  • VUID-vkCmdDrawIndirect-SampledType-04470
    如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawIndirect-SampledType-04471
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawIndirect-SampledType-04472
    如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawIndirect-SampledType-04473
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

  • VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

  • VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06971
    如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06972
    如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawIndirect-OpImageBoxFilterQCOM-06973
    如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

  • VUID-vkCmdDrawIndirect-OpImageBlockMatchSSDQCOM-06974
    如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06975
    如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06976
    如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06977
    如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06978
    如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09215
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09216
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

  • VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09217
    如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawIndirect-None-07288
    此命令执行的任何着色器调用必须终止

  • VUID-vkCmdDrawIndirect-None-09600
    如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

  • VUID-vkCmdDrawIndirect-renderPass-02684
    当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

  • VUID-vkCmdDrawIndirect-subpass-02685
    当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

  • VUID-vkCmdDrawIndirect-None-07748
    如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

  • VUID-vkCmdDrawIndirect-OpTypeImage-07468
    如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

  • VUID-vkCmdDrawIndirect-None-07469
    在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

  • VUID-vkCmdDrawIndirect-pDepthInputAttachmentIndex-09595
    在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

  • VUID-vkCmdDrawIndirect-pDepthInputAttachmentIndex-09596
    如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

  • VUID-vkCmdDrawIndirect-InputAttachmentIndex-09597
    如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

  • VUID-vkCmdDrawIndirect-None-06537
    当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

  • VUID-vkCmdDrawIndirect-None-09000
    如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndirect-None-09001
    如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndirect-None-09002
    如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndirect-None-09003
    如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

  • VUID-vkCmdDrawIndirect-None-06539
    如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

  • VUID-vkCmdDrawIndirect-None-06886
    如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

  • VUID-vkCmdDrawIndirect-None-06887
    如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

  • VUID-vkCmdDrawIndirect-None-07831
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirect-None-07832
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirect-None-07833
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirect-None-08617
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirect-None-08618
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirect-None-08619
    如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirect-None-07834
    如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirect-None-07835
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirect-None-08621
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07836
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07837
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07838
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07839
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688
    如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

  • VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689
    如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

  • VUID-vkCmdDrawIndirect-None-07634
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-06666
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07840
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07841
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07843
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-None-07844
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-None-07845
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-None-07846
    如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-None-07847
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-None-07848
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-viewportCount-03417
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-scissorCount-03418
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-viewportCount-03419
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

  • VUID-vkCmdDrawIndirect-viewportCount-04137
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirect-viewportCount-04138
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirect-None-08636
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirect-viewportCount-04139
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirect-shadingRateImage-09233
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-shadingRateImage-09234
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-None-08637
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

  • VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

  • VUID-vkCmdDrawIndirect-None-07878
    如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-None-07879
    如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-None-04876
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-None-04877
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-logicOp-04878
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-08642
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawIndirect-blendEnable-04727
    如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

  • VUID-vkCmdDrawIndirect-None-08643
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

  • VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07284
    如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

    那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawIndirect-None-08644
    如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

    那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

  • VUID-vkCmdDrawIndirect-None-08876
    如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawIndirect-imageView-06172
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndirect-imageView-06173
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndirect-imageView-06174
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndirect-imageView-06175
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndirect-imageView-06176
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndirect-imageView-06177
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndirect-viewMask-06178
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

  • VUID-vkCmdDrawIndirect-colorAttachmentCount-06179
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08910
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08912
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08911
    如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-colorAttachmentCount-09362
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawIndirect-None-09363
    如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawIndirect-None-09364
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawIndirect-None-09365
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawIndirect-None-09366
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawIndirect-rasterizationSamples-09367
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawIndirect-None-09368
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawIndirect-None-09369
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawIndirect-pFragmentSize-09370
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawIndirect-pFragmentSize-09371
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawIndirect-None-07749
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirect-None-08646
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirect-attachmentCount-07750
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

  • VUID-vkCmdDrawIndirect-None-08647
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

  • VUID-vkCmdDrawIndirect-None-07751
    如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09236
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirect-None-07880
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirect-None-07881
    如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08913
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08914
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08915
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08916
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08917
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

  • VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08918
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-imageView-06183
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

  • VUID-vkCmdDrawIndirect-imageView-06184
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

  • VUID-vkCmdDrawIndirect-colorAttachmentCount-06185
    如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

  • VUID-vkCmdDrawIndirect-pDepthAttachment-06186
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndirect-pStencilAttachment-06187
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07285
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

  • VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07286
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07287
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndirect-pNext-07935
    如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

  • VUID-vkCmdDrawIndirect-renderPass-06198
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

  • VUID-vkCmdDrawIndirect-pColorAttachments-08963
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-pDepthAttachment-08964
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-pStencilAttachment-08965
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708
    如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

  • VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709
    如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

  • VUID-vkCmdDrawIndirect-None-07620
    如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07621
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07622
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07623
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-alphaToCoverageEnable-08919
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawIndirect-alphaToCoverageEnable-08920
    如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawIndirect-None-07624
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07625
    如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07626
    如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07627
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-08657
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-07628
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-08658
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-07629
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-08659
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-07630
    如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-07631
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-07632
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-07633
    如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-07635
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09416
    如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirect-None-07636
    如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-07637
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-08666
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-08667
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-08668
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-07638
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-08669
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-08670
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-08671
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirect-None-07849
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-07639
    如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-09650
    如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-07640
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-07641
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-07642
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-07643
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-07644
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-07645
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirect-None-07646
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07647
    如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-pipelineFragmentShadingRate-09238
    如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07648
    如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-None-07649
    如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirect-pColorBlendEnables-07470
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

  • VUID-vkCmdDrawIndirect-rasterizationSamples-07471
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

  • VUID-vkCmdDrawIndirect-samples-07472
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

  • VUID-vkCmdDrawIndirect-samples-07473
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

  • VUID-vkCmdDrawIndirect-rasterizationSamples-07474
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawIndirect-None-09211
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

  • VUID-vkCmdDrawIndirect-firstAttachment-07476
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

  • VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09417
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

  • VUID-vkCmdDrawIndirect-firstAttachment-07477
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09418
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawIndirect-firstAttachment-07478
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09419
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawIndirect-firstAttachment-07479
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

  • VUID-vkCmdDrawIndirect-advancedBlendMaxColorAttachments-07480
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

  • VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-07481
    如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

  • VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07482
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

  • VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07483
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

  • VUID-vkCmdDrawIndirect-sampleLocationsEnable-07484
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

  • VUID-vkCmdDrawIndirect-sampleLocationsEnable-07485
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawIndirect-sampleLocationsEnable-07486
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawIndirect-sampleLocationsEnable-07487
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

  • VUID-vkCmdDrawIndirect-sampleLocationsEnable-07936
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawIndirect-sampleLocationsEnable-07937
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawIndirect-sampleLocationsEnable-07938
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

  • VUID-vkCmdDrawIndirect-coverageModulationTableEnable-07488
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

  • VUID-vkCmdDrawIndirect-rasterizationSamples-07489
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

  • VUID-vkCmdDrawIndirect-coverageToColorEnable-07490
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09420
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawIndirect-coverageReductionMode-07491
    如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

  • VUID-vkCmdDrawIndirect-viewportCount-07492
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

  • VUID-vkCmdDrawIndirect-viewportCount-07493
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirect-viewportCount-09421
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirect-rasterizationSamples-07494
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

  • VUID-vkCmdDrawIndirect-stippledLineEnable-07495
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

  • VUID-vkCmdDrawIndirect-stippledLineEnable-07496
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

  • VUID-vkCmdDrawIndirect-stippledLineEnable-07497
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

  • VUID-vkCmdDrawIndirect-stippledLineEnable-07498
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

  • VUID-vkCmdDrawIndirect-conservativePointAndLineRasterization-07499
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

  • VUID-vkCmdDrawIndirect-stage-07073
    如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

  • VUID-vkCmdDrawIndirect-None-08877
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

  • VUID-vkCmdDrawIndirect-None-07850
    如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

  • VUID-vkCmdDrawIndirect-None-08688
    如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

  • VUID-vkCmdDrawIndirect-None-08689
    如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

  • VUID-vkCmdDrawIndirect-None-08690
    如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

  • VUID-vkCmdDrawIndirect-None-08693
    如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

  • VUID-vkCmdDrawIndirect-None-08694
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndirect-None-08695
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndirect-None-08696
    如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndirect-None-08698
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

  • VUID-vkCmdDrawIndirect-None-08699
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

  • VUID-vkCmdDrawIndirect-None-08878
    所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

  • VUID-vkCmdDrawIndirect-None-08879
    所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

  • VUID-vkCmdDrawIndirect-colorAttachmentCount-09372
    如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

  • VUID-vkCmdDrawIndirect-pDynamicStates-08715
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

  • VUID-vkCmdDrawIndirect-pDynamicStates-08716
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

  • VUID-vkCmdDrawIndirect-None-09116
    如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

  • VUID-vkCmdDrawIndirect-maxFragmentDualSrcAttachments-09239
    如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

  • VUID-vkCmdDrawIndirect-None-09548
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

  • VUID-vkCmdDrawIndirect-None-09549
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

  • VUID-vkCmdDrawIndirect-None-09642
    如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

  • VUID-vkCmdDrawIndirect-None-09643
    如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawIndirect-None-04007
    通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

  • VUID-vkCmdDrawIndirect-None-04008
    如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

  • VUID-vkCmdDrawIndirect-None-02721
    如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

  • VUID-vkCmdDrawIndirect-format-10389
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

  • VUID-vkCmdDrawIndirect-format-10390
    对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

  • VUID-vkCmdDrawIndirect-None-07842
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

  • VUID-vkCmdDrawIndirect-dynamicPrimitiveTopologyUnrestricted-07500
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

  • VUID-vkCmdDrawIndirect-primitiveTopology-10286
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

  • VUID-vkCmdDrawIndirect-pStrides-04913
    如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

  • VUID-vkCmdDrawIndirect-None-04914
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-Input-07939
    如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

  • VUID-vkCmdDrawIndirect-Input-08734
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

  • VUID-vkCmdDrawIndirect-format-08936
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

  • VUID-vkCmdDrawIndirect-format-08937
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

  • VUID-vkCmdDrawIndirect-None-09203
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

  • VUID-vkCmdDrawIndirect-None-04875
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-None-04879
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-None-09637
    如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

  • VUID-vkCmdDrawIndirect-stage-06481
    绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

  • VUID-vkCmdDrawIndirect-None-08885
    必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndirect-None-07619
    如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirect-None-08684
    如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

  • VUID-vkCmdDrawIndirect-None-08685
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

  • VUID-vkCmdDrawIndirect-None-08686
    如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

  • VUID-vkCmdDrawIndirect-None-08687
    如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

  • VUID-vkCmdDrawIndirect-buffer-02708
    如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

  • VUID-vkCmdDrawIndirect-buffer-02709
    buffer 必须 使用设置了 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位来创建

  • VUID-vkCmdDrawIndirect-offset-02710
    offset 必须4 的倍数

  • VUID-vkCmdDrawIndirect-commandBuffer-02711
    commandBuffer 必须 不是受保护的命令缓冲区

  • VUID-vkCmdDrawIndirect-drawCount-02718
    如果 multiDrawIndirect 特性未启用,则 drawCount 必须01

  • VUID-vkCmdDrawIndirect-drawCount-02719
    drawCount 必须 小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

  • VUID-vkCmdDrawIndirect-drawCount-00476
    如果 drawCount 大于 1, 则 stride 必须4 的倍数,并且必须大于或等于 sizeof(VkDrawIndirectCommand)

  • VUID-vkCmdDrawIndirect-drawCount-00487
    如果 drawCount 等于 1,则 (offset + sizeof(VkDrawIndirectCommand)) 必须 小于或等于 buffer 的大小。

  • VUID-vkCmdDrawIndirect-drawCount-00488
    如果 drawCount 大于 1,则 (stride × (drawCount - 1) + offset + sizeof(VkDrawIndirectCommand)) 必须 小于或等于 buffer 的大小。

有效使用(隐式)
  • VUID-vkCmdDrawIndirect-commandBuffer-parameter
    commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

  • VUID-vkCmdDrawIndirect-buffer-parameter
    buffer 必须 是一个有效的 VkBuffer 句柄。

  • VUID-vkCmdDrawIndirect-commandBuffer-recording
    commandBuffer 必须 处于记录状态

  • VUID-vkCmdDrawIndirect-commandBuffer-cmdpool
    分配 commandBufferVkCommandPool 必须 支持图形操作。

  • VUID-vkCmdDrawIndirect-renderpass
    此命令必须仅在渲染通道实例内部调用

  • VUID-vkCmdDrawIndirect-videocoding
    此命令必须仅在视频编码范围之外调用。

  • VUID-vkCmdDrawIndirect-commonparent
    buffercommandBuffer必须 从同一个 VkDevice 创建、分配或检索。

主机同步
  • commandBuffer 的主机访问必须进行外部同步。

  • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

VkDrawIndirectCommand 结构定义如下:

// Provided by VK_VERSION_1_0
typedef struct VkDrawIndirectCommand {
    uint32_t    vertexCount;
    uint32_t    instanceCount;
    uint32_t    firstVertex;
    uint32_t    firstInstance;
} VkDrawIndirectCommand;
  • vertexCount 是要绘制的顶点数。

  • instanceCount 是要绘制的实例数。

  • firstVertex 是要绘制的第一个顶点的索引。

  • firstInstance 是要绘制的第一个实例的实例 ID。

VkDrawIndirectCommand 的成员与 vkCmdDraw 中具有类似名称的参数具有相同的含义。

有效用法
  • VUID-VkDrawIndirectCommand-firstInstance-00501
    如果未启用 drawIndirectFirstInstance 功能,则 firstInstance 必须0

要记录一个从缓冲区获取绘制调用计数的非索引绘制调用,请调用:

// Provided by VK_VERSION_1_2
void vkCmdDrawIndirectCount(
    VkCommandBuffer                             commandBuffer,
    VkBuffer                                    buffer,
    VkDeviceSize                                offset,
    VkBuffer                                    countBuffer,
    VkDeviceSize                                countBufferOffset,
    uint32_t                                    maxDrawCount,
    uint32_t                                    stride);

或等效命令

// Provided by VK_KHR_draw_indirect_count
void vkCmdDrawIndirectCountKHR(
    VkCommandBuffer                             commandBuffer,
    VkBuffer                                    buffer,
    VkDeviceSize                                offset,
    VkBuffer                                    countBuffer,
    VkDeviceSize                                countBufferOffset,
    uint32_t                                    maxDrawCount,
    uint32_t                                    stride);

或等效命令

// Provided by VK_AMD_draw_indirect_count
void vkCmdDrawIndirectCountAMD(
    VkCommandBuffer                             commandBuffer,
    VkBuffer                                    buffer,
    VkDeviceSize                                offset,
    VkBuffer                                    countBuffer,
    VkDeviceSize                                countBufferOffset,
    uint32_t                                    maxDrawCount,
    uint32_t                                    stride);
  • commandBuffer 是要记录命令的命令缓冲区。

  • buffer 是包含绘制参数的缓冲区。

  • offsetbuffer 中参数开始的字节偏移量。

  • countBuffer 是包含绘制计数的缓冲区。

  • countBufferOffsetcountBuffer 中绘制计数开始的字节偏移量。

  • maxDrawCount 指定将要执行的最大绘制次数。实际执行的绘制调用次数是 countBuffer 中指定的计数和 maxDrawCount 中的最小值。

  • stride 是连续的绘制参数集之间的字节步长。

vkCmdDrawIndirectCount 的行为类似于 vkCmdDrawIndirect,区别在于绘制计数是在执行期间由设备从缓冲区读取的。该命令将从位于 countBufferOffsetcountBuffer 中读取一个无符号 32 位整数,并将其用作绘制计数。

有效用法
  • VUID-vkCmdDrawIndirectCount-magFilter-04553
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawIndirectCount-magFilter-09598
    如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawIndirectCount-mipmapMode-04770
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

  • VUID-vkCmdDrawIndirectCount-mipmapMode-09599
    如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

  • VUID-vkCmdDrawIndirectCount-unnormalizedCoordinates-09635
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

  • VUID-vkCmdDrawIndirectCount-None-08609
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

  • VUID-vkCmdDrawIndirectCount-None-08610
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

  • VUID-vkCmdDrawIndirectCount-None-08611
    如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

  • VUID-vkCmdDrawIndirectCount-None-06479
    如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

  • VUID-vkCmdDrawIndirectCount-None-02691
    如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

  • VUID-vkCmdDrawIndirectCount-None-07888
    如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

  • VUID-vkCmdDrawIndirectCount-None-02692
    如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

  • VUID-vkCmdDrawIndirectCount-None-02693
    如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

  • VUID-vkCmdDrawIndirectCount-filterCubic-02694
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695
    此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

  • VUID-vkCmdDrawIndirectCount-cubicRangeClamp-09212
    如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

  • VUID-vkCmdDrawIndirectCount-reductionMode-09213
    此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

  • VUID-vkCmdDrawIndirectCount-selectableCubicWeights-09214
    如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

  • VUID-vkCmdDrawIndirectCount-flags-02696
    此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

  • VUID-vkCmdDrawIndirectCount-OpTypeImage-07027
    对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndirectCount-OpTypeImage-07028
    对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndirectCount-OpTypeImage-07029
    对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndirectCount-OpTypeImage-07030
    对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

  • VUID-vkCmdDrawIndirectCount-None-08600
    对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawIndirectCount-None-08601
    对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

  • VUID-vkCmdDrawIndirectCount-None-10068
    对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

  • VUID-vkCmdDrawIndirectCount-maintenance4-08602
    如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

  • VUID-vkCmdDrawIndirectCount-None-08114
    如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

  • VUID-vkCmdDrawIndirectCount-None-08115
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

  • VUID-vkCmdDrawIndirectCount-None-08116
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

  • VUID-vkCmdDrawIndirectCount-None-08604
    如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

  • VUID-vkCmdDrawIndirectCount-None-08117
    如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

  • VUID-vkCmdDrawIndirectCount-None-08119
    如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawIndirectCount-None-08605
    如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

  • VUID-vkCmdDrawIndirectCount-None-08606
    如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

  • VUID-vkCmdDrawIndirectCount-None-08608
    如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

  • VUID-vkCmdDrawIndirectCount-None-08607
    如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

  • VUID-vkCmdDrawIndirectCount-uniformBuffers-06935
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndirectCount-None-08612
    如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndirectCount-storageBuffers-06936
    如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

  • VUID-vkCmdDrawIndirectCount-None-08613
    如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

  • VUID-vkCmdDrawIndirectCount-commandBuffer-02707
    如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

  • VUID-vkCmdDrawIndirectCount-None-06550
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

  • VUID-vkCmdDrawIndirectCount-ConstOffset-06551
    如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

  • VUID-vkCmdDrawIndirectCount-viewType-07752
    如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

  • VUID-vkCmdDrawIndirectCount-format-07753
    如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

  • VUID-vkCmdDrawIndirectCount-OpImageWrite-08795
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

  • VUID-vkCmdDrawIndirectCount-OpImageWrite-08796
    如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

  • VUID-vkCmdDrawIndirectCount-OpImageWrite-04469
    如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

  • VUID-vkCmdDrawIndirectCount-SampledType-04470
    如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawIndirectCount-SampledType-04471
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawIndirectCount-SampledType-04472
    如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

  • VUID-vkCmdDrawIndirectCount-SampledType-04473
    如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

  • VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04474
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

  • VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04475
    如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

  • VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06971
    如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06972
    如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

  • VUID-vkCmdDrawIndirectCount-OpImageBoxFilterQCOM-06973
    如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

  • VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSSDQCOM-06974
    如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06975
    如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06976
    如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06977
    如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06978
    如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

  • VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09215
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

  • VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09216
    如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

  • VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09217
    如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

  • VUID-vkCmdDrawIndirectCount-None-07288
    此命令执行的任何着色器调用必须终止

  • VUID-vkCmdDrawIndirectCount-None-09600
    如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

  • VUID-vkCmdDrawIndirectCount-renderPass-02684
    当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

  • VUID-vkCmdDrawIndirectCount-subpass-02685
    当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

  • VUID-vkCmdDrawIndirectCount-None-07748
    如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

  • VUID-vkCmdDrawIndirectCount-OpTypeImage-07468
    如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

  • VUID-vkCmdDrawIndirectCount-None-07469
    在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

  • VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09595
    在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

  • VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09596
    如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

  • VUID-vkCmdDrawIndirectCount-InputAttachmentIndex-09597
    如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

  • VUID-vkCmdDrawIndirectCount-None-06537
    当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndirectCount-None-09001
    如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndirectCount-None-09002
    如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

    • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

    • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

      • 没有绑定的图形管线,或者

      • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

    必须不能以任何方式访问,除非作为此命令的附件。

  • VUID-vkCmdDrawIndirectCount-None-09003
    如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

  • VUID-vkCmdDrawIndirectCount-None-06539
    如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

  • VUID-vkCmdDrawIndirectCount-None-06886
    如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

  • VUID-vkCmdDrawIndirectCount-None-06887
    如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

  • VUID-vkCmdDrawIndirectCount-None-07831
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirectCount-None-07832
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirectCount-None-07833
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirectCount-None-08617
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirectCount-None-08618
    如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirectCount-None-08619
    如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirectCount-None-07834
    如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirectCount-None-07835
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

  • VUID-vkCmdDrawIndirectCount-None-08621
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07836
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07837
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07838
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07839
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688
    如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

  • VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689
    如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

  • VUID-vkCmdDrawIndirectCount-None-07634
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-06666
    如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07840
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07841
    如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07843
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-None-07844
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-None-07845
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-None-07846
    如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-None-07847
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-None-07848
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-viewportCount-03417
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-scissorCount-03418
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-viewportCount-03419
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

  • VUID-vkCmdDrawIndirectCount-viewportCount-04137
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirectCount-viewportCount-04138
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

  • VUID-vkCmdDrawIndirectCount-None-08636
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirectCount-viewportCount-04139
    如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirectCount-shadingRateImage-09233
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirectCount-shadingRateImage-09234
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirectCount-None-08637
    如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

  • VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

  • VUID-vkCmdDrawIndirectCount-None-07878
    如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirectCount-None-07879
    如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirectCount-None-04876
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirectCount-None-04877
    如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirectCount-logicOp-04878
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

  • VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642
    如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

  • VUID-vkCmdDrawIndirectCount-blendEnable-04727
    如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

  • VUID-vkCmdDrawIndirectCount-None-08643
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

  • VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07284
    如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

    那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawIndirectCount-None-08644
    如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

    那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

  • VUID-vkCmdDrawIndirectCount-None-08876
    如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

  • VUID-vkCmdDrawIndirectCount-imageView-06172
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndirectCount-imageView-06173
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndirectCount-imageView-06174
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndirectCount-imageView-06175
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndirectCount-imageView-06176
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

  • VUID-vkCmdDrawIndirectCount-imageView-06177
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

  • VUID-vkCmdDrawIndirectCount-viewMask-06178
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

  • VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06179
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08910
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08912
    如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08911
    如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09362
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawIndirectCount-None-09363
    如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

  • VUID-vkCmdDrawIndirectCount-None-09364
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawIndirectCount-None-09365
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawIndirectCount-None-09366
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

  • VUID-vkCmdDrawIndirectCount-rasterizationSamples-09367
    如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

  • VUID-vkCmdDrawIndirectCount-None-09368
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawIndirectCount-pFragmentSize-09370
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

  • VUID-vkCmdDrawIndirectCount-pFragmentSize-09371
    如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

  • VUID-vkCmdDrawIndirectCount-None-07749
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirectCount-None-08646
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirectCount-attachmentCount-07750
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

  • VUID-vkCmdDrawIndirectCount-None-08647
    如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

  • VUID-vkCmdDrawIndirectCount-None-07751
    如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09236
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirectCount-None-07880
    如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

  • VUID-vkCmdDrawIndirectCount-None-07881
    如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08913
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08914
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08915
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08916
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08917
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

  • VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08918
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-imageView-06183
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

  • VUID-vkCmdDrawIndirectCount-imageView-06184
    如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

  • VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06185
    如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

  • VUID-vkCmdDrawIndirectCount-pDepthAttachment-06186
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07285
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

  • VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07286
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07287
    如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

  • VUID-vkCmdDrawIndirectCount-pNext-07935
    如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

  • VUID-vkCmdDrawIndirectCount-renderPass-06198
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

  • VUID-vkCmdDrawIndirectCount-pColorAttachments-08963
    如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-pDepthAttachment-08964
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-pStencilAttachment-08965
    如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

  • VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708
    如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

  • VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709
    如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

  • VUID-vkCmdDrawIndirectCount-None-07620
    如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07621
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07622
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07623
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-alphaToCoverageEnable-08919
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawIndirectCount-alphaToCoverageEnable-08920
    如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

  • VUID-vkCmdDrawIndirectCount-None-07624
    如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07625
    如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07626
    如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07627
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-08657
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-07628
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-08658
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-07629
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-08659
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-07630
    如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-07631
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-07632
    如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-07633
    如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-07635
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09416
    如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

  • VUID-vkCmdDrawIndirectCount-None-07636
    如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-07637
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-08666
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-08667
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-08668
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-07638
    如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-08669
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-08670
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-08671
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

  • VUID-vkCmdDrawIndirectCount-None-07849
    如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-07639
    如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-09650
    如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-07640
    如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-07641
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-07642
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-07643
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-07644
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-07645
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

  • VUID-vkCmdDrawIndirectCount-None-
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07647
    如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-pipelineFragmentShadingRate-09238
    如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07648
    如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-None-07649
    如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

  • VUID-vkCmdDrawIndirectCount-pColorBlendEnables-07470
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

  • VUID-vkCmdDrawIndirectCount-rasterizationSamples-07471
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

  • VUID-vkCmdDrawIndirectCount-samples-07472
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

  • VUID-vkCmdDrawIndirectCount-samples-07473
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

  • VUID-vkCmdDrawIndirectCount-rasterizationSamples-07474
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

  • VUID-vkCmdDrawIndirectCount-None-09211
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

  • VUID-vkCmdDrawIndirectCount-firstAttachment-07476
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

  • VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09417
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

  • VUID-vkCmdDrawIndirectCount-firstAttachment-07477
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09418
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

  • VUID-vkCmdDrawIndirectCount-firstAttachment-07478
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09419
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

  • VUID-vkCmdDrawIndirectCount-firstAttachment-07479
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

  • VUID-vkCmdDrawIndirectCount-advancedBlendMaxColorAttachments-07480
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

  • VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481
    如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

  • VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07482
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

  • VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07483
    如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

  • VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07484
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

  • VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07485
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07486
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

  • VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07487
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

  • VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07936
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07937
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

  • VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07938
    如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

  • VUID-vkCmdDrawIndirectCount-coverageModulationTableEnable-07488
    如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

  • VUID-vkCmdDrawIndirectCount-rasterizationSamples-07489
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

  • VUID-vkCmdDrawIndirectCount-coverageToColorEnable-07490
    如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09420
    如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

  • VUID-vkCmdDrawIndirectCount-coverageReductionMode-07491
    如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

  • VUID-vkCmdDrawIndirectCount-viewportCount-07492
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

  • VUID-vkCmdDrawIndirectCount-viewportCount-07493
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirectCount-viewportCount-09421
    如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

  • VUID-vkCmdDrawIndirectCount-rasterizationSamples-07494
    如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

  • VUID-vkCmdDrawIndirectCount-stippledLineEnable-07495
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

  • VUID-vkCmdDrawIndirectCount-stippledLineEnable-07496
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

  • VUID-vkCmdDrawIndirectCount-stippledLineEnable-07497
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

  • VUID-vkCmdDrawIndirectCount-stippledLineEnable-07498
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

  • VUID-vkCmdDrawIndirectCount-conservativePointAndLineRasterization-07499
    如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

  • VUID-vkCmdDrawIndirectCount-stage-07073
    如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

  • VUID-vkCmdDrawIndirectCount-None-08877
    如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

  • VUID-vkCmdDrawIndirectCount-None-07850
    如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

  • VUID-vkCmdDrawIndirectCount-None-08688
    如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

  • VUID-vkCmdDrawIndirectCount-None-08689
    如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

  • VUID-vkCmdDrawIndirectCount-None-08690
    如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

  • VUID-vkCmdDrawIndirectCount-None-08693
    如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

  • VUID-vkCmdDrawIndirectCount-None-08694
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndirectCount-None-08695
    如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndirectCount-None-08696
    如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

  • VUID-vkCmdDrawIndirectCount-None-08698
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

  • VUID-vkCmdDrawIndirectCount-None-08699
    如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

  • VUID-vkCmdDrawIndirectCount-None-08878
    所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

  • VUID-vkCmdDrawIndirectCount-None-08879
    所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

  • VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09372
    如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

  • VUID-vkCmdDrawIndirectCount-pDynamicStates-08715
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

  • VUID-vkCmdDrawIndirectCount-pDynamicStates-08716
    如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

  • VUID-vkCmdDrawIndirectCount-None-09116
    如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

  • VUID-vkCmdDrawIndirectCount-maxFragmentDualSrcAttachments-09239
    如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

  • VUID-vkCmdDrawIndirectCount-None-09548
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

  • VUID-vkCmdDrawIndirectCount-None-09549
    如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

  • VUID-vkCmdDrawIndirectCount-None-09642
    如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

  • VUID-vkCmdDrawIndirectCount-None-09643
    如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawIndirectCount-None-04007
      通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

    • VUID-vkCmdDrawIndirectCount-None-04008
      如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

    • VUID-vkCmdDrawIndirectCount-None-02721
      如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

    • VUID-vkCmdDrawIndirectCount-format-10389
      对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

    • VUID-vkCmdDrawIndirectCount-format-10390
      对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

    • VUID-vkCmdDrawIndirectCount-None-07842
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

    • VUID-vkCmdDrawIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

    • VUID-vkCmdDrawIndirectCount-primitiveTopology-10286
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

    • VUID-vkCmdDrawIndirectCount-pStrides-04913
      如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

    • VUID-vkCmdDrawIndirectCount-None-04914
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectCount-Input-07939
      如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

    • VUID-vkCmdDrawIndirectCount-Input-08734
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

    • VUID-vkCmdDrawIndirectCount-format-08936
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

    • VUID-vkCmdDrawIndirectCount-format-08937
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

    • VUID-vkCmdDrawIndirectCount-None-09203
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

    • VUID-vkCmdDrawIndirectCount-None-04875
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectCount-None-04879
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectCount-None-09637
      如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

    • VUID-vkCmdDrawIndirectCount-stage-06481
      绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

    • VUID-vkCmdDrawIndirectCount-None-08885
      必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndirectCount-None-07619
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectCount-None-08684
      如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

    • VUID-vkCmdDrawIndirectCount-None-08685
      如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

    • VUID-vkCmdDrawIndirectCount-None-08686
      如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

    • VUID-vkCmdDrawIndirectCount-None-08687
      如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

    • VUID-vkCmdDrawIndirectCount-buffer-02708
      如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

    • VUID-vkCmdDrawIndirectCount-buffer-02709
      buffer 必须 使用设置了 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位来创建

    • VUID-vkCmdDrawIndirectCount-offset-02710
      offset 必须4 的倍数

    • VUID-vkCmdDrawIndirectCount-commandBuffer-02711
      commandBuffer 必须 不是受保护的命令缓冲区

    • VUID-vkCmdDrawIndirectCount-countBuffer-02714
      如果 countBuffer 不是稀疏的,则它必须完全且连续地绑定到单个 VkDeviceMemory 对象。

    • VUID-vkCmdDrawIndirectCount-countBuffer-02715
      countBuffer 必须已使用设置的 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位创建。

    • VUID-vkCmdDrawIndirectCount-countBufferOffset-02716
      countBufferOffset 必须4 的倍数。

    • VUID-vkCmdDrawIndirectCount-countBuffer-02717
      存储在 countBuffer 中的计数必须小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

    • VUID-vkCmdDrawIndirectCount-countBufferOffset-04129
      (countBufferOffset + sizeof(uint32_t)) 必须小于或等于 countBuffer 的大小。

    • VUID-vkCmdDrawIndirectCount-None-04445
      如果未启用 drawIndirectCount 功能,则必须不使用此函数。

    • VUID-vkCmdDrawIndirectCount-stride-03110
      stride 必须4 的倍数,并且必须大于或等于 sizeof(VkDrawIndirectCommand)。

    • VUID-vkCmdDrawIndirectCount-maxDrawCount-03111
      如果 maxDrawCount 大于或等于 1,则 (stride × (maxDrawCount - 1) + offset + sizeof(VkDrawIndirectCommand)) 必须小于或等于 buffer 的大小。

    有效使用(隐式)
    • VUID-vkCmdDrawIndirectCount-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawIndirectCount-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawIndirectCount-countBuffer-parameter
      countBuffer 必须是有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawIndirectCount-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawIndirectCount-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawIndirectCount-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawIndirectCount-commonparent
      buffercommandBuffercountBuffer 中的每一个必须是从同一个 VkDevice 创建、分配或检索的。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    要记录索引间接绘制命令,请调用

    // Provided by VK_VERSION_1_0
    void vkCmdDrawIndexedIndirect(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset,
        uint32_t                                    drawCount,
        uint32_t                                    stride);
    • commandBuffer 是要记录命令的命令缓冲区。

    • buffer 是包含绘制参数的缓冲区。

    • offsetbuffer 中参数开始的字节偏移量。

    • drawCount 是要执行的绘制次数,可以为零。

    • stride 是连续的绘制参数集之间的字节步长。

    vkCmdDrawIndexedIndirect 的行为类似于 vkCmdDrawIndexed,只是参数由设备在执行期间从缓冲区读取。该命令执行 drawCount 次绘制,参数从 buffer 开始,从 offset 开始,并且每次连续绘制增加 stride 个字节。每次绘制的参数都编码在 VkDrawIndexedIndirectCommand 结构的数组中。如果 drawCount 小于或等于 1,则忽略 stride

    有效用法
    • VUID-vkCmdDrawIndexedIndirect-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawIndexedIndirect-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawIndexedIndirect-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawIndexedIndirect-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawIndexedIndirect-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawIndexedIndirect-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawIndexedIndirect-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawIndexedIndirect-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawIndexedIndirect-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawIndexedIndirect-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawIndexedIndirect-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawIndexedIndirect-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawIndexedIndirect-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawIndexedIndirect-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawIndexedIndirect-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawIndexedIndirect-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawIndexedIndirect-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndexedIndirect-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawIndexedIndirect-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawIndexedIndirect-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawIndexedIndirect-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawIndexedIndirect-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawIndexedIndirect-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawIndexedIndirect-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawIndexedIndirect-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawIndexedIndirect-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawIndexedIndirect-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawIndexedIndirect-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawIndexedIndirect-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawIndexedIndirect-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawIndexedIndirect-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawIndexedIndirect-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndexedIndirect-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndexedIndirect-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndexedIndirect-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawIndexedIndirect-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawIndexedIndirect-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawIndexedIndirect-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawIndexedIndirect-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawIndexedIndirect-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawIndexedIndirect-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawIndexedIndirect-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawIndexedIndirect-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawIndexedIndirect-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawIndexedIndirect-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirect-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawIndexedIndirect-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawIndexedIndirect-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawIndexedIndirect-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawIndexedIndirect-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawIndexedIndirect-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawIndexedIndirect-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawIndexedIndirect-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawIndexedIndirect-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawIndexedIndirect-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawIndexedIndirect-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawIndexedIndirect-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndexedIndirect-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndexedIndirect-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndexedIndirect-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawIndexedIndirect-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawIndexedIndirect-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawIndexedIndirect-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawIndexedIndirect-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawIndexedIndirect-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawIndexedIndirect-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirect-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirect-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawIndexedIndirect-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawIndexedIndirect-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirect-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawIndexedIndirect-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawIndexedIndirect-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawIndexedIndirect-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirect-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirect-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirect-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirect-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirect-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirect-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawIndexedIndirect-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawIndexedIndirect-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawIndexedIndirect-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawIndexedIndirect-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawIndexedIndirect-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawIndexedIndirect-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawIndexedIndirect-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawIndexedIndirect-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawIndexedIndirect-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirect-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirect-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawIndexedIndirect-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawIndexedIndirect-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirect-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirect-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawIndexedIndirect-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。


    • 如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndexedIndirect-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawIndexedIndirect-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawIndexedIndirect-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawIndexedIndirect-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawIndexedIndirect-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawIndexedIndirect-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirect-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirect-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirect-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawIndexedIndirect-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawIndexedIndirect-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawIndexedIndirect-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawIndexedIndirect-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawIndexedIndirect-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawIndexedIndirect-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawIndexedIndirect-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawIndexedIndirect-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawIndexedIndirect-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawIndexedIndirect-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawIndexedIndirect-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawIndexedIndirect-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawIndexedIndirect-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirect-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawIndexedIndirect-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawIndexedIndirect-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawIndexedIndirect-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawIndexedIndirect-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawIndexedIndirect-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawIndexedIndirect-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawIndexedIndirect-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawIndexedIndirect-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawIndexedIndirect-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndexedIndirect-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndexedIndirect-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndexedIndirect-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawIndexedIndirect-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawIndexedIndirect-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawIndexedIndirect-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawIndexedIndirect-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawIndexedIndirect-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawIndexedIndirect-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawIndexedIndirect-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawIndexedIndirect-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawIndexedIndirect-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawIndexedIndirect-None-04007
      通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

    • VUID-vkCmdDrawIndexedIndirect-None-04008
      如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

    • VUID-vkCmdDrawIndexedIndirect-None-02721
      如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

    • VUID-vkCmdDrawIndexedIndirect-format-10389
      对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

    • VUID-vkCmdDrawIndexedIndirect-format-10390
      对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

    • VUID-vkCmdDrawIndexedIndirect-None-07842
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

    • VUID-vkCmdDrawIndexedIndirect-dynamicPrimitiveTopologyUnrestricted-07500
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

    • VUID-vkCmdDrawIndexedIndirect-primitiveTopology-10286
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

    • VUID-vkCmdDrawIndexedIndirect-pStrides-04913
      如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

    • VUID-vkCmdDrawIndexedIndirect-None-04914
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-Input-07939
      如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

    • VUID-vkCmdDrawIndexedIndirect-Input-08734
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

    • VUID-vkCmdDrawIndexedIndirect-format-08936
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

    • VUID-vkCmdDrawIndexedIndirect-format-08937
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

    • VUID-vkCmdDrawIndexedIndirect-None-09203
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

    • VUID-vkCmdDrawIndexedIndirect-None-04875
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-None-04879
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-None-09637
      如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirect-stage-06481
      绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

    • VUID-vkCmdDrawIndexedIndirect-None-08885
      必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndexedIndirect-None-07619
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirect-None-08684
      如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

    • VUID-vkCmdDrawIndexedIndirect-None-08685
      如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

    • VUID-vkCmdDrawIndexedIndirect-None-08686
      如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

    • VUID-vkCmdDrawIndexedIndirect-None-08687
      如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

    • VUID-vkCmdDrawIndexedIndirect-buffer-02708
      如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

    • VUID-vkCmdDrawIndexedIndirect-buffer-02709
      buffer 必须 使用设置了 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位来创建

    • VUID-vkCmdDrawIndexedIndirect-offset-02710
      offset 必须4 的倍数

    • VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711
      commandBuffer 必须 不是受保护的命令缓冲区

    • VUID-vkCmdDrawIndexedIndirect-drawCount-02718
      如果 multiDrawIndirect 特性未启用,则 drawCount 必须01

    • VUID-vkCmdDrawIndexedIndirect-drawCount-02719
      drawCount 必须 小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

    • VUID-vkCmdDrawIndexedIndirect-None-07312
      如果未启用 maintenance6 功能,则必须绑定有效的索引缓冲区。

    • VUID-vkCmdDrawIndexedIndirect-drawCount-00528
      如果 drawCount 大于 1,则 stride 必须4 的倍数,并且必须大于或等于 sizeof(VkDrawIndexedIndirectCommand)

    • VUID-vkCmdDrawIndexedIndirect-drawCount-00539
      如果 drawCount 等于 1,则 (offset + sizeof(VkDrawIndexedIndirectCommand)) 必须小于或等于 buffer 的大小

    • VUID-vkCmdDrawIndexedIndirect-drawCount-00540
      如果 drawCount 大于 1,则 (stride × (drawCount - 1) + offset + sizeof(VkDrawIndexedIndirectCommand)) 必须小于或等于 buffer 的大小

    有效使用(隐式)
    • VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawIndexedIndirect-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawIndexedIndirect-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawIndexedIndirect-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawIndexedIndirect-commonparent
      buffercommandBuffer必须 从同一个 VkDevice 创建、分配或检索。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    VkDrawIndexedIndirectCommand 结构定义如下:

    // Provided by VK_VERSION_1_0
    typedef struct VkDrawIndexedIndirectCommand {
        uint32_t    indexCount;
        uint32_t    instanceCount;
        uint32_t    firstIndex;
        int32_t     vertexOffset;
        uint32_t    firstInstance;
    } VkDrawIndexedIndirectCommand;
    • indexCount 是要绘制的顶点数。

    • instanceCount 是要绘制的实例数。

    • firstIndex 是索引缓冲区内的基本索引。

    • vertexOffset 是在索引到顶点缓冲区之前添加到顶点索引的值。

    • firstInstance 是要绘制的第一个实例的实例 ID。

    VkDrawIndexedIndirectCommand 的成员与 vkCmdDrawIndexed 中同名参数的含义相同。

    有效用法
    • VUID-VkDrawIndexedIndirectCommand-robustBufferAccess2-08798
      如果未启用 robustBufferAccess2 功能,则 (indexSize × (firstIndex + indexCount) + offset) 必须小于或等于绑定的索引缓冲区的大小。其中 indexSize 基于 indexType 指定的类型,并且索引缓冲区、indexTypeoffset 通过 vkCmdBindIndexBuffervkCmdBindIndexBuffer2 指定。如果使用 vkCmdBindIndexBuffer2 绑定索引缓冲区,则绑定索引缓冲区的大小为 vkCmdBindIndexBuffer2::size

    • VUID-VkDrawIndexedIndirectCommand-firstInstance-00554
      如果未启用 drawIndirectFirstInstance 功能,则 firstInstance 必须0

    要记录从缓冲区获取绘制调用计数的索引绘制调用,请调用:

    // Provided by VK_VERSION_1_2
    void vkCmdDrawIndexedIndirectCount(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset,
        VkBuffer                                    countBuffer,
        VkDeviceSize                                countBufferOffset,
        uint32_t                                    maxDrawCount,
        uint32_t                                    stride);

    或等效命令

    // Provided by VK_KHR_draw_indirect_count
    void vkCmdDrawIndexedIndirectCountKHR(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset,
        VkBuffer                                    countBuffer,
        VkDeviceSize                                countBufferOffset,
        uint32_t                                    maxDrawCount,
        uint32_t                                    stride);

    或等效命令

    // Provided by VK_AMD_draw_indirect_count
    void vkCmdDrawIndexedIndirectCountAMD(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset,
        VkBuffer                                    countBuffer,
        VkDeviceSize                                countBufferOffset,
        uint32_t                                    maxDrawCount,
        uint32_t                                    stride);
    • commandBuffer 是要记录命令的命令缓冲区。

    • buffer 是包含绘制参数的缓冲区。

    • offsetbuffer 中参数开始的字节偏移量。

    • countBuffer 是包含绘制计数的缓冲区。

    • countBufferOffsetcountBuffer 中绘制计数开始的字节偏移量。

    • maxDrawCount 指定将要执行的最大绘制次数。实际执行的绘制调用次数是 countBuffer 中指定的计数和 maxDrawCount 中的最小值。

    • stride 是连续的绘制参数集之间的字节步长。

    vkCmdDrawIndexedIndirectCount 的行为类似于 vkCmdDrawIndexedIndirect,区别在于绘制计数由设备在执行期间从缓冲区读取。该命令将从位于 countBufferOffsetcountBuffer 中读取一个无符号 32 位整数,并将其用作绘制计数。

    有效用法
    • VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawIndexedIndirectCount-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawIndexedIndirectCount-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawIndexedIndirectCount-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawIndexedIndirectCount-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawIndexedIndirectCount-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawIndexedIndirectCount-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawIndexedIndirectCount-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawIndexedIndirectCount-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawIndexedIndirectCount-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawIndexedIndirectCount-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawIndexedIndirectCount-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawIndexedIndirectCount-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndexedIndirectCount-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawIndexedIndirectCount-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawIndexedIndirectCount-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawIndexedIndirectCount-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawIndexedIndirectCount-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawIndexedIndirectCount-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawIndexedIndirectCount-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawIndexedIndirectCount-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawIndexedIndirectCount-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawIndexedIndirectCount-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawIndexedIndirectCount-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawIndexedIndirectCount-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawIndexedIndirectCount-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawIndexedIndirectCount-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawIndexedIndirectCount-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawIndexedIndirectCount-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawIndexedIndirectCount-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawIndexedIndirectCount-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawIndexedIndirectCount-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawIndexedIndirectCount-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawIndexedIndirectCount-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawIndexedIndirectCount-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirectCount-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawIndexedIndirectCount-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirectCount-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirectCount-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirectCount-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirectCount-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirectCount-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndexedIndirectCount-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawIndexedIndirectCount-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawIndexedIndirectCount-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawIndexedIndirectCount-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirectCount-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirectCount-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawIndexedIndirectCount-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawIndexedIndirectCount-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirectCount-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndexedIndirectCount-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawIndexedIndirectCount-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndexedIndirectCount-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawIndexedIndirectCount-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawIndexedIndirectCount-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndexedIndirectCount-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawIndexedIndirectCount-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawIndexedIndirectCount-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawIndexedIndirectCount-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawIndexedIndirectCount-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawIndexedIndirectCount-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawIndexedIndirectCount-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawIndexedIndirectCount-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawIndexedIndirectCount-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawIndexedIndirectCount-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawIndexedIndirectCount-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawIndexedIndirectCount-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawIndexedIndirectCount-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawIndexedIndirectCount-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawIndexedIndirectCount-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawIndexedIndirectCount-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawIndexedIndirectCount-None-04007
      通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

    • VUID-vkCmdDrawIndexedIndirectCount-None-04008
      如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

    • VUID-vkCmdDrawIndexedIndirectCount-None-02721
      如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

    • VUID-vkCmdDrawIndexedIndirectCount-format-10389
      对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

    • VUID-vkCmdDrawIndexedIndirectCount-format-10390
      对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

    • VUID-vkCmdDrawIndexedIndirectCount-None-07842
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

    • VUID-vkCmdDrawIndexedIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

    • VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-10286
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

    • VUID-vkCmdDrawIndexedIndirectCount-pStrides-04913
      如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

    • VUID-vkCmdDrawIndexedIndirectCount-None-04914
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-Input-07939
      如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

    • VUID-vkCmdDrawIndexedIndirectCount-Input-08734
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

    • VUID-vkCmdDrawIndexedIndirectCount-format-08936
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

    • VUID-vkCmdDrawIndexedIndirectCount-format-08937
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

    • VUID-vkCmdDrawIndexedIndirectCount-None-09203
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

    • VUID-vkCmdDrawIndexedIndirectCount-None-04875
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-04879
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-09637
      如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

    • VUID-vkCmdDrawIndexedIndirectCount-stage-06481
      绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

    • VUID-vkCmdDrawIndexedIndirectCount-None-08885
      必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndexedIndirectCount-None-07619
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndexedIndirectCount-None-08684
      如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

    • VUID-vkCmdDrawIndexedIndirectCount-None-08685
      如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

    • VUID-vkCmdDrawIndexedIndirectCount-None-08686
      如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

    • VUID-vkCmdDrawIndexedIndirectCount-None-08687
      如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

    • VUID-vkCmdDrawIndexedIndirectCount-buffer-02708
      如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

    • VUID-vkCmdDrawIndexedIndirectCount-buffer-02709
      buffer 必须 使用设置了 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位来创建

    • VUID-vkCmdDrawIndexedIndirectCount-offset-02710
      offset 必须4 的倍数

    • VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711
      commandBuffer 必须 不是受保护的命令缓冲区

    • VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714
      如果 countBuffer 不是稀疏的,则它必须完全且连续地绑定到单个 VkDeviceMemory 对象。

    • VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715
      countBuffer 必须已使用设置的 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位创建。

    • VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716
      countBufferOffset 必须4 的倍数。

    • VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717
      存储在 countBuffer 中的计数必须小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

    • VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129
      (countBufferOffset + sizeof(uint32_t)) 必须小于或等于 countBuffer 的大小。

    • VUID-vkCmdDrawIndexedIndirectCount-None-04445
      如果未启用 drawIndirectCount 功能,则必须不使用此函数。

    • VUID-vkCmdDrawIndexedIndirectCount-None-07312
      如果未启用 maintenance6 功能,则必须绑定有效的索引缓冲区。

    • VUID-vkCmdDrawIndexedIndirectCount-stride-03142
      stride 必须4 的倍数,并且必须大于或等于 sizeof(VkDrawIndexedIndirectCommand)

    • VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143
      如果 maxDrawCount 大于或等于 1,则 (stride × (maxDrawCount - 1) + offset + sizeof(VkDrawIndexedIndirectCommand)) 必须小于或等于 buffer 的大小

    有效使用(隐式)
    • VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter
      countBuffer 必须是有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawIndexedIndirectCount-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawIndexedIndirectCount-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawIndexedIndirectCount-commonparent
      buffercommandBuffercountBuffer 中的每一个必须是从同一个 VkDevice 创建、分配或检索的。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    绘制变换反馈

    可以通过将一个或多个变换反馈缓冲区绑定为顶点缓冲区来绘制先前在活动变换反馈期间捕获的顶点数据。在将缓冲区用作变换反馈缓冲区和顶点缓冲区之间需要一个管线屏障,以确保当数据作为顶点属性读取时,对变换反馈缓冲区的所有写入都是可见的。源访问是 VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,目标访问是 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,对应的管线阶段分别是 VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXTVK_PIPELINE_STAGE_VERTEX_INPUT_BIT。由 vkCmdEndTransformFeedbackEXT 写入到计数器缓冲区的值**可以**用来确定绘制的顶点数量。在将计数器缓冲区用于 vkCmdEndTransformFeedbackEXTvkCmdDrawIndirectByteCountEXT 之间需要一个管线屏障,其中源访问是 VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,目标访问是 VK_ACCESS_INDIRECT_COMMAND_READ_BIT,对应的管线阶段分别是 VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXTVK_PIPELINE_STAGE_DRAW_INDIRECT_BIT

    要记录一个非索引绘制调用,其中顶点计数基于从缓冲区读取的字节计数以及传入的顶点步幅参数,请调用

    // Provided by VK_EXT_transform_feedback
    void vkCmdDrawIndirectByteCountEXT(
        VkCommandBuffer                             commandBuffer,
        uint32_t                                    instanceCount,
        uint32_t                                    firstInstance,
        VkBuffer                                    counterBuffer,
        VkDeviceSize                                counterBufferOffset,
        uint32_t                                    counterOffset,
        uint32_t                                    vertexStride);
    • commandBuffer 是要记录命令的命令缓冲区。

    • instanceCount 是要绘制的实例数。

    • firstInstance 是要绘制的第一个实例的实例 ID。

    • counterBuffer 是从中读取字节计数的缓冲区句柄。

    • counterBufferOffset 是缓冲区中的偏移量,用于读取字节计数,该计数用于计算此绘制调用的顶点计数。

    • counterOffset 是从 counterBuffercounterBufferOffset 处读取的字节计数中减去的偏移量。

    • vertexStride 是顶点数据每个元素之间的字节步幅,用于根据计数器值计算顶点计数。此值通常与在捕获变换反馈时图形管线状态中用作 XfbStride 的值相同。

    执行命令时,基元的组装方式与 vkCmdDraw 的方式相同,除了 vertexCount 是基于从 counterBuffer 在偏移量 counterBufferOffset 处读取的字节计数来计算的。组装的基元执行绑定的图形管线。

    有效 vertexCount 的计算方式如下

    const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset;
    vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);

    有效的 firstVertex 为零。

    有效用法
    • VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawIndirectByteCountEXT-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawIndirectByteCountEXT-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawIndirectByteCountEXT-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawIndirectByteCountEXT-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawIndirectByteCountEXT-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawIndirectByteCountEXT-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawIndirectByteCountEXT-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndirectByteCountEXT-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawIndirectByteCountEXT-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawIndirectByteCountEXT-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawIndirectByteCountEXT-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawIndirectByteCountEXT-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawIndirectByteCountEXT-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawIndirectByteCountEXT-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawIndirectByteCountEXT-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawIndirectByteCountEXT-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndirectByteCountEXT-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndirectByteCountEXT-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndirectByteCountEXT-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndirectByteCountEXT-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawIndirectByteCountEXT-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawIndirectByteCountEXT-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndirectByteCountEXT-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawIndirectByteCountEXT-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawIndirectByteCountEXT-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawIndirectByteCountEXT-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawIndirectByteCountEXT-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawIndirectByteCountEXT-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawIndirectByteCountEXT-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawIndirectByteCountEXT-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawIndirectByteCountEXT-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawIndirectByteCountEXT-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawIndirectByteCountEXT-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-04007
      通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须绑定有效的或VK_NULL_HANDLE 缓冲区。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-04008
      如果未启用nullDescriptor功能,则通过顶点着色器入口点的接口中声明的顶点输入变量访问的所有顶点输入绑定必须不是VK_NULL_HANDLE

    • VUID-vkCmdDrawIndirectByteCountEXT-None-02721
      如果未启用robustBufferAccess功能,并且该管道的创建没有为vertexInputs启用 VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS,则对于给定的顶点缓冲区绑定,提取的任何属性数据必须完全包含在相应的顶点缓冲区绑定中,如顶点输入描述中所述。

    • VUID-vkCmdDrawIndirectByteCountEXT-format-10389
      对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format打包格式,并且未启用legacyVertexAttributes,则根据顶点输入计算计算的attribAddress必须format的大小的倍数。

    • VUID-vkCmdDrawIndirectByteCountEXT-format-10390
      对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::formatVkVertexInputAttributeDescription2EXT::format不是打包格式,并且要么未启用legacyVertexAttributes,要么format具有 64 位组件,则根据顶点输入计算计算的attribAddress必须format的组件大小的倍数。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07842
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是使用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态启用的,那么在本次绘制命令之前,必须调用过 vkCmdSetPrimitiveTopology 并且没有在当前命令缓冲区中被后续失效

    • VUID-vkCmdDrawIndirectByteCountEXT-dynamicPrimitiveTopologyUnrestricted-07500
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY 动态状态且 dynamicPrimitiveTopologyUnrestrictedVK_FALSE 的情况下创建的,则 vkCmdSetPrimitiveTopologyprimitiveTopology 参数必须与管线 VkPipelineInputAssemblyStateCreateInfo::topology 状态具有相同的图元拓扑类别

    • VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-10286
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,那么在执行此绘制命令之前,vkCmdSetPrimitiveTopology 必须primitiveTopology 设置为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST

    • VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04913
      如果绑定的图形管线是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 动态状态但未启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdBindVertexBuffers2 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2pStrides 参数必须不为 NULL

    • VUID-vkCmdDrawIndirectByteCountEXT-None-04914
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetVertexInputEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-Input-07939
      如果 vertexAttributeRobustness 未启用,并且有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,那么在 Vertex Execution Model OpEntryPoint 中,所有使用 Location 修饰的 Input 存储类变量必须包含 VkVertexInputAttributeDescription2EXT::location 中的一个位置。

    • VUID-vkCmdDrawIndirectByteCountEXT-Input-08734
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 legacyVertexAttributes 功能未启用,或者在 Vertex Execution Model OpEntryPoint 中,与给定 LocationInput 变量关联的 SPIR-V 类型是 64 位的,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的数值类型必须VkVertexInputAttributeDescription2EXT::format 相同。

    • VUID-vkCmdDrawIndirectByteCountEXT-format-08936
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,与相应 Location 的所有 Input 变量关联的标量宽度必须为 64 位。

    • VUID-vkCmdDrawIndirectByteCountEXT-format-08937
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且在 Vertex Execution Model OpEntryPoint 中,与 Location 修饰的 Input 变量关联的标量宽度是 64 位的,那么对应的 VkVertexInputAttributeDescription2EXT::format 必须具有 64 位分量。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09203
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 动态状态的情况下创建的,并且 VkVertexInputAttributeDescription2EXT::format 具有 64 位分量,那么在 Vertex Execution Model OpEntryPoint 中,对应 Location 的所有 Input 变量必须不使用格式中不存在的分量。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-04875
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 动态状态的情况下创建的,并且 primitiveTopology当前值VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,那么在执行此绘制命令之前,必须调用过 vkCmdSetPatchControlPointsEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-04879
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么在执行此绘制命令之前,必须调用过 vkCmdSetPrimitiveRestartEnable 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-09637
      如果 primitiveTopologyListRestart 功能未启用,拓扑为 VK_PRIMITIVE_TOPOLOGY_POINT_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LISTVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LISTVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYVK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,有一个着色器对象绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE 动态状态的情况下创建的,那么 vkCmdSetPrimitiveRestartEnable 必须VK_FALSE

    • VUID-vkCmdDrawIndirectByteCountEXT-stage-06481
      绑定的图形管线必须不是使用 VkPipelineShaderStageCreateInfo::stage 成员(该成员是 VkGraphicsPipelineCreateInfo::pStages 的任意元素的成员)设置为 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 的情况下创建的。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08885
      必须没有着色器对象绑定到 VK_SHADER_STAGE_TASK_BIT_EXTVK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawIndirectByteCountEXT-None-07619
      如果有一个着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 阶段,或者绑定了一个使用启用 VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须调用过 vkCmdSetTessellationDomainOriginEXT 且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08684
      如果没有绑定图形管线,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_VERTEX_BIT 元素

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08685
      如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT 元素

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08686
      如果没有绑定图形管线,且启用了tessellationShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 元素

    • VUID-vkCmdDrawIndirectByteCountEXT-None-08687
      如果没有绑定图形管线,且启用了geometryShader 功能,则当前命令缓冲区中必须已调用 vkCmdBindShadersEXT,且 pStages 中包含 VK_SHADER_STAGE_GEOMETRY_BIT 元素

    • VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287
      VkPhysicalDeviceTransformFeedbackFeaturesEXT::transformFeedback 必须 启用。

    • VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288
      实现必须支持 VkPhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackDraw

    • VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289
      vertexStride 必须 大于 0 且小于或等于 VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackBufferDataStride

    • VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567
      如果 counterBuffer 是非稀疏的,则它必须完全且连续地绑定到单个 VkDeviceMemory 对象。

    • VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290
      counterBuffer 必须已使用设置的 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位创建。

    • VUID-vkCmdDrawIndirectByteCountEXT-counterBufferOffset-04568
      counterBufferOffset 必须4 的倍数。

    • VUID-vkCmdDrawIndirectByteCountEXT-counterOffset-09474
      counterOffset 必须4 的倍数。

    • VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-09475
      vertexStride 必须4 的倍数。

    • VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646
      commandBuffer 必须 不是受保护的命令缓冲区

    有效使用(隐式)
    • VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter
      counterBuffer 必须是有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawIndirectByteCountEXT-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawIndirectByteCountEXT-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawIndirectByteCountEXT-commonparent
      commandBuffercounterBuffer必须是由同一个 VkDevice 创建、分配或检索的。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    条件渲染

    某些渲染命令可以根据缓冲区内存中的值有条件地执行。这些渲染命令仅限于绘制命令分发命令,以及在由命令 vkCmdBeginConditionalRenderingEXTvkCmdEndConditionalRenderingEXT 定义的条件渲染块中使用 vkCmdClearAttachments 清除附件。其他渲染命令不受条件渲染的影响。

    开始条件渲染后,它被认为在调用它的命令缓冲区中是活动的,直到用 vkCmdEndConditionalRenderingEXT 结束。

    条件渲染必须在同一个命令缓冲区中开始和结束。当条件渲染处于活动状态时,如果启用了 inheritedConditionalRendering 功能,则主命令缓冲区可以执行辅助命令缓冲区。为了使辅助命令缓冲区在主命令缓冲区中条件渲染处于活动状态时执行,它必须设置 VkCommandBufferInheritanceConditionalRenderingInfoEXTconditionalRenderingEnable 标志,如 命令缓冲区记录 部分所述。

    条件渲染必须在渲染通道实例的同一子通道内开始和结束,或者必须在渲染通道实例之外开始和结束(即包含整个渲染通道实例)。

    要开始条件渲染,请调用

    // Provided by VK_EXT_conditional_rendering
    void vkCmdBeginConditionalRenderingEXT(
        VkCommandBuffer                             commandBuffer,
        const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin);
    • commandBuffer 是要将此命令记录到的命令缓冲区。

    • pConditionalRenderingBegin 是指向 VkConditionalRenderingBeginInfoEXT 结构的指针,该结构指定条件渲染的参数。

    有效用法
    • VUID-vkCmdBeginConditionalRenderingEXT-None-01980
      条件渲染必须尚未 激活

    有效使用(隐式)
    • VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter
      pConditionalRenderingBegin 必须是指向有效 VkConditionalRenderingBeginInfoEXT 结构的有效指针

    • VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool
      commandBuffer 分配的 VkCommandPool 必须支持图形或计算操作

    • VUID-vkCmdBeginConditionalRenderingEXT-videocoding
      此命令必须仅在视频编码范围之外调用。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    命令属性
    命令缓冲区级别 渲染通道范围 视频编码范围 支持的队列类型 命令类型


    辅助

    两者

    外部

    图形
    计算

    操作
    状态

    VkConditionalRenderingBeginInfoEXT 结构定义如下:

    // Provided by VK_EXT_conditional_rendering
    typedef struct VkConditionalRenderingBeginInfoEXT {
        VkStructureType                   sType;
        const void*                       pNext;
        VkBuffer                          buffer;
        VkDeviceSize                      offset;
        VkConditionalRenderingFlagsEXT    flags;
    } VkConditionalRenderingBeginInfoEXT;
    • sType是一个VkStructureType值,用于标识此结构。

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

    • buffer 是一个包含条件渲染谓词的缓冲区。

    • offsetbuffer 中谓词所在的字节偏移量。

    • flagsVkConditionalRenderingFlagsEXT 的位掩码,指定条件渲染的行为。

    如果 buffer 内存中 offset 处的 32 位值为零,则丢弃渲染命令,否则正常执行。如果在条件渲染处于活动状态时,缓冲区内存中谓词的值发生变化,则渲染命令可能以依赖于实现的方式被丢弃。某些实现可能会在开始条件渲染时锁定谓词的值,而其他实现可能会在每次渲染命令之前读取该值。

    有效用法
    • VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981
      如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

    • VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982
      创建 buffer必须设置了 VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT

    • VUID-VkConditionalRenderingBeginInfoEXT-offset-01983
      offset 必须小于 buffer 的大小,至少 32 位

    • VUID-VkConditionalRenderingBeginInfoEXT-offset-01984
      offset 必须是 4 的倍数

    有效使用(隐式)
    • VUID-VkConditionalRenderingBeginInfoEXT-sType-sType
      sType 必须VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT

    • VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext
      pNext 必须NULL

    • VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter
      flags 必须VkConditionalRenderingFlagBitsEXT 值的有效组合

    可以在 vkCmdBeginConditionalRenderingEXT::flags 中设置的位,指定条件渲染的行为,包括

    // Provided by VK_EXT_conditional_rendering
    typedef enum VkConditionalRenderingFlagBitsEXT {
        VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001,
    } VkConditionalRenderingFlagBitsEXT;
    • VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT 指定用于确定是否丢弃渲染命令的条件。也就是说,如果从 offset 处的 buffer 内存读取的 32 位谓词为零,则不会丢弃渲染命令,如果非零,则丢弃。

    // Provided by VK_EXT_conditional_rendering
    typedef VkFlags VkConditionalRenderingFlagsEXT;

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

    要结束条件渲染,请调用

    // Provided by VK_EXT_conditional_rendering
    void vkCmdEndConditionalRenderingEXT(
        VkCommandBuffer                             commandBuffer);
    • commandBuffer 是要将此命令记录到的命令缓冲区。

    一旦结束,条件渲染将变为非活动状态。

    有效用法
    • VUID-vkCmdEndConditionalRenderingEXT-None-01985
      条件渲染必须激活的

    • VUID-vkCmdEndConditionalRenderingEXT-None-01986
      如果条件渲染是在渲染通道实例之外 激活的,则必须不在渲染通道实例内结束

    • VUID-vkCmdEndConditionalRenderingEXT-None-01987
      如果在子通道中使条件渲染激活,则必须在同一子通道中结束它。

    有效使用(隐式)
    • VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool
      commandBuffer 分配的 VkCommandPool 必须支持图形或计算操作

    • VUID-vkCmdEndConditionalRenderingEXT-videocoding
      此命令必须仅在视频编码范围之外调用。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    命令属性
    命令缓冲区级别 渲染通道范围 视频编码范围 支持的队列类型 命令类型


    辅助

    两者

    外部

    图形
    计算

    操作
    状态

    可编程网格着色

    在这种绘制方法中,图元由网格着色器阶段组装。 网格着色的操作类似于调度计算,因为着色器使用工作组。

    要记录网格任务绘制命令,请调用

    // Provided by VK_NV_mesh_shader
    void vkCmdDrawMeshTasksNV(
        VkCommandBuffer                             commandBuffer,
        uint32_t                                    taskCount,
        uint32_t                                    firstTask);
    • commandBuffer 是将记录命令的命令缓冲区。

    • taskCount 是 X 维度中要调度的局部工作组的数量。 Y 和 Z 维度隐式设置为 1。

    • firstTask 是第一个工作组 ID 的 X 分量。

    当命令执行时,会组装一个由 taskCount 个局部工作组组成的全局工作组。

    有效用法
    • VUID-vkCmdDrawMeshTasksNV-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksNV-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksNV-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksNV-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksNV-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawMeshTasksNV-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawMeshTasksNV-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawMeshTasksNV-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawMeshTasksNV-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawMeshTasksNV-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksNV-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksNV-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawMeshTasksNV-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawMeshTasksNV-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksNV-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawMeshTasksNV-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawMeshTasksNV-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawMeshTasksNV-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksNV-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksNV-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksNV-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawMeshTasksNV-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksNV-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawMeshTasksNV-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawMeshTasksNV-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksNV-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksNV-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawMeshTasksNV-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksNV-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksNV-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawMeshTasksNV-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawMeshTasksNV-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawMeshTasksNV-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksNV-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksNV-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksNV-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawMeshTasksNV-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawMeshTasksNV-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawMeshTasksNV-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawMeshTasksNV-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawMeshTasksNV-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksNV-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawMeshTasksNV-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksNV-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksNV-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksNV-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksNV-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksNV-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksNV-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawMeshTasksNV-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawMeshTasksNV-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawMeshTasksNV-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawMeshTasksNV-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawMeshTasksNV-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawMeshTasksNV-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawMeshTasksNV-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawMeshTasksNV-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawMeshTasksNV-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksNV-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksNV-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksNV-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksNV-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawMeshTasksNV-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawMeshTasksNV-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawMeshTasksNV-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawMeshTasksNV-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawMeshTasksNV-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawMeshTasksNV-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksNV-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksNV-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksNV-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawMeshTasksNV-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksNV-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksNV-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksNV-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksNV-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksNV-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksNV-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksNV-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawMeshTasksNV-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksNV-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksNV-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksNV-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksNV-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksNV-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksNV-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksNV-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksNV-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksNV-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksNV-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksNV-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksNV-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksNV-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksNV-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksNV-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksNV-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawMeshTasksNV-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawMeshTasksNV-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksNV-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksNV-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawMeshTasksNV-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksNV-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawMeshTasksNV-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawMeshTasksNV-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawMeshTasksNV-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksNV-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksNV-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksNV-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksNV-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksNV-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawMeshTasksNV-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksNV-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksNV-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawMeshTasksNV-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawMeshTasksNV-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksNV-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksNV-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawMeshTasksNV-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksNV-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawMeshTasksNV-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksNV-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawMeshTasksNV-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawMeshTasksNV-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksNV-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawMeshTasksNV-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawMeshTasksNV-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawMeshTasksNV-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawMeshTasksNV-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawMeshTasksNV-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawMeshTasksNV-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksNV-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksNV-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksNV-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksNV-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksNV-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksNV-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawMeshTasksNV-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksNV-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawMeshTasksNV-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawMeshTasksNV-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawMeshTasksNV-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawMeshTasksNV-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawMeshTasksNV-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawMeshTasksNV-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawMeshTasksNV-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksNV-stage-06480
      绑定的图形管线必须没有使用 VkPipelineShaderStageCreateInfo::stage 成员创建,该成员在 VkGraphicsPipelineCreateInfo::pStages 的任何元素中设置为 VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT

    • VUID-vkCmdDrawMeshTasksNV-None-07074
      变换反馈查询 必须未激活。

    • VUID-vkCmdDrawMeshTasksNV-None-07075
      生成的图元查询 必须 处于非活动状态

    • VUID-vkCmdDrawMeshTasksNV-pipelineStatistics-07076
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, 或 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT

    • VUID-vkCmdDrawMeshTasksNV-taskCount-02119
      taskCount 必须小于或等于 VkPhysicalDeviceMeshShaderPropertiesNV::maxDrawMeshTasksCount

    • VUID-vkCmdDrawMeshTasksNV-MeshNV-07080
      绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的当前管线必须包含使用 MeshNV Execution Model 的着色器阶段

    有效使用(隐式)
    • VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawMeshTasksNV-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawMeshTasksNV-videocoding
      此命令必须仅在视频编码范围之外调用。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    要记录间接网格任务绘制命令,请调用

    // Provided by VK_NV_mesh_shader
    void vkCmdDrawMeshTasksIndirectNV(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset,
        uint32_t                                    drawCount,
        uint32_t                                    stride);
    • commandBuffer 是要记录命令的命令缓冲区。

    • buffer 是包含绘制参数的缓冲区。

    • offsetbuffer 中参数开始的字节偏移量。

    • drawCount 是要执行的绘制次数,可以为零。

    • stride 是连续的绘制参数集之间的字节步长。

    vkCmdDrawMeshTasksIndirectNV 的行为类似于 vkCmdDrawMeshTasksNV,除了参数是在执行期间由设备从缓冲区读取的。该命令执行 drawCount 次绘制,参数从 buffer 中读取,起始偏移量为 offset,每次连续绘制增加 stride 字节。每次绘制的参数都编码在 VkDrawMeshTasksIndirectCommandNV 结构的数组中。如果 drawCount 小于或等于 1,则忽略 stride

    有效用法
    • VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksIndirectNV-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectNV-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawMeshTasksIndirectNV-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawMeshTasksIndirectNV-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawMeshTasksIndirectNV-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawMeshTasksIndirectNV-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawMeshTasksIndirectNV-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawMeshTasksIndirectNV-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawMeshTasksIndirectNV-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectNV-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • V
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksIndirectNV-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectNV-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawMeshTasksIndirectNV-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectNV-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectNV-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawMeshTasksIndirectNV-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksIndirectNV-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawMeshTasksIndirectNV-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawMeshTasksIndirectNV-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawMeshTasksIndirectNV-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksIndirectNV-stage-06480
      绑定的图形管线必须没有使用 VkPipelineShaderStageCreateInfo::stage 成员创建,该成员在 VkGraphicsPipelineCreateInfo::pStages 的任何元素中设置为 VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07074
      变换反馈查询 必须未激活。

    • VUID-vkCmdDrawMeshTasksIndirectNV-None-07075
      生成的图元查询 必须 处于非活动状态

    • VUID-vkCmdDrawMeshTasksIndirectNV-pipelineStatistics-07076
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, 或 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT

    • VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708
      如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

    • VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709
      buffer 必须 使用设置了 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位来创建

    • VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710
      offset 必须4 的倍数

    • VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711
      commandBuffer 必须 不是受保护的命令缓冲区

    • VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718
      如果 multiDrawIndirect 特性未启用,则 drawCount 必须01

    • VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719
      drawCount 必须 小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

    • VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146
      如果 drawCount 大于 1,则 stride **必须**是 4 的倍数,并且**必须**大于或等于 sizeof(VkDrawMeshTasksIndirectCommandNV)

    • VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156
      如果 drawCount 等于 1,则 (offset + sizeof(VkDrawMeshTasksIndirectCommandNV)) **必须**小于或等于 buffer 的大小

    • VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157
      如果 drawCount 大于 1,则 (stride × (drawCount - 1) + offset + sizeof(VkDrawMeshTasksIndirectCommandNV)) **必须**小于或等于 buffer 的大小

    • VUID-vkCmdDrawMeshTasksIndirectNV-MeshNV-07081
      绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的当前管线必须包含使用 MeshNV Execution Model 的着色器阶段

    有效使用(隐式)
    • VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawMeshTasksIndirectNV-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawMeshTasksIndirectNV-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawMeshTasksIndirectNV-commonparent
      buffercommandBuffer必须 从同一个 VkDevice 创建、分配或检索。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    VkDrawMeshTasksIndirectCommandNV 结构定义如下

    // Provided by VK_NV_mesh_shader
    typedef struct VkDrawMeshTasksIndirectCommandNV {
        uint32_t    taskCount;
        uint32_t    firstTask;
    } VkDrawMeshTasksIndirectCommandNV;
    • taskCount 是 X 维度中要调度的局部工作组的数量。 Y 和 Z 维度隐式设置为 1。

    • firstTask 是第一个工作组 ID 的 X 分量。

    VkDrawMeshTasksIndirectCommandNV 的成员与 vkCmdDrawMeshTasksNV 的同名参数具有相同的含义。

    有效用法
    • VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175
      taskCount 必须小于或等于 VkPhysicalDeviceMeshShaderPropertiesNV::maxDrawMeshTasksCount

    要记录一个从缓冲区获取绘制计数的间接网格任务绘制命令,请调用

    // Provided by VK_NV_mesh_shader with VK_KHR_draw_indirect_count or VK_VERSION_1_2
    void vkCmdDrawMeshTasksIndirectCountNV(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset,
        VkBuffer                                    countBuffer,
        VkDeviceSize                                countBufferOffset,
        uint32_t                                    maxDrawCount,
        uint32_t                                    stride);
    • commandBuffer 是要记录命令的命令缓冲区。

    • buffer 是包含绘制参数的缓冲区。

    • offsetbuffer 中参数开始的字节偏移量。

    • countBuffer 是包含绘制计数的缓冲区。

    • countBufferOffsetcountBuffer 中绘制计数开始的字节偏移量。

    • maxDrawCount 指定将要执行的最大绘制次数。实际执行的绘制调用次数是 countBuffer 中指定的计数和 maxDrawCount 中的最小值。

    • stride 是连续的绘制参数集之间的字节步长。

    vkCmdDrawMeshTasksIndirectCountNV 的行为类似于 vkCmdDrawMeshTasksIndirectNV,不同之处在于绘制计数是在执行期间由设备从缓冲区读取的。该命令将从位于 countBufferOffsetcountBuffer 中读取一个无符号 32 位整数,并将其用作绘制计数。

    有效用法
    • VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • 如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-06480
      绑定的图形管线必须没有使用 VkPipelineShaderStageCreateInfo::stage 成员创建,该成员在 VkGraphicsPipelineCreateInfo::pStages 的任何元素中设置为 VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07074
      变换反馈查询 必须未激活。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07075
      生成的图元查询 必须 处于非活动状态

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineStatistics-07076
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, 或 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708
      如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709
      buffer 必须 使用设置了 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位来创建

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710
      offset 必须4 的倍数

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711
      commandBuffer 必须 不是受保护的命令缓冲区

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714
      如果 countBuffer 不是稀疏的,则它必须完全且连续地绑定到单个 VkDeviceMemory 对象。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715
      countBuffer 必须已使用设置的 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716
      countBufferOffset 必须4 的倍数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717
      存储在 countBuffer 中的计数必须小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129
      (countBufferOffset + sizeof(uint32_t)) 必须小于或等于 countBuffer 的大小。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445
      如果未启用 drawIndirectCount 功能,则必须不使用此函数。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182
      stride 必须4 的倍数,并且 必须大于或等于 sizeof(VkDrawMeshTasksIndirectCommandNV)

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183
      如果 maxDrawCount 大于或等于 1,则 (stride × (maxDrawCount - 1) + offset + sizeof(VkDrawMeshTasksIndirectCommandNV)) 必须小于或等于 buffer 的大小。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-MeshNV-07082
      绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的当前管线必须包含使用 MeshNV Execution Model 的着色器阶段

    有效使用(隐式)
    • VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter
      countBuffer 必须是有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent
      buffercommandBuffercountBuffer 中的每一个必须是从同一个 VkDevice 创建、分配或检索的。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    要记录网格任务绘制命令,请调用

    // Provided by VK_EXT_mesh_shader
    void vkCmdDrawMeshTasksEXT(
        VkCommandBuffer                             commandBuffer,
        uint32_t                                    groupCountX,
        uint32_t                                    groupCountY,
        uint32_t                                    groupCountZ);
    • commandBuffer 是将记录命令的命令缓冲区。

    • groupCountX 是 X 维度中要调度的本地工作组的数量。

    • groupCountY 是 Y 维度中要调度的本地工作组的数量。

    • groupCountZ 是 Z 维度中要调度的本地工作组的数量。

    当执行命令时,会组装一个由 groupCountX × groupCountY × groupCountZ 个本地工作组组成的全局工作组。

    有效用法
    • VUID-vkCmdDrawMeshTasksEXT-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksEXT-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksEXT-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksEXT-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksEXT-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawMeshTasksEXT-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawMeshTasksEXT-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawMeshTasksEXT-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawMeshTasksEXT-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawMeshTasksEXT-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksEXT-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksEXT-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawMeshTasksEXT-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawMeshTasksEXT-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksEXT-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksEXT-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawMeshTasksEXT-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawMeshTasksEXT-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawMeshTasksEXT-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksEXT-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksEXT-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksEXT-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawMeshTasksEXT-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksEXT-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawMeshTasksEXT-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawMeshTasksEXT-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksEXT-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksEXT-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawMeshTasksEXT-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksEXT-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksEXT-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawMeshTasksEXT-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawMeshTasksEXT-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawMeshTasksEXT-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksEXT-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksEXT-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksEXT-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawMeshTasksEXT-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawMeshTasksEXT-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawMeshTasksEXT-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawMeshTasksEXT-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawMeshTasksEXT-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksEXT-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksEXT-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksEXT-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksEXT-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksEXT-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawMeshTasksEXT-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksEXT-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksEXT-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawMeshTasksEXT-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawMeshTasksEXT-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawMeshTasksEXT-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawMeshTasksEXT-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawMeshTasksEXT-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawMeshTasksEXT-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawMeshTasksEXT-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawMeshTasksEXT-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawMeshTasksEXT-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksEXT-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksEXT-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksEXT-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksEXT-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawMeshTasksEXT-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawMeshTasksEXT-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawMeshTasksEXT-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawMeshTasksEXT-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawMeshTasksEXT-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawMeshTasksEXT-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksEXT-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksEXT-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksEXT-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawMeshTasksEXT-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawMeshTasksEXT-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksEXT-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksEXT-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksEXT-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksEXT-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksEXT-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksEXT-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksEXT-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawMeshTasksEXT-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksEXT-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksEXT-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksEXT-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksEXT-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksEXT-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksEXT-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksEXT-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksEXT-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksEXT-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksEXT-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksEXT-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksEXT-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksEXT-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksEXT-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksEXT-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksEXT-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawMeshTasksEXT-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawMeshTasksEXT-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksEXT-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksEXT-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawMeshTasksEXT-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksEXT-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawMeshTasksEXT-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawMeshTasksEXT-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawMeshTasksEXT-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksEXT-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksEXT-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksEXT-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawMeshTasksEXT-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksEXT-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksEXT-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawMeshTasksEXT-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksEXT-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawMeshTasksEXT-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksEXT-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawMeshTasksEXT-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawMeshTasksEXT-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksEXT-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawMeshTasksEXT-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawMeshTasksEXT-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawMeshTasksEXT-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawMeshTasksEXT-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawMeshTasksEXT-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawMeshTasksEXT-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksEXT-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksEXT-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksEXT-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksEXT-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksEXT-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksEXT-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawMeshTasksEXT-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksEXT-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawMeshTasksEXT-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawMeshTasksEXT-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawMeshTasksEXT-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawMeshTasksEXT-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawMeshTasksEXT-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawMeshTasksEXT-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawMeshTasksEXT-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksEXT-stage-06480
      绑定的图形管线必须没有使用 VkPipelineShaderStageCreateInfo::stage 成员创建,该成员在 VkGraphicsPipelineCreateInfo::pStages 的任何元素中设置为 VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT

    • VUID-vkCmdDrawMeshTasksEXT-None-07074
      变换反馈查询 必须未激活。

    • VUID-vkCmdDrawMeshTasksEXT-None-07075
      生成的图元查询 必须 处于非活动状态

    • VUID-vkCmdDrawMeshTasksEXT-pipelineStatistics-07076
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, 或 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT

    • VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07322
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线包含使用 TaskEXT Execution Model 的着色器,则 groupCountX 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupCount[0]

    • VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07323
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线包含使用 TaskEXT Execution Model 的着色器,则 groupCountY 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupCount[1]

    • VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07324
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线包含使用 TaskEXT Execution Model 的着色器,则 groupCountZ 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupCount[2]

    • VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07325
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线包含使用 TaskEXT Execution Model 的着色器,则 groupCountXgroupCountYgroupCountZ 的乘积 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupTotalCount

    • VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07326
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线不包含使用 TaskEXT Execution Model 的着色器,则 groupCountX 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[0]

    • VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07327
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线不包含使用 TaskEXT Execution Model 的着色器,则 groupCountY 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[1]

    • VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07328
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线不包含使用 TaskEXT Execution Model 的着色器,则 groupCountZ 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[2]

    • VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07329
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线不包含使用 TaskEXT Execution Model 的着色器,则 groupCountXgroupCountYgroupCountZ 的乘积 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupTotalCount

    • VUID-vkCmdDrawMeshTasksEXT-MeshEXT-07087
      当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线 必须 包含使用 MeshEXT Execution Model 的着色器阶段

    有效使用(隐式)
    • VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksEXT-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawMeshTasksEXT-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawMeshTasksEXT-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawMeshTasksEXT-videocoding
      此命令必须仅在视频编码范围之外调用。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    要记录间接网格任务绘制命令,请调用

    // Provided by VK_EXT_mesh_shader
    void vkCmdDrawMeshTasksIndirectEXT(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset,
        uint32_t                                    drawCount,
        uint32_t                                    stride);
    • commandBuffer 是要记录命令的命令缓冲区。

    • buffer 是包含绘制参数的缓冲区。

    • offsetbuffer 中参数开始的字节偏移量。

    • drawCount 是要执行的绘制次数,可以为零。

    • stride 是连续的绘制参数集之间的字节步长。

    vkCmdDrawMeshTasksIndirectEXT 的行为类似于 vkCmdDrawMeshTasksEXT,只是参数由设备在执行期间从缓冲区读取。命令执行 drawCount 次绘制,参数从 bufferoffset 开始读取,每次后续绘制增加 stride 个字节。每次绘制的参数都编码在 VkDrawMeshTasksIndirectCommandEXT 结构的数组中。如果 drawCount 小于或等于 1,则忽略 stride

    有效用法
    • VUID-vkCmdDrawMeshTasksIndirectEXT-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawMeshTasksIndirectEXT-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectEXT-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectEXT-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawMeshTasksIndirectEXT-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawMeshTasksIndirectEXT-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawMeshTasksIndirectEXT-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksIndirectEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksIndirectEXT-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectEXT-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectEXT-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawMeshTasksIndirectEXT-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-stage-06480
      绑定的图形管线必须没有使用 VkPipelineShaderStageCreateInfo::stage 成员创建,该成员在 VkGraphicsPipelineCreateInfo::pStages 的任何元素中设置为 VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07074
      变换反馈查询 必须未激活。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-None-07075
      生成的图元查询 必须 处于非活动状态

    • VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineStatistics-07076
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, 或 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT

    • VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02708
      如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

    • VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02709
      buffer 必须 使用设置了 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位来创建

    • VUID-vkCmdDrawMeshTasksIndirectEXT-offset-02710
      offset 必须4 的倍数

    • VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02711
      commandBuffer 必须 不是受保护的命令缓冲区

    • VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02718
      如果 multiDrawIndirect 特性未启用,则 drawCount 必须01

    • VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02719
      drawCount 必须 小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

    • VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07088
      如果 drawCount 大于 1,则 stride **必须**是 4 的倍数,并且**必须**大于或等于 sizeof(VkDrawMeshTasksIndirectCommandEXT)

    • VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07089
      如果 drawCount 等于 1,则 (offset + sizeof(VkDrawMeshTasksIndirectCommandEXT)) 必须 小于或等于 buffer 的大小

    • VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07090
      如果 drawCount 大于 1,则 (stride × (drawCount - 1) + offset + sizeof(VkDrawMeshTasksIndirectCommandEXT)) 必须 小于或等于 buffer 的大小

    • VUID-vkCmdDrawMeshTasksIndirectEXT-MeshEXT-07091
      当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线 必须 包含使用 MeshEXT Execution Model 的着色器阶段

    有效使用(隐式)
    • VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawMeshTasksIndirectEXT-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawMeshTasksIndirectEXT-commonparent
      buffercommandBuffer必须 从同一个 VkDevice 创建、分配或检索。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    VkDrawMeshTasksIndirectCommandEXT 结构体的定义如下:

    // Provided by VK_EXT_mesh_shader
    typedef struct VkDrawMeshTasksIndirectCommandEXT {
        uint32_t    groupCountX;
        uint32_t    groupCountY;
        uint32_t    groupCountZ;
    } VkDrawMeshTasksIndirectCommandEXT;
    • groupCountX 是 X 维度中要调度的本地工作组的数量。

    • groupCountY 是 Y 维度中要调度的本地工作组的数量。

    • groupCountZ 是 Z 维度中要调度的本地工作组的数量。

    VkDrawMeshTasksIndirectCommandEXT 的成员与 vkCmdDrawMeshTasksEXT 中具有相似名称的参数含义相同。

    有效用法
    • VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07322
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线包含使用 TaskEXT Execution Model 的着色器,则 groupCountX 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupCount[0]

    • VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07323
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线包含使用 TaskEXT Execution Model 的着色器,则 groupCountY 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupCount[1]

    • VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07324
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线包含使用 TaskEXT Execution Model 的着色器,则 groupCountZ 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupCount[2]

    • VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07325
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线包含使用 TaskEXT Execution Model 的着色器,则 groupCountXgroupCountYgroupCountZ 的乘积 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupTotalCount

    • VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07326
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线不包含使用 TaskEXT Execution Model 的着色器,则 groupCountX 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[0]

    • VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07327
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线不包含使用 TaskEXT Execution Model 的着色器,则 groupCountY 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[1]

    • VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07328
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线不包含使用 TaskEXT Execution Model 的着色器,则 groupCountZ 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[2]

    • VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07329
      如果当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线不包含使用 TaskEXT Execution Model 的着色器,则 groupCountXgroupCountYgroupCountZ 的乘积 必须 小于或等于 VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupTotalCount

    要记录一个从缓冲区获取绘制计数的间接网格任务绘制命令,请调用

    // Provided by VK_EXT_mesh_shader with VK_KHR_draw_indirect_count or VK_VERSION_1_2
    void vkCmdDrawMeshTasksIndirectCountEXT(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset,
        VkBuffer                                    countBuffer,
        VkDeviceSize                                countBufferOffset,
        uint32_t                                    maxDrawCount,
        uint32_t                                    stride);
    • commandBuffer 是要记录命令的命令缓冲区。

    • buffer 是包含绘制参数的缓冲区。

    • offsetbuffer 中参数开始的字节偏移量。

    • countBuffer 是包含绘制计数的缓冲区。

    • countBufferOffsetcountBuffer 中绘制计数开始的字节偏移量。

    • maxDrawCount 指定将要执行的最大绘制次数。实际执行的绘制调用次数是 countBuffer 中指定的计数和 maxDrawCount 中的最小值。

    • stride 是连续的绘制参数集之间的字节步长。

    vkCmdDrawMeshTasksIndirectCountEXT 的行为与 vkCmdDrawMeshTasksIndirectEXT 类似,但绘制计数是在执行期间由设备从缓冲区读取的。该命令将从位于 countBufferOffsetcountBuffer 读取一个无符号 32 位整数,并将其用作绘制计数。

    有效用法
    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-06480
      绑定的图形管线必须没有使用 VkPipelineShaderStageCreateInfo::stage 成员创建,该成员在 VkGraphicsPipelineCreateInfo::pStages 的任何元素中设置为 VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07074
      变换反馈查询 必须未激活。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07075
      生成的图元查询 必须 处于非活动状态

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineStatistics-07076
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, 或 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02708
      如果 buffer 不是稀疏的,那么它 必须 完全且连续地绑定到单个 VkDeviceMemory 对象

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02709
      buffer 必须 使用设置了 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位来创建

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-offset-02710
      offset 必须4 的倍数

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02711
      commandBuffer 必须 不是受保护的命令缓冲区

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02714
      如果 countBuffer 不是稀疏的,则它必须完全且连续地绑定到单个 VkDeviceMemory 对象。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02715
      countBuffer 必须已使用设置的 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 位创建。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-02716
      countBufferOffset 必须4 的倍数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02717
      存储在 countBuffer 中的计数必须小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-04129
      (countBufferOffset + sizeof(uint32_t)) 必须小于或等于 countBuffer 的大小。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04445
      如果未启用 drawIndirectCount 功能,则必须不使用此函数。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-stride-07096
      stride 必须4 的倍数,并且必须大于或等于 sizeof(VkDrawMeshTasksIndirectCommandEXT)

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxDrawCount-07097
      如果 maxDrawCount 大于或等于 1,则 (stride × (maxDrawCount - 1) + offset + sizeof(VkDrawMeshTasksIndirectCommandEXT)) 必须小于或等于 buffer 的大小

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-MeshEXT-07100
      当前绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的管线 必须 包含使用 MeshEXT Execution Model 的着色器阶段

    有效使用(隐式)
    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-parameter
      countBuffer 必须是有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawMeshTasksIndirectCountEXT-commonparent
      buffercommandBuffercountBuffer 中的每一个必须是从同一个 VkDevice 创建、分配或检索的。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    可编程簇剔除着色

    在这种绘制方法中,簇由簇剔除着色器阶段生成。它的操作类似于调度计算,因为着色器会使用工作组。

    要记录簇剔除着色器绘制命令,请调用

    // Provided by VK_HUAWEI_cluster_culling_shader
    void vkCmdDrawClusterHUAWEI(
        VkCommandBuffer                             commandBuffer,
        uint32_t                                    groupCountX,
        uint32_t                                    groupCountY,
        uint32_t                                    groupCountZ);
    • commandBuffer 是将记录命令的命令缓冲区。

    • groupCountX 是 X 维度中要调度的本地工作组的数量。

    • groupCountY 是 Y 维度中要调度的本地工作组的数量。

    • groupCountZ 是 Z 维度中要调度的本地工作组的数量。

    当命令执行时,会组装一个由 groupCountX*groupCountY*groupCountZ 个局部工作组组成的全局工作组。请注意,簇剔除着色器管线只接受 vkCmdDrawClusterHUAWEIvkCmdDrawClusterIndirectHUAWEI 作为绘制命令。

    有效用法
    • VUID-vkCmdDrawClusterHUAWEI-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawClusterHUAWEI-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawClusterHUAWEI-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawClusterHUAWEI-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawClusterHUAWEI-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawClusterHUAWEI-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawClusterHUAWEI-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawClusterHUAWEI-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawClusterHUAWEI-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawClusterHUAWEI-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawClusterHUAWEI-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawClusterHUAWEI-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawClusterHUAWEI-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawClusterHUAWEI-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawClusterHUAWEI-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawClusterHUAWEI-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawClusterHUAWEI-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawClusterHUAWEI-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawClusterHUAWEI-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawClusterHUAWEI-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawClusterHUAWEI-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawClusterHUAWEI-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawClusterHUAWEI-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawClusterHUAWEI-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawClusterHUAWEI-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawClusterHUAWEI-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawClusterHUAWEI-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawClusterHUAWEI-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawClusterHUAWEI-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawClusterHUAWEI-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawClusterHUAWEI-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawClusterHUAWEI-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawClusterHUAWEI-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawClusterHUAWEI-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawClusterHUAWEI-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawClusterHUAWEI-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawClusterHUAWEI-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawClusterHUAWEI-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawClusterHUAWEI-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawClusterHUAWEI-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawClusterHUAWEI-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawClusterHUAWEI-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawClusterHUAWEI-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawClusterHUAWEI-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawClusterHUAWEI-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawClusterHUAWEI-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawClusterHUAWEI-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawClusterHUAWEI-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawClusterHUAWEI-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawClusterHUAWEI-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawClusterHUAWEI-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawClusterHUAWEI-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawClusterHUAWEI-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawClusterHUAWEI-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawClusterHUAWEI-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawClusterHUAWEI-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawClusterHUAWEI-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawClusterHUAWEI-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawClusterHUAWEI-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawClusterHUAWEI-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawClusterHUAWEI-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawClusterHUAWEI-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawClusterHUAWEI-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawClusterHUAWEI-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawClusterHUAWEI-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawClusterHUAWEI-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawClusterHUAWEI-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawClusterHUAWEI-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawClusterHUAWEI-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterHUAWEI-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterHUAWEI-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterHUAWEI-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawClusterHUAWEI-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawClusterHUAWEI-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterHUAWEI-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterHUAWEI-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterHUAWEI-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawClusterHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawClusterHUAWEI-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawClusterHUAWEI-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawClusterHUAWEI-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawClusterHUAWEI-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawClusterHUAWEI-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawClusterHUAWEI-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawClusterHUAWEI-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawClusterHUAWEI-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawClusterHUAWEI-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawClusterHUAWEI-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawClusterHUAWEI-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawClusterHUAWEI-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawClusterHUAWEI-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawClusterHUAWEI-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawClusterHUAWEI-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawClusterHUAWEI-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawClusterHUAWEI-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawClusterHUAWEI-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterHUAWEI-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterHUAWEI-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawClusterHUAWEI-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawClusterHUAWEI-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterHUAWEI-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterHUAWEI-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawClusterHUAWEI-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawClusterHUAWEI-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawClusterHUAWEI-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawClusterHUAWEI-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawClusterHUAWEI-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawClusterHUAWEI-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawClusterHUAWEI-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterHUAWEI-pColorBlendEnables-07470
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 状态的情况下创建的,并且最后一次调用 vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawClusterHUAWEI-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawClusterHUAWEI-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawClusterHUAWEI-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawClusterHUAWEI-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawClusterHUAWEI-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawClusterHUAWEI-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawClusterHUAWEI-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawClusterHUAWEI-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawClusterHUAWEI-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterHUAWEI-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawClusterHUAWEI-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawClusterHUAWEI-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawClusterHUAWEI-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawClusterHUAWEI-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawClusterHUAWEI-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawClusterHUAWEI-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawClusterHUAWEI-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawClusterHUAWEI-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawClusterHUAWEI-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawClusterHUAWEI-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawClusterHUAWEI-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawClusterHUAWEI-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawClusterHUAWEI-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawClusterHUAWEI-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawClusterHUAWEI-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawClusterHUAWEI-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawClusterHUAWEI-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawClusterHUAWEI-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawClusterHUAWEI-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawClusterHUAWEI-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawClusterHUAWEI-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawClusterHUAWEI-stage-06480
      绑定的图形管线必须没有使用 VkPipelineShaderStageCreateInfo::stage 成员创建,该成员在 VkGraphicsPipelineCreateInfo::pStages 的任何元素中设置为 VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT

    • VUID-vkCmdDrawClusterHUAWEI-None-07074
      变换反馈查询 必须未激活。

    • VUID-vkCmdDrawClusterHUAWEI-None-07075
      生成的图元查询 必须 处于非活动状态

    • VUID-vkCmdDrawClusterHUAWEI-pipelineStatistics-07076
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, 或 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT

    • VUID-vkCmdDrawClusterHUAWEI-None-07819
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXTVK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT

    • VUID-vkCmdDrawClusterHUAWEI-groupCountX-07820
      groupCountX 必须小于或等于 VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI::maxWorkGroupCount[0]

    • VUID-vkCmdDrawClusterHUAWEI-groupCountY-07821
      groupCountY 必须小于或等于 VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI::maxWorkGroupCount[1]

    • VUID-vkCmdDrawClusterHUAWEI-groupCountZ-07822
      groupCountZ 必须小于或等于 VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI::maxWorkGroupCount[2]

    • VUID-vkCmdDrawClusterHUAWEI-ClusterCullingHUAWEI-07823
      绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的当前管线必须包含一个使用 ClusterCullingHUAWEI Execution Model 的着色器阶段。

    有效使用(隐式)
    • VUID-vkCmdDrawClusterHUAWEI-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawClusterHUAWEI-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawClusterHUAWEI-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawClusterHUAWEI-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawClusterHUAWEI-videocoding
      此命令必须仅在视频编码范围之外调用。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。

    要记录间接集群剔除绘制命令,请调用

    // Provided by VK_HUAWEI_cluster_culling_shader
    void vkCmdDrawClusterIndirectHUAWEI(
        VkCommandBuffer                             commandBuffer,
        VkBuffer                                    buffer,
        VkDeviceSize                                offset);
    • commandBuffer 是要记录命令的命令缓冲区。

    • buffer 是包含绘制参数的缓冲区。

    • offsetbuffer 中参数开始的字节偏移量。

    vkCmdDrawClusterIndirectHUAWEI 的行为类似于 vkCmdDrawClusterHUAWEI,不同之处在于,参数是在执行期间由设备从缓冲区读取的。调度的参数编码在从偏移量开始的缓冲区中获取的 VkDispatchIndirectCommand 结构中。请注意,集群剔除着色器管线仅接受 vkCmdDrawClusterHUAWEIvkCmdDrawClusterIndirectHUAWEI 作为绘制命令。

    有效用法
    • VUID-vkCmdDrawClusterIndirectHUAWEI-magFilter-04553
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-magFilter-09598
      如果使用 magFilterminFilter 等于 VK_FILTER_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-04770
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEcompareEnable 等于 VK_FALSE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-09599
      如果使用 mipmapMode 等于 VK_SAMPLER_MIPMAP_MODE_LINEARreductionMode 等于 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-unnormalizedCoordinates-09635
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 levelCountlayerCount 必须为 1

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08609
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的 viewType 必须VK_IMAGE_VIEW_TYPE_1DVK_IMAGE_VIEW_TYPE_2D

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08610
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用,其名称中包含 ImplicitLodDrefProj

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08611
      如果使用 unnormalizedCoordinates 等于 VK_TRUE 创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-V OpImageSample*OpImageSparseSample* 指令一起使用

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-06479
      如果 VkImageView 使用 深度比较进行采样,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-02691
      如果由于此命令而使用原子操作访问 VkImageView,则图像视图的格式功能 必须包含 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07888
      如果此命令导致使用原子操作访问 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 描述符,则存储纹理缓冲区视图的格式特性必须包含 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-02692
      如果此命令导致使用 VK_FILTER_CUBIC_EXT 采样 VkImageView,则图像视图的格式特性必须包含 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-02693
      如果未启用 VK_EXT_filter_cubic 扩展,且此命令导致使用 VK_FILTER_CUBIC_EXT 采样任何 VkImageView,则该图像视图的 VkImageViewType必须不能为 VK_IMAGE_VIEW_TYPE_3DVK_IMAGE_VIEW_TYPE_CUBEVK_IMAGE_VIEW_TYPE_CUBE_ARRAY

    • VUID-vkCmdDrawClusterIndirectHUAWEI-filterCubic-02694
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-filterCubicMinmax-02695
      此命令导致使用 VK_FILTER_CUBIC_EXT 采样且缩减模式为 VK_SAMPLER_REDUCTION_MODE_MINVK_SAMPLER_REDUCTION_MODE_MAX 的任何 VkImageViewVkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax 返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-cubicRangeClamp-09212
      如果未启用 cubicRangeClamp 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerReductionModeCreateInfo::reductionMode必须不能等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

    • VUID-vkCmdDrawClusterIndirectHUAWEI-reductionMode-09213
      此命令导致使用 VkSamplerReductionModeCreateInfo::reductionMode 等于 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM 采样的任何 VkImageView必须使用 VK_FILTER_CUBIC_EXT 进行采样。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-selectableCubicWeights-09214
      如果未启用 selectableCubicWeights 特性,则此命令导致使用 VK_FILTER_CUBIC_EXT 采样的任何 VkImageViewVkSamplerCubicWeightsCreateInfoQCOM::cubicWeights必须等于 VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM

    • VUID-vkCmdDrawClusterIndirectHUAWEI-flags-02696
      此命令导致采样的任何使用包含 VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NVVkImageCreateInfo::flags 创建的 VkImage必须仅使用 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEVkSamplerAddressMode 进行采样。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07027
      对于任何作为存储图像写入,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07028
      对于任何作为存储图像读取,并且 OpTypeImage 的图像格式字段为 UnknownVkImageView,视图的格式特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07029
      对于任何作为存储纹理缓冲区写入,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07030
      对于任何作为存储纹理缓冲区读取,并且 OpTypeImage 的图像格式字段为 UnknownVkBufferView,视图的缓冲区特性必须包含 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08600
      对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08601
      对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipelineVkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-10068
      对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-maintenance4-08602
      如果未启用maintenance4特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipelineVkPipelineLayout或用于创建当前VkShaderEXTVkDescriptorSetLayoutVkPushConstantRange数组兼容的用于推送常量的VkPipelineLayout,如管线布局兼容性中所述。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08114
      如果通过vkCmdBindDescriptorSets指定的每个绑定描述符集中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline静态使用,且绑定的VkPipeline不是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须按照描述符有效性的描述是有效的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08115
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdBindDescriptorSets指定的,则绑定的VkPipeline必须是在没有VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT的情况下创建的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08116
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的VkPipeline动态使用,且绑定的VkPipeline是使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的,则必须是有效的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08604
      如果通过vkCmdSetDescriptorBufferOffsetsEXT指定的绑定描述符缓冲区中的描述符,如果它们被绑定到此命令使用的管线绑定点的任何阶段对应的VkShaderEXT动态使用,则必须是有效的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08117
      如果绑定到管线绑定点的VkPipeline使用的描述符是通过vkCmdSetDescriptorBufferOffsetsEXT指定的,则绑定的VkPipeline必须是在使用VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT创建的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08119
      如果描述符在创建时使用了VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkPipeline中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08605
      如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXTVkDescriptorSetLayoutVkShaderEXT中被动态使用,则描述符内存必须是驻留的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08606
      如果未启用shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08608
      如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08607
      如果启用了shaderObject特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-uniformBuffers-06935
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08612
      如果未启用robustBufferAccess特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-storageBuffers-06936
      如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffersVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSVK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2,且未启用robustBufferAccess特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08613
      如果未启用robustBufferAccess特性,并且绑定到此命令所用管线绑定点的阶段的任何VkShaderEXT访问了存储缓冲区,则它必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值

    • VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-02707
      如果commandBuffer是一个未受保护的命令缓冲区,并且不支持protectedNoFault,则绑定的着色器访问的任何资源必须不是受保护的资源

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-06550
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须仅与OpImageSample*OpImageSparseSample*指令一起使用

    • VUID-vkCmdDrawClusterIndirectHUAWEI-ConstOffset-06551
      如果绑定的着色器访问启用了采样器 Y′CBCR 转换VkSamplerVkImageView对象,则该对象必须不使用ConstOffsetOffset操作数

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewType-07752
      如果通过此命令访问VkImageView,则图像视图的viewType必须SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImageDim操作数匹配

    • VUID-vkCmdDrawClusterIndirectHUAWEI-format-07753
      如果通过此命令访问VkImageView,则图像视图的format数值类型OpTypeImageSampled Type操作数必须匹配

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-08795
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM以外的格式创建的VkImageView,则该指令的Texel操作数的Type必须具有至少与图像视图的格式一样多的组件

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-08796
      如果通过此命令使用OpImageWrite访问使用VK_FORMAT_A8_UNORM格式创建的VkImageView,则该指令的Texel操作数的Type必须具有四个组件

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-04469
      如果通过此命令使用OpImageWrite访问VkBufferView,则该指令的Texel操作数的Type必须具有至少与缓冲区视图的格式一样多的组件

    • VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04470
      如果通过此命令访问具有64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04471
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkImageView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04472
      如果通过此命令访问具有64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有64的Width

    • VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04473
      如果通过此命令访问具有小于64位组件宽度的VkFormatVkBufferView,则该指令的OpTypeImage操作数的SampledType必须具有32的Width

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sparseImageInt64Atomics-04474
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkImage对象

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sparseImageInt64Atomics-04475
      如果未启用sparseImageInt64Atomics特性,则通过此命令,必须不通过SampledTypeWidth为64的OpTypeImage使用原子指令访问使用VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT标志创建的VkBuffer对象

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06971
      如果使用OpImageWeightedSampleQCOM来采样通过此命令获得的VkImageView,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06972
      如果OpImageWeightedSampleQCOM使用通过此命令获得的VkImageView作为采样权重图像,则图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBoxFilterQCOM-06973
      如果使用 OpImageBoxFilterQCOMVkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSSDQCOM-06974
      如果使用 OpImageBlockMatchSSDQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06975
      如果使用 OpImageBlockMatchSADQCOMVkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06976
      如果使用 OpImageBlockMatchSADQCOMOpImageBlockMatchSSDQCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06977
      如果 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 使用 VkSampler 作为此命令的结果,则采样器必须使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06978
      如果除 OpImageWeightedSampleQCOMOpImageBoxFilterQCOMOpImageBlockMatchWindowSSDQCOMOpImageBlockMatchWindowSADQCOMOpImageBlockMatchGatherSSDQCOMOpImageBlockMatchGatherSADQCOMOpImageBlockMatchSSDQCOMOpImageBlockMatchSADQCOM 之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用 VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM 创建

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09215
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09216
      如果使用 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09217
      如果 OpImageBlockMatchWindow*QCOMOpImageBlockMatchGather*QCOM 从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07288
      此命令执行的任何着色器调用必须终止

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09600
      如果访问类型等于 VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOMVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOMVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEVK_DESCRIPTOR_TYPE_STORAGE_IMAGEVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中

    • VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-02684
      当前的渲染过程必须与创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 renderPass 成员兼容

    • VUID-vkCmdDrawClusterIndirectHUAWEI-subpass-02685
      当前渲染过程的子过程索引必须等于创建绑定到 VK_PIPELINE_BIND_POINT_GRAPHICSVkPipeline 时指定的 VkGraphicsPipelineCreateInfo 结构的 subpass 成员

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07748
      如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道

    • VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07468
      如果此管道执行的任何着色器访问 Dim 操作数为 SubpassDataOpTypeImage 变量,则它必须使用与当前子过程中有效的输入附件相对应的 InputAttachmentIndex 进行修饰

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07469
      在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的 pInputAttachments[InputAttachmentIndex] 引用的附件兼容,如片段输入附件兼容性中所述

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthInputAttachmentIndex-09595
      在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的 InputAttachmentIndex 的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexNULL 则没有 InputAttachmentIndex 的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthInputAttachmentIndex-09596
      如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex 均不为 NULL,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有 InputAttachmentIndex

    • VUID-vkCmdDrawClusterIndirectHUAWEI-InputAttachmentIndex-09597
      如果通过着色器对象在动态渲染过程中访问的输入附件视图具有 InputAttachmentIndex,则 InputAttachmentIndex 必须VkRenderingInputAttachmentIndexInfo 中的索引匹配

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-06537
      当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09000
      如果颜色附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_COLOR_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09001
      如果深度附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_DEPTH_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09002
      如果模板附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则它不处于 VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT 图像布局中,并且满足以下任一条件:

      • 绑定的管线上设置了 VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT,或者

      • 上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了 VK_IMAGE_ASPECT_STENCIL_BIT,并且

        • 没有绑定的图形管线,或者

        • 绑定的图形管线是使用 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 创建的

      必须不能以任何方式访问,除非作为此命令的附件。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09003
      如果附件被此子通道中的任何先前命令写入,或者被此子通道的加载、存储或解析操作写入,则此命令必须不能以任何方式访问它,除非作为附件、存储图像或采样图像。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-06539
      如果当前子通道中任何先前记录的命令以任何方式访问了用作此子通道附件的图像子资源,而非作为附件,则此命令必须不能将该图像子资源作为附件写入。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-06886
      如果当前渲染通道实例使用深度/模板附件,且其深度方面为只读布局,则必须禁用深度写入

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-06887
      如果当前渲染通道实例使用深度/模板附件,且其模板方面为只读布局,并且前向和后向 writeMask 都不为零,并且启用了模板测试,则所有模板操作必须VK_STENCIL_OP_KEEP

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07831
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_VIEWPORT 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewport,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07832
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SCISSOR 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetScissor,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07833
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_LINE_WIDTH 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08617
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08618
      如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08619
      如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07834
      如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBiasEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasvkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07835
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS 动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08621
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXTpColorBlendEnables 的任何元素设置为 VK_TRUE,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXTpColorBlendEquations 的相同元素设置为一个 VkColorBlendEquationEXT 结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLORVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORVK_BLEND_FACTOR_CONSTANT_ALPHAVK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetBlendConstants 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07836
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 depthBoundsTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetDepthBounds 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07837
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilCompareMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07838
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilWriteMask 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07839
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_STENCIL_REFERENCE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetStencilReference 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-maxMultiviewInstanceIndex-02688
      如果绘制记录在启用了多视图的渲染通道实例中,则最大实例索引**必须**小于或等于 VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-02689
      如果绑定的图形管线是使用 VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable 设置为 VK_TRUE 创建的,并且当前子通道具有深度/模板附件,则该附件**必须**已使用 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位集创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07634
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-06666
      如果启用了 VK_EXT_sample_locations 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 sampleLocationsEnable当前值VK_TRUE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetSampleLocationsEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07840
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_CULL_MODE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetCullMode 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07841
      如果着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_FRONT_FACE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,**必须**已调用过 vkCmdSetFrontFace 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07843
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07844
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthWriteEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07845
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_COMPARE_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 depthTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthCompareOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07846
      如果启用了 depthBounds 功能,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetDepthBoundsTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07847
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE 动态状态,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilTestEnable,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07848
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_STENCIL_OP 动态状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stencilTestEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetStencilOp,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03417
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-scissorCount-03418
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT 动态状态,并且该状态未被继承,则在执行此绘制命令之前,必须调用过 vkCmdSetScissorWithCount,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03419
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时同时启用了 VK_DYNAMIC_STATE_SCISSOR_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCountviewportCount 参数必须vkCmdSetScissorWithCountscissorCount 参数匹配。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04137
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportWScalingStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04138
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则在执行此绘制命令之前,必须调用过 vkCmdSetViewportWScalingNV,并且在当前命令缓冲区中没有随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08636
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定的图形管线在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV 动态状态,viewportWScalingEnable当前值VK_TRUE,则上次调用 vkCmdSetViewportWScalingNV 中的 viewportCount 参数必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04139
      如果绑定的图形管线状态在创建时启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但没有启用 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态,则绑定的图形管线在创建时,VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount 必须大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09233
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用 VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV 创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetCoarseSampleOrderNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09234
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08637
      如果启用了 shadingRateImage 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 shadingRateImageEnable当前值VK_TRUE,则最后一次调用 vkCmdSetViewportShadingRatePaletteNV 中的 viewportCount 参数必须大于或等于最后一次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-VkPipelineVieportCreateInfo-04141
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportSwizzleStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-VkPipelineVieportCreateInfo-04142
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCountviewportCount 参数的 VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount 创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07878
      如果启用了 exclusiveScissor 功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorEnableNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07879
      如果启用了 exclusiveScissor 功能,着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV 动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNVpExclusiveScissorEnables 的任何元素设置为 VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetExclusiveScissorNV,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-04876
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 动态状态创建的图形管线,则在执行此绘制命令之前,必须已调用过 vkCmdSetRasterizerDiscardEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-04877
      如果着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBiasEnable,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-logicOp-04878
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT,或者绑定了使用启用 VK_DYNAMIC_STATE_LOGIC_OP_EXT 动态状态创建的图形管线,且 rasterizerDiscardEnable当前值VK_FALSE,并且 logicOpEnable当前值VK_TRUE,则在执行此绘制命令之前,必须已调用过 vkCmdSetLogicOpEXT,且未在当前命令缓冲区中随后被失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-04552
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,绑定的图形管线是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态的情况下创建的,并且绑定的图形管线的任何着色器阶段写入到 PrimitiveShadingRateKHR 内置变量,则在执行此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawClusterIndirectHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-08642
      如果不支持 primitiveFragmentShadingRateWithMultipleViewports 限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR 内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCountviewportCount 参数必须1

    • VUID-vkCmdDrawClusterIndirectHUAWEI-blendEnable-04727
      如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则 pColorBlendStatepAttachments 成员中相应元素的 blendEnable 成员必须VK_FALSE

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08643
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 中影响该附件索引的 pColorBlendEnables 的相应成员必须VK_FALSE

    • VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07284
      如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用

      那么绑定图形管线的 rasterizationSamples 必须与当前子通道颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08644
      如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且以下任何一项均未启用

      那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples 设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08876
      如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06172
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06173
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06174
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06175
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06176
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pDepthAttachmentlayout 成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,则此命令必须不向深度附件写入任何值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06177
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachmentimageView 成员不是 VK_NULL_HANDLE,并且 pStencilAttachmentlayout 成员是 VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,则此命令必须不向模板附件写入任何值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewMask-06178
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::viewMask 相等的 VkPipelineRenderingCreateInfo::viewMask 创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06179
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染通道实例是通过 vkCmdBeginRendering 开始的,那么绑定的图形管线必须使用与 VkRenderingInfo::colorAttachmentCount 相等的 VkPipelineRenderingCreateInfo::colorAttachmentCount 创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08910
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08912
      如果未启用 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08911
      如果启用了 dynamicRenderingUnusedAttachments 特性,并且当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 大于 0 开始的,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 对应的元素相同的 VkFormat 创建,或者如果 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的对应元素存在,则必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09362
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,VkRenderingInfo::colorAttachmentCount 等于 1,并且没有任何着色器对象绑定到任何图形阶段,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 resolveImageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09363
      如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRenderingVkRenderingInfo::colorAttachmentCount 等于 1 开始的,并且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,则 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用通过 VkExternalFormatANDROID::externalFormat 值创建的图像创建,该值等于用于创建绑定图形管线的 VkExternalFormatANDROID::externalFormat 值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09364
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09365
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09366
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetColorBlendEnableEXT 必须将混合启用设置为 VK_FALSE

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-09367
      如果存在绑定到任何图形阶段的着色器对象,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,则在此绘制命令之前,vkCmdSetRasterizationSamplesEXT 必须rasterizationSamples 设置为 VK_SAMPLE_COUNT_1_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09368
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09369
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,且没有着色器对象绑定到任何图形阶段,并且绑定的图形管线是使用非零的 VkExternalFormatANDROID::externalFormat 值创建的,并且启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09370
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->width 设置为 1

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09371
      如果有一个着色器对象绑定到任何图形阶段,并且当前渲染过程包含使用 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID 解析模式的颜色附件,那么在执行此绘制命令之前,vkCmdSetFragmentShadingRateKHR 必须pFragmentSize->height 设置为 1

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07749
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08646
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterIndirectHUAWEI-attachmentCount-07750
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 动态状态创建的,那么 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo::attachmentCount

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08647
      如果启用了 colorWriteEnable 特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXTattachmentCount 参数必须大于或等于当前渲染过程实例中的颜色附件数量

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07751
      如果启用了 VK_EXT_discard_rectangles 扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09236
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT 动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfopNext 链中不包含 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,对于 VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles 中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07880
      如果启用了 VK_EXT_discard_rectangles 扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须调用 vkCmdSetDiscardRectangleEnableEXT,且之后没有在当前命令缓冲区中被 无效化

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07881
      如果启用了 VK_EXT_discard_rectangles 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 discardRectangleEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须调用过 vkCmdSetDiscardRectangleModeEXT,并且在当前命令缓冲区中没有后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08913
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08914
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08915
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08916
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageViewVK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08917
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat

    • VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08918
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments 特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageViewVkFormat,那么该格式的值必须VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06183
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 创建的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06184
      如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView 不为 VK_NULL_HANDLE,那么绑定的图形管线必须是通过 VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 创建的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06185
      如果绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVpColorAttachmentSamples 成员的相应元素相同的采样计数创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-06186
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-06187
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNVdepthStencilAttachmentSamples 成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07285
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount 参数大于 0,那么 VkRenderingInfo::pColorAttachments 数组中每个 imageView 不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples 值相同的采样计数创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07286
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07287
      如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMDVkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled 功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples 的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView 的采样计数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pNext-07935
      如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfopNext 链包含一个 VkMultisampledRenderToSingleSampledInfoEXT 结构,其中 multisampledRenderToSingleSampledEnable 等于 VK_TRUE,那么绑定图形管线的 rasterizationSamples 的值必须等于 VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples

    • VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-06198
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,那么绑定的管线必须使用 VkGraphicsPipelineCreateInfo::renderPass 等于 VK_NULL_HANDLE 创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pColorAttachments-08963
      如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,并且存在一个绑定了片段着色器的图形管线,该片段着色器静态写入颜色附件,颜色写入掩码不为零,颜色写入已启用,并且 VkRenderingInfo::pColorAttachments->imageView 的相应元素不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats 的相应元素必须不是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-08964
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了深度测试、启用了深度写入,并且 VkRenderingInfo::pDepthAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-08965
      如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且绑定了图形管线、启用了模板测试,并且 VkRenderingInfo::pStencilAttachment->imageView 不是 VK_NULL_HANDLE,那么用于创建管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat 必须 不能是 VK_FORMAT_UNDEFINED

    • VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708
      如果 primitivesGeneratedQueryWithRasterizerDiscard 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则 必须 不启用光栅化丢弃

    • VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709
      如果 primitivesGeneratedQueryWithNonZeroStreams 功能未启用,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,则绑定的图形管线 必须 不是使用 VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream 中的非零值创建的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07620
      如果启用了 depthClamp 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetDepthClampEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07621
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_POLYGON_MODE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetPolygonModeEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07622
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetRasterizationSamplesEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07623
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetSampleMaskEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-alphaToCoverageEnable-08919
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXTalphaToCoverageEnableVK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-alphaToCoverageEnable-08920
      如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将 alphaToCoverageEnable 设置为 VK_TRUE,则片段输出接口 必须 包含在 Location 0 的 Index 0 处用于 alpha Component 字的变量。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07624
      如果有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToCoverageEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07625
      如果启用了 alphaToOne 功能,并且有 shader 对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetAlphaToOneEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07626
      如果启用了 logicOp 功能,并且有 shader 对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在本次绘制命令之前, 必须 已调用 vkCmdSetLogicOpEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07627
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态创建的,则在本次绘制命令之前, 必须 已调用 vkCmdSetColorBlendEnableEXT 且未在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08657
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07628
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08658
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且最近一次针对任何附件调用 vkCmdSetColorBlendEnableEXT 时将该附件在 pColorBlendEnables 中的值设置为 VK_TRUE,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07629
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08659
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorWriteMaskEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07630
      如果启用了 geometryStreams 特性,并且着色器对象绑定到 VK_SHADER_STAGE_GEOMETRY_BIT 阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetRasterizationStreamEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07631
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,则在当前绘制命令之前,必须调用过 vkCmdSetConservativeRasterizationModeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07632
      如果启用了 VK_EXT_conservative_rasterization 扩展,着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 动态状态的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 conservativeRasterizationMode当前值VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,则在当前绘制命令之前,必须调用过 vkCmdSetExtraPrimitiveOverestimationSizeEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07633
      如果启用了 depthClipEnable 特性,并且着色器对象绑定到任何图形阶段,或者绑定了创建时启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 动态状态的图形管线,则在当前绘制命令之前,必须调用过 vkCmdSetDepthClipEnableEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07635
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendAdvancedEXT,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09416
      如果启用了 VK_EXT_blend_operation_advanced 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXTvkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07636
      如果启用了 VK_EXT_provoking_vertex 扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 动态状态的图形管线,并且 当前值rasterizerDiscardEnableVK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07637
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08666
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08667
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08668
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07638
      如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08669
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXTpolygonMode 设置为 VK_POLYGON_MODE_LINE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08670
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopologyprimitiveTopology 设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08671
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07849
      如果启用了 stippledRectangularLinesstippledBresenhamLinesstippledSmoothLines 中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE 动态状态创建的绑定图形管线状态,rasterizerDiscardEnable当前值VK_FALSE,并且 stippledLineEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetLineStipple 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07639
      如果启用了 depthClipControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClipNegativeOneToOneEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09650
      如果启用了 depthClampControl 功能,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT 动态状态创建的图形管线,并且 depthClampEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetDepthClampRangeEXT 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07640
      如果启用了 VK_NV_clip_space_w_scaling 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportWScalingEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07641
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态创建的图形管线,那么在执行此绘制命令之前,必须已调用过 vkCmdSetViewportSwizzleNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07642
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07643
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageToColorEnable当前值VK_TRUE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageToColorLocationNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07644
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationModeNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07645
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且着色器对象绑定到任何图形阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 动态状态创建的图形管线,rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationMode当前值不是 VK_COVERAGE_MODULATION_MODE_NONE_NV 的任何值,那么在执行此绘制命令之前,必须已调用过 vkCmdSetCoverageModulationTableEnableNV 并且没有在当前命令缓冲区中后续失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07646
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,并且 coverageModulationTableEnable当前值VK_TRUE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageModulationTableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07647
      如果启用了 shadingRateImage 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetShadingRateImageEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineFragmentShadingRate-09238
      如果启用了 pipelineFragmentShadingRate 特性,并且绑定了一个着色器对象到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetFragmentShadingRateKHR,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07648
      如果启用了 representativeFragmentTest 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetRepresentativeFragmentTestEnableNV,并且没有在当前命令缓冲区中随后失效

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07649
      如果启用了 coverageReductionMode 特性,并且绑定了一个着色器对象到任何图形阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 动态状态的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,必须已经调用过 vkCmdSetCoverageReductionModeNV,并且没有在当前命令缓冲区中随后失效

    • vkCmdSetColorBlendEnableEXT 为任何附件将 pColorBlendEnables 设置为 VK_TRUE,那么对于子通道中的这些附件,相应的图像视图的 格式特性 必须 包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07471
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前子通道不使用任何颜色和/或深度/模板附件,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 遵循 零附件子通道 的规则。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07472
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态且禁用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于用于创建绑定的图形管线的 VkPipelineMultisampleStateCreateInfo::rasterizationSamples 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07473
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,那么最后一次调用 vkCmdSetSampleMaskEXT 中的 samples 参数 必须 大于或等于最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07474
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 multisampledRenderToSingleSampled 特性未启用,并且既没有启用 VK_AMD_mixed_attachment_samples 扩展,也没有启用 VK_NV_framebuffer_mixed_samples 扩展,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与当前子通道的颜色和/或深度/模板附件相同。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09211
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,或者一个着色器对象被绑定到任何图形阶段,并且当前渲染通道实例包含一个 multisampledRenderToSingleSampledEnable 等于 VK_TRUEVkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 必须 与该结构的 rasterizationSamples 成员相同。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07476
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09417
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件启用。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07477
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09418
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07478
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09419
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07479
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT 调用的 firstAttachmentattachmentCount 参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-advancedBlendMaxColorAttachments-07480
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTVK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXTvkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 advancedBlendMaxColorAttachments

    • VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481
      如果未启用 primitivesGeneratedQueryWithNonZeroStreams 功能,并且 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT 查询处于活动状态,并且绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 状态,则最近一次调用 vkCmdSetRasterizationStreamEXT 必须已将 rasterizationStream 设置为零。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07482
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态并禁用了 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples 成员。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07483
      如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态,并且 sampleLocationsEnable当前值VK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTpSampleLocationsInfosampleLocationsPerPixel 成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07484
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,并且当前子通道具有深度/模板附件,则该附件的创建必须设置了 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 位。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07485
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则最近一次调用 vkCmdSetSampleLocationsEXTsampleLocationsInfo.sampleLocationGridSize.width 必须能被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者是通过 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回的,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07486
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则上次调用 vkCmdSetSampleLocationsEXT 中的 sampleLocationsInfo.sampleLocationGridSize.height **必须** 可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于 rasterizationSamples

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07487
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXTsampleLocationsEnableVK_TRUE,则片段着色器代码**必须**不得静态使用扩展指令 InterpolateAtSample

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07936
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.width **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.width 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07937
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationGridSize.height **必须**可以被 VkMultisamplePropertiesEXT::sampleLocationGridSize.height 整除,后者由 vkGetPhysicalDeviceMultisamplePropertiesEXT 返回,且 samples 参数等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples 值。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07938
      如果绑定的图形管线状态是在禁用 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 状态和启用 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且 sampleLocationsEnable当前值VK_TRUE,则 sampleLocationsInfo.sampleLocationsPerPixel **必须**等于上次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples

    • VUID-vkCmdDrawClusterIndirectHUAWEI-coverageModulationTableEnable-07488
      如果着色器对象绑定到任何图形阶段,或者绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNVcoverageModulationTableEnable 设置为 VK_TRUE,则上次调用 vkCmdSetCoverageModulationTableNV 中的 coverageModulationTableCount 参数**必须**等于当前的 rasterizationSamples 除以当前子通道中的颜色样本数量。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07489
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且当前子通道具有深度/模板附件,且在绑定的管线中启用了深度测试、模板测试或深度边界测试,则当前的 rasterizationSamples **必须**与深度/模板附件的样本计数相同。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-coverageToColorEnable-07490
      如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09420
      如果启用了 VK_NV_fragment_coverage_to_color 扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnablerasterizerDiscardEnable 设置为 VK_FALSE,并且上次调用 vkCmdSetCoverageToColorEnableNVcoverageToColorEnable 设置为 VK_TRUE,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNVcoverageToColorLocation 选择的位置具有颜色附件,其 VkFormatVK_FORMAT_R8_UINTVK_FORMAT_R8_SINTVK_FORMAT_R16_UINTVK_FORMAT_R16_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-coverageReductionMode-07491
      如果启用了 VK_NV_coverage_reduction_mode 扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVVK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 状态的情况下创建的,并且当前的覆盖率缩减模式 coverageReductionMode、当前的 rasterizationSamples 以及颜色和深度/模板附件(如果子通道有这些附件)的采样计数 必须vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 返回的有效组合。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07492
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT 动态状态,但未启用 VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么绑定的图形管线 必须 是使用 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数创建的。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07493
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNTVK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 动态状态的情况下创建的,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-09421
      如果启用了 VK_NV_viewport_swizzle 扩展,并且着色器对象绑定到任何图形阶段,那么上次调用 vkCmdSetViewportSwizzleNV 中的 viewportCount 参数 必须 大于或等于上次调用 vkCmdSetViewportWithCount 中的 viewportCount 参数。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07494
      如果启用了 VK_NV_framebuffer_mixed_samples 扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXTrasterizationSamples 大于颜色采样数,那么管线的 sampleShadingEnable 必须VK_FALSE

    • VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07495
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR,那么 stippledRectangularLines 特性 必须 启用。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07496
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_BRESENHAM,那么 stippledBresenhamLines 特性 必须 启用。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07497
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,那么 stippledSmoothLines 特性 必须 启用。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07498
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTVK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且如果当前的 stippledLineEnable 状态为 VK_TRUE,且当前的 lineRasterizationMode 状态为 VK_LINE_RASTERIZATION_MODE_DEFAULT,那么 stippledRectangularLines 特性 必须 启用,并且 VkPhysicalDeviceLimits::strictLines 必须VK_TRUE

    • VUID-vkCmdDrawClusterIndirectHUAWEI-conservativePointAndLineRasterization-07499
      如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 动态状态的情况下创建的,并且不支持 conservativePointAndLineRasterization,并且最后一个光栅化前着色器阶段输出的有效图元拓扑结构为直线或点,那么上次调用 vkCmdSetConservativeRasterizationModeEXT 设置的 conservativeRasterizationMode 必须VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-stage-07073
      如果绑定的管线是使用 VkPipelineShaderStageCreateInfo::stage 成员,该成员是 VkGraphicsPipelineCreateInfo::pStages 的一个元素,设置为 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_TESSELLATION_CONTROL_BITVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT 创建的,那么 网格着色器查询 必须 未处于活动状态。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08877
      如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT 阶段,或者绑定了使用启用了 VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT 动态状态创建的图形管线,并且 rasterizerDiscardEnable当前值VK_FALSE,那么在此绘制命令之前,当前命令缓冲区中 必须 调用过 vkCmdSetAttachmentFeedbackLoopEnableEXT 并且没有随后被 无效化

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07850
      如果动态状态是从 VkCommandBufferInheritanceViewportScissorInfoNV 继承的,则它必须在本绘图命令之前在当前命令缓冲区中设置。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08688
      如果未绑定图形管线,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_FRAGMENT_BIT 元素。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08689
      如果未绑定图形管线,且启用了 taskShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_TASK_BIT_EXT 元素。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08690
      如果未绑定图形管线,且启用了 meshShader 特性,则必须在当前命令缓冲区中调用 vkCmdBindShadersEXT,且 pStages 必须包含 VK_SHADER_STAGE_MESH_BIT_EXT 元素。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08693
      如果未绑定图形管线,并且至少启用了 taskShader meshShader 特性中的一个,则 VK_SHADER_STAGE_VERTEX_BITVK_SHADER_STAGE_MESH_BIT_EXT 阶段之一必须绑定有效的 VkShaderEXT,而另一个必须未绑定 VkShaderEXT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08694
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是在没有 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志的情况下创建的,则必须将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08695
      如果未绑定图形管线,并且同时启用了 taskShader meshShader 特性,且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_MESH_BIT_EXT 阶段,并且该 VkShaderEXT 是使用 VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT 标志创建的,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08696
      如果未绑定图形管线,并且已将有效的 VkShaderEXT 绑定到 VK_SHADER_STAGE_VERTEX_BIT 阶段,则必须没有 VkShaderEXT 绑定到 VK_SHADER_STAGE_TASK_BIT_EXT 阶段或 VK_SHADER_STAGE_MESH_BIT_EXT 阶段。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08698
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则同一 vkCreateShadersEXT 调用中所有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的着色器也必须绑定。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08699
      如果绑定了任何使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的图形着色器,则在同一 vkCreateShadersEXT 调用中,着色器没有使用 VK_SHADER_CREATE_LINK_STAGE_BIT_EXT 标志创建的阶段之间的任何阶段必须未绑定任何 VkShaderEXT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08878
      所有绑定的图形着色器对象必须使用相同或相同定义的推送常量范围创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-08879
      所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09372
      如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount 等于 1 开始的,且颜色附件的解析模式为 VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID,并且绑定了片段着色器,则它必须不声明 DepthReplacingStencilRefReplacingEXT 执行模式。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08715
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpDepthAttachmentReadEXT,则上次调用 vkCmdSetDepthWriteEnabledepthWriteEnable 参数必须VK_FALSE

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08716
      如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates 中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK 创建的,并且片段着色器声明了 EarlyFragmentTests 执行模式并使用 OpStencilAttachmentReadEXT,则上次调用 vkCmdSetStencilWriteMaskwriteMask 参数必须0

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09116
      如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,则 vkCmdSetColorWriteMaskEXTpColorWriteMasks 参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BITVK_COLOR_COMPONENT_G_BITVK_COLOR_COMPONENT_B_BIT 中的全部,或全部都不包含。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-maxFragmentDualSrcAttachments-09239
      如果任何附件启用了混合,并且该附件的源或目标混合因子使用了辅助颜色输入,则在此命令执行的Fragment Execution Model静态使用的任何输出附件的 Location 最大值必须小于 maxFragmentDualSrcAttachments

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09548
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则由vkCmdSetRenderingAttachmentLocations设置的VkRenderingAttachmentLocationInfo::pColorAttachmentLocations的每个元素的值必须与绑定的管道中相应元素的值匹配。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09549
      如果当前渲染通道是通过vkCmdBeginRendering开始的,并且没有任何着色器对象绑定到任何图形阶段,则绑定管道中的输入附件索引映射必须与通过VkRenderingInputAttachmentIndexInfo为当前渲染通道实例设置的索引映射匹配。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09642
      如果当前渲染通道是通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始的,则绑定的图形管线必须使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-09643
      如果绑定的图形管线是使用 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT 创建的,则当前渲染通道必须通过带有 VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT 标志的 vkCmdBeginRendering 开始。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-stage-06480
      绑定的图形管线必须没有使用 VkPipelineShaderStageCreateInfo::stage 成员创建,该成员在 VkGraphicsPipelineCreateInfo::pStages 的任何元素中设置为 VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITVK_SHADER_STAGE_GEOMETRY_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07074
      变换反馈查询 必须未激活。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-None-07075
      生成的图元查询 必须 处于非活动状态

    • VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineStatistics-07076
      用于创建任何活动的管线统计查询pipelineStatistics 成员必须不包含 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, 或 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT

    • VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02718
      如果 multiDrawIndirect 特性未启用,则 drawCount 必须01

    • VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02719
      drawCount 必须 小于或等于 VkPhysicalDeviceLimits::maxDrawIndirectCount

    • VUID-vkCmdDrawClusterIndirectHUAWEI-ClusterCullingHUAWEI-07824
      绑定到 VK_PIPELINE_BIND_POINT_GRAPHICS 的当前管线必须包含一个使用 ClusterCullingHUAWEI Execution Model 的着色器阶段。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-offset-07918
      offset 必须VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI::indirectBufferOffsetAlignment 的倍数

    有效使用(隐式)
    • VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-parameter
      commandBuffer 必须 为有效的 VkCommandBuffer 句柄。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-buffer-parameter
      buffer 必须 是一个有效的 VkBuffer 句柄。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-recording
      commandBuffer 必须 处于记录状态

    • VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-cmdpool
      分配 commandBufferVkCommandPool 必须 支持图形操作。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-renderpass
      此命令必须仅在渲染通道实例内部调用

    • VUID-vkCmdDrawClusterIndirectHUAWEI-videocoding
      此命令必须仅在视频编码范围之外调用。

    • VUID-vkCmdDrawClusterIndirectHUAWEI-commonparent
      buffercommandBuffer必须 从同一个 VkDevice 创建、分配或检索。

    主机同步
    • commandBuffer 的主机访问必须进行外部同步。

    • 对分配 commandBufferVkCommandPool 的主机访问必须进行外部同步。