Read/Write iOS 上的相同 MTLTexture

Read/Write same MTLTexture on iOS

texture2d access::read_write 限定符似乎仅适用于 OSX。有没有办法在 kernel(或其他)金属函数中 read/write 相同的纹理?

原因是写入的纹理值可能不是最终的,可以由其他线程更新。

感谢@warrenm 的提示。它使用原子缓冲区工作

device atomic_uint *buf [[ buffer(0) ]]

执行以下步骤:

  1. 我在一个单独的 kernel 函数中初始化我的原子缓冲区,该函数在操作之前运行
  2. 下一个 kernel 使用 atomic_fetch_min_explicit(buf[pos], val, memory_order_relaxed)
  3. 计算特定坐标的最小值