c++ - GLSL:CPU 共享原子负载
问题描述
我正在开发一个严重依赖计算着色器的 C++/Vulkan 应用程序。其中之一必须读取(从不写入)可能由 CPU 并发修改的缓冲内存。
假设 CPU 和着色器使用适当的原子操作,这可以工作吗?
换句话说,你能安全地从 CPU 共享内存中执行 32/64 位整数的原子加载吗?
(注意:预计 CPU 对缓冲区的写入极少)
解决方案
主机和 GPU 之间没有可以同时存在普通原子访问的机制。只要 GPU 正在查看它,您就必须使用屏障或事件并阻止主机修改内存。
推荐阅读
- linux - 为什么我的 Makefile 变量没有在这里分配默认值?
- rust - `?` 运算符只能在返回 `Result` 或 `Option 的异步块中使用
- android - Firebase Crashlytics 有替代品吗?
- java - openapi 枚举空值
- c++ - 将对指针的引用转换为对 void* 的引用
- node.js - API 路由不适用于 CPANEL App Manager redirecr
- r - 库(sp)中的错误:没有名为“sp”的包
- angular - http://localhost:8080/ 仅以 angular | 显示基本文件的名称。这是一个网络包问题吗?
- python - 在 Tkinter Python 中自动检查复选框
- java - 如何从 BufferedReader 解析或读取 Int?