【问题标题】:GLSL: CPU-shared atomic loadsGLSL:CPU 共享原子负载
【发布时间】:2021-07-03 22:29:35
【问题描述】:

我正在开发一个严重依赖计算着色器的 C++/Vulkan 应用程序。其中之一必须读取(从不)可能被 CPU 并发修改的缓冲内存。
假设 CPU 和着色器使用适当的原子操作,这可以工作吗?
换句话说,您能否安全地从 CPU 共享内存中执行 32/64 位整数的原子加载?

(注意:预计 CPU 写入缓冲区的情况极为罕见)

【问题讨论】:

    标签: c++ glsl atomic vulkan


    【解决方案1】:

    没有一种机制可以让主机和 GPU 之间同时存在简单的原子访问。您必须使用屏障或事件并阻止主机修改内存,只要 GPU 正在查看它。

    【讨论】:

    • 哦,我忘了补充一点,即使 CPU 修改了有问题的整数,如果 GPU 读取到过时的值也没关系。有没有办法实现这种行为?
    • @JohnDoe:未定义的行为是未定义的。
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2018-07-14
    • 2021-07-26
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多