8

引用 Vulkan 1.0 规范文档,第 5 章(命令缓冲区)第 4 段,

“除非另有说明,并且没有明确的同步,通过命令缓冲区提交到队列的各种命令可以相对于彼此以任意顺序执行,和/或同时执行”

在第 2.1.1 章(队列操作)的第 1 段中,它还指出

“...提交到单个队列的命令缓冲区按照它们提交的顺序播放,每个缓冲区中的命令按照它们被记录的顺序播放”

第5章中的“任意顺序”是否意味着甚至是乱序?那么第2.1.1章“按提交顺序播放”的说法不冲突吗?还是命令只是按顺序“播放”但“执行”无序?

4

1 回答 1

11

第 2.1.1 章定义了命令的 API 排序:提交到队列中的命令缓冲区的顺序,以及命令缓冲区中的命令顺序(以及命令中的原语的顺序)。

第 5 章说 API 排序对执行排序没有任何意义,除非某些文本另有说明。第 2.1.1 章包括对此的特定例外(混合、深度测试),第 6 章介绍了执行依赖项,这些依赖项可以根据 2.1.1 中定义的 API 顺序强制执行顺序。但在明确声明排序的情况之外,API 排序不会禁止队列在执行方面做任何它想做的事情。

话虽如此,规范解释得很差。

于 2016-03-10T14:55:51.980 回答