gpt4 book ai didi

multithreading - `vkCommandPool` 可以从主线程分配并移动到其他线程吗?

转载 作者:行者123 更新时间:2023-12-02 06:49:17 26 4
gpt4 key购买 nike

是否可以从主线程分配vkCommandPool,然后将它们移动到一个新线程中,专门使用它?

伪代码:

// Pool for creating secondary buffers
threaded_command_pool = new CommandPool();

// Thread for filling secondary buffers
// threaded_command_poolzd is used only here
thread_handle = new Thread(move(command_pool))

thread_handle.join()

// Pool for merging secondary buffers
command_pool = new CommandPool()
primary_command_buffer = command_pool.create_buffer()

// fill primary_command_buffer with secondary buffers from thread

在我找到的所有示例和演示中,command_pool 是在 线程中创建的,而不是在主线程中创建的,但我在specs 中找不到此要求。 .

最佳答案

vulkan 中的任何内容都不会绑定(bind)到特定线程。

只要您遵守外部同步要求,您就可以从任何线程自由调用任何 vulkan 函数。

If two commands operate on the same object and at least one of the commands declares the object to be externally synchronized, then the caller must guarantee not only that the commands do not execute simultaneously, but also that the two commands are separated by an appropriate memory barrier (if needed).

在其他 API 中,当一个对象被绑定(bind)到一个线程时,它被非常清楚地记录下来。

在这种情况下,一次只有 1 个线程可以访问命令池,但是对同一命令池的连续命令可以来自不同的线程。

关于multithreading - `vkCommandPool` 可以从主线程分配并移动到其他线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49275741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com