绘制命令
绘制命令(名称中带有 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值,用于标识此结构。 -
pNext
为NULL
或指向扩展此结构的结构的指针。 -
flags
保留供将来使用。 -
topology
是一个VkPrimitiveTopology,定义图元拓扑,如下所述。 -
primitiveRestartEnable
控制是否将特殊的顶点索引值视为重新开始图元的组装。此启用仅适用于索引绘制(vkCmdDrawIndexed,vkCmdDrawMultiIndexedEXT和vkCmdDrawIndexedIndirect),并且当 Vulkan 1.4 或vkCmdBindIndexBuffer2
或vkCmdBindIndexBuffer
的indexType
参数等于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
特性,并且topology
为VK_PRIMITIVE_TOPOLOGY_POINT_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,则primitiveRestartEnable
必须为VK_FALSE
-
VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253
如果未启用primitiveTopologyPatchListRestart
特性,并且topology
为VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
,则primitiveRestartEnable
必须为VK_FALSE
-
VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429
如果未启用geometryShader
特性,则topology
必须不是VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
、VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
或VK_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::triangleFans
为VK_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-None-08970
以下至少有一项必须为真-
启用了
extendedDynamicState2
功能 -
启用了
shaderObject
功能 -
用于创建
commandBuffer
的 VkInstance 父级的 VkApplicationInfo::apiVersion
值大于或等于 1.3 版本
-
-
VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-parameter
commandBuffer
必须 为有效的 VkCommandBuffer 句柄。 -
VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-recording
commandBuffer
必须 处于记录状态。 -
VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-cmdpool
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdSetPrimitiveRestartEnable-videocoding
此命令必须仅在视频编码范围之外调用。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
图元拓扑
图元拓扑 决定了如何将连续的顶点组织成图元,并确定了图形管线开始时使用的图元类型。管线后续阶段的有效拓扑会受到曲面细分或几何着色(如果使用)的改变,并且取决于这些着色器的执行模式。在网格着色的情况下,唯一有效的拓扑由网格着色器的执行模式定义。
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;
-
VK_PRIMITIVE_TOPOLOGY_POINT_LIST
指定一系列单独的点图元。 -
VK_PRIMITIVE_TOPOLOGY_LINE_LIST
指定一系列单独的线图元。 -
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
指定一系列连接的线图元,连续的线共享一个顶点。 -
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
指定一系列单独的三角形图元。 -
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP
指定一系列连接的三角形图元,连续的三角形共享一条边。 -
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
指定一系列连接的三角形图元,所有三角形共享一个公共顶点。如果启用了VK_KHR_portability_subset
扩展,并且 VkPhysicalDevicePortabilitySubsetFeaturesKHR::triangleFans
为VK_FALSE
,则实现不支持三角形扇,并且必须不使用VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
。 -
VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
指定一系列具有邻接关系的单独线图元。 -
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
指定一系列具有邻接关系的连接线图元,连续的图元共享三个顶点。 -
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
指定一系列具有邻接关系的单独三角形图元。 -
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
指定具有邻接关系的连接三角形图元,连续的三角形共享一条边。 -
VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
指定单独的补丁图元。
下面将详细描述每个图元拓扑及其从顶点列表的构造,并提供支持图,根据以下键值:
顶点 |
3 维空间中的一个点。图中选择的位置是任意的,仅用于说明。 |
|
顶点编号 |
所提供顶点数据中顶点的序列位置。 |
|
触发顶点 |
主要图元中的触发顶点。尾部倾斜于相关图元。用于平面着色。 |
|
图元边 |
连接主图元点的边。 |
|
邻接边 |
这些线连接的点不构成主要图元,只能在几何着色器中访问。 |
|
绕序 |
图元内顶点定义的相对顺序,用于正面判定。此排序没有特定的起点或终点。 |
图表附有数学定义,其中顶点(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-None-08971
以下至少有一项必须为真-
extendedDynamicState
功能已启用 -
启用了
shaderObject
功能 -
用于创建
commandBuffer
的 VkInstance 父级的 VkApplicationInfo::apiVersion
值大于或等于 1.3 版本
-
-
VUID-vkCmdSetPrimitiveTopology-commandBuffer-parameter
commandBuffer
必须 为有效的 VkCommandBuffer 句柄。 -
VUID-vkCmdSetPrimitiveTopology-primitiveTopology-parameter
primitiveTopology
必须 是一个有效的 VkPrimitiveTopology 值 -
VUID-vkCmdSetPrimitiveTopology-commandBuffer-recording
commandBuffer
必须 处于记录状态。 -
VUID-vkCmdSetPrimitiveTopology-commandBuffer-cmdpool
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdSetPrimitiveTopology-videocoding
此命令必须仅在视频编码范围之外调用。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
拓扑类
图元拓扑结构分为以下拓扑类
拓扑类 | 图元拓扑 |
---|---|
点 |
|
线 |
|
三角形 |
|
补丁 |
|
点列表
当拓扑结构为 VK_PRIMITIVE_TOPOLOGY_POINT_LIST
时,每个连续的顶点根据以下等式定义一个单独的点图元:
-
pi = {vi}
由于只有一个顶点,因此该顶点是主导顶点。生成的图元数量等于vertexCount
。
线列表
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_LINE_LIST
时,每一对连续的顶点根据以下等式定义一个单独的线图元:
-
pi = {v2i, v2i+1}
生成的图元数量等于 ⌊vertexCount
/2⌋。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的主导顶点为 v2i。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的主导顶点为 v2i+1。
线带
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
时,每个顶点和后续顶点根据以下等式定义一个线图元:
-
pi = {vi, vi+1}
生成的图元数量等于 max(0,vertexCount
-1)。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的主导顶点为 vi。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的主导顶点为 vi+1。
三角形列表
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
时,每组连续的三个顶点根据以下等式定义一个单独的三角形图元:
-
pi = {v3i, v3i+1, v3i+2}
生成的图元数量等于 ⌊vertexCount
/3⌋。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的主导顶点为 v3i。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的主导顶点为 v3i+2。
三角形带
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP
时,每个顶点以及其后的两个顶点根据以下等式定义一个三角形图元:
-
pi = {vi, vi+(1+i%2), vi+(2-i%2)}
生成的图元数量等于 max(0,vertexCount
-2)。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的主导顶点为 vi。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的主导顶点为 vi+2。
每个连续三角形中顶点的顺序相反,因此整个带中的绕序是一致的。 |
三角形扇
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
时,三角形图元是围绕一个共享的公共顶点定义的,根据以下等式:
-
pi = {vi+1, vi+2, v0}
生成的图元数量等于 max(0,vertexCount
-2)。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的主导顶点为 vi+1。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的主导顶点为 vi+2。
如果启用了 |
带邻接的线列表
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
时,每组连续的四个顶点根据以下等式定义一个带邻接的线图元:
-
pi = {v4i, v4i+1, v4i+2,v4i+3}
一个线图元由总图元的第二个和第三个顶点描述,其余两个顶点只能在几何着色器中访问。
生成的图元数量等于⌊vertexCount
/4⌋。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的触发顶点为 v4i+1。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的触发顶点为 v4i+2。
带邻接的线段条
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
时,每个顶点和其后的顶点定义一个带邻接的线段图元,根据以下公式:
-
pi = {vi, vi+1, vi+2, vi+3}
一个线图元由总图元的第二个和第三个顶点描述,其余两个顶点只能在几何着色器中访问。
生成的图元数量等于 max(0, vertexCount
-3)。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的主导顶点为 vi+1。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的主导顶点为 vi+2。
带邻接的三角形列表
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
时,每连续的六个顶点定义一个带邻接的三角形图元,根据以下公式:
-
pi = {v6i, v6i+1, v6i+2, v6i+3, v6i+4, v6i+5}
一个三角形图元由整个图元的第一个、第三个和第五个顶点描述,其余三个顶点仅在几何着色器中可访问。
生成的图元数量等于 ⌊vertexCount
/6⌋。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的触发顶点为 v6i。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的触发顶点为 v6i+4。
带邻接的三角形条带
当图元拓扑为 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-1 且 i%2=1 时
-
pi = {v2i, v2i-2, v2i+2, v2i+6, v2i+4, v2i+3} 当 i>0, i<n-1 且 i%2=0 时
-
pi = {v2i, v2i+3, v2i+4, v2i+5, v2i+2, v2i-2} 当 i=n-1 且 i%2=1 时
-
pi = {v2i, v2i-2, v2i+2, v2i+5, v2i+4, v2i+3} 当 i=n-1 且 i%2=0 时
在所有情况下,三角形图元由整个图元的第一个、第三个和第五个顶点描述,其余三个顶点仅在几何着色器中可访问。
每个连续三角形中顶点的顺序都会改变,以使整个条带中的缠绕顺序保持一致。 |
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
时,pi 的触发顶点始终为 v2i。
当 provokingVertexMode
为 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
时,pi 的触发顶点始终为 v2i+4。
面片列表
当图元拓扑为 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
时,每连续的 m 个顶点定义一个面片图元,根据以下公式:
-
pi = {vmi, vmi+1, …, vmi+(m-2), vmi+(m-1)}
其中 m 等于 VkPipelineTessellationStateCreateInfo::patchControlPoints
。
面片列表永远不会传递给顶点后处理,因此没有为面片图元定义触发顶点。生成的图元数量等于 ⌊vertexCount
/m⌋。
构成面片的顶点没有隐含的几何形状,它们用作细分着色器和固定功能细分器的输入,以生成新的点、线或三角形图元。
图元顺序
-
提交顺序决定初始顺序
-
对于间接绘制命令,VkDrawIndirectCommand的访问实例在
buffer
中存储的顺序,从较低的间接缓冲区地址到较高的地址。 -
如果绘制命令包含多个实例,则执行实例的顺序,从较低编号的实例到较高的实例。
-
绘制命令指定的图元顺序
在此顺序中,实现进一步对图元进行排序
图元顺序稍后用于定义光栅化顺序,它决定了片段将结果输出到帧缓冲区的顺序。
可编程图元着色
一旦图元被组装完成,它们就会进入管线的顶点着色阶段。如果绘制包含多个实例,那么这组图元将被多次发送到顶点着色阶段,每个实例一次。
顶点着色是否发生在作为不完整图元一部分被丢弃的顶点上是实现相关的,但如果确实发生,则它的操作就好像它们是完整图元中的顶点一样,并且此类调用可以产生副作用。
顶点着色从图元组装阶段接收两个每个顶点的输入 - vertexIndex
和 instanceIndex
。这些值是如何生成的在下面定义,每个命令都有定义。
绘制命令大致分为两类
-
非索引绘制命令向顶点着色器提供一个连续的
vertexIndex
。这个连续的索引由设备自动生成(有关指定由vertexIndex
索引的顶点属性,以及将包含这些属性的顶点缓冲区绑定到命令缓冲区的详细信息,请参见 固定功能顶点处理)。这些命令是 -
索引绘制命令从索引缓冲区读取索引值,并使用它来计算顶点着色器的
vertexIndex
值。这些命令是
要将索引缓冲区绑定到命令缓冲区,请调用
// Provided by VK_VERSION_1_0
void vkCmdBindIndexBuffer(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
VkIndexType indexType);
-
commandBuffer
是要记录命令的命令缓冲区。 -
buffer
是要绑定的缓冲区。 -
offset
是buffer
内的起始偏移量(以字节为单位),用于索引缓冲区地址计算。 -
indexType
是一个 VkIndexType 值,用于指定索引的大小。
如果启用了 maintenance6
功能,则 buffer
可以 是 VK_NULL_HANDLE。如果 buffer
是 VK_NULL_HANDLE 并且启用了 nullDescriptor
功能,则每次获取的索引都会得到零值。
-
VUID-vkCmdBindIndexBuffer-offset-08782
offset
必须 小于buffer
的大小 -
VUID-vkCmdBindIndexBuffer-offset-08783
offset
和支持buffer
的VkDeviceMemory
对象的范围的基址之和,必须 是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
如果indexType
是VK_INDEX_TYPE_UINT8
,则 必须 启用indexTypeUint8
功能 -
VUID-vkCmdBindIndexBuffer-None-09493
如果未启用maintenance6
功能,则buffer
必须 不是 VK_NULL_HANDLE -
VUID-vkCmdBindIndexBuffer-buffer-09494
如果buffer
是 VK_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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdBindIndexBuffer-commonparent
buffer
和commandBuffer
(均为非忽略参数的有效句柄) 必须 从相同的 VkDevice 创建、分配或检索。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
要将索引缓冲区及其大小绑定到命令缓冲区,请调用
// 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
是要绑定的缓冲区。 -
offset
是buffer
内的起始偏移量(以字节为单位),用于索引缓冲区地址计算。 -
size
是从buffer
绑定的索引数据的大小(以字节为单位)。 -
indexType
是一个 VkIndexType 值,用于指定索引的大小。
size
指定从 offset
开始的索引缓冲区的绑定大小。如果 size
是 VK_WHOLE_SIZE
,则绑定大小是从 offset
到 buffer
末尾。
如果启用了 maintenance6
功能,则 buffer
可以 是 VK_NULL_HANDLE。如果 buffer
是 VK_NULL_HANDLE 并且启用了 nullDescriptor
功能,则每次获取的索引都会得到零值。
-
VUID-vkCmdBindIndexBuffer2-offset-08782
offset
必须 小于buffer
的大小 -
VUID-vkCmdBindIndexBuffer2-offset-08783
offset
和支持buffer
的VkDeviceMemory
对象的范围的基址之和,必须 是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
如果indexType
是VK_INDEX_TYPE_UINT8
,则 必须 启用indexTypeUint8
功能 -
VUID-vkCmdBindIndexBuffer2-None-09493
如果未启用maintenance6
功能,则buffer
必须 不是 VK_NULL_HANDLE -
VUID-vkCmdBindIndexBuffer2-buffer-09494
如果buffer
是 VK_NULL_HANDLE,则 offset 必须 为零 -
VUID-vkCmdBindIndexBuffer2-size-08767
如果size
不是VK_WHOLE_SIZE
,则size
必须 是indexType
指示的类型大小的倍数 -
VUID-vkCmdBindIndexBuffer2-size-08768
如果size
不是VK_WHOLE_SIZE
,则offset
和size
之和 必须 小于或等于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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdBindIndexBuffer2-commonparent
buffer
和commandBuffer
(均为非忽略参数的有效句柄) 必须 从相同的 VkDevice 创建、分配或检索。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
vkCmdBindIndexBuffer2::indexType
和 vkCmdBindIndexBuffer::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
次,instanceIndex
从 firstInstance
开始,并为每个实例按顺序递增。组装好的图元将执行绑定的图形管线。
-
VUID-vkCmdDraw-magFilter-04553
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDraw-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDraw-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDraw-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDraw-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDraw-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDraw-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDraw-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDraw-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDraw-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDraw-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDraw-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDraw-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDraw-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDraw-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDraw-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDraw-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDraw-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDraw-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDraw-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDraw-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDraw-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDraw-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDraw-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDraw-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDraw-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDraw-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDraw-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDraw-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDraw-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDraw-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDraw-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDraw-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDraw-sparseImageInt64Atomics-04474
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDraw-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDraw-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDraw-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDraw-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDraw-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDraw-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDraw-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDraw-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDraw-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDraw-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDraw-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDraw-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDraw-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDraw-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo: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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDraw-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDraw-None-08619
如果输出线图元的着色器对象绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDraw-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且depthBiasEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDraw-None-07835
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDraw-None-08621
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将pColorBlendEnables
的任何元素设置为VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将pColorBlendEquations
的相同元素设置为一个VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则vkCmdSetViewportWithCount
的viewportCount
参数必须与vkCmdSetScissorWithCount
的scissorCount
参数匹配。 -
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_COUNT
和VK_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_COUNT
和VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且shadingRateImageEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。 -
VUID-vkCmdDraw-None-08637
如果启用了shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。 -
VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将pExclusiveScissorEnables
的任何元素设置为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,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDraw-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则pColorBlendState
的pAttachments
成员中相应元素的blendEnable
成员必须为VK_FALSE
。 -
VUID-vkCmdDraw-None-08643
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用vkCmdSetColorBlendEnableEXT
中影响该附件索引的pColorBlendEnables
的相应成员必须为VK_FALSE
。 -
VUID-vkCmdDraw-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用那么绑定图形管线的
rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。 -
VUID-vkCmdDraw-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且以下任何一项均未启用那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将
rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。 -
VUID-vkCmdDraw-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。 -
VUID-vkCmdDraw-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDraw-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDraw-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDraw-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDraw-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDraw-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。 -
VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08912
如果未启用dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08911
如果启用了dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDraw-attachmentCount-07750
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于绑定图形管线的VkPipelineColorBlendStateCreateInfo
::attachmentCount
-
VUID-vkCmdDraw-None-08647
如果启用了colorWriteEnable
特性,并且有一个着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在当前命令缓冲区中最近一次调用vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量 -
VUID-vkCmdDraw-None-07751
如果启用了VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为VK_FALSE
,并且discardRectangleEnable
的当前值为VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDraw-rasterizerDiscardEnable-09236
如果启用了VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的pColorAttachmentSamples
成员的相应元素相同的采样计数创建。 -
VUID-vkCmdDraw-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDraw-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDraw-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的rasterizationSamples
值相同的采样计数创建。 -
VUID-vkCmdDraw-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDraw-multisampledRenderToSingleSampled-07287
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDraw-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时alphaToCoverageEnable
为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
VUID-vkCmdDraw-alphaToCoverageEnable-08920
如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将alphaToCoverageEnable
设置为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDraw-None-07628
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDraw-None-08658
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDraw-None-07636
如果启用了VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的rasterizerDiscardEnable
为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-07637
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-08666
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-08667
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-08668
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-07638
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-08669
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-08670
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-08671
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDraw-None-07849
如果启用了stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的rasterizationSamples
必须 与该结构的rasterizationSamples
成员相同。 -
VUID-vkCmdDraw-firstAttachment-07476
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。 -
VUID-vkCmdDraw-rasterizerDiscardEnable-09417
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。 -
VUID-vkCmdDraw-firstAttachment-07477
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDraw-rasterizerDiscardEnable-09418
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDraw-firstAttachment-07478
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDraw-rasterizerDiscardEnable-09419
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDraw-firstAttachment-07479
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且vkCmdSetColorBlendAdvancedEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。 -
VUID-vkCmdDraw-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的rasterizationSamples
成员。 -
VUID-vkCmdDraw-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且sampleLocationsEnable
的当前值为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
参数。 -
VUID-vkCmdDraw-sampleLocationsEnable-07484
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将coverageModulationTableEnable
设置为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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDraw-rasterizerDiscardEnable-09420
如果启用了VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDraw-coverageReductionMode-07491
如果启用了VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和VK_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_COUNT
和VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
大于颜色采样数,那么管线的sampleShadingEnable
必须 为VK_FALSE
。 -
VUID-vkCmdDraw-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_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_BIT
或VK_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-08879
所有绑定的图形着色器对象必须使用相同或相同定义的描述符集布局数组创建。 -
VUID-vkCmdDraw-colorAttachmentCount-09372
如果当前渲染通道实例是使用 vkCmdBeginRendering 和一个 VkRenderingInfo::colorAttachmentCount
等于1
开始的,且颜色附件的解析模式为VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID
,并且绑定了片段着色器,则它必须不声明DepthReplacing
或StencilRefReplacingEXT
执行模式。 -
VUID-vkCmdDraw-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的depthWriteEnable
参数必须为VK_FALSE
。 -
VUID-vkCmdDraw-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的writeMask
参数必须为0
。 -
VUID-vkCmdDraw-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的pColorWriteMasks
参数的相应元素必须包含VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDraw-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDraw-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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-pNext-09461
如果绑定的图形管线状态是通过 VkPipelineVertexInputDivisorStateCreateInfo 在 VkGraphicsPipelineCreateInfo::pVertexInputState
的pNext
链中创建的,VkPipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-vkCmdDraw-None-09462
如果使用着色器对象进行绘制,或者绑定的图形管线状态启用了VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
动态状态,则 vkCmdSetVertexInputEXT 调用中设置此动态状态的pVertexBindingDescriptions
参数的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-vkCmdDraw-commandBuffer-parameter
commandBuffer
必须 为有效的 VkCommandBuffer 句柄。 -
VUID-vkCmdDraw-commandBuffer-recording
commandBuffer
必须 处于记录状态。 -
VUID-vkCmdDraw-commandBuffer-cmdpool
分配commandBuffer
的VkCommandPool
必须 支持图形操作。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
要记录索引绘制,请调用
// 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::indexType
或 vkCmdBindIndexBuffer::indexType
参数定义,该参数用于绑定缓冲区。
第一个顶点索引位于绑定索引缓冲区内的偏移量 firstIndex
× indexSize
+ offset
处,其中 offset
是由 vkCmdBindIndexBuffer
或 vkCmdBindIndexBuffer2
指定的偏移量,indexSize
是由 indexType
指定的类型的字节大小。后续索引值从索引缓冲区中的连续位置检索。索引首先与图元重启值进行比较,然后零扩展为 32 位(如果 indexType
是 VK_INDEX_TYPE_UINT8
或 VK_INDEX_TYPE_UINT16
),并加上 vertexOffset
,然后再作为 vertexIndex
值提供。
图元绘制 instanceCount
次,instanceIndex
从 firstInstance
开始,每次实例递增。组装的图元执行绑定的图形管线。
-
VUID-vkCmdDrawIndexed-magFilter-04553
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndexed-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndexed-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndexed-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndexed-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDrawIndexed-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDrawIndexed-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDrawIndexed-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDrawIndexed-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndexed-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndexed-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDrawIndexed-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDrawIndexed-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexed-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexed-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexed-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexed-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndexed-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndexed-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDrawIndexed-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndexed-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndexed-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDrawIndexed-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDrawIndexed-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDrawIndexed-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndexed-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndexed-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDrawIndexed-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDrawIndexed-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDrawIndexed-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndexed-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndexed-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndexed-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDrawIndexed-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndexed-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDrawIndexed-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDrawIndexed-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDrawIndexed-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDrawIndexed-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDrawIndexed-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDrawIndexed-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDrawIndexed-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDrawIndexed-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo: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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexed-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexed-None-08619
如果输出线图元的着色器对象绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexed-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且depthBiasEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexed-None-07835
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexed-None-08621
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将pColorBlendEnables
的任何元素设置为VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将pColorBlendEquations
的相同元素设置为一个VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则vkCmdSetViewportWithCount
的viewportCount
参数必须与vkCmdSetScissorWithCount
的scissorCount
参数匹配。 -
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_COUNT
和VK_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_COUNT
和VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且shadingRateImageEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。 -
VUID-vkCmdDrawIndexed-None-08637
如果启用了shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。 -
VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将pExclusiveScissorEnables
的任何元素设置为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,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndexed-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则pColorBlendState
的pAttachments
成员中相应元素的blendEnable
成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexed-None-08643
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用vkCmdSetColorBlendEnableEXT
中影响该附件索引的pColorBlendEnables
的相应成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用那么绑定图形管线的
rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。 -
VUID-vkCmdDrawIndexed-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且以下任何一项均未启用那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将
rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。 -
VUID-vkCmdDrawIndexed-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。 -
VUID-vkCmdDrawIndexed-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexed-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndexed-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexed-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndexed-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexed-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。 -
VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08912
如果未启用dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08911
如果启用了dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndexed-attachmentCount-07750
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于绑定图形管线的VkPipelineColorBlendStateCreateInfo
::attachmentCount
-
VUID-vkCmdDrawIndexed-None-08647
如果启用了colorWriteEnable
特性,并且有一个着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在当前命令缓冲区中最近一次调用vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量 -
VUID-vkCmdDrawIndexed-None-07751
如果启用了VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为VK_FALSE
,并且discardRectangleEnable
的当前值为VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09236
如果启用了VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的pColorAttachmentSamples
成员的相应元素相同的采样计数创建。 -
VUID-vkCmdDrawIndexed-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexed-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的rasterizationSamples
值相同的采样计数创建。 -
VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07287
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexed-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时alphaToCoverageEnable
为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
VUID-vkCmdDrawIndexed-alphaToCoverageEnable-08920
如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将alphaToCoverageEnable
设置为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexed-None-07628
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexed-None-08658
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexed-None-07636
如果启用了VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的rasterizerDiscardEnable
为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-07637
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-08666
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-08667
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-08668
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-07638
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-08669
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-08670
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-08671
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexed-None-07849
如果启用了stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的rasterizationSamples
必须 与该结构的rasterizationSamples
成员相同。 -
VUID-vkCmdDrawIndexed-firstAttachment-07476
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。 -
VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09417
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。 -
VUID-vkCmdDrawIndexed-firstAttachment-07477
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09418
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndexed-firstAttachment-07478
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09419
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndexed-firstAttachment-07479
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且vkCmdSetColorBlendAdvancedEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。 -
VUID-vkCmdDrawIndexed-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的rasterizationSamples
成员。 -
VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且sampleLocationsEnable
的当前值为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
参数。 -
VUID-vkCmdDrawIndexed-sampleLocationsEnable-07484
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将coverageModulationTableEnable
设置为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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09420
如果启用了VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndexed-coverageReductionMode-07491
如果启用了VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和VK_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_COUNT
和VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
大于颜色采样数,那么管线的sampleShadingEnable
必须 为VK_FALSE
。 -
VUID-vkCmdDrawIndexed-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_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_BIT
或VK_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
,并且绑定了片段着色器,则它必须不声明DepthReplacing
或StencilRefReplacingEXT
执行模式。 -
VUID-vkCmdDrawIndexed-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的depthWriteEnable
参数必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexed-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的writeMask
参数必须为0
。 -
VUID-vkCmdDrawIndexed-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的pColorWriteMasks
参数的相应元素必须包含VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDrawIndexed-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDrawIndexed-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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-pNext-09461
如果绑定的图形管线状态是通过 VkPipelineVertexInputDivisorStateCreateInfo 在 VkGraphicsPipelineCreateInfo::pVertexInputState
的pNext
链中创建的,VkPipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-vkCmdDrawIndexed-None-09462
如果使用着色器对象进行绘制,或者绑定的图形管线状态启用了VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
动态状态,则 vkCmdSetVertexInputEXT 调用中设置此动态状态的pVertexBindingDescriptions
参数的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-vkCmdDrawIndexed-robustBufferAccess2-08798
如果未启用robustBufferAccess2
功能,则 (indexSize
× (firstIndex
+indexCount
) +offset
) 必须小于或等于绑定的索引缓冲区的大小。其中indexSize
基于indexType
指定的类型,并且索引缓冲区、indexType
和offset
通过vkCmdBindIndexBuffer
或vkCmdBindIndexBuffer2
指定。如果使用vkCmdBindIndexBuffer2
绑定索引缓冲区,则绑定索引缓冲区的大小为 vkCmdBindIndexBuffer2::size
。
-
VUID-vkCmdDrawIndexed-commandBuffer-parameter
commandBuffer
必须 为有效的 VkCommandBuffer 句柄。 -
VUID-vkCmdDrawIndexed-commandBuffer-recording
commandBuffer
必须 处于记录状态。 -
VUID-vkCmdDrawIndexed-commandBuffer-cmdpool
分配commandBuffer
的VkCommandPool
必须 支持图形操作。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
要记录一系列没有状态变化的有序绘制,请调用
// 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。 -
stride
是pVertexInfo
的连续元素之间的字节步幅。
记录的绘制次数为 drawCount
,每次绘制都从 pVertexInfo
中顺序读取 firstVertex
和 vertexCount
。对于每个记录的绘制,图元的组装方式与 vkCmdDraw 相同,并绘制 instanceCount
次,其中 instanceIndex
从 firstInstance
开始,并为每个实例顺序递增。
-
VUID-vkCmdDrawMultiEXT-magFilter-04553
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawMultiEXT-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawMultiEXT-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawMultiEXT-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawMultiEXT-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDrawMultiEXT-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDrawMultiEXT-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDrawMultiEXT-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDrawMultiEXT-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawMultiEXT-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawMultiEXT-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDrawMultiEXT-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDrawMultiEXT-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawMultiEXT-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawMultiEXT-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawMultiEXT-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawMultiEXT-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawMultiEXT-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawMultiEXT-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDrawMultiEXT-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawMultiEXT-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawMultiEXT-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDrawMultiEXT-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDrawMultiEXT-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDrawMultiEXT-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawMultiEXT-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawMultiEXT-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDrawMultiEXT-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDrawMultiEXT-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDrawMultiEXT-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawMultiEXT-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawMultiEXT-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawMultiEXT-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04474
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawMultiEXT-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDrawMultiEXT-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDrawMultiEXT-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDrawMultiEXT-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDrawMultiEXT-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDrawMultiEXT-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDrawMultiEXT-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo: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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiEXT-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiEXT-None-08619
如果输出线图元的着色器对象绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiEXT-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且depthBiasEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiEXT-None-07835
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiEXT-None-08621
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将pColorBlendEnables
的任何元素设置为VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将pColorBlendEquations
的相同元素设置为一个VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则vkCmdSetViewportWithCount
的viewportCount
参数必须与vkCmdSetScissorWithCount
的scissorCount
参数匹配。 -
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_COUNT
和VK_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_COUNT
和VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且shadingRateImageEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。 -
VUID-vkCmdDrawMultiEXT-None-08637
如果启用了shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。 -
VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将pExclusiveScissorEnables
的任何元素设置为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,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawMultiEXT-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则pColorBlendState
的pAttachments
成员中相应元素的blendEnable
成员必须为VK_FALSE
。 -
VUID-vkCmdDrawMultiEXT-None-08643
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用vkCmdSetColorBlendEnableEXT
中影响该附件索引的pColorBlendEnables
的相应成员必须为VK_FALSE
。 -
VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用那么绑定图形管线的
rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。 -
VUID-vkCmdDrawMultiEXT-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且以下任何一项均未启用那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将
rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。 -
VUID-vkCmdDrawMultiEXT-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。 -
VUID-vkCmdDrawMultiEXT-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawMultiEXT-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawMultiEXT-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawMultiEXT-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawMultiEXT-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawMultiEXT-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。 -
VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08912
如果未启用dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08911
如果启用了dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawMultiEXT-attachmentCount-07750
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于绑定图形管线的VkPipelineColorBlendStateCreateInfo
::attachmentCount
-
VUID-vkCmdDrawMultiEXT-None-08647
如果启用了colorWriteEnable
特性,并且有一个着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在当前命令缓冲区中最近一次调用vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量 -
VUID-vkCmdDrawMultiEXT-None-07751
如果启用了VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为VK_FALSE
,并且discardRectangleEnable
的当前值为VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09236
如果启用了VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的pColorAttachmentSamples
成员的相应元素相同的采样计数创建。 -
VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的rasterizationSamples
值相同的采样计数创建。 -
VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07287
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawMultiEXT-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时alphaToCoverageEnable
为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08920
如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将alphaToCoverageEnable
设置为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawMultiEXT-None-07628
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawMultiEXT-None-08658
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawMultiEXT-None-07636
如果启用了VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的rasterizerDiscardEnable
为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-07637
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-08666
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-08667
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-08668
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-07638
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-08669
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-08670
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-08671
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiEXT-None-07849
如果启用了stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的rasterizationSamples
必须 与该结构的rasterizationSamples
成员相同。 -
VUID-vkCmdDrawMultiEXT-firstAttachment-07476
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。 -
VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09417
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。 -
VUID-vkCmdDrawMultiEXT-firstAttachment-07477
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09418
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawMultiEXT-firstAttachment-07478
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09419
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawMultiEXT-firstAttachment-07479
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且vkCmdSetColorBlendAdvancedEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。 -
VUID-vkCmdDrawMultiEXT-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的rasterizationSamples
成员。 -
VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且sampleLocationsEnable
的当前值为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
参数。 -
VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07484
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将coverageModulationTableEnable
设置为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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09420
如果启用了VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawMultiEXT-coverageReductionMode-07491
如果启用了VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和VK_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_COUNT
和VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
大于颜色采样数,那么管线的sampleShadingEnable
必须 为VK_FALSE
。 -
VUID-vkCmdDrawMultiEXT-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_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_BIT
或VK_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
,并且绑定了片段着色器,则它必须不声明DepthReplacing
或StencilRefReplacingEXT
执行模式。 -
VUID-vkCmdDrawMultiEXT-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的depthWriteEnable
参数必须为VK_FALSE
。 -
VUID-vkCmdDrawMultiEXT-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的writeMask
参数必须为0
。 -
VUID-vkCmdDrawMultiEXT-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的pColorWriteMasks
参数的相应元素必须包含VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDrawMultiEXT-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDrawMultiEXT-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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-pNext-09461
如果绑定的图形管线状态是通过 VkPipelineVertexInputDivisorStateCreateInfo 在 VkGraphicsPipelineCreateInfo::pVertexInputState
的pNext
链中创建的,VkPipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-vkCmdDrawMultiEXT-None-09462
如果使用着色器对象进行绘制,或者绑定的图形管线状态启用了VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
动态状态,则 vkCmdSetVertexInputEXT 调用中设置此动态状态的pVertexBindingDescriptions
参数的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
要记录在它们之间没有状态变化的索引绘制的有序序列,请调用
// 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。 -
stride
是pIndexInfo
的连续元素之间的字节步幅。 -
pVertexOffset
是NULL
,或者是指向在索引到顶点缓冲区之前添加到顶点索引的值的指针。当指定时,将忽略VkMultiDrawIndexedInfoEXT
::offset
。
记录的绘制次数为 drawCount
,每次绘制都从 pIndexInfo
中按顺序读取一个 firstIndex
和一个 indexCount
。 对于每次记录的绘制,基元的组装方式与 vkCmdDrawIndexed 相同,并使用从 firstInstance
开始的 instanceIndex
顺序绘制 instanceCount
次。如果 pVertexOffset
为 NULL
,则还会从 pIndexInfo
读取 vertexOffset
,否则将使用从解引用 pVertexOffset
获得的值。
-
VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawMultiIndexedEXT-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawMultiIndexedEXT-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDrawMultiIndexedEXT-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDrawMultiIndexedEXT-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDrawMultiIndexedEXT-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawMultiIndexedEXT-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDrawMultiIndexedEXT-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawMultiIndexedEXT-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDrawMultiIndexedEXT-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDrawMultiIndexedEXT-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawMultiIndexedEXT-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDrawMultiIndexedEXT-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDrawMultiIndexedEXT-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDrawMultiIndexedEXT-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawMultiIndexedEXT-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawMultiIndexedEXT-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawMultiIndexedEXT-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04474
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawMultiIndexedEXT-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDrawMultiIndexedEXT-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDrawMultiIndexedEXT-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDrawMultiIndexedEXT-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDrawMultiIndexedEXT-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDrawMultiIndexedEXT-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo: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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08619
如果输出线图元的着色器对象绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且depthBiasEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-07835
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08621
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将pColorBlendEnables
的任何元素设置为VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将pColorBlendEquations
的相同元素设置为一个VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则vkCmdSetViewportWithCount
的viewportCount
参数必须与vkCmdSetScissorWithCount
的scissorCount
参数匹配。 -
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_COUNT
和VK_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_COUNT
和VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且shadingRateImageEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08637
如果启用了shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。 -
VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将pExclusiveScissorEnables
的任何元素设置为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,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则pColorBlendState
的pAttachments
成员中相应元素的blendEnable
成员必须为VK_FALSE
。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08643
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用vkCmdSetColorBlendEnableEXT
中影响该附件索引的pColorBlendEnables
的相应成员必须为VK_FALSE
。 -
VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用那么绑定图形管线的
rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且以下任何一项均未启用那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将
rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。 -
VUID-vkCmdDrawMultiIndexedEXT-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawMultiIndexedEXT-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawMultiIndexedEXT-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawMultiIndexedEXT-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawMultiIndexedEXT-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawMultiIndexedEXT-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。 -
VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08912
如果未启用dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08911
如果启用了dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawMultiIndexedEXT-attachmentCount-07750
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于绑定图形管线的VkPipelineColorBlendStateCreateInfo
::attachmentCount
-
VUID-vkCmdDrawMultiIndexedEXT-None-08647
如果启用了colorWriteEnable
特性,并且有一个着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在当前命令缓冲区中最近一次调用vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量 -
VUID-vkCmdDrawMultiIndexedEXT-None-07751
如果启用了VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为VK_FALSE
,并且discardRectangleEnable
的当前值为VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09236
如果启用了VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的pColorAttachmentSamples
成员的相应元素相同的采样计数创建。 -
VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的rasterizationSamples
值相同的采样计数创建。 -
VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07287
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawMultiIndexedEXT-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时alphaToCoverageEnable
为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08920
如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将alphaToCoverageEnable
设置为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-07628
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08658
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawMultiIndexedEXT-None-07636
如果启用了VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的rasterizerDiscardEnable
为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-07637
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-08666
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-08667
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-08668
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-07638
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-08669
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-08670
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-08671
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawMultiIndexedEXT-None-07849
如果启用了stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的rasterizationSamples
必须 与该结构的rasterizationSamples
成员相同。 -
VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07476
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。 -
VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09417
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。 -
VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07477
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09418
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07478
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09419
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07479
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且vkCmdSetColorBlendAdvancedEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。 -
VUID-vkCmdDrawMultiIndexedEXT-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的rasterizationSamples
成员。 -
VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且sampleLocationsEnable
的当前值为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
参数。 -
VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07484
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将coverageModulationTableEnable
设置为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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09420
如果启用了VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawMultiIndexedEXT-coverageReductionMode-07491
如果启用了VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和VK_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_COUNT
和VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
大于颜色采样数,那么管线的sampleShadingEnable
必须 为VK_FALSE
。 -
VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_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_BIT
或VK_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
,并且绑定了片段着色器,则它必须不声明DepthReplacing
或StencilRefReplacingEXT
执行模式。 -
VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的depthWriteEnable
参数必须为VK_FALSE
。 -
VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的writeMask
参数必须为0
。 -
VUID-vkCmdDrawMultiIndexedEXT-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的pColorWriteMasks
参数的相应元素必须包含VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDrawMultiIndexedEXT-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDrawMultiIndexedEXT-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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-pNext-09461
如果绑定的图形管线状态是通过 VkPipelineVertexInputDivisorStateCreateInfo 在 VkGraphicsPipelineCreateInfo::pVertexInputState
的pNext
链中创建的,VkPipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-vkCmdDrawMultiIndexedEXT-None-09462
如果使用着色器对象进行绘制,或者绑定的图形管线状态启用了VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
动态状态,则 vkCmdSetVertexInputEXT 调用中设置此动态状态的pVertexBindingDescriptions
参数的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-vkCmdDrawMultiIndexedEXT-robustBufferAccess2-08798
如果未启用robustBufferAccess2
功能,则 (indexSize
× (firstIndex
+indexCount
) +offset
) 必须小于或等于绑定的索引缓冲区的大小。其中indexSize
基于indexType
指定的类型,并且索引缓冲区、indexType
和offset
通过vkCmdBindIndexBuffer
或vkCmdBindIndexBuffer2
指定。如果使用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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
VkMultiDrawInfoEXT
结构定义如下:
// Provided by VK_EXT_multi_draw
typedef struct VkMultiDrawInfoEXT {
uint32_t firstVertex;
uint32_t vertexCount;
} VkMultiDrawInfoEXT;
-
firstVertex
是要绘制的第一个顶点。 -
vertexCount
是要绘制的顶点数。
VkMultiDrawInfoEXT
的成员与 vkCmdDraw 中的 firstVertex
和 vertexCount
参数具有相同的含义。
VkMultiDrawIndexedInfoEXT
结构的定义如下:
// Provided by VK_EXT_multi_draw
typedef struct VkMultiDrawIndexedInfoEXT {
uint32_t firstIndex;
uint32_t indexCount;
int32_t vertexOffset;
} VkMultiDrawIndexedInfoEXT;
-
firstIndex
是要绘制的第一个索引。 -
indexCount
是要绘制的顶点数。 -
vertexOffset
是在索引到索引多重绘制的顶点缓冲区之前添加到顶点索引的值。
VkMultiDrawIndexedInfoEXT
的 firstIndex
、indexCount
和 vertexOffset
成员分别与 vkCmdDrawIndexed 的 firstIndex
、indexCount
和 vertexOffset
参数具有相同的含义。
要记录非索引的间接绘制命令,请调用:
// Provided by VK_VERSION_1_0
void vkCmdDrawIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride);
-
commandBuffer
是要记录命令的命令缓冲区。 -
buffer
是包含绘制参数的缓冲区。 -
offset
是buffer
中参数开始的字节偏移量。 -
drawCount
是要执行的绘制次数,可以为零。 -
stride
是连续的绘制参数集之间的字节步长。
vkCmdDrawIndirect
的行为类似于 vkCmdDraw,不同之处在于,参数在执行期间由设备从缓冲区读取。该命令执行 drawCount
次绘制,参数从 buffer
中的 offset
开始,每次连续绘制增加 stride
字节。每次绘制的参数都编码在 VkDrawIndirectCommand 结构数组中。如果 drawCount
小于或等于 1,则忽略 stride
。
-
VUID-vkCmdDrawIndirect-magFilter-04553
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndirect-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndirect-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndirect-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndirect-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDrawIndirect-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDrawIndirect-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDrawIndirect-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDrawIndirect-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndirect-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndirect-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDrawIndirect-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDrawIndirect-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirect-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirect-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirect-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirect-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndirect-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndirect-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDrawIndirect-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndirect-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndirect-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDrawIndirect-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDrawIndirect-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDrawIndirect-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndirect-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndirect-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDrawIndirect-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDrawIndirect-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDrawIndirect-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndirect-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndirect-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndirect-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDrawIndirect-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndirect-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDrawIndirect-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDrawIndirect-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDrawIndirect-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDrawIndirect-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDrawIndirect-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDrawIndirect-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDrawIndirect-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDrawIndirect-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo: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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirect-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirect-None-08619
如果输出线图元的着色器对象绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirect-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且depthBiasEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirect-None-07835
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirect-None-08621
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将pColorBlendEnables
的任何元素设置为VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将pColorBlendEquations
的相同元素设置为一个VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则vkCmdSetViewportWithCount
的viewportCount
参数必须与vkCmdSetScissorWithCount
的scissorCount
参数匹配。 -
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_COUNT
和VK_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_COUNT
和VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且shadingRateImageEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。 -
VUID-vkCmdDrawIndirect-None-08637
如果启用了shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。 -
VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将pExclusiveScissorEnables
的任何元素设置为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,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndirect-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则pColorBlendState
的pAttachments
成员中相应元素的blendEnable
成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndirect-None-08643
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用vkCmdSetColorBlendEnableEXT
中影响该附件索引的pColorBlendEnables
的相应成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用那么绑定图形管线的
rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。 -
VUID-vkCmdDrawIndirect-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且以下任何一项均未启用那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将
rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。 -
VUID-vkCmdDrawIndirect-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。 -
VUID-vkCmdDrawIndirect-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndirect-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndirect-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndirect-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndirect-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndirect-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。 -
VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08912
如果未启用dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08911
如果启用了dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndirect-attachmentCount-07750
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于绑定图形管线的VkPipelineColorBlendStateCreateInfo
::attachmentCount
-
VUID-vkCmdDrawIndirect-None-08647
如果启用了colorWriteEnable
特性,并且有一个着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在当前命令缓冲区中最近一次调用vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量 -
VUID-vkCmdDrawIndirect-None-07751
如果启用了VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为VK_FALSE
,并且discardRectangleEnable
的当前值为VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09236
如果启用了VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的pColorAttachmentSamples
成员的相应元素相同的采样计数创建。 -
VUID-vkCmdDrawIndirect-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndirect-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的rasterizationSamples
值相同的采样计数创建。 -
VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07287
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndirect-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时alphaToCoverageEnable
为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
VUID-vkCmdDrawIndirect-alphaToCoverageEnable-08920
如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将alphaToCoverageEnable
设置为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndirect-None-07628
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndirect-None-08658
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndirect-None-07636
如果启用了VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的rasterizerDiscardEnable
为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-07637
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-08666
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-08667
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-08668
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-07638
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-08669
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-08670
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-08671
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirect-None-07849
如果启用了stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的rasterizationSamples
必须 与该结构的rasterizationSamples
成员相同。 -
VUID-vkCmdDrawIndirect-firstAttachment-07476
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。 -
VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09417
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。 -
VUID-vkCmdDrawIndirect-firstAttachment-07477
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09418
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndirect-firstAttachment-07478
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09419
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndirect-firstAttachment-07479
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且vkCmdSetColorBlendAdvancedEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。 -
VUID-vkCmdDrawIndirect-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的rasterizationSamples
成员。 -
VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且sampleLocationsEnable
的当前值为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
参数。 -
VUID-vkCmdDrawIndirect-sampleLocationsEnable-07484
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将coverageModulationTableEnable
设置为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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09420
如果启用了VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndirect-coverageReductionMode-07491
如果启用了VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和VK_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_COUNT
和VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
大于颜色采样数,那么管线的sampleShadingEnable
必须 为VK_FALSE
。 -
VUID-vkCmdDrawIndirect-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_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_BIT
或VK_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
,并且绑定了片段着色器,则它必须不声明DepthReplacing
或StencilRefReplacingEXT
执行模式。 -
VUID-vkCmdDrawIndirect-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的depthWriteEnable
参数必须为VK_FALSE
。 -
VUID-vkCmdDrawIndirect-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的writeMask
参数必须为0
。 -
VUID-vkCmdDrawIndirect-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的pColorWriteMasks
参数的相应元素必须包含VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDrawIndirect-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDrawIndirect-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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-drawCount-02718
如果multiDrawIndirect
特性未启用,则drawCount
必须 为0
或1
-
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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdDrawIndirect-commonparent
buffer
和commandBuffer
都 必须 从同一个 VkDevice 创建、分配或检索。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
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-pNext-09461
如果绑定的图形管线状态是通过 VkPipelineVertexInputDivisorStateCreateInfo 在 VkGraphicsPipelineCreateInfo::pVertexInputState
的pNext
链中创建的,VkPipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-VkDrawIndirectCommand-None-09462
如果使用着色器对象进行绘制,或者绑定的图形管线状态启用了VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
动态状态,则 vkCmdSetVertexInputEXT 调用中设置此动态状态的pVertexBindingDescriptions
参数的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
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
是包含绘制参数的缓冲区。 -
offset
是buffer
中参数开始的字节偏移量。 -
countBuffer
是包含绘制计数的缓冲区。 -
countBufferOffset
是countBuffer
中绘制计数开始的字节偏移量。 -
maxDrawCount
指定将要执行的最大绘制次数。实际执行的绘制调用次数是countBuffer
中指定的计数和maxDrawCount
中的最小值。 -
stride
是连续的绘制参数集之间的字节步长。
vkCmdDrawIndirectCount
的行为类似于 vkCmdDrawIndirect,区别在于绘制计数是在执行期间由设备从缓冲区读取的。该命令将从位于 countBufferOffset
的 countBuffer
中读取一个无符号 32 位整数,并将其用作绘制计数。
-
VUID-vkCmdDrawIndirectCount-magFilter-04553
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndirectCount-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndirectCount-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndirectCount-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndirectCount-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDrawIndirectCount-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDrawIndirectCount-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDrawIndirectCount-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDrawIndirectCount-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndirectCount-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDrawIndirectCount-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDrawIndirectCount-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirectCount-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirectCount-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirectCount-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirectCount-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndirectCount-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndirectCount-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDrawIndirectCount-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndirectCount-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndirectCount-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDrawIndirectCount-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDrawIndirectCount-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDrawIndirectCount-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndirectCount-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndirectCount-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDrawIndirectCount-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDrawIndirectCount-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDrawIndirectCount-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndirectCount-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndirectCount-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndirectCount-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04474
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndirectCount-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDrawIndirectCount-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDrawIndirectCount-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDrawIndirectCount-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDrawIndirectCount-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDrawIndirectCount-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDrawIndirectCount-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
均不为NULL
,则通过着色器对象在动态渲染过程中访问的输入附件视图必须具有InputAttachmentIndex
-
VUID-vkCmdDrawIndirectCount-InputAttachmentIndex-09597
如果通过着色器对象在动态渲染过程中访问的输入附件视图具有InputAttachmentIndex
,则InputAttachmentIndex
必须与VkRenderingInputAttachmentIndexInfo 中的索引匹配 -
VUID-vkCmdDrawIndirectCount-None-06537
当前渲染通道中用作附件的内存后备图像子资源必须不能以任何方式写入,除非作为此命令的附件。 -
-
绑定的管线上设置了
VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
,或者 -
上次调用 vkCmdSetAttachmentFeedbackLoopEnableEXT 时包含了
VK_IMAGE_ASPECT_COLOR_BIT
,并且-
没有绑定的图形管线,或者
-
绑定的图形管线是使用
VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
创建的
-
-
它必须不能以任何方式访问,除非作为此命令的附件。
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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将 polygonMode
设置为 VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。
VUID-vkCmdDrawIndirectCount-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将 primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。
VUID-vkCmdDrawIndirectCount-None-08619
如果输出线图元的着色器对象绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或 VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。
VUID-vkCmdDrawIndirectCount-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了 VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且 rasterizerDiscardEnable
的当前值为 VK_FALSE
,并且 depthBiasEnable
的当前值为 VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。
VUID-vkCmdDrawIndirectCount-None-07835
如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。
VUID-vkCmdDrawIndirectCount-None-08621
如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将 pColorBlendEnables
的任何元素设置为 VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将 pColorBlendEquations
的相同元素设置为一个 VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为 VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或 VK_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_COUNT
和 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则 vkCmdSetViewportWithCount
的 viewportCount
参数必须与 vkCmdSetScissorWithCount
的 scissorCount
参数匹配。
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_COUNT
和 VK_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_COUNT
和 VK_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_COUNT
和 VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且 rasterizerDiscardEnable
的当前值为 VK_FALSE
,并且 shadingRateImageEnable
的当前值为 VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。
VUID-vkCmdDrawIndirectCount-None-08637
如果启用了 shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和 VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中 viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。
VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中 viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将 pExclusiveScissorEnables
的任何元素设置为 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,并且 vkCmdSetViewportWithCount
的 viewportCount
参数必须为 1
。
VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持 primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了 PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且 vkCmdSetViewportWithCount
的 viewportCount
参数必须为 1
。
VUID-vkCmdDrawIndirectCount-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则 pColorBlendState
的 pAttachments
成员中相应元素的 blendEnable
成员必须为 VK_FALSE
。
VUID-vkCmdDrawIndirectCount-None-08643
如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT
中影响该附件索引的 pColorBlendEnables
的相应成员必须为 VK_FALSE
。
VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用
那么绑定图形管线的 rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。
VUID-vkCmdDrawIndirectCount-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且以下任何一项均未启用
那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将 rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。
VUID-vkCmdDrawIndirectCount-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。
VUID-vkCmdDrawIndirectCount-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachment
的 imageView
成员不是 VK_NULL_HANDLE,并且 pDepthAttachment
的 layout
成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。
VUID-vkCmdDrawIndirectCount-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachment
的 imageView
成员不是 VK_NULL_HANDLE,并且 pStencilAttachment
的 layout
成员是 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。
VUID-vkCmdDrawIndirectCount-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachment
的 imageView
成员不是 VK_NULL_HANDLE,并且 pDepthAttachment
的 layout
成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。
VUID-vkCmdDrawIndirectCount-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachment
的 imageView
成员不是 VK_NULL_HANDLE,并且 pStencilAttachment
的 layout
成员是 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。
VUID-vkCmdDrawIndirectCount-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pDepthAttachment
的 imageView
成员不是 VK_NULL_HANDLE,并且 pDepthAttachment
的 layout
成员是 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。
VUID-vkCmdDrawIndirectCount-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且 pStencilAttachment
的 imageView
成员不是 VK_NULL_HANDLE,并且 pStencilAttachment
的 layout
成员是 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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于 0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个 imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。
VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08912
如果未启用 dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于 0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个 imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于 VK_FORMAT_UNDEFINED
。
VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08911
如果启用了 dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化
VUID-vkCmdDrawIndirectCount-attachmentCount-07750
如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么 vkCmdSetColorWriteEnableEXT
的 attachmentCount
参数必须大于或等于绑定图形管线的 VkPipelineColorBlendStateCreateInfo
::attachmentCount
VUID-vkCmdDrawIndirectCount-None-08647
如果启用了 colorWriteEnable
特性,并且有一个着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,那么在当前命令缓冲区中最近一次调用 vkCmdSetColorWriteEnableEXT
的 attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量
VUID-vkCmdDrawIndirectCount-None-07751
如果启用了 VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的 pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为 VK_FALSE
,并且 discardRectangleEnable
的当前值为 VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化
VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09236
如果启用了 VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的 pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于 VK_FORMAT_UNDEFINED
。
VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。
VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为 VK_FORMAT_UNDEFINED
。
VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于 VK_FORMAT_UNDEFINED
。
VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。
VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且 dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为 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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于 0
,那么 VkRenderingInfo::pColorAttachments
数组中每个 imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的 pColorAttachmentSamples
成员的相应元素相同的采样计数创建。
VUID-vkCmdDrawIndirectCount-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的 depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。
VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的 depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。
VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于 0
,那么 VkRenderingInfo::pColorAttachments
数组中每个 imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的 rasterizationSamples
值相同的采样计数创建。
VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。
VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07287
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且 multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的 rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。
VUID-vkCmdDrawIndirectCount-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的 pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时 alphaToCoverageEnable
为 VK_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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。
VUID-vkCmdDrawIndirectCount-None-07628
如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。
VUID-vkCmdDrawIndirectCount-None-08658
如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。
VUID-vkCmdDrawIndirectCount-None-07636
如果启用了 VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了 VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的 rasterizerDiscardEnable
为 VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-07637
如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-08666
如果启用了 stippledRectangularLines
,stippledBresenhamLines
或 stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将 polygonMode
设置为 VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-08667
如果启用了 stippledRectangularLines
,stippledBresenhamLines
或 stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将 primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-08668
如果启用了 stippledRectangularLines
,stippledBresenhamLines
或 stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或 VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-07638
如果绑定的图形管线状态是使用启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-08669
如果启用了 stippledRectangularLines
,stippledBresenhamLines
或 stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将 polygonMode
设置为 VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-08670
如果启用了 stippledRectangularLines
,stippledBresenhamLines
或 stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到 VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将 primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-08671
如果启用了 stippledRectangularLines
,stippledBresenhamLines
或 stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或 VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效
VUID-vkCmdDrawIndirectCount-None-07849
如果启用了 stippledRectangularLines
、stippledBresenhamLines
或 stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了 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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的 rasterizationSamples
必须 与该结构的 rasterizationSamples
成员相同。
VUID-vkCmdDrawIndirectCount-firstAttachment-07476
如果绑定的图形管线状态是在启用 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT
调用的 firstAttachment
和 attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。
VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09417
如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且 vkCmdSetColorBlendEnableEXT
调用的 firstAttachment
和 attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。
VUID-vkCmdDrawIndirectCount-firstAttachment-07477
如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT
调用的 firstAttachment
和 attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。
VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09418
如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且 vkCmdSetColorBlendEquationEXT
调用的 firstAttachment
和 attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。
VUID-vkCmdDrawIndirectCount-firstAttachment-07478
如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT
调用的 firstAttachment
和 attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。
VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09419
如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且 vkCmdSetColorWriteMaskEXT
调用的 firstAttachment
和 attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。
VUID-vkCmdDrawIndirectCount-firstAttachment-07479
如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且 vkCmdSetColorBlendAdvancedEXT
调用的 firstAttachment
和 attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。
VUID-vkCmdDrawIndirectCount-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和 VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过 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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中 pSampleLocationsInfo
的 sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的 rasterizationSamples
成员。
VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和 VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且 sampleLocationsEnable
的当前值为 VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中 pSampleLocationsInfo
的 sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的 rasterizationSamples
参数。
VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07484
如果着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中 sampleLocationsEnable
为 VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中 sampleLocationsEnable
为 VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中 sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时 sampleLocationsEnable
为 VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时 sampleLocationsEnable
为 VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将 coverageModulationTableEnable
设置为 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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将 coverageToColorEnable
设置为 VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的 coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为 VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或 VK_FORMAT_R32_SINT
。
VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09420
如果启用了 VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到 VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将 rasterizerDiscardEnable
设置为 VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将 coverageToColorEnable
设置为 VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的 coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为 VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或 VK_FORMAT_R32_SINT
。
VUID-vkCmdDrawIndirectCount-coverageReductionMode-07491
如果启用了 VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和 VK_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_COUNT
和 VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的 rasterizationSamples
大于颜色采样数,那么管线的 sampleShadingEnable
必须 为 VK_FALSE
。
VUID-vkCmdDrawIndirectCount-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了 VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或 VK_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_EXT
或 VK_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_EXT
或 VK_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_EXT
或 VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或 VK_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_BIT
或 VK_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
,并且绑定了片段着色器,则它必须不声明 DepthReplacing
或 StencilRefReplacingEXT
执行模式。
VUID-vkCmdDrawIndirectCount-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的 VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了 EarlyFragmentTests
执行模式并使用 OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的 depthWriteEnable
参数必须为 VK_FALSE
。
VUID-vkCmdDrawIndirectCount-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了 EarlyFragmentTests
执行模式并使用 OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的 writeMask
参数必须为 0
。
VUID-vkCmdDrawIndirectCount-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用 VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的 pColorWriteMasks
参数的相应元素必须包含 VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和 VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDrawIndirectCount-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDrawIndirectCount-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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-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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdDrawIndirectCount-commonparent
buffer
、commandBuffer
和countBuffer
中的每一个必须是从同一个 VkDevice 创建、分配或检索的。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
要记录索引间接绘制命令,请调用
// Provided by VK_VERSION_1_0
void vkCmdDrawIndexedIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride);
-
commandBuffer
是要记录命令的命令缓冲区。 -
buffer
是包含绘制参数的缓冲区。 -
offset
是buffer
中参数开始的字节偏移量。 -
drawCount
是要执行的绘制次数,可以为零。 -
stride
是连续的绘制参数集之间的字节步长。
vkCmdDrawIndexedIndirect
的行为类似于 vkCmdDrawIndexed,只是参数由设备在执行期间从缓冲区读取。该命令执行 drawCount
次绘制,参数从 buffer
开始,从 offset
开始,并且每次连续绘制增加 stride
个字节。每次绘制的参数都编码在 VkDrawIndexedIndirectCommand 结构的数组中。如果 drawCount
小于或等于 1,则忽略 stride
。
-
VUID-vkCmdDrawIndexedIndirect-magFilter-04553
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndexedIndirect-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndexedIndirect-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndexedIndirect-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDrawIndexedIndirect-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDrawIndexedIndirect-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDrawIndexedIndirect-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDrawIndexedIndirect-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndexedIndirect-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDrawIndexedIndirect-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexedIndirect-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndexedIndirect-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndexedIndirect-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDrawIndexedIndirect-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndexedIndirect-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndexedIndirect-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDrawIndexedIndirect-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDrawIndexedIndirect-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDrawIndexedIndirect-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndexedIndirect-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndexedIndirect-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDrawIndexedIndirect-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDrawIndexedIndirect-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDrawIndexedIndirect-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndexedIndirect-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndexedIndirect-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndexedIndirect-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndexedIndirect-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDrawIndexedIndirect-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDrawIndexedIndirect-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDrawIndexedIndirect-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDrawIndexedIndirect-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDrawIndexedIndirect-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDrawIndexedIndirect-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDrawIndexedIndirect-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo: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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirect-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirect-None-08619
如果输出线图元的着色器对象绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirect-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且depthBiasEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirect-None-07835
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirect-None-08621
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将pColorBlendEnables
的任何元素设置为VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将pColorBlendEquations
的相同元素设置为一个VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则vkCmdSetViewportWithCount
的viewportCount
参数必须与vkCmdSetScissorWithCount
的scissorCount
参数匹配。 -
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_COUNT
和VK_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_COUNT
和VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且shadingRateImageEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。 -
VUID-vkCmdDrawIndexedIndirect-None-08637
如果启用了shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。 -
VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将pExclusiveScissorEnables
的任何元素设置为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,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndexedIndirect-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则pColorBlendState
的pAttachments
成员中相应元素的blendEnable
成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexedIndirect-None-08643
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用vkCmdSetColorBlendEnableEXT
中影响该附件索引的pColorBlendEnables
的相应成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用那么绑定图形管线的
rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。 -
VUID-vkCmdDrawIndexedIndirect-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且以下任何一项均未启用那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将
rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。 -
VUID-vkCmdDrawIndexedIndirect-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。 -
VUID-vkCmdDrawIndexedIndirect-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirect-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirect-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirect-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirect-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirect-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。 -
VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08912
如果未启用dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08911
如果启用了dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndexedIndirect-attachmentCount-07750
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于绑定图形管线的VkPipelineColorBlendStateCreateInfo
::attachmentCount
-
VUID-vkCmdDrawIndexedIndirect-None-08647
如果启用了colorWriteEnable
特性,并且有一个着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在当前命令缓冲区中最近一次调用vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量 -
VUID-vkCmdDrawIndexedIndirect-None-07751
如果启用了VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为VK_FALSE
,并且discardRectangleEnable
的当前值为VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09236
如果启用了VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的pColorAttachmentSamples
成员的相应元素相同的采样计数创建。 -
VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的rasterizationSamples
值相同的采样计数创建。 -
VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexedIndirect-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时alphaToCoverageEnable
为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
VUID-vkCmdDrawIndexedIndirect-alphaToCoverageEnable-08920
如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将alphaToCoverageEnable
设置为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexedIndirect-None-07628
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexedIndirect-None-08658
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexedIndirect-None-07636
如果启用了VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的rasterizerDiscardEnable
为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-07637
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-08666
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-08667
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-08668
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-07638
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-08669
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-08670
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-08671
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirect-None-07849
如果启用了stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的rasterizationSamples
必须 与该结构的rasterizationSamples
成员相同。 -
VUID-vkCmdDrawIndexedIndirect-firstAttachment-07476
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。 -
VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09417
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。 -
VUID-vkCmdDrawIndexedIndirect-firstAttachment-07477
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09418
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndexedIndirect-firstAttachment-07478
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09419
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndexedIndirect-firstAttachment-07479
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且vkCmdSetColorBlendAdvancedEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。 -
VUID-vkCmdDrawIndexedIndirect-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的rasterizationSamples
成员。 -
VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且sampleLocationsEnable
的当前值为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
参数。 -
VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07484
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将coverageModulationTableEnable
设置为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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09420
如果启用了VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndexedIndirect-coverageReductionMode-07491
如果启用了VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和VK_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_COUNT
和VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
大于颜色采样数,那么管线的sampleShadingEnable
必须 为VK_FALSE
。 -
VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_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_BIT
或VK_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
,并且绑定了片段着色器,则它必须不声明DepthReplacing
或StencilRefReplacingEXT
执行模式。 -
VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的depthWriteEnable
参数必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的writeMask
参数必须为0
。 -
VUID-vkCmdDrawIndexedIndirect-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的pColorWriteMasks
参数的相应元素必须包含VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDrawIndexedIndirect-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDrawIndexedIndirect-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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
必须 为0
或1
-
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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdDrawIndexedIndirect-commonparent
buffer
和commandBuffer
都 必须 从同一个 VkDevice 创建、分配或检索。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
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-pNext-09461
如果绑定的图形管线状态是通过 VkPipelineVertexInputDivisorStateCreateInfo 在 VkGraphicsPipelineCreateInfo::pVertexInputState
的pNext
链中创建的,VkPipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-VkDrawIndexedIndirectCommand-None-09462
如果使用着色器对象进行绘制,或者绑定的图形管线状态启用了VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
动态状态,则 vkCmdSetVertexInputEXT 调用中设置此动态状态的pVertexBindingDescriptions
参数的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-VkDrawIndexedIndirectCommand-robustBufferAccess2-08798
如果未启用robustBufferAccess2
功能,则 (indexSize
× (firstIndex
+indexCount
) +offset
) 必须小于或等于绑定的索引缓冲区的大小。其中indexSize
基于indexType
指定的类型,并且索引缓冲区、indexType
和offset
通过vkCmdBindIndexBuffer
或vkCmdBindIndexBuffer2
指定。如果使用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
是包含绘制参数的缓冲区。 -
offset
是buffer
中参数开始的字节偏移量。 -
countBuffer
是包含绘制计数的缓冲区。 -
countBufferOffset
是countBuffer
中绘制计数开始的字节偏移量。 -
maxDrawCount
指定将要执行的最大绘制次数。实际执行的绘制调用次数是countBuffer
中指定的计数和maxDrawCount
中的最小值。 -
stride
是连续的绘制参数集之间的字节步长。
vkCmdDrawIndexedIndirectCount
的行为类似于 vkCmdDrawIndexedIndirect,区别在于绘制计数由设备在执行期间从缓冲区读取。该命令将从位于 countBufferOffset
的 countBuffer
中读取一个无符号 32 位整数,并将其用作绘制计数。
-
VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndexedIndirectCount-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndexedIndirectCount-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDrawIndexedIndirectCount-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDrawIndexedIndirectCount-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDrawIndexedIndirectCount-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndexedIndirectCount-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDrawIndexedIndirectCount-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndexedIndirectCount-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDrawIndexedIndirectCount-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDrawIndexedIndirectCount-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndexedIndirectCount-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDrawIndexedIndirectCount-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDrawIndexedIndirectCount-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDrawIndexedIndirectCount-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndexedIndirectCount-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndexedIndirectCount-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndexedIndirectCount-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04474
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndexedIndirectCount-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDrawIndexedIndirectCount-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDrawIndexedIndirectCount-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDrawIndexedIndirectCount-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDrawIndexedIndirectCount-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo: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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08619
如果输出线图元的着色器对象绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且depthBiasEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-07835
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08621
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将pColorBlendEnables
的任何元素设置为VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将pColorBlendEquations
的相同元素设置为一个VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则vkCmdSetViewportWithCount
的viewportCount
参数必须与vkCmdSetScissorWithCount
的scissorCount
参数匹配。 -
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_COUNT
和VK_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_COUNT
和VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且shadingRateImageEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08637
如果启用了shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。 -
VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将pExclusiveScissorEnables
的任何元素设置为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,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则pColorBlendState
的pAttachments
成员中相应元素的blendEnable
成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08643
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用vkCmdSetColorBlendEnableEXT
中影响该附件索引的pColorBlendEnables
的相应成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用那么绑定图形管线的
rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且以下任何一项均未启用那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将
rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。 -
VUID-vkCmdDrawIndexedIndirectCount-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirectCount-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirectCount-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirectCount-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirectCount-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndexedIndirectCount-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。 -
VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08912
如果未启用dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08911
如果启用了dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndexedIndirectCount-attachmentCount-07750
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于绑定图形管线的VkPipelineColorBlendStateCreateInfo
::attachmentCount
-
VUID-vkCmdDrawIndexedIndirectCount-None-08647
如果启用了colorWriteEnable
特性,并且有一个着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在当前命令缓冲区中最近一次调用vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量 -
VUID-vkCmdDrawIndexedIndirectCount-None-07751
如果启用了VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为VK_FALSE
,并且discardRectangleEnable
的当前值为VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09236
如果启用了VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的pColorAttachmentSamples
成员的相应元素相同的采样计数创建。 -
VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的rasterizationSamples
值相同的采样计数创建。 -
VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07287
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndexedIndirectCount-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时alphaToCoverageEnable
为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08920
如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将alphaToCoverageEnable
设置为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-07628
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08658
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndexedIndirectCount-None-07636
如果启用了VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的rasterizerDiscardEnable
为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-07637
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-08666
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-08667
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-08668
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-07638
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-08669
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-08670
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-08671
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndexedIndirectCount-None-07849
如果启用了stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的rasterizationSamples
必须 与该结构的rasterizationSamples
成员相同。 -
VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07476
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。 -
VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09417
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。 -
VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07477
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09418
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07478
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09419
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07479
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且vkCmdSetColorBlendAdvancedEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。 -
VUID-vkCmdDrawIndexedIndirectCount-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的rasterizationSamples
成员。 -
VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且sampleLocationsEnable
的当前值为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
参数。 -
VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07484
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将coverageModulationTableEnable
设置为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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09420
如果启用了VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndexedIndirectCount-coverageReductionMode-07491
如果启用了VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和VK_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_COUNT
和VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
大于颜色采样数,那么管线的sampleShadingEnable
必须 为VK_FALSE
。 -
VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_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_BIT
或VK_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
,并且绑定了片段着色器,则它必须不声明DepthReplacing
或StencilRefReplacingEXT
执行模式。 -
VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的depthWriteEnable
参数必须为VK_FALSE
。 -
VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的writeMask
参数必须为0
。 -
VUID-vkCmdDrawIndexedIndirectCount-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的pColorWriteMasks
参数的相应元素必须包含VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDrawIndexedIndirectCount-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDrawIndexedIndirectCount-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdDrawIndexedIndirectCount-renderpass
此命令必须仅在渲染通道实例内部调用 -
VUID-vkCmdDrawIndexedIndirectCount-videocoding
此命令必须仅在视频编码范围之外调用。 -
VUID-vkCmdDrawIndexedIndirectCount-commonparent
buffer
、commandBuffer
和countBuffer
中的每一个必须是从同一个 VkDevice 创建、分配或检索的。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。
绘制变换反馈
可以通过将一个或多个变换反馈缓冲区绑定为顶点缓冲区来绘制先前在活动变换反馈期间捕获的顶点数据。在将缓冲区用作变换反馈缓冲区和顶点缓冲区之间需要一个管线屏障,以确保当数据作为顶点属性读取时,对变换反馈缓冲区的所有写入都是可见的。源访问是 VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
,目标访问是 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT
,对应的管线阶段分别是 VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
和 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
。由 vkCmdEndTransformFeedbackEXT 写入到计数器缓冲区的值**可以**用来确定绘制的顶点数量。在将计数器缓冲区用于 vkCmdEndTransformFeedbackEXT
和 vkCmdDrawIndirectByteCountEXT
之间需要一个管线屏障,其中源访问是 VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
,目标访问是 VK_ACCESS_INDIRECT_COMMAND_READ_BIT
,对应的管线阶段分别是 VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
和 VK_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
是从counterBuffer
在counterBufferOffset
处读取的字节计数中减去的偏移量。 -
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
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndirectByteCountEXT-magFilter-09598
如果使用magFilter
或minFilter
等于VK_FILTER_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
,reductionMode
等于VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
且compareEnable
等于VK_FALSE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-
VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-09599
如果使用mipmapMode
等于VK_SAMPLER_MIPMAP_MODE_LINEAR
且reductionMode
等于VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的格式功能 必须包含VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
-
VUID-vkCmdDrawIndirectByteCountEXT-unnormalizedCoordinates-09635
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的levelCount
和layerCount
必须为 1 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08609
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则图像视图的viewType
必须为VK_IMAGE_VIEW_TYPE_1D
或VK_IMAGE_VIEW_TYPE_2D
-
VUID-vkCmdDrawIndirectByteCountEXT-None-08610
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何 SPIR-VOpImageSample*
或OpImageSparseSample*
指令一起使用,其名称中包含ImplicitLod
、Dref
或Proj
-
VUID-vkCmdDrawIndirectByteCountEXT-None-08611
如果使用unnormalizedCoordinates
等于VK_TRUE
创建的 VkSampler 来采样此命令产生的 VkImageView,则采样器 不得与任何包含 LOD 偏差或任何偏移值的 SPIR-VOpImageSample*
或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_3D
、VK_IMAGE_VIEW_TYPE_CUBE
或VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
。 -
VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694
此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695
此命令导致使用VK_FILTER_CUBIC_EXT
采样且缩减模式为VK_SAMPLER_REDUCTION_MODE_MIN
或VK_SAMPLER_REDUCTION_MODE_MAX
的任何 VkImageView 的 VkImageViewType 和格式必须支持立方滤波以及 minmax 滤波,如 VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
返回的 vkGetPhysicalDeviceImageFormatProperties2 所指定。 -
VUID-vkCmdDrawIndirectByteCountEXT-cubicRangeClamp-09212
如果未启用cubicRangeClamp
特性,则此命令导致使用VK_FILTER_CUBIC_EXT
采样的任何 VkImageView 的 VkSamplerReductionModeCreateInfo::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
采样的任何 VkImageView 的 VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights
必须等于VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
。 -
VUID-vkCmdDrawIndirectByteCountEXT-flags-02696
此命令导致采样的任何使用包含VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
的 VkImageCreateInfo::flags
创建的 VkImage必须仅使用VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
的 VkSamplerAddressMode 进行采样。 -
VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07027
对于任何作为存储图像写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07028
对于任何作为存储图像读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkImageView,视图的格式特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07029
对于任何作为存储纹理缓冲区写入,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07030
对于任何作为存储纹理缓冲区读取,并且OpTypeImage
的图像格式字段为Unknown
的 VkBufferView,视图的缓冲区特性必须包含VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08600
对于 绑定着色器静态使用的每个集合 *n*,必须在同一管线绑定点将描述符集绑定到 *n*,其 VkPipelineLayout 与集合 *n* 兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08601
对于 绑定着色器静态使用的每个推送常量,必须为同一管线绑定点设置推送常量值,其 VkPipelineLayout 与推送常量兼容,并且VkPipelineLayout 用于创建当前 VkPipeline 或VkDescriptorSetLayout 数组用于创建当前 VkShaderEXT,如 管线布局兼容性中所述。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-10068
对于绑定的着色器使用的每个资源数组,用于访问数组元素的索引必须小于此命令所使用描述符集中标识绑定的描述符计数。 -
VUID-vkCmdDrawIndirectByteCountEXT-maintenance4-08602
如果未启用maintenance4
特性,则对于绑定的着色器静态使用的每个推送常量,必须已为同一管线绑定点设置了推送常量值,该管线绑定点具有与用于创建当前VkPipeline的VkPipelineLayout或用于创建当前VkShaderEXT的VkDescriptorSetLayout和VkPushConstantRange数组兼容的用于推送常量的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_EXT
的VkPipeline中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08605
如果描述符在创建时使用了VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
的VkDescriptorSetLayout
的VkShaderEXT中被动态使用,则描述符内存必须是驻留的。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08606
如果未启用shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08608
如果将管线绑定到此命令使用的管线绑定点,则自该管线绑定后,必须没有对绑定到此命令使用的管线绑定点的VkPipeline对象中静态指定的任何状态进行动态状态设置命令的任何调用。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08607
如果启用了shaderObject
特性,则必须将有效的管线绑定到此命令使用的管线绑定点,或者必须将有效和VK_NULL_HANDLE着色器对象的有效组合绑定到与此命令使用的管线绑定点对应的每个受支持的着色器阶段。 -
VUID-vkCmdDrawIndirectByteCountEXT-uniformBuffers-06935
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问统一缓冲区,且该阶段的创建没有启用uniformBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
,且未启用robustBufferAccess
特性,则该阶段必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08612
如果未启用robustBufferAccess
特性,且绑定到与此命令使用的管线绑定点对应的阶段的任何VkShaderEXT访问统一缓冲区,则该VkShaderEXT必须不访问在绑定到同一管线绑定点的描述符集中指定的缓冲区范围之外的值。 -
VUID-vkCmdDrawIndirectByteCountEXT-storageBuffers-06936
如果绑定到此命令使用的管线绑定点的VkPipeline对象的任何阶段访问存储缓冲区,且该阶段的创建没有启用storageBuffers
的VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
或VK_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 转换的VkSampler或VkImageView对象,则该对象必须仅与OpImageSample*
或OpImageSparseSample*
指令一起使用 -
VUID-vkCmdDrawIndirectByteCountEXT-ConstOffset-06551
如果绑定的着色器访问启用了采样器 Y′CBCR 转换的VkSampler或VkImageView对象,则该对象必须不使用ConstOffset
和Offset
操作数 -
VUID-vkCmdDrawIndirectByteCountEXT-viewType-07752
如果通过此命令访问VkImageView,则图像视图的viewType
必须与SPIR-V 图像维度和 Vulkan ImageView 类型之间的兼容性中描述的OpTypeImage
的Dim
操作数匹配 -
VUID-vkCmdDrawIndirectByteCountEXT-format-07753
如果通过此命令访问VkImageView,则图像视图的format
的数值类型和OpTypeImage
的Sampled
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位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04471
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkImageView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04472
如果通过此命令访问具有64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有64的Width
-
VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04473
如果通过此命令访问具有小于64位组件宽度的VkFormat的VkBufferView,则该指令的OpTypeImage
操作数的SampledType
必须具有32的Width
-
VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04474
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为64的OpTypeImage
使用原子指令访问使用VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
标志创建的VkImage对象 -
VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04475
如果未启用sparseImageInt64Atomics
特性,则通过此命令,必须不通过SampledType
的Width
为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
如果使用OpImageBoxFilterQCOM
对 VkImageView 进行采样以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
-
VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSSDQCOM-06974
如果使用OpImageBlockMatchSSDQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06975
如果使用OpImageBlockMatchSADQCOM
从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06976
如果使用OpImageBlockMatchSADQCOM
或OpImageBlockMatchSSDQCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06977
如果OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
使用 VkSampler 作为此命令的结果,则采样器必须使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06978
如果除OpImageWeightedSampleQCOM
、OpImageBoxFilterQCOM
、OpImageBlockMatchWindowSSDQCOM
、OpImageBlockMatchWindowSADQCOM
、OpImageBlockMatchGatherSSDQCOM
、OpImageBlockMatchGatherSADQCOM
、OpImageBlockMatchSSDQCOM
或OpImageBlockMatchSADQCOM
之外的任何命令使用 VkSampler 作为此命令的结果,则采样器必须未使用VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
创建 -
VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09215
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式特性必须包含VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
-
VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09216
如果使用OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
指令从 VkImageView 读取数据以作为此命令的结果,则该图像视图的格式必须是单分量格式 -
VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09217
如果OpImageBlockMatchWindow*QCOM
或OpImageBlockMatchGather*QCOM
从参考图像读取数据以作为此命令的结果,则指定的参考坐标必须通过整数纹素坐标验证 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07288
此命令执行的任何着色器调用必须终止 -
VUID-vkCmdDrawIndirectByteCountEXT-None-09600
如果访问类型等于VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
或VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
的描述符以作为此命令的结果,则该描述符标识的所有图像子资源必须位于写入描述符时标识的图像布局中 -
VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684
当前的渲染过程必须与创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的renderPass
成员兼容 -
VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685
当前渲染过程的子过程索引必须等于创建绑定到VK_PIPELINE_BIND_POINT_GRAPHICS
的VkPipeline
时指定的VkGraphicsPipelineCreateInfo
结构的subpass
成员 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07748
如果任何着色器静态访问输入附件,则必须通过描述符集将有效的描述符绑定到管道 -
VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07468
如果此管道执行的任何着色器访问Dim
操作数为SubpassData
的OpTypeImage
变量,则它必须使用与当前子过程中有效的输入附件相对应的InputAttachmentIndex
进行修饰 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07469
在子过程中访问的输入附件视图必须使用与相应子过程定义相同的 VkFormat 创建,并且使用 VkImageView 创建,该 VkImageView 与绑定 VkFramebuffer 中子过程的pInputAttachments
[InputAttachmentIndex
] 引用的附件兼容,如片段输入附件兼容性中所述 -
VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09595
在动态渲染过程中访问的、由VkRenderingInputAttachmentIndexInfo 引用的InputAttachmentIndex
的输入附件视图,或者如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
或 VkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndex
为NULL
则没有InputAttachmentIndex
的输入附件视图,必须使用与 VkRenderingInfo 中的相应颜色、深度或模板附件兼容的 VkImageView 创建 -
VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09596
如果 VkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndex
和 VkRenderingInputAttachmentIndexInfo: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
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08618
如果着色器对象绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08619
如果输出线图元的着色器对象绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetLineWidth,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07834
如果着色器对象绑定到任何图形阶段,或者绑定了一个创建时启用了VK_DYNAMIC_STATE_DEPTH_BIAS
动态状态的图形管线,并且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且depthBiasEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetDepthBias 或 vkCmdSetDepthBias2EXT,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07835
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_BLEND_CONSTANTS
动态状态,则在执行此绘制命令之前,必须已调用过 vkCmdSetBlendConstants,并且在当前命令缓冲区中没有被后续失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08621
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEnableEXT 将pColorBlendEnables
的任何元素设置为VK_TRUE
,并且当前命令缓冲区中最近一次调用 vkCmdSetColorBlendEquationEXT 将pColorBlendEquations
的相同元素设置为一个VkColorBlendEquationEXT
结构,其中任何 VkBlendFactor 成员的值为VK_BLEND_FACTOR_CONSTANT_COLOR
,VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
,VK_BLEND_FACTOR_CONSTANT_ALPHA
或VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态,并且该状态未被继承,则vkCmdSetViewportWithCount
的viewportCount
参数必须与vkCmdSetScissorWithCount
的scissorCount
参数匹配。 -
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_COUNT
和VK_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_COUNT
和VK_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_COUNT
和VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
动态状态创建的图形管线,且rasterizerDiscardEnable
的当前值为VK_FALSE
,并且shadingRateImageEnable
的当前值为VK_TRUE
,则在执行此绘制命令之前,必须已调用过 vkCmdSetViewportShadingRatePaletteNV,且未在当前命令缓冲区中随后被失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08637
如果启用了shadingRateImage
功能,并且着色器对象绑定到任何图形管线阶段,或者绑定了使用启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
和VK_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 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
创建。 -
VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
动态状态的情况下创建的,并且从 VkPipelineViewportStateCreateInfo 链接了 VkPipelineViewportExclusiveScissorStateCreateInfoNV 结构,则绑定的图形管线必须使用大于或等于最后一次调用 vkCmdSetViewportWithCount 中viewportCount
参数的 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
动态状态创建的图形管线,并且当前命令缓冲区中最近一次调用 vkCmdSetExclusiveScissorEnableNV 将pExclusiveScissorEnables
的任何元素设置为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,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642
如果不支持primitiveFragmentShadingRateWithMultipleViewports
限制,并且绑定到图形阶段的任何着色器对象写入了PrimitiveShadingRateKHR
内置变量,那么在执行此绘制命令之前,当前命令缓冲区中必须调用过 vkCmdSetViewportWithCount,并且vkCmdSetViewportWithCount
的viewportCount
参数必须为1
。 -
VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727
如果绑定的图形管线中没有禁用光栅化,那么对于子通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则pColorBlendState
的pAttachments
成员中相应元素的blendEnable
成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08643
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么对于渲染通道中的每个颜色附件,如果对应图像视图的格式特性不包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
,则在当前命令缓冲区中最近一次调用vkCmdSetColorBlendEnableEXT
中影响该附件索引的pColorBlendEnables
的相应成员必须为VK_FALSE
。 -
VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07284
如果绑定的图形管线中没有禁用光栅化,并且以下任何一项均未启用那么绑定图形管线的
rasterizationSamples
必须与当前子通道颜色和/或深度/模板附件相同。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08644
如果着色器对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且以下任何一项均未启用那么在当前命令缓冲区中最近一次调用 vkCmdSetRasterizationSamplesEXT 必须已将
rasterizationSamples
设置为与当前渲染通道颜色和/或深度/模板附件的样本数相同。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08876
如果着色器对象绑定到任何图形阶段,则当前渲染通道实例必须已通过 vkCmdBeginRendering 开始。 -
VUID-vkCmdDrawIndirectByteCountEXT-imageView-06172
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndirectByteCountEXT-imageView-06173
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndirectByteCountEXT-imageView-06174
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndirectByteCountEXT-imageView-06175
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
,则此命令必须不向模板附件写入任何值。 -
VUID-vkCmdDrawIndirectByteCountEXT-imageView-06176
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pDepthAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pDepthAttachment
的layout
成员是VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
,则此命令必须不向深度附件写入任何值。 -
VUID-vkCmdDrawIndirectByteCountEXT-imageView-06177
如果当前渲染通道实例是通过 vkCmdBeginRendering 开始的,并且pStencilAttachment
的imageView
成员不是 VK_NULL_HANDLE,并且pStencilAttachment
的layout
成员是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
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素相同的 VkFormat 创建。 -
VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08912
如果未启用dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::colorAttachmentCount
大于0
开始的,则 VkRenderingInfo::pColorAttachments
数组中每个imageView
等于 VK_NULL_HANDLE 的元素必须使用于创建绑定管线的 VkPipelineRenderingCreateInfo::pColorAttachmentFormats
对应的元素等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08911
如果启用了dynamicRenderingUnusedAttachments
特性,并且当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
如果没有着色器对象绑定到任何图形阶段,当前渲染过程实例是通过 vkCmdBeginRendering 和 VkRenderingInfo::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
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用 vkCmdSetColorWriteEnableEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndirectByteCountEXT-attachmentCount-07750
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
动态状态创建的,那么vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于绑定图形管线的VkPipelineColorBlendStateCreateInfo
::attachmentCount
-
VUID-vkCmdDrawIndirectByteCountEXT-None-08647
如果启用了colorWriteEnable
特性,并且有一个着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在当前命令缓冲区中最近一次调用vkCmdSetColorWriteEnableEXT
的attachmentCount
参数必须大于或等于当前渲染过程实例中的颜色附件数量 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07751
如果启用了VK_EXT_discard_rectangles
扩展,绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中包含了一个 VkPipelineDiscardRectangleStateCreateInfoEXT 结构,rasterizerDiscardEnable
的当前值为VK_FALSE
,并且discardRectangleEnable
的当前值为VK_TRUE
,那么在执行此绘制命令之前,对于 VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount
中的每个丢弃矩形,必须调用 vkCmdSetDiscardRectangleEXT,且之后没有在当前命令缓冲区中被 无效化 -
VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09236
如果启用了VK_EXT_discard_rectangles
扩展,有一个着色器对象绑定到任何图形阶段,或者绑定了一个使用启用了VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
动态状态创建的图形管线,并且 VkGraphicsPipelineCreateInfo 的pNext
链中不包含 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->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08914
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08915
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::depthAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的 VkFormat,那么该格式的值必须为VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08916
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于VK_FORMAT_UNDEFINED
。 -
VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08917
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,那么用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat。 -
VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08918
如果当前渲染过程实例是通过 vkCmdBeginRendering 开始的,并且dynamicRenderingUnusedAttachments
特性已启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不为 VK_NULL_HANDLE,并且用于创建绑定的图形管线的 VkPipelineRenderingCreateInfo::stencilAttachmentFormat
的值不等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的 VkFormat,那么该格式的值必须为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
如果绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的pColorAttachmentSamples
成员的相应元素相同的采样计数创建。 -
VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187
如果当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,绑定的管线是使用 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构创建的,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么用于创建绑定图形管线的 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 的depthStencilAttachmentSamples
成员的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07285
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且当前的渲染通道实例是使用 vkCmdBeginRendering 开始的,且 VkRenderingInfo::colorAttachmentCount
参数大于0
,那么 VkRenderingInfo::pColorAttachments
数组中每个imageView
不等于 VK_NULL_HANDLE 的元素必须使用与绑定图形管线的rasterizationSamples
值相同的采样计数创建。 -
VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07286
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pDepthAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pDepthAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07287
如果绑定的管线是在没有 VkAttachmentSampleCountInfoAMD 或 VkAttachmentSampleCountInfoNV 结构的情况下创建的,并且multisampledRenderToSingleSampled
功能未启用,并且 VkRenderingInfo::pStencilAttachment->imageView
不是 VK_NULL_HANDLE,那么绑定图形管线的rasterizationSamples
的值必须等于用于创建 VkRenderingInfo::pStencilAttachment->imageView
的采样计数。 -
VUID-vkCmdDrawIndirectByteCountEXT-pNext-07935
如果此命令是在使用 vkCmdBeginRendering 启动的渲染通道实例内调用的,并且 VkRenderingInfo 的pNext
链包含一个 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
动态状态创建的,并且在上次调用 vkCmdSetAlphaToCoverageEnableEXT 时alphaToCoverageEnable
为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08920
如果有 shader 对象绑定到任何图形阶段,并且在当前命令缓冲区中最近一次调用 vkCmdSetAlphaToCoverageEnableEXT 时将alphaToCoverageEnable
设置为VK_TRUE
,则片段输出接口 必须 包含在Location
0 的Index
0 处用于 alphaComponent
字的变量。 -
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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且绑定了颜色附件,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEnableEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07628
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在当前绘制命令之前,必须调用过 vkCmdSetColorBlendEquationEXT,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08658
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为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
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在当前绘制命令之前,必须至少调用过 vkCmdSetColorBlendEquationEXT 和 vkCmdSetColorBlendAdvancedEXT 中的一个,且未在当前命令缓冲区中随后 失效。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07636
如果启用了VK_EXT_provoking_vertex
扩展,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,或者绑定了一个启用了VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
动态状态的图形管线,并且 当前值 的rasterizerDiscardEnable
为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetProvokingVertexModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07637
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08666
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08667
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08668
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineRasterizationModeEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07638
如果绑定的图形管线状态是使用启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
动态状态创建的,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08669
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到任何图形阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPolygonModeEXT 将polygonMode
设置为VK_POLYGON_MODE_LINE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08670
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个着色器对象被绑定到VK_SHADER_STAGE_VERTEX_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且当前命令缓冲区中最近一次调用 vkCmdSetPrimitiveTopology 将primitiveTopology
设置为任何线拓扑结构,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08671
如果启用了stippledRectangularLines
,stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且一个输出线图元的着色器对象被绑定到VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_SHADER_STAGE_GEOMETRY_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,那么在执行此绘制命令之前,必须 调用过 vkCmdSetLineStippleEnableEXT 并且没有在当前命令缓冲区中随后被 失效 -
VUID-vkCmdDrawIndirectByteCountEXT-None-07849
如果启用了stippledRectangularLines
、stippledBresenhamLines
或stippledSmoothLines
中的任何一个功能,并且着色器对象绑定到任何图形阶段,或者使用启用了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_TRUE
的 VkMultisampledRenderToSingleSampledInfoEXT 结构,那么最后一次调用 vkCmdSetRasterizationSamplesEXT 中的rasterizationSamples
必须 与该结构的rasterizationSamples
成员相同。 -
VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07476
如果绑定的图形管线状态是在启用VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态的情况下创建的,那么在此绘制命令之前,必须在当前命令缓冲区中调用过 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件 必须 为当前子通道中的所有活动颜色附件指定启用。 -
VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09417
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEnableEXT,并且vkCmdSetColorBlendEnableEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件启用。 -
VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07477
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09418
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且存在绑定的颜色附件,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendEquationEXT,并且vkCmdSetColorBlendEquationEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定混合方程式。 -
VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07478
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09419
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorWriteMaskEXT,并且vkCmdSetColorWriteMaskEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中的所有活动颜色附件指定颜色写入掩码。 -
VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07479
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
动态状态,则在执行此绘制命令之前,当前命令缓冲区中必须已调用 vkCmdSetColorBlendAdvancedEXT,并且vkCmdSetColorBlendAdvancedEXT
调用的firstAttachment
和attachmentCount
参数指定的附件必须为当前子通道中启用混合的所有活动颜色附件指定高级混合方程式。 -
VUID-vkCmdDrawIndirectByteCountEXT-advancedBlendMaxColorAttachments-07480
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
和VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
动态状态,并且最近一次调用 vkCmdSetColorBlendEnableEXT 和 vkCmdSetColorBlendAdvancedEXT 已启用高级混合,则当前子通道中的活动颜色附件的数量必须不超过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
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于绑定图形管线创建时使用的 VkPipelineMultisampleStateCreateInfo 结构的rasterizationSamples
成员。 -
VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07483
如果绑定的图形管线状态创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
状态和VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
状态,并且sampleLocationsEnable
的当前值为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中pSampleLocationsInfo
的sampleLocationsPerPixel
成员必须等于最近一次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
参数。 -
VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07484
如果着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,或者绑定的图形管线创建时启用了VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_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
状态,并且最近一次调用 vkCmdSetSampleLocationsEnableEXT 中sampleLocationsEnable
为VK_TRUE
,则最近一次调用 vkCmdSetSampleLocationsEXT 中sampleLocationsInfo.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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且如果在上次调用 vkCmdSetSampleLocationsEnableEXT 时sampleLocationsEnable
为VK_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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageModulationTableEnableNV 将coverageModulationTableEnable
设置为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
状态的情况下创建的,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09420
如果启用了VK_NV_fragment_coverage_to_color
扩展,并且着色器对象绑定到VK_SHADER_STAGE_FRAGMENT_BIT
阶段,并且当前命令缓冲区中最近一次调用 vkCmdSetRasterizerDiscardEnable 将rasterizerDiscardEnable
设置为VK_FALSE
,并且上次调用 vkCmdSetCoverageToColorEnableNV 将coverageToColorEnable
设置为VK_TRUE
,则当前子通道**必须**在上次调用 vkCmdSetCoverageToColorLocationNV 的coverageToColorLocation
选择的位置具有颜色附件,其 VkFormat 为VK_FORMAT_R8_UINT
、VK_FORMAT_R8_SINT
、VK_FORMAT_R16_UINT
、VK_FORMAT_R16_SINT
、VK_FORMAT_R32_UINT
或VK_FORMAT_R32_SINT
。 -
VUID-vkCmdDrawIndirectByteCountEXT-coverageReductionMode-07491
如果启用了VK_NV_coverage_reduction_mode
扩展,并且绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
和VK_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_COUNT
和VK_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
扩展,并且如果当前子通道有任何颜色附件,且上次调用 vkCmdSetRasterizationSamplesEXT 的rasterizationSamples
大于颜色采样数,那么管线的sampleShadingEnable
必须 为VK_FALSE
。 -
VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07495
如果绑定的图形管线状态是在启用了VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_EXT
或VK_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_BIT
、VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
、VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
或VK_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_BIT
或VK_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
,并且绑定了片段着色器,则它必须不声明DepthReplacing
或StencilRefReplacingEXT
执行模式。 -
VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08715
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpDepthAttachmentReadEXT
,则上次调用 vkCmdSetDepthWriteEnable 的depthWriteEnable
参数必须为VK_FALSE
。 -
VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08716
如果绑定的图形管线状态包含片段着色器阶段,并且是使用 VkPipelineDynamicStateCreateInfo::pDynamicStates
中设置的VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
创建的,并且片段着色器声明了EarlyFragmentTests
执行模式并使用OpStencilAttachmentReadEXT
,则上次调用 vkCmdSetStencilWriteMask 的writeMask
参数必须为0
。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-09116
如果将着色器对象绑定到任何图形阶段,或者使用VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
创建了绑定的图形管线,并且任何颜色附件的格式为VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
,则 vkCmdSetColorWriteMaskEXT 的pColorWriteMasks
参数的相应元素必须包含VK_COLOR_COMPONENT_R_BIT
、VK_COLOR_COMPONENT_G_BIT
和VK_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::format
或VkVertexInputAttributeDescription2EXT::format
是打包格式,并且未启用legacyVertexAttributes
,则根据顶点输入计算计算的attribAddress
值必须是format
的大小的倍数。 -
VUID-vkCmdDrawIndirectByteCountEXT-format-10390
对于此命令访问的每个顶点属性,如果其VkVertexInputAttributeDescription::format
或VkVertexInputAttributeDescription2EXT::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
动态状态且dynamicPrimitiveTopologyUnrestricted
为VK_FALSE
的情况下创建的,则vkCmdSetPrimitiveTopology
的primitiveTopology
参数必须与管线 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 且未在当前命令缓冲区中随后被失效,并且 vkCmdBindVertexBuffers2 的pStrides
参数必须不为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
中,与给定Location
的Input
变量关联的 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_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST
、VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
、VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
或VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
,有一个着色器对象绑定到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_EXT
或VK_SHADER_STAGE_MESH_BIT_EXT
的情况下创建的。 -
VUID-vkCmdDrawIndirectByteCountEXT-None-08885
必须没有着色器对象绑定到VK_SHADER_STAGE_TASK_BIT_EXT
或VK_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-pNext-09461
如果绑定的图形管线状态是通过 VkPipelineVertexInputDivisorStateCreateInfo 在 VkGraphicsPipelineCreateInfo::pVertexInputState
的pNext
链中创建的,VkPipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
VUID-vkCmdDrawIndirectByteCountEXT-None-09462
如果使用着色器对象进行绘制,或者绑定的图形管线状态启用了VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
动态状态,则 vkCmdSetVertexInputEXT 调用中设置此动态状态的pVertexBindingDescriptions
参数的任何成员在divisor
中的值不是1
,并且 VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
为VK_FALSE
,则firstInstance
必须为0
-
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
分配commandBuffer
的VkCommandPool
必须 支持图形操作。 -
VUID-vkCmdDrawIndirectByteCountEXT-renderpass
此命令必须仅在渲染通道实例内部调用 -
VUID-vkCmdDrawIndirectByteCountEXT-videocoding
此命令必须仅在视频编码范围之外调用。 -
VUID-vkCmdDrawIndirectByteCountEXT-commonparent
commandBuffer
和counterBuffer
都必须是由同一个 VkDevice 创建、分配或检索的。
-
对
commandBuffer
的主机访问必须进行外部同步。 -
对分配
commandBuffer
的VkCommandPool
的主机访问必须进行外部同步。