Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphics Vulkan命令执行命令_Graphics_Vulkan - Fatal编程技术网

Graphics Vulkan命令执行命令

Graphics Vulkan命令执行命令,graphics,vulkan,Graphics,Vulkan,引用Vulkan 1.0规范文件第5章(命令缓冲区)第4段 除非另有规定,且无显式同步,否则通过命令缓冲区提交到队列的各种命令可以按相互之间的任意顺序执行,和/或同时执行 在第2.1.1章(排队操作)的第1段中,它还规定 “…提交到单个队列的命令缓冲区按提交顺序播放,每个缓冲区内的命令按记录顺序播放” 第五章中的“任意命令”是否意味着甚至是无序的?那么,这是否与第2.1.1章“按提交顺序播放”的声明相冲突?还是命令只是按顺序“回放”,但“执行”却不按顺序 第2.1.1章定义了命令的API顺序:提

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

除非另有规定,且无显式同步,否则通过命令缓冲区提交到队列的各种命令可以按相互之间的任意顺序执行,和/或同时执行

在第2.1.1章(排队操作)的第1段中,它还规定

“…提交到单个队列的命令缓冲区按提交顺序播放,每个缓冲区内的命令按记录顺序播放”


第五章中的“任意命令”是否意味着甚至是无序的?那么,这是否与第2.1.1章“按提交顺序播放”的声明相冲突?还是命令只是按顺序“回放”,但“执行”却不按顺序

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

第5章是说,API排序并不意味着任何关于执行排序的内容,除非某些文本特别说明了其他内容。第2.1.1章包括这方面的特殊例外情况(混合、深度测试),第6章介绍了执行依赖关系,该依赖关系可以基于2.1.1中定义的API顺序强制执行顺序。但除了显式声明排序的情况外,API排序并不禁止队列执行它想要执行的任何其他操作


尽管如此,规范对此解释得很糟糕。

这里的关键短语是“除非另有规定”。那么vulkan实现不必保持命令的API顺序,除非应用程序显式同步,对吗?在OpenGL中,API调用顺序意味着隐式地命令顺序。(假设API调用的效果在下面的API调用之前应用。)“除非应用程序显式同步,对吗?”或者规范提到的其他特定情况(混合、深度测试、模具等)。但一般来说是的:除非您创建一个显式依赖项,否则Vulkan实现可以根据需要自由更改命令的执行顺序。这也是OpenGL图像加载/存储的方式。@Nicolas这是否意味着记录到单个命令缓冲区并提交到队列的命令可能会无序执行?