Er, wait, this _is_ the null case that's in there. I see what's going on there... but this does add an extra branch in all cases, and to be honest I had to compare this to the current revision to even understand what was happening. I say just stuck with the current code and just add the ReadTarget check in front of it. A simple thing like

```
if (OpenGLDevice.Instance.ReadTargetIfApplicable(blah))
{
    return; // We got the data from a RenderTarget, no need to GetTexImage.
}
```

Would be okay. Like the INTERNAL_bufferData call, less tabbing and keeps everything else readable, and less diffs in the repo.