ComputeBuffer not updating

Some of my users report an issue with a shader of mine that I can only explain by the GPU side of a computebuffer not updating the new values. The issue does not happen on my machine so I can’t even be sure that’s the real issue, but.

Do anyone know of anything that may cause a computebuffer to not update despite a new value being set to them? It has happened on an onboard GPU and an RX 6900 XT so far. I am using Unity 2020.3.46f1

I know this is VERY LITTLE information to go by, but I too am grasping at straws
This is what it looks like when it’s bugged:

This is what it looks like when it’s working:

The buffers have certain values of them changed when the player steps on the grass or cuts it, which causes the shader to render the blade of grass bent or shorter respectively.

  • The normal method (which I assume is the faster one) is to accumulate all changed grass tiles (64x64 blades of grass) and use a compute shader to update the GPU memory, overriding only those specific tiles
  • The alternative method I tried to fix it is to use multiple ComputeBuffer.SetData calls, each updating a specific grass tile.
    Both of these work on my machine and neither works on the afflicted machines.

I can only imagine it’s something related to this thread: Clarification on ComputeBufferMode.Immutable
The documentation still supposedly lies about what ComputeBufferMode.Immutable does, so maybe some AMD and Integrated cards implement them exactly as the documentation states? Because that would explain the issue.