In a compute shader I need the value of the current texture as well as to be able to write to the texture. So for example: _TexRW[coord] = _TexRW[coord2] This is only possible when so called "UAV Loads" are supported for the format. For DX11, only R32_FLOAT, R32_UINT and R32_SINT are supported, for the rest of the formats, you have to do a check. This check can't be called from Unity: I tried SystemInfo.GetCompatibleFormat(..., FormatUsage.LoadStore), but that doesn't seem to check what I'm looking for. One option is a technique, called "ping-pong", where you use a second texture to write on: _TexRW[coord] = _Tex[icoord2] BUT, if you are only changing a small (non-predictable) part of the texture, you are forced to write to the entire texture, which is way slower. So I would love to know if there is a way to check for support so I know when to use ping-pong and when I can do in-place calculations.