引用 Vulkan 1.0 规范文档,第 5 章(命令缓冲区)第 4 段,
"除非另有说明,并且没有显式同步,否则通过命令缓冲区提交到队列的各种命令可以以相对于彼此的任意顺序和/或并发执行"
在第 2.1.1 章(队列操作)的第 1 段中,它还指出
"...提交到单个队列的命令缓冲区按其提交的顺序播放,每个缓冲区中的命令按记录顺序播放"
第5章中的"任意顺序"是否意味着甚至无序?那么,这难道不是与第2.1.1章"按提交的顺序播放"的说法相冲突吗?还是命令只是按顺序"播放",但"执行"不按顺序?
>第 2.1.1 章定义了命令的 API 顺序:提交到队列中的命令缓冲区的顺序,以及命令缓冲区中命令的顺序(以及命令中基元的顺序)。
第 5 章说 API 排序并不意味着执行排序,除非某些文本另有明确说明。第 2.1.1 章包括特定的例外情况(混合、深度测试),第 6 章介绍了执行依赖关系,这些依赖关系可以根据 2.1.1 中定义的 API 排序强制执行执行排序。但是,除了显式声明排序的情况之外,API 排序不会禁止队列在执行方面执行任何其他操作。
话虽如此,规范对此解释得很差。