How about using D3DXSaveSurfaceToFile
That works! I thought D3DXSaveSurfaceToFile requires the source being OffscreenPlainSurface.
That's one step saved. I still think it is unnecessarily cumbersome. Maybe D3D11 provide a more efficient method?
Just noticed a side effect of skipping the step: the maximum resolution is reduced !
Somehow, by copying RT2 to an OffscreenPlainSurface before D3DXSaveSurfaceToFile, I can save a frame with higher resolution. Does anyone have an explanation?
Since efficiency is not a concern for my purpose, I will add the step back.