Yes you’re right to think of the performance impact. I assume you’re having to record in real time.
I’m not sure of your setup, so hard to recommend. If your cockpit display was output to a screen, then some HDMI/DVI-D capture device would be the easiest solution. But when you say ‘offscreen’, I assume this is not possible.
If so, you’re stuck with some kind of performance hit somewhere, although it was acceptable for the software I was working on.
The CopyResource call won’t be that bad compared to CPU encoding of the video. I would favour a video codec and settings that was quick to encode but produced larger video files. You can always transcode to a more compressed format later, or even not bother compressing at all. You could also just send the raw data to another ‘dedicated’ device for encoding.
Another option is GPU encoding, some GPU cards (e.g. NVidia) can do GPU h.264 encoding and I think can use DX11 textures as input. https://developer.nvidia.com/nvidia-video-codec-sdk/download