Vulkan命令执行顺序
Vulkan command execution order
引用 Vulkan 1.0 规范文档,第 5 章(命令缓冲区)第 4 段,
"Unless otherwise specified, and without explicit synchronization, the various commands submitted to a queue via command buffers may execute in arbitrary order relative to each other, and/or concurrently"
在第 2.1.1 章(队列操作)的第 1 段中,它还指出
"...提交到单个队列的命令缓冲区按提交顺序回放,每个缓冲区中的命令按记录顺序回放
第五章的"arbitrary order"是不是连乱序的意思?那是不是和2.1.1"played back in the order they were submitted"章节的说法冲突了?或者命令只是 "PLAYED BACK" 有序但 "EXECUTED" 乱序?
第 2.1.1 章定义了命令的 API 顺序:提交到队列中的命令缓冲区的顺序,以及命令缓冲区中命令的顺序(以及命令中基元的顺序) .
第 5 章说 API 排序 对执行排序 没有任何意义 除非 某些文本特别说明除此以外。第 2.1.1 章包括对此的特定例外(混合、深度测试),第 6 章介绍了执行依赖项,它可以根据 2.1.1 中定义的 API 顺序强制执行执行顺序。但是在明确声明排序的情况之外,API 排序并不禁止队列在执行方面做任何它想做的事情。
话虽这么说,规范对此的解释很差。
引用 Vulkan 1.0 规范文档,第 5 章(命令缓冲区)第 4 段,
"Unless otherwise specified, and without explicit synchronization, the various commands submitted to a queue via command buffers may execute in arbitrary order relative to each other, and/or concurrently"
在第 2.1.1 章(队列操作)的第 1 段中,它还指出
"...提交到单个队列的命令缓冲区按提交顺序回放,每个缓冲区中的命令按记录顺序回放
第五章的"arbitrary order"是不是连乱序的意思?那是不是和2.1.1"played back in the order they were submitted"章节的说法冲突了?或者命令只是 "PLAYED BACK" 有序但 "EXECUTED" 乱序?
第 2.1.1 章定义了命令的 API 顺序:提交到队列中的命令缓冲区的顺序,以及命令缓冲区中命令的顺序(以及命令中基元的顺序) .
第 5 章说 API 排序 对执行排序 没有任何意义 除非 某些文本特别说明除此以外。第 2.1.1 章包括对此的特定例外(混合、深度测试),第 6 章介绍了执行依赖项,它可以根据 2.1.1 中定义的 API 顺序强制执行执行顺序。但是在明确声明排序的情况之外,API 排序并不禁止队列在执行方面做任何它想做的事情。
话虽这么说,规范对此的解释很差。