opengl - 计算着色器图像和原子一致性
问题描述
在研究了 OpenGL 内存模型之后,我有 2 个问题:
原子操作(例如,
atomicAdd()
ssbo 中的 a)如何被认为是不连贯的?这是否意味着我必须声明 ssbo 连贯并memoryBarrierBuffer()
在atommicAdd()
?为了保证多个计算着色器调用之间的内存一致性,我使用了多个调度,一次一个,每个调度都有一个工作组。每次调用都调用
groupMemoryBarrier()
以确保内部工作组内存的一致性,并且在调度之后我发出一个glMemoryBuffer(GL_TEXTURE_FETCH_BARRIER_BIT|GL_SHADER_STORAGE_BARRIER_BIT)
以确保下一次调度的外部可见性。我是否可以安全地假设,即使在同一调度的多个工作组之间发出内部内存一致性(这样我就可以启动具有多个工作组的单个调度),而是在memoryBarrierImage()
之后发出 a ?imageStore()
解决方案
推荐阅读
- javascript - 在 SAPUI5 中,您可以通过单击按钮触发 Smart Table 事件吗?
- java - ILOG Cplex Java API 中的约束公式
- c# - ASP.NET Core 2.1 功能测试中的继承启动错误
- javascript - 如何使用 Javascript/JQuery 获取重定向 URL?
- java - GWT FileUpload OnClick
- visual-studio-code - 当指定的 WebView 面板在 VSCode 扩展键绑定贡献点中处于活动状态时,是否有任何上下文?
- c - 读取 CSV 文件 - 内存问题
- macros - 为什么用宏调用我的 home-rolled (reduce) 函数会影响未来对该函数的调用?
- php - 多态关系
- javascript - 根据输入值点击链接