【发布时间】:2021-07-03 22:29:35
【问题描述】:
我正在开发一个严重依赖计算着色器的 C++/Vulkan 应用程序。其中之一必须读取(从不)可能被 CPU 并发修改的缓冲内存。
假设 CPU 和着色器使用适当的原子操作,这可以工作吗?
换句话说,您能否安全地从 CPU 共享内存中执行 32/64 位整数的原子加载?
(注意:预计 CPU 写入缓冲区的情况极为罕见)
【问题讨论】:
我正在开发一个严重依赖计算着色器的 C++/Vulkan 应用程序。其中之一必须读取(从不)可能被 CPU 并发修改的缓冲内存。
假设 CPU 和着色器使用适当的原子操作,这可以工作吗?
换句话说,您能否安全地从 CPU 共享内存中执行 32/64 位整数的原子加载?
(注意:预计 CPU 写入缓冲区的情况极为罕见)
【问题讨论】:
没有一种机制可以让主机和 GPU 之间同时存在简单的原子访问。您必须使用屏障或事件并阻止主机修改内存,只要 GPU 正在查看它。
【讨论】: