In Vulkan/Dx12 `R32UINT` and `R32INT` images always support atomic operations. In Metal it's complicated: * Metal 3.1 has native support (requires `[MTLTextureUsageShaderAtomic` bit) * pre 3.1, it's possible to do software workaround (similar to moltenvk)