ReadPixels performace With 4K resolution?

Is there a fast to way to copy RenderTexture.active to new Texture Data?

var tex = new Texture2D(src.width, src.height, dstfmt, false);
RenderTexture.active = src;
tex.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0, false);
tex.Apply();

Is’t so slow when the src texture resolution is 4K(3840*2160)

I am using GitHub - Unity-Technologies/GenericFrameRecorder: This GitHub package is DEPRECATED. Please get the new Unity Recorder from the Asset Store (https://assetstore.unity.com/packages/essentials/unity-recorder-94079) Use the editor builtin Bug Reporter to report issues. You can track and vote for issues on the Issue Tracker (https://issuetracker.unity3d.com) to record 4K mp4 files, In the Profiler I found that the bottleneck of GenericFrameRecorder is ReadPixels (about 60ms).

Any Help?
Thanks Very much.

That is normal behaviour and I don’t think there is a faster way.

Are you double/triple buffering the “tex” textures (so what your GenericFrameRecorder sees is a few frames behind) to avoid a stall? see: ReadPixels stalls the pipeline in Unity 5

thanks for reply.

Do you mean I should cache the RenderTexture data unitl the GPU “Fill” the data to RenderTexture, Copy RenderTexture data to Texture2d with ReadPixels() after frames?

This is my PC config
Window10 64 bit
Intel Core i9-7900 @ 3.30GHZ
525GB ssd
Gtx 1080 ti 11GB

I will check the Link and find some useful things.