Vulkan 3 - Command buffers
Vulkan 中的其中一个重要的操作对象,命令缓存区,用来记录各种各样的命令的。
每组命令缓存区都有自己的状态,这个状态是不被继承的,状态包括:初始状态、记录状态、执行状态。
Cmd buffer的的存储资源是从cmd pools里申请的,(需要注意的cmd pools 不能多线程公用)。所以,在使用cmd buffer 之前必须 create a cmd pool!
申请好cmd buffer 之后,将Cmdbuffer设置为record 状态,将cmd buffer 提交到对应的队列中,做这个动作的时候要注意,在提交的时候,应用程序不能对队列做任何操作。同时需要注意同步的semaphore 和event的问题。
以上是生硬翻译spec, 也没有细读,问题来了: 做了这么多的cmd buffer 的操作,那么命令是怎么何时填到cmd buffer里去的呢。。。
我的理解是:先把cmd buffer 申请好,并绑定到对应的队列中,然后等到具体命令来的时候,调用vkCmdFillBuffer 把具体的命令填到buffer里面, Done!
Bravo!!看到文章的大神们,如果不对的话,求指点。。。
Vulkan 中的其中一个重要的操作对象,命令缓存区,用来记录各种各样的命令的。
每组命令缓存区都有自己的状态,这个状态是不被继承的,状态包括:初始状态、记录状态、执行状态。
Cmd buffer的的存储资源是从cmd pools里申请的,(需要注意的cmd pools 不能多线程公用)。所以,在使用cmd buffer 之前必须 create a cmd pool!
申请好cmd buffer 之后,将Cmdbuffer设置为record 状态,将cmd buffer 提交到对应的队列中,做这个动作的时候要注意,在提交的时候,应用程序不能对队列做任何操作。同时需要注意同步的semaphore 和event的问题。
以上是生硬翻译spec, 也没有细读,问题来了: 做了这么多的cmd buffer 的操作,那么命令是怎么何时填到cmd buffer里去的呢。。。
我的理解是:先把cmd buffer 申请好,并绑定到对应的队列中,然后等到具体命令来的时候,调用vkCmdFillBuffer 把具体的命令填到buffer里面, Done!
Bravo!!看到文章的大神们,如果不对的话,求指点。。。