I have a RGBA16F texture with depth, normal.x, normal.y on it. I want to read r, g, b and write to a on the texture. I will hit every pixel exactly once.
You cant read and write from a single texture at the same time. To get round this you usually create another texture so that you read from one texture and write into another. These two textures can then be read back together or individually in your shader.