What are the trade-offs for using VPP vs. IPP for RGB to NV12 color conversion? I am currently using IPP but am unsure what the implication would be for switching to VPP. Is VPP a GPU implementation of color conversion on the GPU's EUs?
From the VPP tutorial sample #6, it seems that VPP can save memory copies by keeping all execution on the GPU:
"VPPParams.IOPattern = MFX_IOPATTERN_IN_VIDEO_MEMORY | MFX_IOPATTERN_OUT_VIDEO_MEMORY;"
That seems to be a big difference vs. IPP color conversion where it is necessary to copy data to the CPU before doing a color conversion. Is my understanding correct?
Yes, it seems you have understood the advantage well. VPP can also take advantage of video-centric processing like scaling, 'detail' and 'denoise', allowing the CPU to be free for other tasks.
I assume that you are referring to RGB32 correct? Because VPP RGB24 to NV12 color conversion method is deprecated. We do not recommend using it and do not plan to implement workarounds to support it.